概要
物体検出でよく用いられるYOLOですが、その最新版(2020/08現在)であるYOLOv5を今回は動かしてみます。
やってみる
検証環境
試したのはCPU環境です。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Pop
Description: Pop!_OS 20.04 LTS
Release: 20.04
Codename: focal
$ sudo lshw -class processor
*-cpu
description: CPU
product: Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz
vendor: Intel Corp.
physical id: 4
bus info: cpu@0
version: Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz
serial: To Be Filled By O.E.M.
slot: U3E1
size: 2526MHz
capacity: 4600MHz
width: 64 bits
clock: 100MHz
capabilities:
configuration: cores=4 enabledcores=4 threads=8
$ sudo lshw -class memory
*-memory
description: System Memory
physical id: 1b
slot: System board or motherboard
size: 32GiB
準備
YOLOv5をcloneしてきます。
$ git clone https://github.com/ultralytics/yolov5.git
Requirements
- python3.8 or later
$ pip install -r requirements.txt
続いて学習済モデルをダウンロード。
ダウンロードはこちらから。
今回はこの中からYOLOv5lを利用します。
ダウンロードしたものは/yolov5/weights/
に格納してください。
ちなみにそれぞれの学習済モデルの違いは以下の表を参照。
Model | APval | APtest | AP50 | SpeedGPU | FPSGPU | params | FLOPS | |
---|---|---|---|---|---|---|---|---|
YOLOv5s | 36.1 | 36.1 | 55.3 | 2.1ms | 476 | 7.5M | 13.2B | |
YOLOv5m | 43.5 | 43.5 | 62.5 | 3.0ms | 333 | 21.8M | 39.4B | |
YOLOv5l | 47.0 | 47.1 | 65.6 | 3.9ms | 256 | 47.8M | 88.1B | |
YOLOv5x | 49.0 | 49.0 | 67.4 | 6.1ms | 164 | 89.0M | 166.4B | |
YOLOv3-SPP | 45.6 | 45.5 | 65.2 | 4.5ms | 222 | 63.0M | 118.0B |
画像を使った物体検出
cloneしてきたYOLOv5の中に入っているdetect.py
を実行していきます。test.jpgは自分たちで用意します。
$ python detect.py --source test.jpg --weights yolov5l.pt --conf 0.4
結果は./inference/output
に出力されます。
動画を使った物体検出
$ python detect.py --source test.mp4 --weights yolov5l.pt --conf 0.4
ウェブカメラを使った物体検出
$ python detect.py --source 0 --weights yolov5l.pt --conf 0.4
余談
YOLOv5と呼ぶべきかどうかのissueがあがっていて物議を醸しているようですが、物体検出という素晴らしい技術であることには変わりないのかなと思っています(適当)。