VOOZH about

URL: https://qiita.com/PINTO/items/b97b3334ed452cb555e2

⇱ YoloV2 より超速 MobileNetSSD+Neural Compute Stick(NCS)+Raspberry Piによる爆速・高精度の複数動体検知 #Python - Qiita


👁 Image
98

Go to list of users who liked

89

Share on X(Twitter)

Share on Facebook

Add to Hatena Bookmark

More than 5 years have passed since last update.

YoloV2 より超速 MobileNetSSD+Neural Compute Stick(NCS)+Raspberry Piによる爆速・高精度の複数動体検知

98
Last updated at Posted at 2018-03-11

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を達成したよ


[検出レート約30FPS] RaspberryPi3 Model B(プラスなし) で TX2 "より少し遅い" MobilenetSSDの物体検出レートを獲得しつつ MultiModel (VOC+WIDER FACE) に対応する

Githubのプログラムソース

◆環境

・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

98

Go to list of users who liked

89
8

Go to list of comments

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
98

Go to list of users who liked

89