#目的
画像データから物体認識ができるYOLOv5をWindows上で試してみたので方法をまとめた。
##環境
- CPU : Intel i7-10700F 8Core 16thread
- GPU : NVIDIA GeForce RTX 3060 (Mem 12GB)
- OS : Windows11
- Anaconda : 3
- Python : 3.9.7
##YOLOv5のダウンロード
https://github.com/ultralytics/yolov5 から git clone するか、zipファイルをダウンロードして展開しておく。
##Anacondaで仮想環境を作る
ANACONDA.NAVIGATORで仮想環境を新たに作成し、Terminalを開く。
そこでダウンロードしたファイルを展開したディレクトリへ移動し、下記のように入力することで必要がインストールされる。
cd yolov5-master
pip install -r requirements.txt
なぜか data/coco128.yaml でエラーが出たので、ファイル内の罫線部分を削除した
# YOLOv5 by Ultralytics, GPL-3.0 license
# COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics
# Example usage: python train.py --data coco128.yaml
# parent
# ├── yolov5
# └── datasets
# └── coco128 ← downloads here
# YOLOv5 by Ultralytics, GPL-3.0 license
# COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics
# Example usage: python train.py --data coco128.yaml
# parent
# yolov5
# datasets
# coco128 ← downloads here
再度インストールすると正常終了した。
pip install -r requirements.txt
##実行してみる
python detect.py --source data/images/bus.jpg --conf 0.5 --weights yolov5s.pt
実行すると学習済みモデルをダウンロードして、認識結果の画像ファイルが runs\detect\exp\bus.jpg に出力された。
出力した画像ファイルを確認するとちゃんとバスと人3人のところに認識したタグが表示されるのが分かる。
##自分のドライブレコーダの動画ファイルで試す
動画ファイルを入力してどのくらいの速度で認識できるかを試してみた。
試す動画はドライブレコーダで録画したデータを持ってきた。
ソースはこちら https://github.com/roxa-delphi/yolov5_test/blob/main/test.py
python test.py
結果はこんな感じ(実際は動画だがサンプルとして静止画を載せた)
ちゃんと車や信号機や人を認識できていた。
60秒の動画を157秒かかって解析していたので実時間より2.6倍の時間がかかっている計算、(多分)30フレーム/secの動画ファイルなので解析時は11.5フレーム/secの速度が出ている様子。
CPU使用率は82%くらい。
もともとの動画ファイルは 1280x720 pixel の大きさで大きめなので小さくするとフレームレートが高くなることはわかっているけど、画像を小さくしてしまうと小さく写っている車を認識しなくなったりしたので、プログラムの中で横幅 640 pixel として扱うようにした。
今回はCPUしか使ってないためにリアルタイムには解析ができなかったので、次回はGPUを使えるようにしてどのくらい速く処理が出来るようになるか試してみたい。