今回は、平均画像の作成に関してです。
平均画像
学習を行うとき、入力画像に偏りがあると、認識精度が悪くなることがあります。
そこで、明るさやコントラストの偏りを平均化するために、事前に平均画像というものを用意して、学習するときに利用します。
具体的には、まず全学習画像の平均画像と標準偏差を求めます。
そして学習する際に、学習する画像から平均画像の画素値を引き標準偏差で割ることで、各画像の画素の平均が0、分散が1になります。
ちなみにこれを、「平均化(標準化)」と呼びます。
※他の機械学習でも、この「平均化(標準化)」は重要になります。
Caffeでは、この平均画像を求めるために「compute_image_mean.exe」を使用します。
引数
「compute_image_mean.exe」のシンタックスは以下のようになっています。
compute_image_mean [FLAGS] INPUT_DB [OUTPUT_FILE]
FLAGS
代表的な引数は以下の通りです。
(全てを知りたい人は「compute_image_mean -help」を実行)
FLAGS | 意味 | 設定例 |
---|---|---|
-backend | データベースの種類 | -backend lmdb |
INPUT_DB
学習に使用するDB名です。
前回の「convert_imageset」の「DB_NAME」になります。
※ファイル名ではない
また、通常DBにはトレーニング用とテスト用の2つがありますが、ここではトレーニング用のDBを指定します。
OUTPUT_FILE
出力する平均画像データのファイル名です。
フォーマットはProtocolBuffers(バイナリ)になります。
その他
実は平均画像なしでも学習は行うことができます。
しかし、認識精度を高めるためにも、是非とも用意するようにしてください。
関連記事
C++プログラマがWindows上でCaffeを使ってDeep Learningするお話(1)
C++プログラマがWindows上でCaffeを使ってDeep Learningするお話(2)
C++プログラマがWindows上でCaffeを使ってDeep Learningするお話(4)
C++プログラマがWindows上でCaffeを使ってDeep Learningするお話(5)
C++プログラマがWindows上でCaffeを使ってDeep Learningするお話(6)
C++プログラマがWindows上でCaffeを使ってDeep Learningするお話(7)
C++プログラマがWindows上でCaffeを使ってDeep Learningするお話(8)