3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

「AE2100」で「OpenVINO™ Notebooks」を動かしてみよう(2) ―webカメラ動作編―

Last updated at Posted at 2022-07-29

要約

  • 本記事では、AIエッジコンピューター「AE2100」の標準コンテナ内にwebカメラ実行が可能な「OpenVINO™ Notebooks」環境を構築する方法を説明します。
  • ブラウザからAE2100で動作している「OpenVINO™ Notebooks」に接続し、webカメラを用いるサンプルコードの実行を行います。

はじめに

前回の記事では、「AE2100」上に「OpenVINO™ Notebooks」環境を構築してサンプルコードの動作確認を行いました。
本記事では、webカメラを「AE2100」の標準コンテナ内で動作できるように環境構築を行い、
人物の骨格推定を行う「OpenVINO™ Notebooks」のサンプルコードで動作確認を行います。

事前準備

以下のような構成で、ウインドウズPCからAE2100へTeraTermでコンソール接続できることを前提とします。
(適宜IPアドレスなどはご使用環境に合わせ読み替えてください。)
なおAE2100のコンテナバージョンは「ae2100_openvino_ubuntu20_runtime_2021.4.2.tar」とします。
ウインドウズPCには、ブラウザ(Google Chrome)をインストールしてください。

今回必要なものはUSB2.0接続のWebカメラとなります。
この記事では"Logicool HDウェブカメラ C270"を使って動作確認をおこないました。
image.png

環境構築

本記事は公式ドキュメントを参考にAE2100に合わせた環境構築を行っています。

TeraTermでAE2100のホストOSにログインし、lsusbコマンドでWebカメラが認識されているかを確認します。
”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 003: 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 017: ID 03e7:f63b Intel
Bus 004 Device 016: 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

コンテナの引数を追加するため、前回の記事で構築したdockerコンテナを一度dockerイメージに保存して削除します。

root@ae2100:~# docker stop ubuntu-openvino-notebooks
root@ae2100:~# docker commit ubuntu-openvino-notebooks ubuntu-openvino-notebooks-images
root@ae2100:~# docker rm ubuntu-openvino-notebooks

下記コマンドでコンテナを起動します。
コンテナからwebカメラを使えるようにするため、引数に--device=/dev/video0:/dev/video0を加えます。

root@ae2100:~# docker run \
 --device /dev/dri \
 -it \
 --device=/dev/ion:/dev/ion \
 --device=/dev/video0:/dev/video0 \
 -v /var/tmp:/var/tmp \
 -v /dev/shm:/dev/shm \
 -p 10000:8888 \
 --name ubuntu-openvino-notebooks \
 -d ubuntu-openvino-notebooks-images \
 /bin/bash

コンテナにアクセスします。

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

pythonの仮想環境をactivateします。

root@639e291eece6:/opt/intel/openvino_2021.4.752# cd ~
root@<CONTAINER_ID>:~# source openvino_env/bin/activate

「OpenVINO™ Notebooks」を起動します。

(openvino_env) root@<CONTAINER_ID>:~/openvino_notebooks# cd openvino_notebooks
(openvino_env) root@<CONTAINER_ID>:~/openvino_notebooks/notebooks# jupyter lab notebooks \
--no-browser \
--port=8888 \
--ip=0.0.0.0 \
--allow-root \
--NotebookApp.token=''

以上で「OpenVINO™ Notebooks」の動作環境の構築は完了です。以下では「OpenVINO™ Notebooks」のサンプルコードで動作確認をします。

サンプルコードの実行 人物の骨格推定

このサンプルコードは、human-pose-estimation-0001のIRモデルで人物の骨格推定を行います。人物の骨格推定は、webカメラもしくは動画ファイルに対して行うことができます。

Jupyter Labの起動画面から402-pose-estimation-webcamのフォルダをクリックして開きます。
image.png

402-pose-estimation-webcam.ipynbをクリックすることでJupyter Lab内でタブが立ち上がりソースコードを開くことができました。
image.png
                        ↓
image.png

AE2100のGPUとHDDL実行に対応させるため、
以下の赤丸部分に記載しているコードを編集し、ダウンロードモデルをFP16-INT8からFP16に変更します。
image.png

本サンプルコードでは、以下の赤丸部分に記載しているコードを編集し、実行デバイスをGPUに変更します。
image.png

サンプルコードを実行します。
ソースコードが記載されているセルを上から順番に実行し、Runセクションの前まで実行します。
Runセクションでは、webカメラ動作と動画ファイル実行の2種類セルが用意されています。
image.png

今回はwebカメラ動作のセルを実行します。
image.png

無事webカメラから得られる映像をリアルタイムに処理することができました。
処理を停止する場合はソースコード上部にある■ボタンをクリックすることで停止することができます。

なお、AE2100で実行できる各デバイス別のスループットは下記の通りでした。

推論デバイス スループット[FPS]
CPU 1.7
GPU 11.5
HDDL 4.9

GPUのスループットが最も高い結果となりました。
HDDLは本サンプルコードが同期実行で処理を行っているため、
あまり高いスループットになっていないことが考えられます。

まとめ

本記事では、「AE2100」上にwebカメラ動作が可能な「OpenVINO™ Notebooks」環境を構築してサンプルコードの動作確認を行いました。

本記事で動作確認を行ったサンプルコードは同期処理で推論を行っていますが、
下記の記事のように非同期処理を実装することでスループットの改善も試すことができるので、ぜひトライしてみてください!
OKI AIエッジコンピューター「AE2100」で動く物体検出プログラムを作ろう (2) ―非同期処理編―

参考

3
0
0

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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?