Let’s play with AI.
AI coordinator管理人の清水秀樹です。
皆様、コロナウイルスが猛威を奮っておりますが、いかがお過ごしでしょうか?
人混みは避けて過ごしたいですね。
さてさて、今回のテーマはkeras yolo v3を高画質ビデオカメラや一眼レフカメラを使って、リアルタイムに物体検出ができる方法をご紹介したいと思います。
普段皆様はリアリタイム物体検出を試しに実行する場合、ほとんど方はUSBカメラやPC内臓のカメラを使っているかと思います。
それはそれで問題ないのですが、もっと拡大した映像で試したいですとか、もっと望遠レンズで物体検出を試してみたいなど使用用途に合わせて実験してみたいと思ったことはありませんか?
特に仕事で画像解析している方はカメラ選定に苦労しているのではないでしょうか?
工業製品的な専門的なカメラは正直金額が高いのでなかなか手が出せない。
そんな方にお勧めなのが、自宅にあるビデオカメラや一眼レフカメラでリアルタイム物体検出ができる方法があるので、それをご紹介したいと思います。
実験で使ったソースコードも当ページ下部に掲載しておきます。
USB HDMI変換アダプター
今回ご紹介する製品はこちらになります。
I-O DATAから販売されている商品でサイズも小さく持ち運びにとても便利です。
PC接続するだけで簡単に使用できて、しかもドライバ等のインストールも必要ありません。
HDMI出力できる機器であれば基本なんでもUSBカメラとしてPC入力できるかと思います。
試してないのですが、HDDレコーダーなんかももしかしたら取り込めるかもしれません。
百聞は一見に如かずということで、実際にyolo v3を使ってリアルタイム物体検出している様をyoutubeで紹介しています。
ぜひ参考にしてみてください。
keras yolo3
参考github
こちらが動く前提で話を進めます。
修正するファイルは、
- yolo_video.py
- yolo.py
の2つファイルです。
もともとは保存済みの動画ファイルをインプットする仕組みになっているため、カメラからの映像入力にソースが対応しておりません。
なので、少しだけ改造してUSBカメラでも動くように修正しましょう。
修正版はこちらのgithubからどうぞ。
yolo_video.py
修正内容の説明です。
55行目のtypeをintに変更しましょう。
"--input", nargs='?', type=int,required=False,default='./path2your_video',
これはOpenCVのVideoCapture()に渡す引数を定義するために修正します。
USBカメラが複数ある場合は、それに該当する番号をコマンドから入力しましょう。
内蔵カメラは ‘0’
usbカメラは ‘1’ 以降になります、。
yolo.py
177行目の
video_FourCC = int(vid.get(cv2.CAP_PROP_FOURCC))
を
video_FourCC = cv2.VideoWriter_fourcc(*'XVID')
に変更しましょう。
webcamはこれでないと録画できないようです。
これで修正は完了です。
ぜひ試してみてください。
それではまた!
この記事へのコメントはありません。