MachineLearning

【5分でOK】KerasでYOLOv3を動かして物体検出に挑戦!【keras-yolov3】

Keras YOLOv3
物体検出してみたい人
物体検出してみたい人
Pythonを使って、物体検出をやってみたいな…。

なんか簡単にできる方法はないかな…。

 

この記事では、KerasでYOLO-v3を動かして、物体検出の実装をおこなっていきます。

ちゃんというと「機械学習アルゴリズムがYOLO-v3で、Pythonの機械学習ライブラリKerasを使って、物体検出の実装する」です。

 

機械学習に興味を持って、Pythonを勉強しているので、試しに何か動かしてみたい!という方にとって、とても役に立つ記事になるかと思います。

 

※参考 : 2019年8月時点でMacbook Pro/Windows10を使って動作確認しました。

 

完成イメージ

渋谷 検出結果

こんな感じで、画像に映っている「人」や「バックパック」を検出していきます。

検出できる物体の種類に制限はありますが、基本的にどんな画像でOKです。

 

KerasでYOLOv3を動かすまでの7ステップを確認

 

先に、KerasでYOLOv3を動かすまでの手順を紹介します。

 

KerasでYOLOv3を動かすまでのステップ

  1. 仮想環境を構築をする
  2. 必要なライブラリを導入する
  3. YOLO-v3をgit cloneする
  4. 学習済みモデルをダウンロードする
  5. 学習済みモデルをKeras用に変換する
  6. 物体検出に使いたい画像を集める
  7. YOLO-v3を実行

上記の手順でYOLOv3を使った物体検出に挑戦していきます。

 

なお、仮想環境の構築と必要ライブラリの導入に関しては、必要なければ読み飛ばしてくださいm(_ _)m

※今回紹介する方法は、Windows/Mac両方可です。さらに、GPUは必要ないので、スペックは気にしなくて大丈夫かなと。

 

KerasでYOLOv3を動かして物体検出に挑戦!【具体的な手順】

 

それではKerasでYOLOv3を動かして、物体検出に挑戦していきましょう。

STEP1 : 仮想環境を構築をする

 

まずは、YOLOv3専用の仮想環境を構築していきます。

※注意 : 今回はAnacondaがインストールしてあることは前提です。

 

ターミナル(ないしコマンドプロンプト)を開いて、下記のコードを入力しましょう。

conda create -n yolov3

上記のコマンドで、Anacondaを使った「yolov3」という仮想環境を構築しています。

 

仮想環境を構築できましたか?

conda info -e

上記のコマンドで、今まで作成した仮想環境の一覧を見れます。

 

「yolov3」という名前の仮想環境が構築できているか確認しましょう。

 

STEP2 : 必要なライブラリを導入する

 

「yolov3」という名前の仮想環境が出来ていたら、下記のコードでアクティベートします。

conda activate yolov3

「yolov3」という仮想環境を使いますよ!という合図になります。

 

アクティベートをしないと、root環境(もともと入っているやつ)で実行していくことになるので忘れずに入力しましょう。

 

ここまで完了したら、必要なライブラリを導入します。

 

YOLOv3を動かすのに必要なライブラリ

  • Tensorflow
  • Keras
  • Matplotlib
  • Pillow

上記の4つが必要になります。

 

ライブラリのインストールをするには、condaコマンドを使えばOKですね。

conda install tensorflow==1.14.0 keras==2.2.4 pillow matplotlib

上記をターミナル(ないしコマンドプロンプト)に打ち込みます。

※2020/3/13追記 : バージョン指定しないでTensorFlowをインストールすると、最新版が2.0系になっており、正常に動作しなくなります。なので、TensorFlow==1.14.0、Keras==2.2.4で導入していただけたらと。

 

Tensorflowのインストールだけ少し時間がかかるしれません。少々お待ちくださいませm(_ _)m

 

Tensorflowはgpu版でなくてOKです

Tensorflowは少し紛らわしいですが、下記の2種類存在します。

  • tensorflow(CPUのみで動く)
  • tensorflow-gpu(GPUを使いたいとき)

上記の感じで、GPUを使う場合には、別のライブラリを導入する必要ありです。

 

ただ、これから機械学習をする方は、「おそらくGPUを積んでいないマシン」かつ「GPUを使うのはCUDAやCuDNNをインストールする必要がある」ので、参入障壁高めです。

 

今回は物体検出を体験してみるのが目的なため、普通のTensorflowで進めていきます。

 

STEP3 : YOLO-v3をgit cloneする

 

ここまで出来たら、Keras-YOLOv3を使う準備をしていきます。

 

ターミナル(ないしコマンドプロンプト)で、Keras-yolov3のレポジトリをクローンします。

git clone https://github.com/qqwweee/keras-yolo3.git

 

クローンできたら、「keras-yolov3」ディレクトリに移動します。

cd keras-yolov3

 

※「No such file or directory」と出てきたら、ディレクトリ変更が出来ていません。git cloneした場合は、おそらくホームディレクトリにあるはずなので、下記を実行してください。

cd ~/keras-yolov3

 

 

gitコマンドが使えない場合

gitコマンドが使えない場合、githubからzipファイルをダウンロードし、ディスクトップとかに解凍してあげましょう。

keras yolov3 github

ディスクトップに置いた場合は、下記のようになります。

cd Desktop/keras-yolov3

 

STEP4 : 学習済みモデルをダウンロードする

 

次に学習済みモデルをダウンロードしてきます。

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

 

wgetコマンドが使えない場合

wgetコマンドが使えない場合は、URLの部分にアクセスすればファイルのダウンロードが可能です。

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

 

ダウンロードしてあげたら、「keras-yolov3」ディレクトリに移しておきましょう。

 

STEP5 : 学習済みモデルをKeras用に変換する

 

学習済みモデルのダウンロードと「keras-yolov3」への移動を終えたら、Keras用に変換していきます。

python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5

「model_data」ディレクトリの下に、Kerasで使うための「yolo.h5」という学習モデルを作成した感じです。

 

STEP6 : 物体検出に使いたい画像を集める

 

あとは物体検出に使いたい画像を集めればOKです。

僕は「渋谷」と検索して出てきた、スクランブル交差点の画像を使ってみたいと思います。

渋谷

取得した画像(shibuya.jpg)は、「keras-yolov3」フォルダに移しておきましょう。

keras-yolov3ディレクトリ

 

STEP7 : YOLO-v3を実行

 

いよいよ最後にYOLO-v3を実行して、先ほどの画像から物体(期待しているのは人)を検出していきます。

下記のコードをターミナル(ないしコマンドプロンプト)で実行しましょう。

python yolo_video.py --image

 

実行すると「Input image filename:」と、読み込む画像名を聞かれるので、先ほど入手した画像名を入力します。

Input image filename:shibuya.jpg

 

そうすると、下の画像のような検出結果になりました。

渋谷 検出結果

画像に映り込んでいた人が、ほとんど検出できていますよね。さらに、人が背負っているバックパックや、信号機まで検出できています。

 

看板に映っている山Pは、検出できませんでしたが、、、

それにしても、他の検出率は高めです。

 

こんな感じで、色々な画像を使って遊んでみてください。なお、検出できる物体は決まっているので、クラス一覧をご覧くださいませ。

 

まとめ : YOLOv3の実践の次は、しっかりと理論をおさえよう

 

というわけで、YOLOv3の実装について紹介してきました。

直感的にも分かりやすいし、使っていて面白かったはず。

 

実装を学んだ次は、理論が大事になってくるので、この調子で頑張っていきましょう(`・ω・´)!

なお、画像認識でオススメの書籍は、以下の記事で紹介していますよ!

画像認識 本 おすすめ
画像認識を学べるおすすめ本・書籍4選【初心者向けを現役が解説】『AIの勉強をしていきたいんだけど、なかでも画像認識が気になるな〜。どの本を使ったら良いのか分からないから、画像認識でおすすめの本が知りたい!』このような悩みを解決する記事になっています。画像認識でおすすめの本が知りたい方は必見です。...

 

それでは、この辺で。

 

おすすめの記事