えいあーるれいの技術日記

ROS2やM5 Stack、Ubuntuについて書いています

Neural Compute Stick 2でYOLO v4の物体認識(OpenCV DNN)

 いまさらだけどNeural Compute Stick 2 の環境構築(Ubuntu 20.04 LTS) - えいあーるれいの技術日記の続きです。

 Neural Compute Stickなどの視覚特化AIアクセラレータをVPUと言うみたいです。

環境構築(続き)

 OpenVINOをインストール後は、物体検出に必要なOpenCVをインストールします。本当は直接ビルドしたほうがいいと思いますが、ROSのパッケージをそのまま流用しても動いたので、今回はそれを採用します。

wiki.ros.org

 上記のリンクでROSのキーを取得してros-noetic-vision-opencvのインストールを行います。

※追記:libopencv-devだけを使用しているので、コレをインストールするだけで良さそうです。

プログラム

 CUDA4DNN YOLOv4 Discussion · GitHubを使いました。

 このプログラムをウェブカメラ入力用に変更して、Neural Compute Stickが使えるように書き換えました。

 実行は、$ python3 opencv_dnn_example.pyでOKです。

gist.github.com

GitHub - Ar-Ray-code/opencv_dnn_exampleにもUPしています)

 Neural Compute Stickで物体検出をする際は20行目についてDNN_TARGET_CPUDNN_TARGET_MYRIADに変更します。2つとも変更した場合は動かず、逆にしても上手く動きませんでした。

環境

以下の環境で実行しました。

項目 名称
CPU Intel(R) Core(TM) i5 10210u
GPU Intel UHD Graphics
VPU Intel(R) Neural Compute Stick 2
OS Ubuntu 20.04 LTS
OpenCV OpenCV4

OpenVINOは2021年3月のものを使用しました。

結果

 CPU検出とVPU検出の比較を示します。

 CPUで必要なリソースを全てVPUが肩代わりするのでCPUリソースをほとんど使いません。ただしIntel CPUが優秀なのか、VPUの方は17〜18fpsと多少性能が劣っています。Raspberry PiでもNeural Compute Stickは使えるので、Raspberry Pi + Neural Compute Stickの組み合わせなら電力消費を抑えつつ性能もそこそこになりそうですね。

f:id:Ray_ar:20210531150931p:plain

 Raspberry Pi + Neural Compute Stick 2の組み合わせの環境構築も後日する予定です。

Raspberry Pi + Neural Compute Stickについて

 Neural Compute StickはCPUの負荷を減らすことができるので、発熱を抑えることができ、長時間動作するシステムを作成するのに適しています。Raspberry PiやミニPCなどのGPUが非力なコンピュータの拡張パーツとして使用を検討してみてはいかがでしょうか?