yoloという画像検出システムをご存知でしょうか。
画像や動画から特定の人物や動物、モノを判別してバウンディングボックスと呼ばれる四角い枠で囲うものです。
百聞は一見にしかず。
下記がyoloで検出された画像です。
こういった画像、たまに見かけますよね。
先日、トムクルーズのスパイ映画、ミッション・イン〜で登場したある男が瞳の中に特殊コンタクトをすると、
そこから見える画像を瞬時に判断して、自分の持っているスマホに、今見えている人物が誰なのかを表示するといった類のシーンがありました。
確かリアルでも似たようなシステムがあったなあと。で、このyoloのご紹介です。
さて、yoloも画像系のAIをやっているとちょこちょこ名前が出てくる代物で、2019年1月現在でV3まで進化しています。
そこで、今回はこのyoloV3をkerasとtensorflow使って、画像検出をしてみようかと。
また、静止画像だけでなく、動画でも検出してみようと。
それでは、まずyoloのインストール。
これはgitに上がっているので、cloneしてください。
git clone https://github.com/qqwweee/keras-yolo3.git
keras-yolo3に移動して
cd keras-yolo3
学習済みのモデルをダウンロード
wget https://pjreddie.com/media/files/yolov3.weights
で、kerasで使えるようにコンバート
python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5
さて、いよいよ実行するわけですが、
このまま実行するとファイルを選択するコマンドfilenameが出てきません。
そこでネットで検索するといろんな方法があるようですが、
このサイトの方法が楽でした。
https://qiita.com/yoyoyo_/items/10d550b03b4b9c175d9c
で、実行します。
python yolo.py
するとfilenameを聞いてきますので、画像検知したいファイル名を入力します。
Input image filename: test.jpg
ここではtest.jpgを指定しました。
結果はこちら。
人物をpersonとして検知していますね。
この時、環境によってはopenCVがうまくハマらず、エラーが出ることがあります。
そんな時もネットで検索しながら、ご自分の環境にあった方法でopenCVを入れてください。
pythonを動かすわけですから、
Anacondaで仮想環境を構築してからやった方が、いろいろ試せていいかもです。
検知した動画も載せておきましょう。
https://kk.dmacs.net/blo/douga/yoloDouga001.mp4
これは近隣施設での何かのスポーツ大会での開会式の様子です。
これだけの人数が集合すると、グラウンド内の選手の近辺は、物体が小さいせいもあり大雑把な画像検知ですね。しかし、手前に表示されている人物はしっかりと検知しています。
動画でこれだけの量を瞬時に検知できるとは。
yoloってのは、なかなかのシステムではないでしょうか。
後ほど、もう少し大き目の人物動画で検証してみたいと思っています。
今回はここまで。
******************
こういった画像検出システムに興味がある、AIをビジネスに取り入れたい、などを希望する方はご連絡ください。
>>> 本サイトのTOPはこちら。