LoginSignup
4

More than 1 year has passed since last update.

posted at

updated at

OKI AI エッジコンピューター「AE2100」でOpenVINOのサンプルプログラムを動かしてみよう(3)

※この記事はAE2100のCentOSコンテナ(centos7_openvino_2019R31_1.tgz)を対象としています。

以下はUbuntuコンテナ版の記事です。
OKI AI エッジコンピューター「AE2100」でOpenVINOのサンプルプログラムを動かしてみよう Ubuntuコンテナ版 (3)

要約

・この資料は、OKI AI エッジコンピューター「AE2100」向けの設定解説です。
・AE2100にWebカメラを接続し、リアルタイム物体検出をおこないます。

はじめに

YouTubeに 「犬マスクの人は判別できる? AIエッジコンピューター「AE2100」大実験」 が公開されています。
是非ご覧ください!!

今回はこのYouTubeと同じ内容を動かしてみたいと思います。

環境

AE2100のコンテナバージョンは「centos7_openvino_2019R31_1.tgz」とします。
今回必要なものはUSB2.0接続のWebカメラとなります。
この記事では"Logicool HD Webcam C270n"を使って動作確認をおこないました。
image.png

なお、第1回目の記事に従ってウインドウズPC上にVcXsrvの導入が済んでいることを前提とします。
OKI AI エッジコンピューター「AE2100」でOpenVINOのサンプルプログラムを動かしてみよう(1)

Demosのビルド(開発環境)

前回の記事を参照してください。

モデルファイルのダウンロード(開発環境)

Python の仮想環境をアクティブにします。 
※「AE2100 シリーズ SDK 取扱説明書 ーDeepLearning 編ー」P.13でPythonの仮想環境を作成した場合。

# cd /opt/intel/openvino/deployment_tools/open_model_zoo/tools/downloader
# source /opt/intel/openvino/bin/setupvars.sh
# source /opt/intel/openvino/deployment_tools/model_optimizer/venv/bin/activate

モデルファイルをダウンロードします
今回使うモデルはMS COCOデータ(80クラス)が学習された”ssd_mobilenet_v2”というモデルです。

(venv)# python3 downloader.py --name ssd_mobilenet_v2_coco

IR変換をおこないます。

(venv)# python3 converter.py --name ssd_mobilenet_v2_coco --precisions FP16

実行に必要なファイルを用します。

cd 
mkdir  object_detection_demo 
cd  object_detection_demo 
cp /root/omz_demos_build/intel64/Release/object_detection_demo_ssd_async ./
cp /opt/intel/openvino/deployment_tools/open_model_zoo/tools/downloader/public/ssd_mobilenet_v2_coco/FP16/* ./

認識時に表示するラベルファイルを用意します。
”ssd_mobilenet_v2_coco.labels”  という名前でファイルを作成し、以下の内容の書き込みをおこなってください。
なお、行数は91行ありますが認識するクラス数は”background”と”no_label”を除いた80クラスです。

ssd_mobilenet_v2_coco.labels
background
person
bicycle
car
motorcycle
airplane
bus
train
truck
boat
traffic_light
fire_hydrant
no_label
stop_sign
parking_meter
bench
bird
cat
dog
horse
sheep
cow
elephant
bear
zebra
giraffe
no_label
backpack
umbrella
no_label
no_label
handbag
tie
suitcase
frisbee
skis
snowboard
sports_ball
kite
baseball_bat
baseball_glove
skateboard
surfboard
tennis_racket
bottle
no_label
wine_glass
cup
fork
knife
spoon
bowl
banana
apple
sandwich
orange
broccoli
carrot
hot_dog
pizza
donut
cake
chair
couch
potted_plant
bed
no_label
dining_table
no_label
no_label
toilet
no_label
tv
laptop
mouse
remote
keyboard
cell_phone
microwave
oven
toaster
sink
refrigerator
no_label
book
clock
vase
scissors
teddy_bear
hair_drier
toothbrush

tarファイルに固めます。

cd ..
tar cvf object_detection_demo.tar object_detection_demo

TeraTermでAE2100にログインし、上記のtarファイルをドラッグ&ドロップでAE2100に転送します。

Webカメラ設定(AE2100側)

AE2100のUSBポートにWebカメラを接続します。
次にTeraTermでAE2100のホストOSにログインし、lsusbコマンドでデバイスが認識されているかを確認します。
認識できていれば”Bus 001 Device 005: ID 046d:0825 Logitech, Inc. Webcam C270” とでてくるはずです。

root@ae2100:~# lsusb
Bus 001 Device 002: ID 0403:6015 Future Technology Devices International, Ltd Bridge(I2C/SPI/UART/FIFO)
Bus 001 Device 004: ID 0403:6014 Future Technology Devices International, Ltd FT232H Single HS USB-UART/FIFO IC
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 004 Device 003: ID 03e7:f63b Intel
Bus 004 Device 002: ID 03e7:f63b Intel
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 003: ID 2c42:5114
Bus 001 Device 005: ID 046d:0825 Logitech, Inc. Webcam C270
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

/dev/video0 を作成します。

root@ae2100:~# mknod /dev/video0 c 81 0
root@ae2100:~# chmod 666 /dev/video0
root@ae2100:~# chown root.video /dev/video0

コンテナを起動します。
このときWebカメラをコンテナから使えるように” --device=/dev/video0:/dev/video0” をつけます。

root@ae2100:~# docker run --device /dev/dri --device=/dev/video0:/dev/video0 --device=/dev/ion:/dev/ion -v /var/tmp:/var/tmp --name centos-openvino -d centos7:openvino_2019R31 /sbin/init

ファイルのコピー(AE2100側)

ホストからコンテナにファイルをコピーします。

root@ae2100:~# docker cp object_detection_demo.tar centos-openvino:/root/

コンテナに入ります。

root@ae2100:~# docker exec -it centos-openvino /bin/bash

tarを展開します。

# cd
# tar xvf  object_detection_demo.tar

依存パッケージのインストール(AE2100側)

前回の記事を参照してください。

object_detection_demo_ssd_asyncの実行(AE2100側)

OpenVINOの環境変数を設定します。

# source /opt/intel/openvino/bin/setupvars.sh

ウインドウ表示先のIPアドレスを設定します。PCのIPアドレスを指定します。

# export DISPLAY=192.168.100.101:0.0

準備が整いましたので”object_detection_demo_ssd_async” を実行してみます。
※ 事前に第一回目の記事に従ってWindows PC側のXlaunchを起動しておいてください。

# cd /root/object_detection
# ./object_detection_demo_ssd_async -i cam -m ssd_mobilenet_v2_coco.xml -d hddl

ぬいぐるみを映すと ”teddy_bear” と分類されました。
image.png

手持ちの花瓶を映したところ”vase” と分類されました。当たっていますね!
image.png

ウインドウ上で"Tab"キーを押すと、非同期(Async)/同期処理(Sync)の切り替えがおこなわれ非同期(Async)の場合、実行フレームレートが向上します。
"Esc"キーで処理が終了します。

まとめ

今回はAE2100にWebカメラを接続し、リアルタイム物体検出を実行してみました。
AE2100/OpenVINOにはさまざまなサンプルアプリケーションが含まれていますので
ぜひ試してみてください!


以下はUbuntuコンテナ版の記事です。

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
What you can do with signing up
4