LoginSignup
5
7

More than 5 years have passed since last update.

物体検出(ssd)で顔のきりとりを自動化したい。2

Last updated at Posted at 2018-08-29

前回
https://qiita.com/mokoenator/items/4d106d682f1b4bc7d0e3
からの続き

途中経過

普通はグラフを書いて過学習や!!とか書くんですかね。
イメージの数とepochでどんなかんじなのか?見てみたくなった。
画像内の黄色がアウター、ピンクがトップス、青がフェイス、明るい緑がパンツ、くらい緑がバッグ
いつもの ぱくたそ
350イメージ19epoch
1.jpg

1300イメージ11epoch
1.jpg

1300イメージ52epoch
1.jpg

1300イメージ81epoch
1.jpg

イラスト屋1300イメージ81epoch  拳がhat!
7.jpg

学習曲線
キャプチャ.PNG
lossの曲線。赤色が検証の線、赤色が学習の線。
ちょうど4日かかって120epochおわりました。学習につかった画像数は1300です。
80epochで過学習してる
NNだと0になるように目指すんですけど、SSDはどえらいでかい。
ssd300_pascal_07+12_loss_history.pngと比べてもこんなもんかと。。
VOCの学習うファイルが27000ファイルくらいなので、今の20倍頑張る必要がある。

いろいろ分かったこと

ハード面
・とにかく重い。
・CPUの負担が大きいのでGTX1070Tiを0%~50%くらいしか使えない(画像数が多いとGPUの使用率は下がる)
・複数のGPUに割ることはできるけどモデルがCPUにいないので保存ができない(コールバックでのやり方がわからなかった)
・低速CPUでは複数のGPUに割るメリットがGPU熱の分散しかない(ハイスペックなCPUが使えれば・・・)
・CPUオンリーとGPUの比較をしてみた。画像1300枚で必要な1epochに必要な時間が
・・CPU i5 7500,GPU GTX-1070ti,メモリ 24Gで32分
・・CPU i7 7500U,GPUなし,メモリ 16Gで33時間(ノートPCです)
もう・・・話になりませんね。

・メモリのデュアルチャネルを舐めちゃダメだ!適当にメモリさしてたけど、挿し直したら15%くらい早くなった。(´・ω・`)ん?ってことは、メモリ転送がボトルネックですか??

ソフト面
・このモデル?SSDはマルチコア分ちゃんと働いてるっぽい(確証なし)
・アノテーションの過不足、ミスが多いので何度でも見直しが必要
・・とくに多いのが付けモレ、次が1枠に二つ付けてしまう「バッグ+パンツ」みたいな。

・サイクルを早く回すために色々自動化する
・こまかくアノテーションフォルダを分けておくと精神的に楽
・こまかくわかれるので、学習コードを変えてられない。工夫する

・たまにlossが大きくなってとまってしまう・・・なんでだろ・・再実行すると普通に動く

・VoTTで見えないタグができたことがあり、保存できなくなった。JSONを直接開いて修正した。

精神面
・つらい…(´ω`)
・つらい(´・ω・`)
・なんのためにやっているか?初心を思い出す(´・ω・`)
・うまくいかないときは、うまくいかないのでツライ
・うまくいくと鳥肌級の感動が味わえる

写真集めるのがつらい

顔さえ認識していればよかったはずなのに・・・・ファッションを区別することに注力することになるとは。
写真を集めるって結構つらいんです。
おなじ画像を落としてきちゃったりします。

で・・・動画を集めます。
車に積んだドライブレコーダー、フリーの動画、携帯とかに入ってる動画などなど。
これをopen cvで1秒1フレームで切り出して保存する。1分の動画なら60枚出来上がる。
とりあえず洋服が動いているのでロバストは獲得できるんじゃないかと思う。

教師データの作成サイクルを早くするために

教師データは宝!
教師データを大量に作るには・・・機械学習で作る!
100枚学習して、次の100を推論させ箱データをJSONに保存。
VoTTに読ませる。
(画像が入ったディレクトリと同じ名前.jsonで保存しておけばいい)
VoTTで人間が修正、追加を行う。
これを繰り返す。
これだけでかなり楽になるけど・・・それでも、まだ鬼畜。

ちなみに・・繰り返すたびに精度があるとおもうけど、壁がある。
画像が増える毎に学習時間も増える。

機械学習は生活サイクルに大きく影響するということが分かった…(´ω`)
1:会社から帰る
2:100枚を推定させる
3:教師データの作成(修正)
4:学習開始
5:別PCで画像あつめ、プログラムの見直し、ツール作成など
6:寝る
7:おきて学習を止めてデキを確認する
8:会社に行くのでPCを落とす

あたりまえだけど・・・確保できる時間しか学習ができない。
自分の環境では1000枚くらいから、lossが下がらなくなってきた。
時間不足(´・ω・`)(5時間くらいしかない)

なので、会社に行く時間もPCを回すことになる。
けど・・そのうちまた壁がでてきてしまう!

少しでも時間が削れるなら、お金をかけて良いCPU,GPUを買った方が勝ちなんだと思う。

感想

箱書きすぎて腕が痛くなるのでマウス変えようかな
(´・ω・`)

モデルは他人の物を利用してるけれども、一から作るって結構強いかもしれない。
教師データはたまるし、周辺のツールも作ったり試行錯誤の積み重ねが効いてる感じがします。
別のことに転用したい場合でも応用がきくので楽しいです。

つづき
https://qiita.com/mokoenator/items/d84226dc40d38448322e

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7