はじめに
色々と目的があり、仕事ではなく家の環境で物体検知をやってみたくなったんですが
- 動画ファイルを入力して検知した結果の動画ファイルを出力する
- CPU環境でも動く
- 簡単に構築できる
ような環境構築の情報が思いのほかピンポイントに無くてちょっと苦労したので、
この機会にまとめてみることにしました
※ブログの内容を、環境構築に内容を絞ってまとめなおしています
元々の動機は「格安の監視カメラで撮影した動画ファイルを自動で分析したいから」です
https://ai-mechatro.com/analyze-security-camera-3/
環境
- Windows10
- Anaconda 4.10.1
10年前のVAIOをSSDに換装して使い続けており、
スペックは中々に貧弱です…
環境構築手順
早速、手順をまとめていきます
Anacondaの仮想環境を作る
仮想環境の作成
Anaconda Powershell(Anaconda Prompt)を立ち上げ、
yolov3(名前はなんでもいいんですが)用の仮想環境を作っておき、
作成した仮想環境に切り替えておきます
conda create --name yolov3
conda activate yolov3
必要なライブラリのインストール
必要なライブラリをインストールしておきます
tensorflow、kerasのバージョンによる影響は確認していませんが、
バージョン違いによるエラーも多々起こるため、
理由が無ければ同じバージョンをインストールすることをお勧めします
conda install tensorflow==1.14.0 keras==2.2.4 pillow matplotlib
ここで、h5pyというライブラリをダウングレードしておかないと、
後で実行したときにエラーを吐きます
こちらも、理由が無ければ同じバージョンをインストールすることをお勧めします
conda install h5py==2.10.0
さらに、動画を入出力とする場合はOpenCVを使用するので、そちらもインストールします
デフォルトのリポジトリではopencvはインストールできないので、
conda-forgeのリポジトリを指定してインストールします
conda install -c conda-forge opencv==4.0.1
これで環境が整いました!
ソースコードを準備する
こちらのYOLOv3実装ソースコードを使用します
https://github.com/qqwweee/keras-yolo3
gitでクローンしてもいいですし、ダウンロードしてきても良いと思います
学習済モデルを準備する
学習済モデルのダウンロード
上記githubのREADMEに書いてくれていますが、
学習済モデルをダウンロードすることができます
https://pjreddie.com/media/files/yolov3.weights
こちらからダウンロードしておきます
ファイルをkeras用に変換する
ダウンロードしたファイルは、keras用のファイル(.h5)に変換する必要があります
変換スクリプトも準備してくれているので、そちらを使います
python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5
すると、model_dataの配下にyolo.h5というファイルが作成されているはずです
ここまでで、準備OKです!
実行
python yolo_video.py --input <入力ファイル名> --output <出力ファイル名>
これで、動画を入力すれば物体検知した動画が出力されるはず!
実行のサンプル
無料の動画を使って、物体検知を実際にやってみました
こちらからダウンロードした動画を使っています
https://www.motionelements.com/
実際に検知した結果がこちらです(画像です)
Qiitaって手軽に動画は貼れないんですね…