update.初めまして、Takaと申します。Aidemyで画像認識について学んだので、学習成果物として投稿してみました。今回行ったのはアニメ「けいおん!」の画像認識です。けいおん!が放送されてからもう9年経っているなんて感慨深いものですね。ちなみに僕が好きなのは秋山澪さんです。※書かれているコードには、コメントアウトが多くあります。これは自分が一目で理解できるように書いていますのでご了承ください。ディープラーニング用ライブラリ2.画像収集アニメを流してひたすらスクリーンショットします。今回スクリーンショットしたのは映画「けいおん!」と、けいおん!2期の15話までの一部を抜粋してます。1話で大体150枚ほど集まりました。こんな感じ👇これをzipファイルにして、Aidemyの仮想環境に送るというのを繰り返します。次に、集めた画像から顔だけを抜き取ります。カスケード分類器(顔の特徴量が入ったデータセット)を用いて、顔検出をするメソッドcascade.detectMultiScaleを行うことで顔だけを取り出すことができます。分類器は様々あるので、自分で行う場合にはデータに合ったものを使ってみてください。今回はアニメ顔なので、lbpcascade_animeface.xmlというアニメ顔検出用の分類器を使いました。#第2引数はカラータイプを表す。物体がとり得る最小サイズ。これよりも小さい物体は無視される。resize_face)集めた顔画像はこんな感じになりました。画像をディープラーニングしやすいように64×64サイズにして別のディレクトリに入れます。resize_face)4.画像をキャラクターごとに分類する次に、集めた顔画像をキャラクターごとのディレクトリに移します。これだけは手動で行わないといけないので非常につらいです。全体の6~7割くらいの時間を割いた気がします。かわいい!!この時、顔でない画像(木など)や、画像認識しなくていいキャラクター(生徒Aなど)の顔も混じっていたりするので、削除しました。これで総数が大体3000枚になりました。5.訓練用データとテストデータに分ける画像をあらかじめ訓練用データとテストデータのディレクトリに分けるのも面倒なので、Pandasを用いてデータを分割しました。大まかな流れはこんな具合です。色)とすることができる)3.Dataframeに変換4.画像とラベルを結合して、シャッフル5.DataFrameから取り出し、numpy配列にして再びつなげて訓練データにしたい枚数分取り出す以下コードです。Y[train_n:][:]6.画像の水増し訓練用データは大体2400枚になりましたが、これでは少々学習データの量に不安が残ります。そこで、画像の水増しを行います。ここで全体の画像枚数を増やしてしまうと、正解率は上がるけれど、オリジナルデータには弱くなるので訓練データのみを水増しするようにします。左右反転、コントラスト調整、ぼかし、γ変換を行い、1枚につき2^4枚増える計算になります。これで訓練データが4万枚ほどになりました。学習の経過は以下のようになります。青線が訓練データに対する正解率で、オレンジ線がテストデータに対する正解率です。訓練データの精度と、テストデータの精度が同じになったので、イイ感じのモデルになりました枚数が多かったので学習させるのに3時間くらいかかってます。(長い!)9.モデルの適用それでは、待ちに待ったモデルの適用です。データに使っていない写真に適用させてみます。けいおん!はエンディングでキャラクターの雰囲気が変わるのでそこにも注目ですね。理想的なのが返ってくるとこんな感じです。小麦色あずにゃんを認識するとは流石です!ここからは誤認識したパターンです惜しい!逆にこの画像でここまで判別できたのはすごいと思う光の加減で髪色が白く見えてますね。確かに色だけ見たら紬の髪色に似ています。おでこが見えてるかでスコアが大幅に変わりました。おでこある=律って感じなのかな...ちなみに遠めだと唯は正しく判別されました。おでこが強調されると誤認識するのかも...やっぱりおでこなの!?おまけ「けいおん!」のアニメ会社「京都アニメーション」の黒髪少女たちにも適用してみました。どの画像もあずにゃんか澪のスコアが高いので名前の横に[azusa,mio]の順で貼っておきます。9.97939169e-01]京アニの似ているキャラクターたちで検証してみました。全部みおだと思ったら意外にもあずさのほうがスコアが高い結果になりました。誤認識してるのにスコアが異常に高すぎる気がしました。オリジナルの画像データが少なかったからでしょうか。加えて、けいおん以外のキャラクターも判別できるように、別のアニメの画像をスクレイピングして大量に集められればもっと良いモデルができたと思います。あと、スコアの位置を四角の内側にしとけばごちゃごちゃしなかったので修正したほうがいいですね。最後にコードに関してですが、複数回同じ処理をしていたのでコードを関数化して簡略化すべきでした。10.おわりに実は、2か月前までProgateでPythonコースをやったくらいのプログラミング初心者でした。そんな僕ですがAidemyを通じて最終的に成果物までたどり着くことができ、とてもうれしいです。これも、Aidemyのチューターさんのご指導がなければ達成できなかったと思います。upLoginユーザーは見つかりませんでした。