LoginSignup
4
4

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-08-19

※この記事は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コンテナ版の記事です。

4
4
2

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
  3. You can use dark theme
What you can do with signing up
4
4