GPU。さっそく試してみました。
-- 目次 --
まずは2値分類してみる。
ここから主要キャラの分類
- part5 主要キャラで分類問題(未知データに適用するよ編)
- part5.5 主要キャラで分類問題(改良編)
- part6 主要キャラで分類問題(GPU使ったよ編) <--- イマココ
- part7 新規データをFasterRCNNを使って分類させる(むしろ全てはこれのため)
最初の目次とは大幅に変わっていますが、GPU編をpart6として更新します。
faster-RCNNはまだできそうにないです。。。
前回からの改良点とコメント
- 画像の回転は左右反転以外削除した
- 翼の三つ編みver.とショートver.は別クラスとして学習
- 前回より画像枚数を半分くらいに減らした
まず1.の部分について。
最近読んだ本の中に"教師データを増やすことはいいことだが、文字などを反転させると意味合いが変わってきてしまうので注意しよう"的なことが書いてありました。
読んだときはそりゃそうだろwと半ば当たり前と思っていたのですが、"いやアニメ顔を上下反転させてんのもダメってことじゃね?"と思い、このような判断をしました。
次は2.について。これは本当にミスったな〜と思っていた部分です。三つ編みとショートを同じクラスにしたらパラメータが混乱してしまうに決まってますよね。
人間も外見に変化があった人間に対して、その状態から新たにラベリングしているのかな〜なんて考えるきっかけにもなりました。
例えば、めっちゃ久しぶりにあったAさんが凄い太っていたとして、それでも人間はその状況からすぐに"太ってちょっと見た目変わってるけどこの人はAさんだ"と、認識(ラベリング)をすることができますよね。
実際にどんな判断で認識しているのか僕は知りませんが(調べろよっていうツッコミはなしで!)普段当たり前だと思いスルーしてた部分に気づきを与えてくれたいいミスでした。
バサ姉に感謝!!
最後に3。これは1.の処理をしている時点で当たり前なのですね。ただ画像数が多いほど良い!というわけでもないようで。う〜ん確かに、そりゃそうだとも思いますがちゃんと理解はできてないです。。。まだまだ勉強不足なのでこのあたりははっきりさせたいところですね。なにはともあれ、画像数が減ったのでかなり学習スピードは上がりました。
環境のまとめ
負例: 8000枚 正例: 各キャラ1400枚ずつ
- テストデータ
負例: 2000枚 正例: 各キャラ200枚ずつ
学習の推移
こんな感じでした。
epoch: 1 2016-04-08 20:15:17.785450 train mean loss=1.29663467101, accuracy=0.573903162782 test mean loss=0.688977219347, accuracy=0.778639320674 epoch: 2 2016-04-08 20:27:27.011629 train mean loss=0.808145953271, accuracy=0.735576269734 test mean loss=0.469432424767, accuracy=0.850425204764 epoch: 3 2016-04-08 20:39:30.309131 train mean loss=0.594597480004, accuracy=0.804364624796 test mean loss=0.353783556145, accuracy=0.891195591299 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 epoch: 19 2016-04-08 23:52:14.426065 train mean loss=0.116009275227, accuracy=0.960536485817 test mean loss=0.10884310774, accuracy=0.975237621553 epoch: 20 2016-04-09 00:04:15.928162 train mean loss=0.11445670401, accuracy=0.960945668777 test mean loss=0.105532796335, accuracy=0.972236120713 epoch: 21 2016-04-09 00:16:17.488941 train mean loss=0.124914951081, accuracy=0.959581722737 test mean loss=0.110439470158, accuracy=0.973986994481 epoch: 22 2016-04-09 00:28:21.348996 train mean loss=0.110901836548, accuracy=0.962218685648 test mean loss=0.110624593335, accuracy=0.971485745495
収束しだしたのがだいたいエポック15〜20くらい。accuracyも前回とは比べて大幅にあがってます。
また、しょぼいGPUにも関わらずかなり速度はあがりました。CPUでは12時間以上かかってましたからね。
GPUでは半分以下になってます。(正直半分って微妙だけどw)
おそらく画像を適当な数に調整できたのも効果が出ていますね。
epochは30まで続きますがほとんどここから変化はなかったです。
まとめ
感覚としては少し上がったかな〜くらいの感じでした。acc見て期待しただけにちょっと残念。。。
根本的に何がダメなのかわかってない気がするのでもっと色々試して改善を図っていきたいです。
とりあえず以上!
超人工生命ハッカソンに参加するので楽しんできます!
-- 目次 --
まずは2値分類してみる。
ここから主要キャラの分類
- part5 主要キャラで分類問題(未知データに適用するよ編)
- part5.5 主要キャラで分類問題(改良編)
- part6 主要キャラで分類問題(GPU使ったよ編) <--- イマココ
- part7 新規データをFasterRCNNを使って分類させる(むしろ全てはこれのため)