YOLOv3では、精度と実行速度の異なるいくつかのPre-Trained Model(学習済モデル)が用意されています。
公開されているモデルの学習データは、すべてCOCO。
特に、デフォルトで提供されているYOLOv3モデルの他にも、実はより精度の高い(その代わり速度が若干遅い)SPP(Spatial Pyramid Pooling Based YOLO)というモデルもあります。
正確さよりもリアルタイム性や軽量さを要求される用途では、Tiny-YOLOという小さいモデルも選択できます。
今回は、v3と名の付くこの3つのモデルを、様々なパラメータで実行し、速度と精度を検証します。
参考:YOLOv3 論文
参考サイト:
https://github.com/AlexeyAB/darknet
https://pjreddie.com/darknet/yolo/
yolov3-openimages.cfg (247 MB COCO Yolo v3) |
requires 4 GB GPU-RAM | - | - | https://pjreddie.com/media/files/yolov3-openimages.weights |
yolov3-spp.cfg (240 MB COCO Yolo v3) |
requires 4 GB GPU-RAM | mAP=60.6 | 20FPS | https://pjreddie.com/media/files/yolov3-spp.weights |
yolov3.cfg (236 MB COCO Yolo v3) |
requires 4 GB GPU-RAM | mAP=55.3 | 35FPS | https://pjreddie.com/media/files/yolov3.weights |
yolov3-tiny.cfg (34 MB COCO Yolo v3 tiny) |
requires 1 GB GPU-RAM | mAP=33.1 | 220FPS | https://pjreddie.com/media/files/yolov3-tiny.weights |
yolov2.cfg (194 MB COCO Yolo v2) |
requires 4 GB GPU-RAM | mAP=48.1 | 40FPS | https://pjreddie.com/media/files/yolov2.weights |
yolo-voc.cfg (194 MB VOC Yolo v2) |
requires 4 GB GPU-RAM | - | - | http://pjreddie.com/media/files/yolo-voc.weights |
yolov2-tiny.cfg (43 MB COCO Yolo v2) - |
requires 1 GB GPU-RAM | mAP=23.7 | 244FPS | https://pjreddie.com/media/files/yolov2-tiny.weights |
yolov2-tiny-voc.cfg (60 MB VOC Yolo v2) |
requires 1 GB GPU-RAM | - | - | http://pjreddie.com/media/files/yolov2-tiny-voc.weights |
yolo9000.cfg (186 MB Yolo9000-model) - |
requires 4 GB GPU-RAM | - | - | http://pjreddie.com/media/files/yolo9000.weights |
元々4Kで撮影した動画を、FHD(2K:1920x1080)、HD(1440×1080)、VGA(640x480)にダウンコンバートし、この4種類の動画(mp4)を下記のコマンドでリアルタイムに物体検出する。
darknet detector demo cfg/coco.data cfg/yolov3-spp.cfg yolov3-spp.weights -thresh 0.5 data/road/01.mp4 -dont_show 1 -out_filename results/road/01_out.mp4
HP OMEN 880-000jp Desktop
i7 8700 3.2GHz*8、メモリ32GB
NVidia GeForce GTX1070 8GB
Windows10Professional 64bit
CUDA:10.1
cuDNN:7.5.1
書き出し先:内蔵HDD(7200rpm)
精度は、静止画に書き出した状態で、同じフレームをどのように認識したか、検出すべきものを検出できているかどうか?を実際の検出画像を元に評価します。
tinyでは大きなものしか認識されていません。検出数:2と検出漏れが多く、枠が二重で検出されているなど、結果がかなり怪しいです。
v3では、遠くのトラック(普通車の陰になっている)や遠方の車両を漏らしていますが、tinyよりも精度は高いです。検出数:6
v3-sppは、大きなものも小さなものも検出できています。ワンボックス車両をトラックと誤認識しています。検出数:8で最も検出漏れが少なく、精度も高い結果となっています。
処理速度に影響を与えると思われる条件として、下記があります:
4K | 2K | HD | VGA | |
---|---|---|---|---|
tiny-yolo | FPS 18-20 | FPS 70-80 | FPS 100-110 | FPS 100-110 |
v3 | FPS 18-20 | FPS 20-21 | FPS 20-21 | FPS 20-21 |
v3-spp | FPS 18-20 | FPS 20-21 | FPS 20-21 | FPS 20-21 |
![]() |
![]() |
![]() |
![]() |
tinyでは、動画画素数の影響が如実に出ます。VGAサイズでは、なんと100-110fpsというスピードになりました。(検出の精度が良くないですが)
v3とv3-sppの場合、4Kの場合を除いて、それ以下の解像度の場合に20-21fpsが性能の上限のようです。tinyのようには解像度の影響が出ません。
動画非表示/表示の際"-dont_show 1"を付ける/付けない
動画表示有 | 動画表示無 |
---|---|
FPS 13-15 | FPS 18-20 |
動画から静止画に書き出す際"-prefix results/road/01/frame_"を付ける/付けない
静止画書き出し有 | 静止画書き出し無 |
---|---|
FPS 3 | FPS 18-20 |
"-out results/C0010_out.json > results/C0010.txt"を付ける/付けない
ログ書き出し有 | ログ書き出し無 |
---|---|
FPS 18-20 | FPS 18-20 |
今回のテスト環境では、VGAサイズの動画を使った場合に、 公式サイトに記載されているような結果(v3:35fps、v3-spp:20fps、tiny:220fps)に近い結果(v3:36fps、v3-spp:20-21fps、tiny:180-200fps)が得られました。
今回は試していませんが、mAP=48.1、40FPSというスペックを見る限り、v3-tinyの代わりにv2を採用しても良いかもしれません。
▼この記事を書いたひと
R&Dセンター 陸 依柳
撮影、お城、戦国、ICT、サブカルチャー...常に面白く、新しいものに惹かれるタイプです。地方の戦国イベントによく参加しています☆
●富士見事務所 TEL : 052-228-8733 FAX : 052-323-3337
〒460-0014 愛知県名古屋市中区富士見町13−22 ファミール富士見711 地図
交通部 R&Dセンター