real-time-Personal-estimation(新たなモデル構築編)


はじめに

前々回は環境構築
前回は学習編と来ています.
次はちゃんと使えるモデル構築をしたいと思います.

このプロジェクトのゴール

前回,このプロジェクトのゴールについて書いたのですが,ゴールはずばり「乃木坂ちゃん分類器を作る」ということでした.
まぁ達成はしていないものの作り方はわかったのでとりあえず,ゴールを半分くらい達成してしまいました.ってことで,どうしようかなぁと悩んでとりあえず決めました.
yoloで認識した人をもとにそれを観測できるツールも開発していこうということです.
これは昔,授業で似たようなコードを書いてあるのでそれを改良することも視野に入れています.詳しくは,gitを
ってことでそれがこのプロジェクトの今のところのゴールです.

モデル構築

前回の記事でモデルの構築方法については述べているのでそれを参考に構築していきます.
あんまりこの記事で皆さんにお披露目するようなことは正直ありません.
もはや自分の為の記録になりますのでご了承ください.

(1)与田ちゃんの画像を集める.
前回は適当に与田ちゃんの画像を10枚集めてそれを加工してモデルを作りました.
まぁこれじゃうまくいかないよなとか思いながらやってたんですけどまぁうまくいかないよな
ってことでモデルを作る為には素材が必要なので,素材集めの方法から考えていきます.

search.py

from icrawler.builtin import BingImageCrawler
crawler = BingImageCrawler(storage={"root_dir": "asuka"})
crawler.crawl(keyword="検索したい名前", max_num=100)

モデルをもとにアノテーションを作っていくのですが,これは大変でした.
一応モデルのファイルみたいのを載せておきます.

data.yaml
train: test1/train/images
val: test1/valid/images
nc: 2
names: ['asuka', 'yoda']

結果を出力

約100枚2カテゴリ300epochで学習させました.時間がものすごくかかったので正直
現実的ではないです.
まぁできたので認識しているかをチェックする為に訓練データとは別の画像を使って推論させてみました.
結果はこちら

結果としてはうまくいっています.
これが動画とかでもできるのかな.
ちょっと後でやってみます.

問題点

学習にかかる時間がローカルPC(CPU)だとえげつない時間が現在かかっています.
なんだったら今の感じだと130枚でも何時間もかかる予感しかしません.
そう考えると,クラウド上の実行(GPU)を使うやり方のが効率的かなぁって感じたりしています.(まぁ当たり前ですけどね)
追記
2カテゴリ,だと2カテゴリ内の推論はうまくいくけど,それ以外の人の画像を入れたときにどうしてもうまくいかない.
ここを対策する方法を模索中です.

検討事項
・計算スピードの向上
モデルを多く作って検討する為にまずはモデルをたくさん作る必要がある.
したがってモデルを早く作る方法を検討しなければいけない.
・ローカルマシン(GPU)を使ったモデル作成の検討

次回

次はこれをどう使うかに特化して書いていこうと思います.
追記
追記したところをどうにかしたいので誰かアドバイスがあれば教えてください.