セグメンテーションの結果 |
はじめに
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 件のコメント:
コメントを投稿