YOLOv2のリアルタイム物体検出をTensorFlowとPythonで実装する方法

YOLOv2のリアルタイム物体検出をTensorFlowとPythonで実装する方法

YOLO v2をどうしてもPythonで使ってみたかったので作ってみた

こんにちは。

AI coordinatorの清水秀樹です。

数多くあるオブジェクト物体検出の中で、処理速度が最も早い?と言われているYOLO v2を試してみました。

公式サイトの通りやって、環境のセットアップと静止画のオブジェクト物体検出を描画できるところまでは簡単にできましたが、なぜか動画になるとエラーになってしまいました。

そんなわけで、公式サイトのやり方ではイマイチ不良消化のまま先に進めなくなってしまったので、少し思考を変え、静止画でオブジェクト物体検出ができるなら、Pythonでソースコードを組み直せば、リアルタイム映像でもYOLOを試せると考え、実際にPythonで動かせるように作成してみました。

中々苦労しましたが、なんとか実装できたので、その内容を紹介したいと思います。

参考にさせて頂いたサイトの紹介

ちょうど自分がやりたいことに近しいソースコードがGithubに紹介されていたので、参考にさせて頂きました。

上記以外でも、KerasバージョンやChianerバージョンもあるみたいなので、そのうち試してみたいと思います。

 

開発環境

macOS Sierra

Anaconda3-4.2.0-MacOSX-x86_64

python 3.5.2

opencv3 3.1.0

tensorflow 1.1.0

 

YOLO セットアップ方法

いつもセットアップに試行錯誤することが多いのですが、今回は割と簡単に準備できました。

とはいえ、つまずいた部分も少なからずあるので、解消法も含めて紹介します。

 

まずはGithubからクローンしましょう。

そしてクローンしたフォルダに入ります。

続いてYOLOの公式サイトからweightファイルをダウンロードします。

以下画像内のhere(258MB)をクリックするとダウンロードできます。

ダウンロードしたら、darkflow-masterフォルダ内にbinフォルダを作成し、binフォルダ内にyolo.weightsを保存しましょう。

 

続いてインストール作業になります。

以下の3つのコマンドうちいずれかでインストールができます。

正直、この3つ違いはよくわかりません。

筆者は一番上を使いました。

 

インストールができたら、早速サンプルソースコードを使って、静止画からのオブジェクト物体検出にチャレンジしてみましょう。

筆者はここで以下のエラーが発生しました。

 

ググって解決策を発見。

以下のコマンドでエラーを解消しました。

 

が・・・・しかし、また別のエラー

 

よく確認してみると、パス名が違うじゃね〜か!!

ではなく、

でした。

パス名を変更して実行すると無事処理が完了。

print(result)の結果から、以下のような情報が出力されました。

JSON形式で結果が返ってくるようです。

 

さて、ここまででセットアップ完了です。

 

リアルタイム映像からのオブジェクト物体検出にチャレンジ

では、目的のtensorflowとPythonを使ったリアルタイム映像からのオブジェクト物体検出にチャレンジしてみたいと思います。

オブジェクトごとに矩形の色を変えてみるなど、ちょっと頑張って作ってみました。

紹介しいているソースコードはPCのwebカメラで動くように作成しています。

また、confidenceが0.6以上のものに対してだけ、矩形するようにしています。

この辺はお好みで変更してください。

 

もちろん動画でも対応可能です。

車の中の人まで認識できるところがすごいですね。

ただ、処理速度に関して言うと、筆者の開発環境ではSSD_kerasと大差ない感じでした。

 

まとめ

最近は色々なオブジェクト物体検出方法が紹介されています。

次から次へと色々な技術が紹介されていて、しかも自分のPCでも試せるような時代になっているので、便利な世の中になったなぁ〜なんて感じています。

興味がある方はこのYOLOを使ったオブジェクト物体検出にチャレンジしてみてください。

 

また、これからDeep Learningの勉強をするなら、こちらで紹介する書籍も参考になりますので一読してみることをオススメします。

 それではまた。

About The Author

Hideki
東京大学発AIスタートアップ企業でロボット開発室室長、画像解析室室長、動画解析室室長を務め、AIエンジニアとしても画像認識関連の特許を在籍中に3つ取得。その後、KDDIグループ内でプロダクトリーダーとして自然言語処理パッケージの自社開発を経て、現在はAGRISTのテックリードとして農業の人手不足の解決に向けた収穫ロボットの開発にチャレンジしている。ロボットは技術の総合格闘技との考え方から、AIだけでなく、ハードやエレキ、通信からクラウド、IOTまで幅広く手掛けることができる。最近では人とロボットの共存を目指すべく、性能だけを追い求める開発から「感動やワクワク体験」をデザインできるロボットの研究を進めており、人とロボットがうまく共存できる世界を作り出したいと日々行動している。

COMMENTS & TRACKBACKS

  • Comments ( 3 )
  • Trackbacks ( 2 )
  1. darkflow-masterフォルダー内にbinファイルをつくるのではなく、darkflowフォルダー内にbinファイルをつくるのですね。

  2. darkflowで自前のデータで学習する記事を書いてくれませんか?

  1. […] YOLOv2のリアルタイム物体検出をTensorFlowとPythonで実装する方法 […]

  2. […] YOLOv2のリアルタイム物体検出をTensorFlowとPythonで実装する方法 […]

LEAVE A REPLY

*
*
* (公開されません)