#概要
windowsで@karaage0703 さんが作ってくださった、Object Detection Toolsを使って簡単にリアルタイム物体検出や、動画から物体検出をする方法です。Object Detection Toolsについては
https://karaage.hatenadiary.jp/entry/2019/05/27/073000
を見てください。また、今回はtensorflow2xではなく、tensorflow1xでObject Detection Toolsを動かします。tensorflow2xで動かしたい場合は
https://qiita.com/karaage0703/items/8c3197d11f61812546a9
を見てください。(Windowsでの方法は書いてありませんが. . .)
##動作環境
OS:windous 10 home
CPU:Intel Celeron
メモリー:8GB
GPU:なし
では、始めましょう!
#Python環境をつくる
まずは、python環境を作ります。今回はpython環境をつくるためにanacondaを使います。anacondaのインストール方法は、ネットで「Windows anacondaインストール」などと検索すれば分かります。
anacondaをインストールすると「anaconda prompt」というものがあるので、起動してください。するとコマンドプロンプトみたいなものが起動します。そしたら、python環境を作ります。以下のコマンドを入力してください。
conda create -n tensorflow python=3.5
tensorflowのところは仮想環境名なので、もちろん好きな名前でいいです。今回はtensorflowにしておきます。また、pythonバージョンは3.5じゃないと駄目です。理由は後で説明します。
次に仮想環境を有効化します。
conda activate tensorflow
#pythonライブラリなどのインストール
Object Detection Toolsを動かすために必要なものなどををインストールします。以下のコマンドを入力してください。
pip install tensorflow==1.5
pip install opencv-python
conda install git
tensorflowは少し古いですが1.5にしてください。理由はtensorflow1.6以降は、AVX 命令という昔のCPUでは実行できない命令を実行する必要があるからです。pythonバージョンを3.5にした理由も、このtensorflow1.5がpython3.5でないと動かないからです。
#Object Detection Toolsのダウンロード
Object Detection Toolsをダウンロードします。以下のコマンドを入力してください。
git clone https://github.com/karaage0703/object_detection_tools
#学習済みモデルのダウンロード
学習済みモデルの「frozen_inference_graph.pb」っていうのと、認識させるものの一覧が書いてある「coco-labels-paper.txt」というものをダウンロードします。
まずは、「coco-labels-paper.txt」をダウンロードします。
https://raw.githubusercontent.com/amikelive/coco-labels/master/coco-labels-paper.txt
にアクセスしてください。chromeなら右クリックして「名前を付けて保存」というところを押し、「保存」と、押せばダウンロード出来ます。
次に、学習済みモデルの「frozen_inference_graph.pb」をダウンロードします。
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf1_detection_zoo.md
にアクセスしてください。「COCO-trained models」というところの表の中の、「ssd_mobilenet_v1_coco」を押してください。すると、「ssd_mobilenet_v1_coco_2018_01_28 .tar.gz」というファイルがダウンロードされます。ですがこのファイル「.tar」と「.gz」という方式で「.zip」みたいにファイルが圧縮されています。もちろんこんなファイルwindowsの標準機能では解凍できません。そこで「7-Zip」というソフトを使います。
https://sevenzip.osdn.jp/
にアクセスするとダウンロードできます。使い方はネットで調べてみてください。「7-Zip」で解凍すると、「ssd_mobilenet_v1_coco_2018_01_28」というフォルダーがでてきて、その中に「frozen_inference_graph.pb」があります。
#いざ実行!
いよいよWEBカメラからのリアルタイム物体検出をします。以下のコマンドを入力してください。
cd object_detection_tools/scripts
python object_detection.py -l=「coco-labels-paper.txt」の場所 -m=「frozen_inference_graph.pb」の場所
「coco-labels-paper.txt」も、「frozen_inference_graph.pb」も、/object_detection_tools/scriptsにあるなら、
python object_detection.py -l=coco-labels-paper.txt -m=frozen_inference_graph.pb
と実行すればいいです。
こんな感じ。
やめたいときは、「ESC」キーを押せばいいです。
動画から物体検出をする場合は、以下のコマンドを入力してください。
cd object_detection_tools/scripts
python object_detection.py -l=「coco-labels-paper.txt」の場所 -m=「frozen_inference_graph.pb」の場所 -i=動画の場所
動画ファイルはたぶん「.mp4」でないとだめです。
##ディープモザイク機能
この機能は、ウィンドウ上でmかMを押すと検出した物体がモザイクになります。元に戻したいときはbかBを押すと元に戻ります。
#まとめ
今回はwindowsで@karaage0703 さんが作ってくださった、Object Detection Toolsを使って簡単にリアルタイム物体検出や、動画から物体検出をする方法を紹介しました。僕は、こんなに簡単に物体検出ができてとても感激しました。次回は、自分で学習済みモデルを作る方法を紹介したいと思います。これができるようになれば、自分の好きな物を物体検出で認識させることができるようになります。
#参考資料
https://qiita.com/naz_/items/84634fbd134fbcd25296
https://karaage.hatenadiary.jp/entry/2019/05/27/073000