LoginSignup
4
0

More than 1 year has passed since last update.

「AE2100」で「OpenVINO™ Notebooks」を動かしてみよう(1) ―構築編―

Last updated at Posted at 2022-06-30

要約

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

「OpenVINO™ Notebooks」とは

OpenVINO™ Notebooks 」は、OpenVINO™ ToolkitのAPIを使ったPythonサンプルコード集です。
様々なタスクに対応したサンプルコードが用意されており、OpenVINO™の基本的な使い方や推論処理の最適化の方法を学ぶことができます。

以下では、各サンプルコードの概要を説明します。
なお、AE2100はAVX2に対応していないため、一部サンプルコードは動作できません。
AE2100におけるサンプルコードの動作可否も下記表に記載します。

💻 First steps
OpenVINO™のPythonAPIを使用した簡単なチュートリアル用のサンプルコード集です。

notebook名 概要 AE2100
動作可否
001-hello-world OpenVINO™のIRモデルで画像分類を行います。
002-openvino-api OpenVINO™ APIの基本動作の確認を行えます。
検証に使用しているIRモデルを独自のモデルに入れ替えて
検証することもできます。
003-hello-segmentation セマンティックセグメンテーションのIRモデルにより
道路領域のマスキングをします。
004-hello-detection 物体検出のIRモデルにより入力画像内の
テキストを検出します。

⌚ Convert & Optimize
TensorFlowやONNXモデル等をIRへ変換したり、量子化をおこなうサンプルコード集です。
AE2100はAVX2に対応していないためOpenVINO™のModel Optimizerを使用する本サンプルコードは動作しません。

🎯 Model Demos
学習済みのIRモデルを使用した様々なタスク毎のサンプルコード集です。

notebook名 概要 AE2100
動作可否
201-vision-monodepth 単眼深度推定により入力画像・動画の
深度を推定するデモアプリです。
202-vision-superresolution-image
202-vision-superresolution-video
超解像モデルにより入力画像のピクセル数を
増やして画像品質を向上させます。
205-vision-background-removal 入力画像の物体検出を行い検出物体以外の
背景を削除をして別の背景に変更します。
206-vision-paddlegan-anime PaddleGANにより入力画像をアニメに変換します。 ×
207-vision-paddlegan-
superresolution
PaddleGANにより入力画像のピクセル数を
増やして画像品質を向上させます。
×
208-optical-character-recognition 入力画像内のテキストを検出してから
テキストの注釈を追加します。
×
209-handwritten-ocr 手書きの日本語と簡体字中国語の
光学的文字認識を行います。
210-ct-scan-live-inference 腎臓CTスキャンのセグメンテーションを
リアルタイムに表示します。
211-speech-to-text 入力音声ファイルの自動音声認識を行います。
212-onnx-style-transfer 入力画像を5つの異なるスタイルに変換します。
213-question-answering 入力テキストへの質疑応答を行います。

🏃 Model Training
モデル学習を行うサンプルコード集です。
AE2100は推論用のエッジコンピューターであるためモデル学習を行う本サンプルコードは動作しません。

📺 Live Demos
webカメラを使用してリアルタイムな処理と描画を行うサンプルコード集です。
動作にはAE2100へのwebカメラ接続が必要です。
次回、webカメラを使った動作を紹介します。

notebook名 概要 AE2100
動作可否
401-object-detection-webcam webカメラもしくは動画ファイルに対して
物体検出を行います。
×
402-pose-estimation-webcam webカメラもしくは動画ファイルに対して
人物の骨格推定を行います。
403-action-recognition-webcam webカメラもしくは動画ファイルに対して
人物の行動認識を行います。

事前準備

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

環境構築

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

最初に、TeraTramでAE2100のホストOSにログインして、標準コンテナのDockerイメージを取り込みます。
※標準コンテナはAIエッジユーザーサイトよりダウンロードしてホストOSにコピーしておく必要があります。

root@ae2100:~# docker load < ae2100_openvino_ubuntu20_runtime_2021.4.2.tar

下記コマンドでコンテナを起動します。
-pでポート設定を行うことでコンテナ外からコンテナ内で起動したjuputer notebookへのアクセスが可能となります。jupyter notebookにおいてデフォルトで使用されている8888ポートはAE2100で使用済みのため、10000ポートにポート変換を行います。

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

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

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

必要なパッケージをインストールします。

root@<CONTAINER_ID>:/opt/intel/openvino_2021.4.752# cd ~
root@<CONTAINER_ID>:~# apt-get -y update
root@<CONTAINER_ID>:~# apt-get install -y python3-venv build-essential python3-dev git-all 

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

root@<CONTAINER_ID>:~# python3 -m venv openvino_env
root@<CONTAINER_ID>:~# source openvino_env/bin/activate

下記コマンドでGitから「OpenVINO™ Notebooks」の2021.4ブランチ(標準コンテナと同じOpenVINOバージョンにするためブランチを指定)をcloneします。

(openvino_env) root@<CONTAINER_ID>:~# git clone --depth=1 -b 2021.4 https://github.com/openvinotoolkit/openvino_notebooks.git

「OpenVINO™ Notebooks」の動作に必要なpythonパッケージをインストールします。

(openvino_env) root@<CONTAINER_ID>:~# cd openvino_notebooks
(openvino_env) root@<CONTAINER_ID>:~/openvino_notebooks# python -m pip install --upgrade pip
(openvino_env) root@<CONTAINER_ID>:~/openvino_notebooks# pip install -r requirements.txt

依存パッケージをインストールします。

(openvino_env) root@<CONTAINER_ID>:~/openvino_notebooks# source /opt/intel/openvino/install_dependencies/install_openvino_dependencies.sh

「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=''

なお、各サンプルコードはコンテナ内に格納されています。
/root/openvino_notebooks/notebooks
jupter Labでソース変更した場合、変更したソースを上記のディレクトリから引き揚げるか、
Jupyter Labの機能を使用してファイルをウインドウズPC側へダウンロードする必要があります。

以上で「OpenVINO™ Notebooks」の動作環境の構築は完了です。以下ではJupyter Labの基本操作説明と「OpenVINO™ Notebooks」のデモアプリを起動して動作確認をします。

Jupyter Labの基本動作

AE2100と接続しているウインドウズPCのGoogle Chromeに http://192.168.100.1:10000 (IPアドレス部はAE2100に設定しているIPに変更してください。)を入力することで、「OpenVINO™ Notebooks」にアクセスします。

コンテナ内では「OpenVINO™ Notebooks」を8888ポートで起動していますが、docker run時にポート変換設定を行ったのでWindowsPC側からは10000ポートでアクセスすることができます。

以下の画面が表示されたらAE2100で起動したJupyter Labにアクセスできています。
image.png

以降では、サンプルコードによる動作確認の前にJupyter Labの基本動作について記載します。

  • Notebookの新規作成
    Jupyter LabではNotebookと呼ばれるソースファイルにプログラムを記述することでPythonプログラムの開発をすることができます。
    Launcherを起動Ctrl+Shift+L(初期画面では起動しています。)して、Notebook欄にあるPython3ボタンをクリックすることでNotebookを新規作成できます。
    image.png
                            ↓
    image.png

  • セルの編集と実行
    起動したNotebookはセル毎にプログラムを記述して実行Shift+Enterすることができます。
    下にセルがない状態でセルの実行をすると自動で空のセルが下に生成されます。
    1つのセル内にはプログラムやコメントを複数行記述(関数毎にセルを分ける等)することが可能です。
    image.png
    ページ上部の選択バーからRun All Cellsをクリックすることですべてのセルを上から順番に実行することも可能です。
    image.png

  • セルの作成、削除
    空のセルはショートカットキーで作成できます。
    Aキーで選択しているセルの上部に作成、Bキーで選択しているセルの下部に作成できます。
    セルの削除はDDキーですることができます。
    また、セルの右側のアイコンをクリックすることでもセルの操作(コピー、上下移動、作成、削除)が行えます。
    image.png

  • ソースコードの保存(自動保存、手動保存)
    編集中のソースコードは変更があると2分周期で自動保存されます。編集箇所があり自動保存されていない状態でファイルのタブを閉じようとすると確認画面が出てきて保存することができます。
    また、手動でも notebook上部のSaveアイコンをクリック や ショートカットキーCtrl+Sを入力 により保存できます。

  • ファイルの操作
    ファイルを右クリックするとメニューが表示され、選択することでそれぞれの操作を行うことができます。
    Downloadを選択することでAE2100上に保存されているファイルをウインドウズPC側にダウンロードすることができます。
    image.png

  • フォルダの作成、ファイルのアップロード
    下記のアイコンをクリックすることでウインドウズPC側からファイルをアップロードしたり、新規フォルダを作成することができます。
    image.png

以下では「OpenVINO™ Notebooks」のデモアプリによる動作確認を行います。

サンプルコードの実行

このサンプルコードは、Mobilenet V3のIRモデルで入力画像の画像分類を行います。

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

今回は編集も考慮して、サンプルコードをコピーしてコピーしたファイル内で動作確認を行います。
下記ファイル(001-hello-world.ipynbファイル)を右クリックして、
Duplicateを選択することでnotebook(サンプルコード)のコピーを作成することができます。
(ショートカットキーも用意されており、Ctrl+DCtrl+C&Ctrl+Vでもファイルコピーができます。)
image.png
                        ↓
image.png

コピーしたファイルをクリックすることでJupyter Lab内でタブが立ち上がりソースコードを開くことができました。
image.png

サンプルコードを実行します。
下記画像では全セルの実行をしていますが、通常のJupyter Labと同様、セルの個別実行もできます。
image.png

各セルが上から順に実行され、Notebookをスクロールしてみると入力データの画像描画と推論結果がそれぞれ正しく表示されています。
image.png

CPUでの推論ができたので推論デバイスをHDDLやGPUによる推論をしてみます。
下記の様にdevice_nameで指定されているCPUを別の動作可能なデバイス名に書き換えます。
image.png
                        ↓

  • 内蔵GPUの場合
    image.png
                            or
  • HDDL(Myriad X)の場合 
    image.png

上記で変更したLoad the Modelにある1つのセルとDo Inferenceにある2つのセルを上から順番に再実行することにより動作確認をします。(パッケージのimportや入力データの再読み込みをせず動作確認ができます。)
実行デバイスを変更しても下記のようにCPU実行時と同様の推論結果を得ることができました。
image.png

本サンプルのモデルは比較的モデルのロード時間が短いですが、
モデルによってはロードに数分かかる場合がありますので、
数十秒から5分程度までは応答がなくとも焦らず、気長にお待ちください。
また、一部モデルはHDDL実行に対応していないため、モデルロードできない場合があります。その場合は別デバイスでの実行をお願いします。

まとめ

本記事では、「AE2100」上に「OpenVINO™ Notebooks」環境を構築してサンプルコードの動作確認を行いました。「OpenVINO™ Notebooks」を利用することで、簡単にAPIの動作確認や、ブラウザ上に推論した結果を画像表示することができます。
次回は更に実践的なサンプルコード(LiveDemo内のサンプルコード)の動作を試していきます。

参考

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