これは, 今年1月~3月に開催された人工知能技術戦略会議等主催 第1回AIチャレンジコンテスト[1]の「料理分類部門」に挑戦したときの取組みについて, TensorFlow研究会#17でLT発表した時の内容をベースに数回に分けて紹介するものである.
(LT発表からだいぶ時間がたってしまったが...)
関連記事:
・第1回AIチャレンジコンテスト(料理分類部門)に挑戦してみた!! (1)
・第1回AIチャレンジコンテスト(料理分類部門)に挑戦してみた!! (2)
・第1回AIチャレンジコンテスト(料理分類部門)に挑戦してみた!! (3)
前回[2]に続き, 今回は分類精度向上に向けていくつか試してみたことについて紹介する.
2. 取り組み方針
まずは, データをいろいろと見てみる.
データから, 以下の仮説を.
位置, サイズが異なる複数の領域を定義し, 各領域で料理の分類を行い, 各領域の結果を統合することで精度upが行えるのでは!?
方針:
・位置・サイズ・・・複数領域で
・料理バリエーション・・・データで
また, 料理バリエーションを増やすために, ラベルなしデータを分類システムを使って自動ラベリングした.
ただし, ラベリングミスによる性能低下を避けるために, 閾値以上のものだけに限定.
3. 学習と評価
3.1 モデル構造
各領域毎にResNet50を配し, 最終段で結果を統合するモデル構造とした.
ただ, 今回は, 各ResNet50の分類結果を単純に統合して最終結果とし, 各領域の重みは学習していない.
3.2 学習
データ:
ラベル付き | 9,000 |
ラベルなし | 50,000 |
モデル:
・ResNet50 x 6
(フル, 左寄り, 右寄り, 上寄り, 下寄り, 中央の6領域)
学習:
領域毎に, Fine Tuningを実施.
3.3 評価
a) 自動ラベリングの結果
学習ループ数 | 初回 | 2回目 | 3回目 | 4回目 |
学習データ数 | 9,000 | 9,000+5,428 | 9,000+8,712 | 9,000+12,164 |
初期モデル | Imagenet | 初回保存モデル | 2回目保存モデル | 3回目保存モデル |
学習回数(epoch) | 20 | 10 | 10 | 10 |
性能(フル) | 0.689 | 0.689 | 0.692 | 0.682 |
(左寄り) | 0.662 | 0.675 | 0.682 | 0.668 |
(右寄り) | *1 | 0.677 | 0.681 | 0.675 |
(上寄り) | 0.638 | 0.661 | 0.673 | 0.656 |
(下寄り) | 0.664 | 0.674 | 0.681 | 0.661 |
(中央) | *1 | 0.658 | 0.661 | 0.658 |
ラベリング数 | 5,428 | 8,712 | 12,164 |
結果:
4回目の学習で識別率の低下がみられたので, 2回目目の自動ラベリング結果8,712画像をモデル学習で追加利用することとした.
b) 領域別結果の統合
領域 | 分類性能 | 最終結果 |
フル | 0.690 | 0.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の処理能力をより身近に
| MSI GeForce GTX 1080 Ti GAMING X 11G グラフィックスボード VD6302
| CUDA C プロフェッショナル プログラミング (impress top gear)
| コンピュータアーキテクチャ技術入門 ~高速化の追求×消費電力の壁 (WEB+DB PRESS plus)
|