筆記 |
|
OpenVINO™ツールキットは、人間の視覚をエミュレートするアプリケーションとソリューションを迅速に展開します。同ツールキットは、畳み込みニューラル・ネットワーク (CNN) をベースとするインテル®のハードウェア全体でコンピューター・ビジョン (CV) ワークロードを拡張し、パフォーマンスを最大化します。これらの手順は、通常、利用可能な ARM CPU プラグインのビルド方法 に従います。ただし、Raspberry Pi 4* ですべてを実行するには、特定の変更が必要です。このガイドでは、Raspbian* 32 ビット版 OS 対応の OpenVINO™ ツールキットのオープンソース・ディストリビューションをクロスコンパイルする方法で構築する手順を提供します。
トピックをクリックして詳細を参照してください。
手記 | このガイドでは、お使いの Raspberry Pi* ボードが以下のオペレーティング・システムで稼働していることを前提としています。 |
ハードウェア
ターゲット・オペレーティング・システム
手記 | このガイドには、正しくインストールするためにrootまたはsudoアクセスとして実行する必要のあるコマンドが含まれています。 |
デバイスソフトウェアが最新であることを確認してください。
sudo apt update && sudo apt upgrade -y
手記 | Dockerの公式ドキュメントに基づくインストール手順に従うことができます https://docs.docker.com/engine/install |
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo groupadd docker
sudo usermod -aG docker ${USER}
sudo systemctl restart docker
手記 | この記事の openvino_contrib および OpenVINO ツールキットのバージョンは 2022.1 に基づいています。 |
ソースコードをダウンロードし、構成ファイルを変更します。
git clone --recurse-submodules --single-branch --branch=2022.1 https://github.com/openvinotoolkit/openvino_contrib.git
arm_plugin ディレクトリーに移動します。
cd openvino_contrib/modules/arm_plugin
エディターツールを使用して、Dockerfile.RPi32_busterファイルの内容を以下のように変更します。
vim dockerfiles/Dockerfile.RPi32_buster
次の図に示すように、114 行目に「RUN pip install protobuf==3.20.0」を追加します。
編集したファイルを保存します。
エディターツールを使用して、 arm_cpu_plugin_build.sh ファイルの内容を以下のように変更します。
vim scripts/arm_cpu_plugin_build.sh
77 行目、78 行目、79 行目、および 136 行目を編集し、以下の 太字 のように変更を追加します。
77 checkSrcTree $OPENCV_HOME https://github.com/opencv/opencv.git 4.5.5-openvino-2022.1 4.x
78 checkSrcTree $OPENVINO_HOME https://github.com/openvinotoolkit/openvino.git 2022.1.0 releases/2022/1
81 checkSrcTree $OMZ_HOME https://github.com/openvinotoolkit/open_model_zoo.git 2022.1.0 releases/2022/1
136 -DENABLE_INTEL_MYRIAD=ON -DCMAKE_BUILD_TYPE=$BUILD_TYPE \
編集したファイルを保存します。
この手順では、スクリプトを実行して、Docker コンテナー環境でOpenVINO™ツールキットや OpenCV* などの他のコンポーネントをダウンロードしてクロスコンパイルします。
ARM CPU プラグイン・ディレクトリーに移動します。
cd openvino_contrib/modules/arm_plugin
Docker* イメージを構築します。
docker image build -t arm-plugin -f dockerfiles/Dockerfile.RPi32_buster .
Docker* コンテナーでプラグインをビルドします。
ビルドプロセスは /arm_cpu_plugin_build.sh ディレクトリ内で実行されるスクリプト /arm_cpu_plugin 実行されます(実行するデフォルトのコンテナコマンド)。すべての中間結果とビルドアーティファクトは、作業ディレクトリ内に格納されます。
したがって、作業ディレクトリ全体をマウントして、すべての結果をコンテナの外部に保存することができます。
mkdir build
docker container run --rm -ti -v $PWD/build:/arm_cpu_plugin arm-plugin
手記 | /arm_cpu_plugin_build.shスクリプトの実行を制御する環境変数がいくつかあります。
|
ビルド フォルダーに OV_ARM_package.tar.gz が生成されます。
ls build
OV_ARM_package.tar.gzをターゲット・デバイスに転送する (Raspberry Pi 4* 32 ビット・バスター)
パッケージをターゲットデバイス(Raspberry Pi 4 *)に転送し、ターゲットデバイスに直接セキュアコピーし、パッケージをUSBサムドライブにコピーして転送するには、さまざまな方法があります。
この記事では、ホストマシンにUSBサムドライブをマウントし、マウントされたサムドライブにビルドパッケージをコピーする方法を示します。
USBサムドライブをシステムのUSBポートに挿入し、次のコマンドを使用してデバイスの起動を確認します。
sudo fdisk -l
デバイスのブートを確認したら、デバイスのブート( /dev/sdaなど)を /mntにマウントします。
sudo mount /dev/sda /mnt
次に、OpenVINOパッケージをUSBサムドライブにコピーします。
sudo cp -rf build/OV_ARM_package.tar.gz /mnt/
クロスコンパイルが完了し、 OV_ARM_package.tar.gz をターゲットデバイス(Raspberry Pi 4 *)にコピーすることに成功しました。
コンパイルツールのインストール
sudo apt update
sudo apt install cmake -y
OV_ARM_package.tar.gzパッケージを抽出します。
mkdir ~/openvino_dist/
tar -xvzf OV_ARM_package.tar.gz -C ~/openvino_dist/
セットアップ変数のソース
source ~/openvino_dist/setupvars.sh
サンプル コードのコンパイル
cd ~/openvino_dist/samples/cpp
./build_samples.sh
ツールキットと インテル® ニューラル・コンピュート・スティック 2 および ARM* プラグインがデバイスで動作することを確認するには、以下の手順を実行します。
インテル® OpenVINO™ ツールキットには、推論エンジンとインテル® ニューラル・コンピュート・スティック 2を活用したサンプル・アプリケーションが含まれています。アプリケーションの1つはhello_query_deviceで、次のディレクトリにあります。
~/inference_engine_cpp_samples_build/armv7l/Release
次のコマンドを実行して 、hello_query_deviceをテストします。
cd ~/inference_engine_cpp_samples_build/armv7l/Release
./hello_query_device
システムに存在する推論に利用可能なデバイスを説明するダイアログを印刷する必要があります。
アプリケーションには、入力をパススルーするモデルが必要です。インテル® OpenVINO™ ツールキットのモデルは、次の方法で IR 形式で入手できます。
私たちの目的のために、直接ダウンロードするのが最も簡単です。次のコマンドを使用して、人-車両-バイク検出モデルを取得します。
wget https://storage.openvinotoolkit.org/repositories/open_model_zoo/2022.1/models_bin/3/person-vehicle-bike-detection-crossroad-0078/FP16/person-vehicle-bike-detection-crossroad-0078.bin -O ~/Downloads/person-vehicle-bike-detection-crossroad-0078.bin
wget https://storage.openvinotoolkit.org/repositories/open_model_zoo/2022.1/models_bin/3/person-vehicle-bike-detection-crossroad-0078/FP16/person-vehicle-bike-detection-crossroad-0078.xml -O ~/Downloads/person-vehicle-bike-detection-crossroad-0078.xml
手記 | このインテル® ニューラル・コンピュート・スティック 2には、FP16として知られる16ビット浮動小数点フォーマットに最適化されたモデルが必要です。例と異なる場合、モデル・オプティマイザーは Raspberry Pi* ではサポートされていないため、モデル・オプティマイザーを使用して別のマシンで FP16 に変換する必要がある場合があります。 |
最後に必要な項目は、ニューラルネットワークへの入力です。ダウンロードしたモデルには、3つのカラーチャンネルの画像が必要です。必要なファイルをボードにダウンロードします。
wget https://cdn.pixabay.com/photo/2018/07/06/00/33/person-3519503_960_720.jpg -O ~/Downloads/person.jpg
システムが インテル® NCS2 USB デバイスを認識できるようにするには、いくつかの udev ルールを追加する必要があります。
手記 | 現在のユーザーがユーザーのグループのメンバーでない場合は、次のコマンドを実行してデバイスを再起動します。 |
sudo usermod -a -G users "$(whoami)"
OpenVINO™環境をセットアップします。
source /home/pi/openvino_dist/setupvars.sh
インテル® ニューラル・コンピュート・スティック 2 で推論を実行するには、 install_NCS_udev_rules.sh スクリプトを実行して USB ルールをインストールします。
sh /home/pi/openvino_dist/install_dependencies/install_NCS_udev_rules.sh
これで USB ドライバが正しくインストールされるはずです。デモの実行時にインテル® ニューラル・コンピュート・スティック 2が検出されない場合は、デバイスを再起動して再試行してください。
モデルがダウンロードされ、入力イメージが使用可能になり、インテル® ニューラル・コンピュート・スティック 2がUSBポートに接続されたら、次のコマンドを使用して benchmark_appを実行します。
cd ~/inference_engine_cpp_samples_build/armv7l/Release
./benchmark_app -i ~/Downloads/person.jpg -m ~/Downloads/person-vehicle-bike-detection-crossroad-0078.xml -d MYRIAD
これにより、選択したオプションを使用してアプリケーションが実行されます。 -d フラグは、推論に使用するデバイスをプログラムに指示します。 MYRIAD を指定すると、 インテル® ニューラル・コンピュート・スティック 2を利用して MYRIAD プラグインがアクティブになります。コマンドが正常に実行されると、端末に推論の統計が表示されます。 また、CPU プラグインを使用して、Raspberry Pi 4* デバイスの ARM CPU 上で推論を実行することもできます。この例で使用されているモデルは ARM* プラグインではサポートされていないため、操作サポートについては ARM* プラグイン操作セットの仕様 を参照してください。
[ INFO ] First inference took 410.75 ms
[Step 11/11] Dumping statistics report
[ INFO ] Count: 388 iterations
[ INFO ] Duration: 60681.72 ms
[ INFO ] Latency:
[ INFO ] Median: 622.99 ms
[ INFO ] Average: 623.40 ms
[ INFO ] Min: 444.03 ms
[ INFO ] Max: 868.18 ms
[ INFO ] Throughput: 6.39 FPS
インテル® NCS2 でアプリケーションが正常に実行されると、OpenVINO™ツールキットとインテル® ニューラル・コンピュート・スティック 2デバイスが使用できるように正しく設定されます。
OpenVINO・ツールキット・アプリケーションをコンパイルして実行する前に、いくつかの環境変数を更新する必要があります。次のスクリプトを実行して、環境変数を一時的に設定します。
source /home/pi/openvino_dist/setupvars.sh
**(省略可能)** OpenVINO™環境変数は、シェルを閉じると削除されます。オプションとして、次のように環境変数を永続的に設定できます。
echo "source /home/pi/openvino_dist/setupvars.sh" >> ~/.bashrc
変更をテストするには、新しいターミナルを開きます。次のように表示されます。
[setupvars.sh] OpenVINO environment initialized
これで、Raspbian* OS 用 OpenVINO™ ツールキットのオープンソース・ディストリビューションおよび インテル® ニューラル・コンピュート・スティック 2 および ARM* プラグインでの使用のためのクロスコンパイルおよびビルド手順は完了です。