みらいテックラボ

音声・画像認識や機械学習など, 管理人が興味のある技術の紹介や実際にトライしてみた様子などメモしていく.

YOLOv2を試してみる(1)

第1回AIチャレンジコンテストの懇親会[1]に参加した際に, 料理領域検出部門に参加した多くの方が採用したと言っていたYOLOv2(You Only Look Once) [2]というリアルタイムオブジェクト検出を試してみることにした.

1. Darknetのインストール
YOLOv2は, Darknet [3]というDeep Learningフレームワークを使用して実装されている.
Darknetのインストールは, 基本的にはここの通りにやればよい.

$ git clone https://github.com/pjreddie/darknet.git
$ cd darknet

今回は, 先日組み上げたGPU搭載PCで動かすので, Makefileの以下の3か所を変更した.

# GPU=0
GPU=1
# CUDNN=0
CUDNN=1
# OPENCV=0
OPENCV=1

あとはmake. これだけでOK.

$ make

2. 試してみる
2.1 静止画
以前, ペットボトル認識[4]を行った際に使用した自動販売機の画像で試してみた.

$ wget https://pjreddie.com/media/files/yolo.weights
$ ./darknet detect cfg/yolo.cfg yolo.weights data/petbottles01.jpg

結果:
f:id:moonlight-aska:20170818230716j:plain:w400
自動販売機の上段のペットボトルはすべて"bottle"と検出できている.
下段の缶ジュース/コーヒーの一部が"bottle"として検出されているが, 他の画像で試してみたところ, 缶ジュース/コーヒーも"bottle"として検出するのがどうも正しい感じ.
f:id:moonlight-aska:20170818232509j:plain:w300

f:id:moonlight-aska:20170818232526j:plain:w300

ちなみに, 以前試したmxnet-ssdではこんな感じ.
f:id:moonlight-aska:20170819001554p:plain:w400

別の例として, 今話題となっている「あだち充 夏祭り2017」(小学館) [5]の画像でも試してみた.
結果:
f:id:moonlight-aska:20170818232933j:plain:w500
人物は14人中12人検出, グローブを3個中2個検出できている.
う~ん, これはすごい!!

2.2 動画
USBカメラをつないで, リアルタイム検出を試してみた.

$ ./darknet detector demo cfg/coco.data cfg/yolo.cfg yolo.weights

結果:
f:id:moonlight-aska:20170818235756p:plain:w500
左上のモニタ以外はほぼ正しく検出できている.
検出処理は, GTX1060を使っても8FPS程度.
20FPSくらい出るとよかったんだけど...

また, nvidia-smiで見ると, 約1.3GBのGPUメモリを使っている.
f:id:moonlight-aska:20170818235815p:plain:w500

新しく組み上げたPCで, YOLOv2を少し試してみた.
GPUも問題なく使えているようだし, 検出精度もそれなりに高いので, 何か面白い応用を考えてみたい.
また, 検出/識別精度の向上のために, モデルの学習についても調べてみよう.

----
参照URL:
[1] 第1回AIチャレンジコンテスト(料理分類部門)に挑戦してみた!! (3) - みらいテックラボ
[2] YOLO: Real-Time Object Detection
[3] Darknet: Open Source Neural Networks in C
[4] ペットボトルを認識してみよう! (4) - みらいテックラボ
[5] 少年サンデー×ゲッサン×サンデーS増刊 3誌連合企画 あだち充夏祭り2017|小学館




詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~

詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~



Chainerによる実践深層学習

Chainerによる実践深層学習


Chainerで学ぶディープラーニング入門

Chainerで学ぶディープラーニング入門