Quantcast
Channel: karaage. [からあげ]
Viewing all articles
Browse latest Browse all 1434

ディープラーニングの画像認識性能向上のための泥臭いテクニック

$
0
0

f:id:karaage:20181115010639j:plain:w640 

ディープラーニングの画像認識精度向上に関する工夫に関しての補足

 以下LTで「AI x IoTデバイスとしての Google Vision Kitの可能性と使いこなし」というタイトルでLTしました。

 この記事では、上記のLTでは、話しきれなかったことの補足をしようと思います。

 タスクとしては、Vision Kitを使ってディープラーニングで、手の形を「グー」「チョキ」「パー」を認識してジャンケンするというたわいのないものです。詳細は以下記事参照下さい。

 実際に、デモで使うにあたって、こんな工夫をしたよという話です。特別難しいことをしているわけでなく、地味な泥臭いことの積み重ねです。

環境構築

 安定した環境構築を行うことが重要です。これができるとできないとでは全然結果が分かってきます(体感20〜30%くらい)。もし安定した環境が作れるなら絶対やったほうが良いです。

 私の場合は、以下のように100均で買ったプラボードと照明を用意しました。

f:id:karaage:20181115010453j:plain:w640

 テストや学習は以下のような環境で行いました f:id:karaage:20181115010639j:plain:w640 

失敗するパターンの学習

 一回学習させてモデルを作って、テストすることで弱点をあぶり出すことも大事です。例えば、同じ自分ので手でも以下のようなものを変えると、簡単に誤認識してしまいました。

  • 手首の角度
  • 指の開き度合い
  • 何もない場合

f:id:karaage:20181115010652j:plain:w640

f:id:karaage:20181115010623j:plain:w640

 失敗したパターンを、教師データとして加えたり。何もない状態を「その他」という新しいラベル付けをして学習させることにしました。その他には、グー、チョキ、パー以外の例えば以下のような形を加えたりして、誤判定を減らすことにしました。

f:id:karaage:20181115005536j:plain:w640

 その他、少しでも多くの人の手のデータを撮りたかったので、妻にも協力してもらい女性の手も教師データとして加えたりしました。

 あと、たまに画面の色が変になる問題もありました。

f:id:karaage:20181113004348j:plain:w640
 色が変になる例

 結局今だに原因不明なのですが、撮影のパラメータを変更したら頻度は減りました(0ではない)。

性能向上のグラフ確認

 テストすると、いとも簡単に100%達成してしまったりすることがありますが、これは信用してはなりません。

f:id:karaage:20181115005947p:plain:w640 いともたやすく100%達成

 そういうときは、大体教師データの質も量も足りていません。上記のように失敗するパターンを多数教師データに入れてテストしましょう。

 教師データが増えるたびに、以下のように変化していきました。

f:id:karaage:20181115005842p:plain:w640

f:id:karaage:20181115012229p:plain:w640

f:id:karaage:20181127003331p:plain:w640

 すぐに100%で張り付いていたら、逆にデータやプログラムを疑ったほうが良いです。

OMMF2018のデモ結果

 デモでは、70〜80%程度は正しく成功していたかなという印象です(正確に測定できていないです)。    やっぱり失敗は色々あって、失敗の要因は以下あたりです。

  • 照明の電池が切れて来て暗くなってきた
  • 子供の手で失敗(学習させてないパターン)
  • 服の袖がノイズとなって失敗
  • ボードが動いてしまって余計な背景が写り込んでしまった

 デモ中も、色々な人のデータは取得し続けました。教師データとして使えば更に精度上げられると思います。このような貪欲にデータを集める姿勢が制度向上に重要だと思います(多分)。

 ちなみに、同じようなディープラーニングの画像認識を使った展示をしていた他のグループで、非常に逆光が厳しい場所の展示をしているグループがいました。当然、ほとんど認識できていなかったです。環境がいかに重要か分かりますね。私は奥の方の場所だったので問題なかったのですが、デモや本番テストの時は環境を事前に確認することも重要です。

まとめ

 ディープラーニングの画像認識性能向上のために自分が実際試してみたテクニックを紹介しました。知っている人にとっては「こんなの当たり前だよ」と鼻で笑われるような内容かとは思います。

 ただ、ディープラーニングの精度向上というと、理想的なデータセットは既に与えられていて、いかにモデルや学習のハイパーパラメータをいじって性能を向上させるかという話は多いのですが、意外とこういう実世界でどうやって教師データ集めて、精度を上げるかという泥臭い話は少なかったりするので、多少なりとも需要はあるのかな?とか思っています。

 モデルやパラメータを改良して1%向上させるというのも、もちろん重要なことなのですが、私は実世界で応用するために、いかに性能を発揮させるかという、エンジニアリング的なことにわりと興味がある方だったりします。

関連記事


Viewing all articles
Browse latest Browse all 1434

Latest Images

Trending Articles