第1回AIチャレンジコンテストの懇親会[1]に参加した際に, 料理領域検出部門に参加した多くの方が採用したと言っていたYOLOv2(You Only Look Once) [2]というリアルタイムオブジェクト検出を試してみることにした.
関連記事:
・YOLOv2を試してみる(1)
・YOLOv3を試してみる(2)
・YOLOv3を試してみる(3)
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
結果:
自動販売機の上段のペットボトルはすべて"bottle"と検出できている.
下段の缶ジュース/コーヒーの一部が"bottle"として検出されているが, 他の画像で試してみたところ, 缶ジュース/コーヒーも"bottle"として検出するのがどうも正しい感じ.
ちなみに, 以前試したmxnet-ssdではこんな感じ.
別の例として, 今話題となっている「あだち充 夏祭り2017」(小学館) [5]の画像でも試してみた.
結果:
人物は14人中12人検出, グローブを3個中2個検出できている.
う~ん, これはすごい!!
2.2 動画
USBカメラをつないで, リアルタイム検出を試してみた.
$ ./darknet detector demo cfg/coco.data cfg/yolo.cfg yolo.weights
結果:
左上のモニタ以外はほぼ正しく検出できている.
検出処理は, GTX1060を使っても8FPS程度.
20FPSくらい出るとよかったんだけど...
また, nvidia-smiで見ると, 約1.3GBのGPUメモリを使っている.
新しく組み上げた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機械学習クックブック Pythonベースの活用レシピ60+ (impress top gear)
|
|
|