LoginSignup
0
2

More than 1 year has passed since last update.

CPU環境でも動画ファイルの物体検知ができる環境を簡単に作る

Last updated at Posted at 2021-06-15

はじめに

色々と目的があり、仕事ではなく家の環境で物体検知をやってみたくなったんですが

  • 動画ファイルを入力して検知した結果の動画ファイルを出力する
  • 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って手軽に動画は貼れないんですね…

capture_yolov3_demo.JPG

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2