【自由研究】#3 Yoloを使ってみた

こんにちは!

すいません、前回から大分期間が開いてしまいました。5月は本業が忙しく、ブログを書く体力がありませんでした。今回は予告通りYoloを使ってみましたので、その結果を記述したいと思います!

 

Yoloとは?

オブジェクト(人とか物)を画像や動画から検出して、それが何のオブジェクトかをも推定してくれるアルゴリズムです。

以下にYoloについて詳しく説明した記事を載せます。物体検出についてのロジックについても記載してましたが、すいません、まだ理解できてません。。

次回までの宿題とします。

https://www.renom.jp/ja/notebooks/tutorial/image_processing/yolo/notebook.html

 

環境を構築する

 Yoloに関しては初心者中の初心者でしたので、「Yolo Python」とググって、先人の方々が記したブログをめぐりめぐり、たどり着いたのがRIGHTCODEさんの以下の記事です。

rightcode.co.jp

環境構築についてはこちらの記事以上に手順をまとめられそうになかったので参考にしてみてください。おそらく、そんなに苦労することなく構築できるはずです。

私はその代わりに、構築後のコードを何とか読み取りましたので、そちらを書かせていただきます。GitHubにも上げる予定ですので是非、これをお読みになっている方も挑戦してみてください!

物体検出できました!

先に結果をお披露目したいと思います!

構築したYoloはコマンドから操作するタイプのようです。

Terminalを開き、画像や動画に対して物体検出を行ってくれます。

画像は以下のコマンドを打ちます。

python yolo_video.py --image

実行後、以下のような入力欄が表示され、対象の画像ファイル名を入力します。

 

今回は3匹の子犬の写真を用意しました。


出力された画像が以下です。3匹の子犬に対して青い枠がぴったりと囲われてますね!また、推定したオブジェクトもdogと出てますね。冒頭で言ってなかったのですが、オブジェクト名だけでなく、そのオブジェクトである確率も出力されます。今回の場合、3匹とも99%以上でdogと推定されてますね。うん、ばっちりです。

 

そして動画も解析することができるようです。コマンドは以下のようになります。

python yolo_video.py --input kokoronotizu.mp4 --output kokoronotizu_output.mp4

--inputのあとにオリジナルの動画、--outputの後に出力先のファイル名を入力します。

動画を載せられなかったので1フレームだけ載せますね。

動画を解析する上での注意ですが、動画は大量の画像の集まりですので、通常のパソコンで解析しようものなら4分ほどの動画でも数時間かかってしまうでしょう。できればグラフィックボードを搭載しているパソコンで解析することをお勧めします。

コードの構成

コード自体は私も少しコメントを書きながら理解しましたので、そちらをGitHubに共有したいと思います。

github.com

現状ではほとんどカスタマイズはしていないですが、徐々に自分用の仕様にしていきたいなと思っています。

 

さて、本題のコードの構成について説明したいと思います。ただ、ほんの一部しか解読していないので、取り敢えずはそれを説明します。

環境構築後に、私たちが気にした方が良いコードは主に以下の2つで良さそうです。

  • yolo_video.py
  • yolo.py

この2つを図であらわすと以下のようなイメージになります。

正直、大層な解読はしていません笑

ただ、注目してほしいのはあくまでYolo本体はyolo_video.pyではなくyolo.pyの方にあり、カスタマイズするのであればyolo.pyに注目した方がよさそうです。

 

次回はYoloをカスタマイズしてオリジナルの物体検出をしてみたいと思います。