KerasでFCN(Fully Convolutional Network)

FCNとは?

FCNとはディープラーニングを利用した物体認識の中でも、ピクセル単位で物体の領域を特定する技術の1つです。

Kerasの事前学習済みモデル(VGG16)を利用して、実装してみました。
 

モデル

今回作成したモデルです(FCN-8s) 画像をクリックするとズームされます。

データセット

Pascal VOC2012を利用しました。

単純に学習させるだけでは精度の向上が難しかったので、KerasのDataGeneratorクラスを利用したデータの水増しを行っています。

学習

GTX-1060マシンで200エポック(約8時間。CNNやSSDと比べて格段に収束が遅いです。。。)学習させました。
(もうちょっと学習させた方が良さげです)

Epoch 198/200 
183/183 [==============================] - 98s - loss: 0.0359 - acc: 0.8779
Epoch 199/200 
183/183 [==============================] - 98s - loss: 0.0252 - acc: 0.9087 
Epoch 200/200 
183/183 [==============================] - 98s - loss: 0.0219 - acc: 0.9180 

 
教師データとして利用した画像にたいしては良い感じで検出できていることが分かります。
(左が入力画像、右の色の付いた領域が検出領域)

検証

検証データ(学習させていないデータ)に対してもそこそこ良い精度で領域の検出が出来ています。

まとめ

このような簡単なモデルで、今までのロジックベースのプログラムでは難しかったことが実現出来るのがディープラーニングの素晴らしさですね!


さて、AIQでは、私達と東京か札幌で一緒に働ける仲間を募集しています。
詳しくはこちら

私達と一緒にを様々な業界の未来を変えていきませんか?