跨編譯OpenVINO™工具組與 NCS2 外掛程式,使用 32 位 Debian* 作業系統的預先配置 Dockerfile

文件

安裝與設定

000057005

2023 年 06 月 16 日

筆記
  • 安裝時需要所有步驟。
  • 這些步驟已透過 Raspberry Pi 4* 主機板和 32 位 Raspbian* Buster 測試
  • 若要遵循本指南中的步驟,則需要連線網際網路。
  • 本文使用 2022.1 版的OpenVINO™工具組開放原始碼發行進行驗證。

OpenVINO™工具組能快速部署模擬人類視覺的應用程式和解決方案。此工具組將電腦視覺 (CV) 工作負載延伸至採用 Convolutional Neural Network (CNN) 的 Intel® 硬體,將效能最大化。這些步驟通常遵循 「如何建立可用的 ARM CPU 外掛程式 」。然而,在 Raspberry Pi 4* 上執行所有功能需要特定的變更。本指南提供建立 Raspbian* 32 位作業系統 OpenVINO™工具組的開放原始碼分配的步驟,以及交叉編譯方法。

按一下主題以取得詳細資料:

系統需求
注意 本指南假設您的 Raspberry Pi* 主機板已在下面所列的作業系統上啟動並執行。

硬體

  • Raspberry Pi* 4 (Raspberry Pi* 3 B+ 型號應該可以使用。)
  • 至少 16 GB microSD 卡
  • Intel® 類神經電腦棒 2
  • 乙太網路網際網路連線或相容的無線網路
  • 已安裝搭載 docker 容器的主機

目標作業系統

  • Raspbian* Buster,32 位
設定您的建置環境
注意 本指南包含必須作為根部或 sudo Access 執行才能正確安裝的命令。

確定您的裝置軟體是最新的:

sudo apt update && sudo apt upgrade -y

安裝 Docker 容器
注意 您可以依照 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_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」,如下圖所示。

Screenshot

儲存經過編輯的檔。

請使用編輯工具修改 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™工具組

在此步驟中,我們將執行腳本以下載並交叉編譯OpenVINO™工具組,以及 Docker 容器環境中的 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目錄內執行的/arm_cpu_plugin_build.sh腳本執行(要執行的預設容器指令)。所有中間結果和建置的造物都儲存在工作目錄內。

因此,您可以安裝整個工作目錄,以取得儲存在容器外的所有結果:

mkdir build

docker container run --rm -ti -v $PWD/build:/arm_cpu_plugin arm-plugin

注意

有一些環境變數可控制 /arm_cpu_plugin_build.sh 腳本執行。

  • BUILD_JOBS 控制同步編譯的執行緒數量
  • BUILD_TYPE 控制除錯/版本組態(預設發佈)
  • UPDATE_SOURCES 控制來源擷取
    • clean (Clean) – 如果已經載入,請勿重新載入來源。只是乾淨的建置資料夾 (預設)
    • 重新載入 - 刪除所有載入來源並再次擷取
    • 檢查 - 請勿重新載入或清理來源
  • WITH_OMZ_DEMO 建立 C++ Open Model Zoo 示範(預設開啟)

建置資料夾中,會產生 OV_ARM_package.tar.gz

ls build

OV_ARM_package.tar.gz 傳輸到目標裝置 (Raspberry Pi 4* 32 位 Buster)
有各種方式將套件傳輸到目標裝置 (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.gzpackage

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

若要確認工具組與Intel® 類神經電腦棒 2和 ARM* 外掛程式在您的裝置上運作,請完成下列步驟:

  1. 執行 範例 應用程式hello_query_device 確認所有程式庫載入正確。
  2. 下載 預先訓練的模型。
  3. 取類神經網路的輸入(即影像檔案)。
  4. 設定 Intel® 類神經電腦棒 2 Linux* USB 驅動程式。
  5. 使用所選的型號和輸入執行benchmark_app

範例應用程式

Intel® OpenVINO™工具組包括使用推斷引擎與Intel® 類神經電腦棒 2的範例應用程式。其中一種應用程式是hello_query_device,可在下列目錄中找到:

~/inference_engine_cpp_samples_build/armv7l/Release

執行下列命令以測試 hello_query_device:

cd ~/inference_engine_cpp_samples_build/armv7l/Release

./hello_query_device

它應該會列印對話方塊,說明系統上可用的推斷裝置。

下載模型

應用程式需要一個模型來傳遞輸入。您可以取得以® IR 格式OpenVINO™工具組的模型:

  • 使用 Model Optimizer 將現有模型從支援的框架之一轉換為推斷引擎的 IR 格式。請注意,Raspberry Pi* 無法使用模型優化工具套件。
  • 使用 Model Downloader 工具從 Open Model Zoo 下載。只有經過公開預先訓練的模型。
  • 直接從 storage.openvinotookit.org下載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

注意 Intel® 類神經電腦棒 2需要針對 16 位浮點格式(稱為 FP16)優化的模型。如果與範例不同,您的模型可能需要在獨立機器上使用模型優化工具轉換為 FP16,因為 Raspberry Pi* 不支援模型優化工具。

神經網路的輸入

最後需要的專案是神經網路的輸入。對於我們下載的型號,您需要具有三個彩色通道的影像。將必要的檔案下載到主機板:

wget https://cdn.pixabay.com/photo/2018/07/06/00/33/person-3519503_960_720.jpg -O ~/Downloads/person.jpg

設定Intel® 類神經電腦棒 2 Linux USB 驅動程式

必須新增一些 udev 規則,讓系統識別Intel® NCS2 USB 裝置。

注意 如果目前的使用者不是使用者群組的成員,請執行下列命令並重新啟動您的裝置。

sudo usermod -a -G users "$(whoami)"

設定OpenVINO™環境:

source /home/pi/openvino_dist/setupvars.sh

若要在Intel® 類神經電腦棒 2上執行推斷,請執行 install_NCS_udev_rules.sh 腳本來安裝 USB 規則:

sh /home/pi/openvino_dist/install_dependencies/install_NCS_udev_rules.sh

現在應該正確安裝 USB 驅動程式。如果執行示範時未偵測到Intel® 類神經電腦棒 2,請重新開機裝置,然後再試一次。

執行 benchmark_app

下載模型時,可取得輸入影像,並將Intel® 類神經電腦棒 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 旗號會告訴程式用於推斷的裝置。使用Intel® 類神經電腦棒 2指定 MYRIAD 啟動 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


如果應用程式在您的Intel® NCS2上執行成功,OpenVINO™工具組和Intel® 類神經電腦棒 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* 作業系統的OpenVINO™工具組開源分配的交叉編譯與建置程式,並使用 Intel® 類神經電腦棒 2 和 ARM* 外掛程式。

相關主題
在 Raspberry Pi* 上建立 Open Model Zoo 示範
OpenVINO™工具組 Open Model Zoo
社群論壇和技術支援