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

Python

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

物体検出にはkeras-yolo3を使用します。

GitHub - qqwweee/keras-yolo3: A Keras implementation of YOLOv3 (Tensorflow backend)

構築環境

  • 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をインストールする
Windows10にAnacondaで仮想環境を構築して、TensorFlow GPUとKerasをインストールする手順です。

 

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

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

 

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

 

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

 

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

 

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

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

画像の物体検出を行う

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

 

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

 

以前撮影した写真で物体検出できるか試してみます。
認識できる物体のリストはこちらです。
リストに記載されているbenchとboatが検出できるはずです。

 

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

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

動画の物体検出を行う

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

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

感想

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

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

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

 

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

keras-yolo3のコードを応用して画像から物体の種類・座標・高さ・幅を
検出する方法を書きました。

検出した物体の情報を使用して、画像から物体の切り抜きなどができます。

コメント