【Python】keras-yolo3を使用して物体検出

概要

Keras(TensorFlowバックエンド)で物体検出をしてみます。

物体検出にはkeras-yolo3を使用します。
https://github.com/qqwweee/keras-yolo3

構築環境

  • Windows10 Home 64bit
  • Anaconda 4.4.0
  • Python3.6.7
  • tensorflow-gpu1.12
  • Keras2.2.4

keras-yolo3の導入

KerasとTensorFlowが使用できる環境を事前に構築しておく必要があります。
仮想環境にKerasとTensorFlowをインストールする手順は下記を参照してください。
https://kazusa-pg.com/install-tensorflow-gpu-keras/

git cloneコマンドを使用するか、keras-yolo3のgithubのページからzipファイルをダウンロードします。 https://github.com/qqwweee/keras-yolo3

1git clone  https://github.com/qqwweee/keras-yolo3.git

zipファイルをダウンロードした場合は、解凍しておきます。

YOLO: Real-Time Object DetectionからYOLOv3 weightsをダウンロードします。
the pre-trained weight file here (237 MB)をクリックするとダウンロードできます。
ダウンロードしたファイルはkeras-yolo3のフォルダに移動します。

Anaconda Promptを起動して、Kerasがインストールされている環境をActivateします。

1activate keras-enviroment

keras-yolo3フォルダに移動します。

1cd \keras-yolo3

YOLOv3 weightsをKerasモデルのyolo.h5ファイルに変換します。

1python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5

これでkeras-yolo3の導入は完了です。

画像の物体検出を行う

画像から物体検出をしたいときは、Anaconda Prompt上で下記のコマンドを入力します。

1python yolo_video.py --image

Input image filename:と表示されるので物体検出したい画像ファイル名を入力します。

1>Input image filename:test_picture.jpg

以前撮影した写真で物体検出できるか試してみます。
認識できる物体のリストはこちらです。
https://github.com/qqwweee/keras-yolo3/blob/master/model_data/coco_classes.txt
リストに記載されているbenchとboatが検出できるはずです。

結果は以下のようになりました。

ボートとベンチを認識しています。すごい!

動画の物体検出を行う

画像から物体検出をしたいときは、Anaconda Prompt上で下記のコマンドを入力します。
inputは必須ですが、outputは必須ではありません。

1python yolo_video.py --input 読み込みたい動画のパス --output 物体検出後の動画保存パス

人を撮影したmp4ファイルで試してみたところ「Person」と検出できていました。

感想

keras-yolo3を使用して、Pythonで物体検出をしてみました。

ディープラーニング初心者の私でも、自分で撮影した写真や動画で物体検出できました。
YOLOv3やkeras-yolo3を開発されている方々の技術力に頭が下がる思いです。

自分で用意した物体のデータもトレーニングすれば検出できるようなのでチャレンジしてみます。

keras-yolo3を使用して種類・座標・高さ・幅を検出する

keras-yolo3のコードを応用して画像から物体の種類・座標・高さ・幅を検出する方法を書きました。
検出した物体の情報を使用して、画像から物体の切り抜きなどができます。

https://kazusa-pg.com/object-detection-picture/

関連ページ