公開されている、TensorFlow Object Detection API を USBカメラ、Mjpg-streamer での利用方法を試してみます。
GitHub で公開されている、object_detectioon_tutorial.ipynb をベースに、 USBカメラ、Mjpg-streamer での利用をためしてみました。
https://github.com/tensorflow/models/tree/master/research/object_detection
サンプルは、ローカルの画像を2つ読み込んで、試していますが、
これを、 USB カメラ、mjpg-steamer から取り込んだキャプチャー画像に変えてみます。
object_detectioon_tutorial.ipynb が実行できる環境が整えば、結構簡単です。
Windows10 + Tensorflow-1.5.0 GPU +Python3.5 + OpenCV3.4 (Anaconda で全て構築しています)
Tensorflow は、新しいバージョンが出ていますが、GPU版は、1.5.0 をつかいます。
先ず、環境を整えます。
1. tensorflow/models の全体を、zipファイルでダウンロードして、Windows10 の適当なディレクトリーで展開。
"<>Code" タグ -> Clone or Download -> Download Zip
2. Table of contents ->Setup: ->Installation に従って、環境をインストールします。
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/installation.md
注) Windows10 なので、完全にはできません。
COCO API installation は、無視
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim の
`pwd' は、 Winddowsなので、コマンドが無いので、models-master を展開したpath を直接記述。
`pwd` -> c:\???\models-master\research
`pwd`/slim -> c:\???\models-master\research\slim
Windows10 では、下記
set PYTHONPATH=C:\???\models-master\research;C:\???\models-master\research\slim;%PYTHONPATH%
3. c:\???\models-master\research\object_detection ディレクトリーの、object_detection_tutorial.ipynb を JupeterNotebook で開いて、実行します。
4.object_detection_tutorial.ipynb を実行すると、学習済み Model がダウンロードされるのでこれで準備完了です。
学習済み Model は、下記に幾つもあるので色々変えて試せます。
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md
要は、COCO Dataset、Kitti dataset、Open Image dataset でそれぞれ学習させたデルが用意されているので、
自分が検出したい物をよく認識するモデル、または性能のモデルを使えば良いと言う事みたいです。
どうしてもマッチするのが無ければ、自分で一から学習させるか、学習済モデルをベースに、
転移学習(Transfer Learning)をするか。
5.インターネット上に良く紹介されている object detection のサンプルプログラムは、 C:\???\models-master\research\object_detection ディレクトリーにプログラムを作成します。
今回のプログラムも、このディレクトリーで作成します。
注) utils -> object_detection.utils の事
#from utils import label_map_util
#from utils import visualization_utils as vis_util
from object_detection.utils import label_map_util
from object_detection.utils import visualization_utils as vis_util
6.実行方法は、Dos プロンプトから
>activate tensorflow
>set PYTHONPATH=C:\???\models-master\research;C:\???\models-master\research\slim;%PYTHONPATH%
>cd C:\???\models-master\research
>python object_detection\object_detection_tutorial_cam.py
プログラムの終了は、
'q' キーを押下
それでは、早速ですが、コードは、こちらです。
object_detection\object_detection_tutorial_cam.py
実行した感じ?
PCのモニターの上に自分を映す様にUSBカメラを向けているですが、
モニターには、自分のお顔がクローズアップされています。
一応、Person 70% と表示されます。
序に、 USB カメラを WebCAM(Mjpeg-streamer)に変えてみます。
URL="" は、Mjpeg-streamer のアドレスを指定します。