やりたいこと
最近、FCNというSemantic Segmentationを手軽に試せたので、遊んでみました。
そして、速度評価も行おうと思って、ちょっとしたラッパー(?)を作ってみた。
環境
- Ubuntu 16.04.4 LTS
- python 3(.7.0)
- GPU : GeForce GTX 1070(メモリ: 8G)
- カメラ付き PC(外付けでも大丈夫なはず)
FCNの実行
まずは下記のページを見て、インストールおよび実行
実行するとモデルもダウンロードしてくれた上で、結果を出力してくれる
簡単、簡単!
FCNラッパーの作成
githubのページ見ると、精度についてはまとめられているが、速度についてはなんも書いてない
(論文には書いているかもしれないが...)
あと、カメラからダイレクトに結果出力できたほうが楽しいし、速度も測れるのでやってみよう!
というので作ってみたのが以下
- pipで必要モジュールをインストール
- configファイルにて、正しいモデルファイルのパスを設定
-
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なら、けっこうすごいよなあ
中身をもう少し詳しく見てチューニングしたら早くなるかもなんで、時間があって興味が出たらやってみよう