【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をインストールする手順は下記を参照してください。

Windows10にTensorFlow GPUとKerasをインストールする

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

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

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

YOLO: Real-Time Object DetectionからYOLOv3 weightsをダウンロードします。

https://pjreddie.com/darknet/yolo/

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

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

activate keras-enviroment

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

cd \keras-yolo3

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

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

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

画像の物体検出を行う

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

python yolo_video.py --image

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

>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は必須ではありません。

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

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

keras-yolo3を使用した感想

keras-yolo3を使用して、Pythonで物体検出をしてみました。
ディープラーニング初心者の私でも、自分で撮影した写真や動画で物体検出できました。
YOLOv3やkeras-yolo3を開発されている方々の技術力に頭が下がる思いです。
自分で用意した物体のデータもトレーニングすれば検出できるようなのでチャレンジしてみます。

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

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

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

Licensed under CC BY-NC-SA 4.0
最終更新 2019年1月11日 13:15
Hugo で構築されています。
テーマ StackJimmy によって設計されています。