※この記事は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"を使って動作確認をおこないました。
なお、第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クラスです。
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” と分類されました。
手持ちの花瓶を映したところ”vase” と分類されました。当たっていますね!
ウインドウ上で"Tab"キーを押すと、非同期(Async)/同期処理(Sync)の切り替えがおこなわれ非同期(Async)の場合、実行フレームレートが向上します。
"Esc"キーで処理が終了します。
#まとめ
今回はAE2100にWebカメラを接続し、リアルタイム物体検出を実行してみました。
AE2100/OpenVINOにはさまざまなサンプルアプリケーションが含まれていますので
ぜひ試してみてください!