ラズパイ3のカメラで物体検出をやってみます(1)


Movidius NCSを使ってYOLO学習済みモデルで物体検出をやってみます。

この物体検出の「目」になるのがカメラです。ラズパイに取り付けるカメラは2種類あります、両方でやってみましょう。

Webカメラ

カメラ・モジュール

CPUチェック


Raspberry-Pi (ラズベリーパイ)3 Model B +  ncsdk 1.12.00.01の環境


Webカメラ

まずは、YOLOネットワークモデルをPC+NCSで実行してWebカメラで物体検出してみました

のラズパイ版です。

こういう構成で、USB接続のカメラを使います。

やり方はPC版と同じなので、ざっと手順のみ。

YOLOのサイトから以下の2つのファイルをDLしておきます。

yoloNCS-master

yolo_tiny.caffemodel

 

YOLOディレクトリを作成

ダウンロードしたyoloNCS-masterを解凍してYOLOディレクトリにコピー

YOLO/yoloNCS-master/weightsディレクトリを作成

ダウンロードしたyolo-tiny.caffemodelをYOLO/yoloNCS-master/weightsディレクトリにコピー

NCS用graphバイナリーファイルを作成します

$cd ~/YOLO

$mvNCCompile prototxt/yolo_tiny_deploy.prototxt -w weights/yolo_tiny.caffemodel -s 12

カメラを起動して検出開始

cd ~/YOLO/yoloNCS-master

python3 py_examples/object_detection_app.py

 

object_detection_app.pyで検出できるオブジェクトは以下の20種類です。

classes = [“aeroplane”, “bicycle”, “bird”, “boat”, “bottle”, “bus”, “car”, “cat”, “chair”, “cow”, “diningtable”, “dog”, “horse”, “motorbike”, “person”, “pottedplant”, “sheep”, “sofa”, “train”,”tvmonitor”]

 

 

 

 

 


カメラ・モジュール

 

こういう構成で、カメラ・モジュールを使います。

方法は2つ

1:カメラ・モジュールをUSBカメラとして扱えるようにマウントして使う場合

これだとobject_detection_app.pyを書き換える必要がないです。

ただし、他のUSBカメラと共存させる場合は、/dev/video0として認識されるようにします。

手動でマウントする場合は、他のカメラを外しておきます。

他のUSBカメラが接続されていると、それが優先されるので以下のコマンドで見ると

$ls /dev/video*

USBカメラが、/dev/video0

カメラモジュールが、/dev/video1

になってしまいます。

object_detection_app.pyではデフォルトでDevice0しか見ていません。

 

 

カーネルモジュールのロードを実行

sudo modprobe bcm2835-v4l2

ちなみに、アンロードする場合は

$sudo modprobe -r bcm2835-v4l2

 

恒久的に使う場合は/etc/modulesをエディターで開いて

$sudo leafpad /etc/modules

以下を記述して

bcm2835-v4l2

ラズパイ再起動

 

カメラを起動して検出開始

cd ~/YOLO/yoloNCS-master

python3 py_examples/object_detection_app.py

カメラ・モジュールの方が画素数が多いので画像はきれいですが、それで検出に差が出るってことはありません。

 

注:

object_detection_app.py実行時に以下のメッセージが出てカメラが起動しない場合

VIDIOC_QBUF:Inavalid argument

object_detection_app.py:__name__のvideo streamのframeサイズを落としてみます

Width

default=800 ->  default=640

Height

default=600 ->  default=480

 

 

 

2:直カメラ・モジュールを使う場合

若干ですが、カメラ動作は軽くなります、本当に若干ですが。

ncsdk2の環境でやってみます。ただ、ncsdk2の環境だとNCSのサンプルはTensorFlowが1.8.0じゃないと通らないという報告がありますね。SDKの1.12をインストールした時のTensorFlowは1.4.1、さてどうしよう?

工事中(coming soon)

 

 

 

 

 


CPUチェック

カメラで物体検出を行っている時のCPU温度です。

80℃を超えていますね。

こりゃ扇風機、いるな。

再度測定

CPUが77℃くらいの時のクロックは1.2GHzまで上昇してました。

検出を停止したら、あっという間に63℃くらいまで低下し、クロックも通常の600MHzに落ちてました。

 

 


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*