アニメ前回、おそ松さんたちをディープラーニングで見分けるため、準備編としておそ松さんたちの顔画像を5644枚集めました。今回はそれを用いて、ディープラーニングで学習させ、判別器を作って検証します。383使用フレームワーク最近GoogleからTensorFlowという新しいディープラーニングのフレームワークが発表されました。会社のブログに使い方書いたのですが、まだ慣れていないので、今回はchainerを使います。こちらだとすぐに高い成果を上げているImageNetのNINモデル、4層畳み込みニューラルネットワークがサンプルで入っていますので、こちらを改良して使います。imageNetの使い方は、こちらやこちらを参考にしています。訓練データセットImageNetで学習を行うには、train.txtとtest.txtの2つが必要です。いった形式をしています。集めた画像のうち、85%を学習データ、15%をテスト用データにします。学習に用いるソース基本的には、ImageNetのソースを使いますが、いくつか変更を施します。GPUで学習させたあとに生成されるモデルをCPUでも使えるようにして保存します。これはtrain_imagenet.pyの最終モデルを保存するときに、cpuで使える形式にしてから保存します。-1)また、nin.pyには直接解析結果を返してくれるメソッドがないので、スコアをソフトマックス関数で処理した結果を返すメソッドを追加します。F.softmax(h)学習それでは平均画像を生成してから、学習を開始します。画像は、サイズを256*256にする必要があるため、こちらのcrop.pyを使ってサイズ調整を行いました。/path/to/image/directory訓練データでの結果ログデータから訓練データにおけるエラー率の推移はこのようになりました。プロットはこちらのplot.pyを使わせていただきました。10000イテレーションあたりでほとんど下がりきっています。trainでの最終的なエラーレートは0.02857valでは0.0360です。96.4%の精度がでています。おそ松さん判別器について上記で作成した顔の分類器(ディープラーニング部)と、前記事で作った顔検出器(HOG+SVM)を用いて、キャプチャ画像から認識できるようにします。元画像に結果を表示するというようになります。以下がそのソースです。color)cv2.imshow('image',out)cv2.waitKey(0)cv2.destroyAllWindows()試してみる訓練データ話数内よりまずは訓練データに含まれているのもから試してみます。認識結果は、それぞれのカラーで顔を囲うようにします。訓練データでのエラー率は数%なので、ちゃんと認識できています。何枚か訓練データ話数外より問題は、訓練データに含まれていない話数の顔が認識できるかどうかです。5話の途中までを訓練データで用いたので、6話から抽出して解析してみます。おじいちゃんの執事に一松と間違えられる十四松。画像見るだけじゃ自分もわからないのにすごい!かと思えば、一松をとど松として認識しています。0.2%となっています。他の正確に認識できている顔のスコアはほぼ100%なので、それに比べれば確かさは低くなってはいます。他の結果を見る限り、特徴の少ない画像は、とど松のスコアが高くなる傾向がある気がします。こちらは全員ちゃんと認識されています。一松以外みんなとど松になっています。自分も見分けやすい一松と十四松は正解率高め。やってみて正直、学習させてもあまり判別できないんじゃないかと懸念してたので、思ってたよりはちゃんと見分けられているという感想です。人の目で見て分かりづらい顔画像は、おそらく画像における見分けられる顔の特徴が少ない見分けるポイントがわかっていないのどちらかだと思います。前者は、そもそもちゃんと書き分けてない場合で、ディープラーニングで解析しても判断しづらいのでしょう。後者は、ちゃんと描き分けてるけど、人がそれを理解できていない場合です。この場合は、ディープラーニングが特徴を見つけ出して判別できる、ということだと思います。精度については、まだ改善の余地はあるかと思います。学習データである画像の質をあげる必要があります。キャプチャから切り取っていると、どうしても動かないキャラはずっと同じ画像になってしまうので、実質枚数があまり多くありません。6人いる状態で、60フレームほどチョロ松のみが喋ったとします。すると60フレーム分切り取ると360枚分の顔画像が生成されるのですが、295枚は重複画像です。松の60枚も、喋っているコマはせいぜい口閉じ、口半開け、口開けの3〜4種類程度しか存在しません。360枚中、実質9種類程度しかありません。今回の画像収集で極力同一コマの画像は避けていたのですが、それでも多いです。同じ画像は排除し、一つの画像からノイズをかけたり各種フィルタをかけて新たに画像を生成するのがよいかと思います。前記事で生成したおそ松さん用顔検出器の精度もあまりよくなく、取り逃がしている写真が結構あります。検出器の精度を向上させるための顔画像選定も必要になってきます。精度向上に向けて頑張ります。〜準備編〜最近おそ松さんというアニメが流行っていますね。(1)はてなブログをはじめよう!bohemian916さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。