Ml-tips

YOLOv5動かしてみた

概要

物体検出でよく用いられる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があがっていて物議を醸しているようですが、物体検出という素晴らしい技術であることには変わりないのかなと思っています(適当)。

参考文献