AIプログラミング

人工知能「yolo」の「Darkne」を用いて物体検出を行ってみる

投稿日:

物体検出とは

画像を推定する場合、大きく画像認識と物体検出に分かれます。

画像認識は1枚の画像を与え、それが「何」かを推定するもので、顔認証や文字認証などがあります。顔認証では「映っている顔写真は男性か女性か」や「推定年齢」を判別し、文字認証では「手書き文字は0~9のどの数字」かを推定します。

それに対して、物体検出とは1枚の画像に1つ以上の物体が映っており、「何」だけではなく、それが「どこ」にあるのかについても推定します。大きな違いとして、「複数の物体を検出できる点」と、その物体が「どこにあるか」を推定することが出来る点です。

このため、「車」の側で遊んでいる「子供」か、「車」の中にいる「子供」かを区別することができ、炎天下の中での車中置き去りを防止することも可能となります。

物体検出の有名どころでは「SSD」と「yolo」があります。

今回は「yolo」のFrameworkであるDarkneを用いて物体検出を行っています。

Darkneの実行方法

Darknetのインストール

Darknetはgitに公開されているので、git cloneでクーロンすることが可能です。

ディレクトリの移動

darknetディレクトリに移動します。

makeコマンドの実行

DarknetはデフォルトではCPUとなっています。GPUに対応させるためにはMakefileの1行目をGPU=0からGPU=1に変更します。CPUで使用する場合はデフォルトのままでで問題はありません。
makeコマンドを実行します。環境にもよりますが3分程度で終了します。

学習済みのモデルのダウンロード

学習済みのモデル(yolo.weights)をダウンロードします。

実行

対象の画像データの指定をdata/person.jpgとし、先ほどダウンロードした重み(yolo.weights)を指定して実行しています。

cfg/yolov2.cfgについての詳細は理解していませんが、他のファイルでは推定に失敗してしまったのでこちらを指定しています。

predictions.pngという画像ファイルが生成されており、物体検出が行われていることが分かります。

生成画像

物体検出生成画像

物体検出が行われ「犬」と「人間」と「馬」が表示されています。

元画像

物体検出元画像

参考までに元の画像です。

その他にdataディレクトリ配下には、いくつかサンプルが用意されておりいろいろな物体検出を確認することが出来ます。

物体検出他画像

-AIプログラミング
-,

Copyright© AI人工知能テクノロジー , 2019 All Rights Reserved.