サイトデザイン変更中につき、読みづらい部分があります。ご容赦くださいませ。

【物体検出】YOLOv3を「5分」で使う方法【Python / Keras使用】

[chat face=”komatta_man2.png” name=”物体検出してみたい人” align=”left” border=”gray” bg=”none”]Pythonを使って、物体検出をやってみたいな…。簡単にできる方法があると良いんだけど、分かりやすく解説されている記事はないかな…。[/chat]

 

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

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

 

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

※参考 : MacbookとWindows、どちらでも実装可能です!

 

[jin_icon_check color=”#0071BB” size=”20px”] 完成イメージ

渋谷 検出結果

こんな感じで、画像に映っている「人」や「バックパック」を検出していきます。検出できる物体の種類に制限はありますが、基本的にどんな画像でも大丈夫です。

目次

物体検出アルゴリズムYOLOv3を動かす7ステップ【Keras版】

YOLOv3 Keras 物体検出

Kerasを使って、YOLOv3を動かすまでの手順は、以下のとおりです。

  • STEP① : 仮想環境を構築をする
  • STEP② : 必要なライブラリを導入する
  • STEP③ : YOLOv3をgit cloneする
  • STEP④ : 学習済みモデルをダウンロードする
  • STEP⑤ : 学習済みモデルをKeras用に変換する
  • STEP⑥ : 物体検出に使いたい画像を集める
  • STEP⑦ : YOLOv3を実行

順番に確認していきましょう。

STEP① : 仮想環境を構築をする

 

まずは、今回YOLOv3を動かすための仮想環境を構築していきます。

※注意 : 今回、仮想環境を作成するにあたって、Anacondaがインストールしてあることは前提です。最近Anacondaをインストールした場合は、必要なライブラリのバージョンが違うので注意してください!

 

Macを使っているならターミナル、Windowsを使っているならAnaconda Promptを開いて、下記のコードを入力しましょう。

$ conda create -n yolov3

上記で、Anacondaを使った”yolov3″という名前の仮想環境を構築しています。

もしくはAnaconda Navigatorを使ってボタンをポチポチしても大丈夫です。

 

仮想環境が作成できたことを確認したいので、以下のコマンドを追加で入力しましょう。

$ conda info -e

上記を入力して実行すると、いままで作成した仮想環境の一覧を確認できます。

“yolov3″という仮想環境が出力されていたら、このステップは完了です。

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

 

以下のコマンドを入力して、仮想環境を使える状態にしましょう。

$ conda activate yolov3

 

このコマンドを入力しないと、もともと使っていたroot環境で実行することになります。

今回、新しいライブラリをインストールしていくので、忘れずにconda activate yolov3を実行しましょう。

 

アクティベートしたら、ライブラリのインストールをしていきます。

 

[jin_icon_check color=”#0071BB” size=”20px”] YOLOv3を動かすのに必要なライブラリ

  • Tensorflow
  • Keras
  • Matplotlib
  • Pillow

上記の4つが必要です。

Anacondaでライブラリのインストールをするには、condaコマンドを使ってあげます。

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

この記事を書いている時点(2020年12月)では、TensorFlowの最新バージョンが2.3になっています。

でもYOLOv3で動作するのは、TensorFlowは1系です。2系では動作しませんので、バージョンを指定してライブラリのインストールをしていきましょう。

 

TensorFlowのインストールだけ時間がかかるので、焦らずに少しお待ちいただければと思います!

STEP③ : YOLOv3をgit cloneする

 

ライブラリのインストールが完了したら、ソースコードをダウンロードします。

Macを使っているならターミナルから、Windowsを使っているならコマンドプロンプトから、以下のコマンドを実行しましょう。

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

そのあとで、以下のコマンドを実行して、git cloneしたディレクトリに移動します。

$ cd ~/keras-yolov3

 

なお、Gitをインストールしていない場合は、URLにアクセスしてZIPファイルをダウンロードしましょう。

»参考 : qqwweee/keras-yolo3: A Keras implementation of YOLOv3 (Tensorflow backend)

Github YOLOv3

ダウンロードしたら、解凍したフォルダをデスクトップに置いてあげます。

Gitコマンドを実行せずにZIPファイルをダウンロードしたら、フォルダ名がkeras-yolov3-masterになっているはずです。

その場合は、下記のコマンドを入力して、フォルダに移動してあげます。

$ cd Desktop/keras-yolov3-master

 

※余談 : Windowsを使っていても、Gitはインストールしたほうが良いと思います。以下のURLからぜひ入手しておきましょう。

»参考 : Git for Windows

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

 

YOLOv3を動かすために、学習済みモデルをダウンロードしましょう。

それには、以下のコマンドを実行します。

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

 

Windowsだとwgetを使えないはずなので、以下のURLから学習済みモデルをダウンロードします。


»参考 : 学習済みモデルのダウンロード

手動でダウンロードしたら、デスクトップに入れてあげましょう。

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

 

学習済みモデルのダウンロードが完了したら、Kerasで使える形式に変換していきます。

以下のコマンドを実行しましょう。

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

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

これで、学習済みモデルの準備完了です。

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

 

あとは今回、物体検出してみたい画像を集めましょう。

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

渋谷

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

keras-yolov3ディレクトリ

STEP⑦ : YOLO-v3を実行

 

最後にYOLOv3を実行して、先ほどダウンロードした画像から物体検出していきたいと思います。

下記のコマンドを入力して、YOLOv3を実行しましょう。

$ python yolo_video.py --image

 

上記コマンドを実行すると、”Input image filename:”と出力されるはずです。

これは「読み込む画像名」を聞かれているので、先ほど入手した画像のファイル名を入力しましょう。

Input image filename:shibuya.jpg

 

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

渋谷 検出結果

画像に映り込んでいた人が、ほとんど検出できていますよね。

さらに、人が背負っているバックパックや、信号機まで検出できています。看板に映っている山Pは、検出できませんでしたが、、、。

 

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

こんな感じで、学習済みモデルを使うと、色々な物体を検出できます。検出できる物体については、以下のURLに載っているので、ぜひ確認してみてください。

»参考 : keras-yolo3/coco_classes.txt at master · qqwweee/keras-yolo3

まとめ : YOLOv3のハンズオンの次は、スキルアップを目指そう!

 

というわけで、YOLOv3のハンズオンを紹介しました。

実際に機械学習モデルを動かしてみると、直感的に分かるので面白いですよね。

ただ「もう少し踏み込んだことをしたい」と思ったときは、Pythonライブラリの理解や、理論面の学習が大事になってきます。

 

もし今回のハンズオンで「画像認識とか物体検出って面白いな…」と感じたら、ぜひとも勉強を進めていきましょう。

具体的には、Pythonの基礎が分かっているなら、本や書籍を使った学習がおすすめです。

あわせて読みたい
画像認識を学べるおすすめ本・書籍4選【初心者向けを現役が解説】 [chat face="komatta_man2.png" name="画像認識を学びたい人" align="left" border="gray" bg="none"]AIの勉強をしていきたいんだけど、なかでも画像認識が気になるな〜...

 

画像認識とか物体検出だけじゃなくて、もっと色々なAIについて知りたいと思ったら、以下の独学ロードマップが参考になるはず。

あわせて読みたい
【挫折ゼロ】機械学習の独学完全ロードマップ【3ヶ月で実務OK】 [chat face="komatta_man2.png" name="機械学習を独学で学びたい人" align="left" border="gray" bg="none"]機械学習を学んでみたいんだけど、プログラミングスクールは...

「どの教材をどの順番で学習すれば良いのか」を分かりやすく解説しています。初心者でも挫折しないように書いたので、ぜひ参考にしてみてくださいね。

 

AIはこれからも間違えなく伸びていくスキル。時代に取り残されないよう、今のうちからスキルアップしていきましょう(`・ω・´)!

おしまいっ!

 

[jin-fusen3 text=”おすすめの関連記事”]

よかったらシェアしてね!

この記事を書いた人

たくさんPythonを紹介するYouTuberです(登録者1.94万人) | フリーランスで機械学習/分析案件も請けています(経験業界 : 金融, 情報通信, サービス) | 元プログラミングスクール講師

コメント

コメントする

目次
閉じる