【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のコードを応用して画像から物体の種類・座標・高さ・幅を検出する方法を書きました。
検出した物体の情報を使用して、画像から物体の切り抜きなどができます。
関連ページ
- Anacondaで作成した仮想環境をJupyter NotebookのKernelに追加する
- Windows10にTensorFlow GPUとKerasをインストールする
- 【Python】出力に色をつける