2017年8月9日水曜日

OpenCV 3.3.0で dnn のサンプル (semantic segmentation) を試してみた。 その2 (I tried semantic segmentation sample with OpenCV 3.3.0. part2)

セグメンテーションの結果

はじめに

dnnのサンプルは、複数個 opencv/samples/dnn/のフォルダーに格納されている。

前回の、caffe_googlenet.cpp は、1000クラスの分類のサンプルである。
今回は、fcn_semsegm.cppを試してみた。

ファイル名からして、セグメンテーションを行うサンプルと思われるが、
ソースコード内には、一切の説明用のコメントが記載されていない。

準備

weightファイルの取得方法に関して、helpメッセージに記載があり、ここからダウンロードする。
サイズが512Mと巨大である。

モデルデータは、ファイル名 fcn8s-heavy-pascal.prototxt で検索してみると
opencv/samples/data/dnn/ のフォルダーに格納されていることがわかった。

また、識別結果と、描画用の色データに関しては、pascal-classes.txt に記載されており、
これも上記同様に opencv/samples/data/dnn/ のフォルダーに格納されている

実行結果

入力画像は、512x512にリサイズされ、対象物別に塗りつぶされる。
冒頭の画像の用に、trainと判断されている部分は、電車の領域をカバーしている。



CPUのみで処理してるの、処理時間は数秒要している。

また、実行時に
If the message turns out to be larger than 2147483647 bytes, parsing will be halted for security reasons.
のようなweightファイルのサイズの制限に引っかかっているとおもわれ、解消するには、ヘッダーを調査する必要がある。

識別対象と色 

pascal-classes.txtの内容

background 0 0 0
aeroplane 128 0 0
bicycle 0 128 0
bird 128 128 0
boat 0 0 128
bottle 128 0 128
bus 0 128 128
car 128 128 128
cat 64 0 0
chair 192 0 0
cow 64 128 0
diningtable 192 128 0
dog 64 0 128
horse 192 0 128
motorbike 64 128 128
person 192 128 128
pottedplant 0 64 0
sheep 128 64 0
sofa 0 192 0
train 128 192 0
tvmonitor 0 64 128

関連あると思われる記事はこちら 

FCNのCaffe実装でセグメンテーションデモを試してみた
FCN(Fully Convolutional Network)の覚え書き
Semantic segmentation

0 件のコメント:

コメントを投稿