More than 5 years have passed since last update.
YoloV2 より超速 MobileNetSSD+Neural Compute Stick(NCS)+Raspberry Piによる爆速・高精度の複数動体検知
MobileNet-SSD-RealSense 👁 GitHub stars
I wrote it in English in the comment section.
スマホで閲覧すると画像が激重なためPCでの閲覧を推奨
◆はじめに
Intelのアーキテクト AshwinVijayakumar(アシュウィンヴィジャヤクマール) から、「仲間が頑張っているのを見るととても嬉しい。MobileNet SSDもなかなかCOOLだぜ。調べてみなよ。」というニュアンスの、押しつけがましい有難いコメントをいただいたため、早速、速度と精度の観点でRaspberryPiでどれほどのパフォーマンスが得られるか、を検証する。
SSD は Yoloより遅い、と今まで思い込んでいたが、はたしてどうかな?
◆いきなり結果
あまりの速さと精度で検出されるため、あっけにとられてしまった。
今までYoloで頑張っていた自分は一体なんだったのか、と、軽い怒りすら覚えるレベル。
前回記事 https://qiita.com/PINTO/items/db3ab44a3e2bcd87f2d8
「YoloV2+Neural Compute Stick(NCS)+Raspberry Piの限界性能に挑戦」
の性能限界をあっさり超えてしまった。
TinyYoloV2の2倍の速度 かつ 数倍の検出精度。
しかも、今回はPythonファイルとOpenGLのみで動く。
裏でコソコソとCのバイナリやPythonのラッパーを動かしたりしない。
一応、マルチスティック対応 (Multi Stick) のまま。
もちろん大型ディスプレイへのフルスクリーン表示のまま。
使用した Neural Compute Stick は1本。
2018/03/17 Stick3本構成での動画を公開。やっぱり3本にすると異様に速かった。拾い過ぎて気持ち悪い。
1枚目:MobileNet SSD (Stick 1本構成、Youtube参照を推奨)
2枚目:TinyYolo
👁 ezgif.com-resize (2).gif
👁 ezgif.com-resize (1).gif
3枚目:MobileNet SSD (Stick 3本構成、動きがマイルドな動画版、Youtube参照を推奨)
👁 ezgif.com-resize (7).gif
4枚目:MobileNet SSD (Stick 3本構成、動きが激しい動画版、Youtube参照を推奨)
👁 ezgif.com-resize (8).gif
MobileNetSSD Youtube動画 Single Stick(1本) https://youtu.be/u03hueUVbek
MobileNetSSD Youtube動画 Multi Stick(3本/Mild) https://youtu.be/NvlaVeHVYgA
MobileNetSSD Youtube動画 Multi Stick(3本/Hard) https://youtu.be/sQnFbRSqIA8
画面表示サイズ:1920x1080
動画再生フレームレート:約 15FPS(動画再生とプレディクションは非同期実行)
プレディクションレート:約 8FPS以上
Movidius Neural Compute Stick の本数:1本
Neural Compute Stickによる推論+OpenCVによる加工処理の合計処理時間:0.12秒
この記事の2倍のパフォーマンスを達成した記事はこちら。
MultiThread ではなく、 MultiProcessing で 4Core ブースト。
Intelさんがまた褒めてくれたヽ(゚∀゚)ノイエァ RaspberryPi3でMobileNet-SSD(MobileNetSSD)物体検出と測距 再生フレームレート25FPS以上 + 予測レート12FPSを達成したよ
◆環境
・RaspberryPi 3 + Raspbian Stretch
・NCSDK v1.12.00
・Intel Movidius Neural Compute Stick 1本
・OpenCV 3.4.0
・OpenGL
・numpy
・Samba
・UVC対応のUSB-Webカメラ
◆素材
graphファイル
wget https://github.com/PINTO0309/MobileNet-SSD/raw/master/graph
※SBCなどの軽量・ロースペック端末での利用をターゲットにした学習データとロジックのため、高解像度ではうまく認識されない点に注意。目安はQVGA 320x240
◆レシピ
1.下記コードをコピペして任意のパスへファイル作成。
2.「素材」セクションのリンクからgraphファイルをダウンロードし、MultiStickSSD.py と同じフォルダパスへ配置。
3.MultiStickSSD.py 実行前にRaspberry Piのターミナルで下記コマンドを順に実行し、OpenGLの開発環境を導入する。
$ sudo apt-get install python-opengl
$ sudo -H pip3 install pyopengl
$ sudo -H pip3 install pyopengl_accelerate
$ sudo raspi-config
4.「7.Advanced Options」-「A7 GL Driver」-「G2 GL (Fake KMS)」の順に選択し、Raspberry Pi のOpenGL Driver を有効にする。
5.Raspberry Pi を再起動する。
6.MultiStickSSD.py を実行する。
◆参考にさせていただいたサイト
https://github.com/movidius/ncappzoo/tree/master/caffe/SSD_MobileNet
https://github.com/FreeApe/VGG-or-MobileNet-SSD
https://github.com/chuanqi305/MobileNet-SSD
◆最後に
はぁ…いい加減論文読むか…。専門用語バリバリの日本語も英語も読めないけど。
地球のみんな!
オラに「いいね」を分けてくれ!
2018/03/14追記
みなさん、ドラゴン〇好きなんですね。
まさか、これしきの記事がトップフィードに表示されるなんて思いもよりませんでした。
恐るべし、元気〇
不用意に「いいね」を押してしまったそこのあなた。同世代であることが丸わかりですよ。
次は論文読み込みの前にTBB導入にチャレンジして更にパフォーマンスアップできないか試してみます。
2018/03/15追記
TBB(Intel Threading Building Blocks)をOpenCVに組み込んでも性能改善は全くありませんでした。
一応、TBBの導入パッケージを作成しましたので、気になる方・OpenCVへの導入を考えている方は →こちら← がご参考になれば幸いです。
2018/03/29追記
Githubに公開、何やらcloneされているようなのでそれなりに需要はあるんですね。
https://github.com/PINTO0309/MobileNet-SSD
https://github.com/PINTO0309/MobileNet-SSD-RealSense
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme
