画像サイズが大きいため、Wi-Fi環境下での閲覧を推奨
◆ 前回記事
デプスカメラRealSenseD435で "紫色のイカ" や "オレンジ色の玉ねぎ" を切り取ったり "金髪の人" を追っかけて距離を測る(1) with Ubuntu16.04
の続き
◆ はじめに
つまんない? そうですね。 しつこくてすみません。
きっと驚くと思うので、まぁそう言わずに軽く寄り道していってください。
エモい記事 を書かないと 「いいね」 は、ほとんどもらえない傾向が強いが、体力が無いので適当に書き流す。
世間は厳しい、いや、日本人は変に厳しい。。。
情け深い方は、どうか ポチッ てあげてくださいw
これなら使えるレベルじゃね? という程度に更にゴリゴリにパフォーマンスアップした。
ARM Quad Core と Pythonナメんなよ。
RealSense D435利用前提のプログラムだが、一般的なUSBカメラのロジックに変更するのは難しいことではない。
2018/07/23 USBカメラモードを追加
入力解像度を4倍にしたうえで、下記記事の2倍以上のパフォーマンスが出る。
当然ながら、プレディクションレートはスティックの限界性能以上には上がらない。
プレディクションレートを欲張るなら、TX2 や UP Board2 を素直に購入しよう。
あるいは、距離を測る必要がなければ、普通の安物USBカメラで 320x240 の低解像度でトライしよう。
YoloV2 より超速 MobileNetSSD+Neural Compute Stick(NCS)+Raspberry Piによる爆速・高精度の複数動体検知
カメラ映像の再生レート: 25FPS 〜 30FPS (カメラ本体のRealSenseは30FPSで撮像)
プレディクションレート: 8FPS 〜 12FPS
入力解像度: 640x480 (前回の4倍の解像度←ココ重要、RealSenseだとこれ以上解像度を落とせない)
25FPS 達成報告をした公式フォーラムへの投稿 【Intel Movidius Neural Network Community】
RealSense D435 + Neural Compute Stick + MobileNet-SSD + RaspberryPi3
では、まわりくどいことは置いておいて、実際にモノを見ていただこうと思う。
ARMクアッドコアをフル稼働させるとこうなる。
非同期なのでカメラを素早く動かし過ぎると枠がズレる。
今度はカメラ撮影レートが早すぎてプレディクションが追いつかず、前回よりズレが大きくなった。
速さ至上主義ではなく小綺麗に見せたいなら、前回程度のバランスが良いかもしれない。
【Youtube動画 生の再生スピード】 https://youtu.be/tAf1u9DKkh4
【GIF画像 10FPSまで劣化させてある、TV Monitorの検出と測距スピードがエグい】
※右上に表示されているフレームレートは15フレーム分の平均をとって表示している。
【USBカメラモード 640x480 MultiStick x4 (日本ではコレを4倍界王拳と呼ぶ、気持ち悪い、何故か犬判定が混じる)】
【Youtube動画 生の再生スピード】 https://youtu.be/GedDpAc0JyQ
Githubに公開したプログラムソースはこちら
PINTO0309/MobileNet-SSD-RealSense
◆ 環境
1.RaspberryPi3 + Raspbian Stretch (USB2.0 Port)
2.Intel RealSense D435 (640x480) or USBカメラ
3.Intel Movidius Neural Compute Stick 1本 ← 【注意】マルチスティック(MultiStick)もOKだけどレンダリングが引きずられて逆に遅くなる
4.OpenCV3.4.2
5.VFPV3
6.Numpy
7.Python3.5 + MultiProcessing
8.NCSDK v2.05.00.02
9.Intel TBB ← 今回は無効にした
10.OpenGL Driver ← 今回は無効にした
11.HDMIディスプレイ
◆ 参考にさせていただいた記事、謝辞
【くろのてさん】 [Python] multiprocessing 備忘録
http://note.crohaco.net/2017/python-multiprocessing/
【Python公式チュートリアル】
https://docs.python.jp/3/library/multiprocessing.html
◆ 作業に着手する前の前提条件
下記記事を参考に、NCSDK v2.xx や RealSenseSDK や OpenCV3.4、そのほか諸々が導入済みであること。
(2) RaspberryPi3 (Raspbian Stretch) + Intel Movidius Neural Compute Stick NCSDK v2.00.05.02 のインストール
◆ レシピ
1.Git Clone する。
$ cd ~
$ git clone https://github.com/PINTO0309/MobileNet-SSD-RealSense.git
2.Neural Compute Stick 1本 と RealSense をUSBポートにぶっ刺す。
3.実行する。いじょ。
$ sudo raspi-config
"7.Advanced Options" - "A7 GL Driver" - "G3 Legacy"
$ cd ~/MobileNet-SSD-RealSense
$ python3 MultiStickSSDwithRealSense.py
◆ まとめ
- RaspberryPi3 Model B (プラス無し) をナメちゃダメ
- ARM 4Core ナメちゃダメ
- Python ナメちゃダメ
- Python の MultiThread はゴミ "Global Interpreter Lock" (通称:GIL)
- 消費電力を気にしないなら multiprocessing
- OpenVINOの推論エンジンが NCSDK と同じ という情報を得たため、テンションが上がり気味
- あらためて OpenVINO の調査を再開する見込み
- OpenVINOについては こちら の一番下のところを参照
-
暇な人、320x240のカメラ解像度で試してみてください← Git Clone で試せます。RealSenseより何故か検出が速くてキモいです。 - RaspberryPi3 Model B+ 欲しいなぁ。。。
- TX2 欲しいなぁ。。。
- 無言でCaffe超軽量モデルを量産してくださる、そんな神が降臨することを願って止まない
- "ディープラーニングおじさん" ではないので、流行りモノに手を出して勝てるとも思わないし、勝とうとも思わない、安価・実用・実装に特化したコトにしか興味が沸かない悪いクセ