みらいテックラボ

音声・画像認識や機械学習など, 週末プログラマである管理人が興味のある技術の紹介や実際にトライしてみた様子などメモしていく.

第1回AIチャレンジコンテスト(料理分類部門)に挑戦してみた!! (2)

これは, 今年1月~3月に開催された人工知能技術戦略会議等主催 第1回AIチャレンジコンテスト[1]の「料理分類部門」に挑戦したときの取組みについて, TensorFlow研究会#17でLT発表した時の内容をベースに数回に分けて紹介するものである.
(LT発表からだいぶ時間がたってしまったが...)

関連記事:
第1回AIチャレンジコンテスト(料理分類部門)に挑戦してみた!! (1)
・第1回AIチャレンジコンテスト(料理分類部門)に挑戦してみた!! (2)
第1回AIチャレンジコンテスト(料理分類部門)に挑戦してみた!! (3)


前回[2]に続き, 今回は分類精度向上に向けていくつか試してみたことについて紹介する.

2. 取り組み方針

まずは, データをいろいろと見てみる.
f:id:moonlight-aska:20170717101153p:plain:w500

データから, 以下の仮説を.
位置, サイズが異なる複数の領域を定義し, 各領域で料理の分類を行い, 各領域の結果を統合することで精度upが行えるのでは!?

f:id:moonlight-aska:20170717104608p:plain:w200

方針: 
 ・位置・サイズ・・・複数領域で
 ・料理バリエーション・・・データで

また, 料理バリエーションを増やすために, ラベルなしデータを分類システムを使って自動ラベリングした.
ただし, ラベリングミスによる性能低下を避けるために, 閾値以上のものだけに限定.

f:id:moonlight-aska:20170717104944p:plain:w400

3. 学習と評価

3.1 モデル構造
各領域毎にResNet50を配し, 最終段で結果を統合するモデル構造とした.
ただ, 今回は, 各ResNet50の分類結果を単純に統合して最終結果とし, 各領域の重みは学習していない.

f:id:moonlight-aska:20170717105618p:plain:w400

3.2 学習
データ:

ラベル付き9,000
ラベルなし50,000
注) ラベル付きの残り1,000は評価用データとした.

モデル:
 ・ResNet50 x 6
  (フル, 左寄り, 右寄り, 上寄り, 下寄り, 中央の6領域)

学習:
 領域毎に, Fine Tuningを実施.

3.3 評価
a) 自動ラベリングの結果

学習ループ数初回2回目3回目4回目
学習データ数9,0009,000+5,4289,000+8,7129,000+12,164
初期モデルImagenet初回保存モデル2回目保存モデル3回目保存モデル
学習回数(epoch)20101010
性能(フル)0.6890.6890.6920.682
  (左寄り)0.6620.6750.6820.668
  (右寄り)*10.6770.6810.675
  (上寄り)0.6380.6610.6730.656
  (下寄り)0.6640.6740.6810.661
  (中央)*10.6580.6610.658
ラベリング数5,4288,71212,164
*1:実験結果のログが不明のため, 未記載.

結果:
 4回目の学習で識別率の低下がみられたので, 2回目目の自動ラベリング結果8,712画像をモデル学習で追加利用することとした.

b) 領域別結果の統合

領域分類性能終結
フル0.6900.719
左寄り0.668
右寄り0.688
上寄り0.679
下寄り0.682
中央0.672

結果:
 複数の領域の分類結果を統合することで, 約2.9%性能upが確認できた.

今回は, 実際にコンテストに向けて取り組んだ内容について, 簡単に紹介した.
次回は, コンテストの結果について記載する.

----
参照URL:
[1] 人工知能技術戦略会議等主催 第1回AIチャレンジコンテスト
[2] 第1回AIチャレンジコンテスト(料理分類部門)に挑戦してみた!! (1)



GPU高速動画像処理―OpenCVでGPUの処理能力をより身近に

GPU高速動画像処理―OpenCVでGPUの処理能力をより身近に


MSI GeForce GTX 1080 Ti GAMING X 11G グラフィックスボード VD6302

MSI GeForce GTX 1080 Ti GAMING X 11G グラフィックスボード VD6302


CUDA C プロフェッショナル プログラミング (impress top gear)

CUDA C プロフェッショナル プログラミング (impress top gear)