Posted at

FCNというSemanticSegmentationで遊んでみた


やりたいこと

最近、FCNというSemantic Segmentationを手軽に試せたので、遊んでみました。

そして、速度評価も行おうと思って、ちょっとしたラッパー(?)を作ってみた。


環境


  1. Ubuntu 16.04.4 LTS

  2. python 3(.7.0)

  3. GPU : GeForce GTX 1070(メモリ: 8G)

  4. カメラ付き PC(外付けでも大丈夫なはず)


FCNの実行

まずは下記のページを見て、インストールおよび実行

https://github.com/wkentaro/fcn

実行するとモデルもダウンロードしてくれた上で、結果を出力してくれる

簡単、簡単!


FCNラッパーの作成

githubのページ見ると、精度についてはまとめられているが、速度についてはなんも書いてない

(論文には書いているかもしれないが...)

あと、カメラからダイレクトに結果出力できたほうが楽しいし、速度も測れるのでやってみよう!

というので作ってみたのが以下

https://github.com/komorin0521/fcn_wrapper


  1. pipで必要モジュールをインストール

  2. configファイルにて、正しいモデルファイルのパスを設定


  3. 01run_fcn_wrapper.sh を実行

で、カメラがついていれば、動作するはず.

上記の環境では約3FPSでした。

また、GPUのメモリは2Gを少し超えるくらい(2061MiB)でした。

画像の出力結果は、イスとか人をちゃんと認識してくれていたので、githubに書いてあるように精度はけっこうよさげ。


FCNの実装の流れとラッパーでの変更点

fcn_infer.pyの流れとどこを変えたのかを少しだけ

fcn_iner.pyの大まかな流れ

1. モデルをロード

2. skimageでファイル読み込み

3. inference

4. 画像保存

変更点は2と4で、2はcv2の機能でキャプチャした画像を3のインプットに変更

4は保存ではなくこれまたcv2の機能で、画面出力というように変更しました。


所感

darknet YOLOとかだと10FPS超えするので、ちょっと速度的には物足りない気をしてしまったが、

こんだけの精度で3FPSなら、けっこうすごいよなあ

中身をもう少し詳しく見てチューニングしたら早くなるかもなんで、時間があって興味が出たらやってみよう