YOLOv3を使用して物体認識を試してみた

内容

画像を読み込んで画像中にある人や動物などを認識して矩形で表示してくれる物体認識をYOLOv3を使って試してみたいと思います。

YOLOv3とは

公式サイト

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

YOLOとはYou Only Look Onceのことで、リアルタイム物体検出システムのことです。

公式サイトに物体認識までの手順が書かれていますが、全て英語で書かれていますので以下に手順を簡単にまとめてみました。

手順

git clone https://github.com/pjreddie/darknet
cd darknet
make

基本的には上の3つのコマンドだけで物体検出の準備が整います。

gitからソースをクローンするとdarknetというディレクトリが作られますので、そのディレクトリに移動してからmakeするだけです。

Makefileの設定をするとある程度動作仕様を変更できますが、今回の記事では扱わないことにします。

そして今回はすでに作られた学習モデルを使います。

以下のコマンドでダウンロードできます。

wget https://pjreddie.com/media/files/yolov3.weights

もちろん自前の画像を学習させることで自分だけの学習モデルを作ることもできますが、これも別記事に託すことにします。

以下のように、lsコマンドを使ってdarknetディレクトリに学習モデル(yolov3.weights)が保存されているか確認してください。

f:id:tk0137:20200913092754j:plain

そして今回の物体検出の対象の画像は下の写真を使います。

f:id:tk0137:20200913085819j:plain
dog.jpg

公式サイトに載っているものと同じですが、かなり有名な写真です。

darknetディレクトリの下のdataディレクトリの入っているので確認してください。

いよいよこの画像に検出を実行します。

以下のコマンドを実行してください。

./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

すると以下のようなログが流れて検出が終了します。

f:id:tk0137:20200913093005j:plain

検出結果はdarknetディレクトリ下にpredictions.jpgとして保存されるはずです。

またlsコマンドで確認してみてください。

f:id:tk0137:20200913093004j:plain

この写真を表示するとしっかり検出結果が表示されていることが分かります。

f:id:tk0137:20200913091548j:plain
predictions.jpg

最後に

このdog.jpg以外の写真でももちろん検出できますのでいろいろな写真で試してみてください。

犬以外にも猫や馬などの他の動物、バスや電車などの乗り物など数十種類の物体に対して検出が可能なので遊んでみてください。

簡単ではありましたが、最後までありがとうございました。

また別の記事で学習モデル作りの記事も書こうと思うのでよろしくお願いします。