AI coordinator

人工知能 & ロボティクス

サイト運営者

© AI coordinator All rights reserved.

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

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

数多くあるオブジェクト物体検出の中で、処理速度が最も早い?と言われている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の勉強をするなら、こちらで紹介する書籍も参考になりますので一読してみることをオススメします。

 


その他の物体検出記事はこちらから

 

それではまた。

関連記事

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

20176/1

jupyter notebookの便利な使い方や起動しなくなった時の対処法

便利なショートカットキー jupyter notebookを便利に使用する上で、最低限知っておけば良いショートカットキーを紹介します。 …

20176/6

大量の画像から顔の部分のみトリミングして保存する方法

OpenCVを使った顔抽出 前回の記事で、OpenCVを使った顔認識を紹介しました。 今回は大量の画像から顔の部分だけをトリミングし…

映像からの物体検出(SSD_Keras)に挑戦 for ubuntu

映像からの物体検出 リアルタイム映像からの物体検出に挑戦してみました。 ただし簡単にはできず、色々ハマってえらく苦労したので、同じ悩…

20173/5

Pepper用Python 2.7 SDK(WIN)セットアップ方法

コレグラフを使用しなくてもPepperを動かせるPython 2.7 SDKセットアップ方法 Windows編 前回に続き、今回はWind…

20173/3

Pepper用Python 2.7 SDK(MAC)セットアップ方法

コレグラフを使用しなくてもPepperを動かせるPython 2.7 SDKセットアップ方法 MAC編 プログラムソースをバリバリ記述しな…

201710/9

Fine-tuningを使って少ない画像データから効率よく学習モデルを作成する方法

VGG16モデルを使ったFine-tuning 近々、人を認識させる学習モデルを真面目に開発する機会が発生したため、以前からチャレンジして…

20178/29

TensorFlowでFashion-MNISTを試してみた

ファッション画像?でMNIST Fashion-MNISTというデータセットが公開されたので早速試してみました。 MNISTとの違い…

20173/11

Pepperコントローラー for Python

PythonでPepperコントローラーを作成 Pepperを簡単に動かせるPepper用コントローラーをPythonで作成してみましょう…

Watson VisualRecognition を Python GUIで使ってみよう

Watson API 「VisualRecognition」をPythonで使ってみよう Watson API「VisualRecogni…

20176/21

カメラ映像からの物体検出

PC内蔵カメラから自分の顔の物体検出をやってみる ほとんど筆者の備忘録的な内容になります。 色々な映像や画像からの物体検出をチャレン…

ページ上部へ戻る