Biên dịch chéo OpenVINO™ trình cắm NCS2 bằng cách sử dụng Dockerfile được cấu hình sẵn cho HĐH

Tài liệu

Cài đặt & Thiết lập

000057005

16/06/2023

Ghi chú
  • Tất cả các bước cần thiết trong quá trình cài đặt.
  • Các bước này đã được thử nghiệm với bo mạch Raspberry Pi 4* và Raspbian* Buster, 32 bit.
  • Cần có kết nối Internet để làm theo các bước trong hướng dẫn này.
  • Bài viết đã được xác minh bằng cách sử dụng bản phát hành năm 2022.1 của bản phân phối nguồn mở của bộ công cụ OpenVINO™ mềm.

Bộ công cụ OpenVINO™ nhanh chóng triển khai các ứng dụng và giải pháp mô phỏng thị giác của con người. Bộ công cụ mở rộng khối lượng công việc thị giác máy tính (CV) trên phần cứng của Intel® dựa trên Mạng nơ-ron tích tụ (CNN), giúp tối đa hóa hiệu suất. Các bước này thường làm theo Cách xây dựng trình cắm ARM CPU có sẵn. Tuy nhiên, cần có những thay đổi cụ thể để chạy mọi thứ trên Raspberry Pi 4*. Hướng dẫn này cung cấp các bước để xây dựng phân phối nguồn mở của bộ công cụ OpenVINO™ cho Hệ điều hành Raspbian* 32 bit với phương pháp biên dịch chéo.

Nhấp vào chủ đề để biết thêm chi tiết:

Yêu cầu hệ thống
Lưu ý Hướng dẫn này giả định rằng bạn đã bo mạch Raspberry Pi* của mình hoạt động với hệ điều hành được liệt kê bên dưới.

Phần cứng

  • Raspberry Pi* 4 (Raspberry Pi* 3 Model B+ nên làm việc.)
  • Ít nhất một Thẻ microSD 16 GB
  • Thanh Tính toán Nơ-ron Intel® 2
  • Kết nối Internet Ethernet hoặc mạng không dây tương thích
  • Máy chủ được lắp đặt bộ chứa docker

Hệ điều hành mục tiêu

  • Raspbian* Buster, 32-bit
Thiết lập môi trường xây dựng của bạn
Lưu ý Hướng dẫn này chứa các lệnh cần phải được thực hiện dưới dạng truy cập gốc hoặc sudo để cài đặt chính xác.

Đảm bảo phần mềm thiết bị của bạn đã được cập nhật:

sudo apt update && sudo apt upgrade -y

Cài đặt Docker Container
Lưu ý Bạn có thể làm theo hướng dẫn cài đặt dựa trên tài liệu chính thức của 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

Nhân bản openvino_contrib kho lưu trữ
Lưu ý Phiên bản openvino_contrib công cụ OpenVINO mềm dành cho bài viết này dựa trên 2022.1

Tải xuống mã nguồn và sửa đổi tệp cấu hình:

git clone --recurse-submodules --single-branch --branch=2022.1 https://github.com/openvinotoolkit/openvino_contrib.git

Vào thư mục arm_plugin hành:

cd openvino_contrib/modules/arm_plugin

Sửa đổi nội dung của tệp tin Dockerfile.RPi32_buster dưới đây với các công cụ biên tập:

vim dockerfiles/Dockerfile.RPi32_buster

Thêm "RUN pip install protobuf==3.20.0" trong dòng 114, như được hiển thị trong biểu đồ dưới đây.

Screenshot

Lưu tệp đã chỉnh sửa.

Thay đổi nội dung của tệp arm_cpu_plugin_build.sh như được hiển thị bên dưới với các công cụ biên tập:

vim scripts/arm_cpu_plugin_build.sh

Chỉnh sửa các dòng 77, 78, 79 và 136 và thêm các thay đổi như được hiển thị táo bạo bên dưới:

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 \

Lưu tệp đã chỉnh sửa.

Bộ công cụ biên dịch chéo OpenVINO™ môi trường vùng chứa Docker

Trong bước này, chúng tôi sẽ chạy kịch bản để tải xuống và biên dịch chéo OpenVINO™ bộ công cụ và các thành phần khác như OpenCV* trong môi trường vùng chứa Docker:

Vào thư mục trình cắm ARM CPU:

cd openvino_contrib/modules/arm_plugin

Xây dựng hình ảnh Docker*:

docker image build -t arm-plugin -f dockerfiles/Dockerfile.RPi32_buster .

Xây dựng trình cắm trong vùng chứa Docker*:

Quá trình xây dựng được thực hiện bằng cách /arm_cpu_plugin_build.sh lệnh được thực hiện bên trong /arm_cpu_plugin thư mục (lệnh vùng chứa mặc định để thực thi). Tất cả các kết quả trung gian và các hiện vật xây dựng được lưu trữ bên trong thư mục làm việc.

Vì vậy, người ta có thể gắn kết toàn bộ thư mục làm việc để có được tất cả các kết quả được lưu trữ bên ngoài vùng chứa:

mkdir build

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

Lưu ý

Có một vài biến môi trường kiểm soát việc thực /arm_cpu_plugin_build.sh lệnh.

  • BUILD_JOBS khiển số lượng luồng để biên dịch đồng thời
  • BUILD_TYPE điều khiển cấu hình Gỡ lỗi/Phát hành (Phát hành theo mặc định)
  • UPDATE_SOURCES kiểm soát việc truy xuất nguồn
    • sạch - không tải lại nguồn nếu đã tải. Chỉ cần dọn dẹp thư mục dựng (mặc định)
    • tải lại - xóa tất cả các nguồn đã tải và truy xuất lại
    • kiểm tra - không tải lại hoặc dọn dẹp các nguồn
  • WITH_OMZ_DEMO dựng bản demo của C++ Open Model Zoo (BẬT theo mặc định)

Trong thư mục xây dựng, OV_ARM_package.tar.gz được tạo ra

ls build

Chuyển OV_ARM_package.tar.gz sang thiết bị mục tiêu (Raspberry Pi 4* 32-bit Buster)
Có nhiều cách khác nhau để chuyển các gói sang thiết bị mục tiêu (Raspberry Pi 4*), sao chép an toàn trực tiếp vào thiết bị mục tiêu, sao chép gói vào một ổ USB và chuyển nó.
Bài viết này sẽ chỉ ra cách gắn một ổ USB vào máy chủ và sao chép gói build vào ổ đĩa gắn trên đầu máy.

Cắm ổ usb vào cổng USB hệ thống, sau đó kiểm tra thiết bị khởi động bằng lệnh dưới đây;

sudo fdisk -l

Sau khi xác minh thiết bị khởi động, gắn kết khởi động thiết bị (ví dụ /dev/sda) vào /mnt;

sudo mount /dev/sda /mnt

Tiếp theo, sao chép OpenVINO hành vào ổ usb;

sudo cp -rf build/OV_ARM_package.tar.gz /mnt/

Xác minh gói xây dựng

Sau khi hoàn thành quá trình biên dịch chéo, và sao chép thành công OV_ARM_package.tar.gz vào thiết bị mục tiêu (Raspberry Pi 4*).

Cài đặt công cụ biên dịch

sudo apt update
sudo apt cài đặt cmake -y

Trích xuất OV_ARM_package.tar.gzpackage

mkdir ~/openvino_dist/
tar -xvzf OV_ARM_package.tar.gz -C ~/openvino_dist/

Nguồn biến thiết lập

source ~/openvino_dist/setupvars.sh

Biên dịch mã mẫu

cd ~/openvino_dist/samples/cpp
./build_samples.sh

Để xác minh rằng bộ công cụ và trình điều khiển Thanh Tính toán Nơ-ron Intel® 2 arm* hoạt động trên thiết bị của bạn, hãy hoàn thành các bước sau:

  1. Chạy ứng dụng mẫu hello_query_device xác nhận rằng tất cả các thư viện đều tải chính xác.
  2. Tải xuống mẫu máy đã qua đào tạo trước.
  3. Chọn đầu vào cho mạng nơ-ron (ví dụ: tệp hình ảnh).
  4. Thiết lập cấu Thanh Tính toán Nơ-ron Intel® 2 điều khiển USB Linux*.
  5. Chạy benchmark_app với mô hình và đầu vào đã chọn.

Các ứng dụng mẫu

Bộ công cụ intel® OpenVINO™ bao gồm các ứng dụng mẫu bằng cách sử dụng Công cụ Suy luận Thanh Tính toán Nơ-ron Intel® 2. Một trong những ứng dụng được hello_query_device cấp, có thể được tìm thấy trong thư mục sau:

~/inference_engine_cpp_samples_build/armv7l/Release

Chạy các lệnh sau để kiểm tra các hello_query_device:

cd ~/inference_engine_cpp_samples_build/armv7l/Release

./hello_query_device

Nó sẽ in một hộp thoại, mô tả các thiết bị có sẵn để suy luận có trên hệ thống.

Tải xuống mô hình

Ứng dụng cần một mô hình để chuyển thông qua đầu vào. Bạn có thể lấy các mô hình cho OpenVINO™® công cụ Intel® OpenVINO™ định dạng IR bằng cách:

  • Sử dụng Model Optimizer để chuyển đổi một mô hình hiện có từ một trong các khung được hỗ trợ thành định dạng IR cho Công cụ suy luận. Lưu ý rằng gói Model Optimizer không khả dụng cho Raspberry Pi*.
  • Sử dụng công cụ Model Downloader để tải xuống từ Open Model Zoo. Chỉ dành cho các mô hình công cộng đã qua đào tạo trước.
  • Tải xuống các tệp IR trực tiếp từ storage.openvinotookit.org

Cho mục đích của chúng tôi, tải xuống trực tiếp là dễ dàng nhất. Sử dụng các lệnh sau đây để lấy mô hình phát hiện người-xe-xe:

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

Lưu ý Công nghệ Thanh Tính toán Nơ-ron Intel® 2 yêu cầu các mô hình được tối ưu hóa cho định dạng dấu chóng 16-bit được gọi là FP16. Nếu khác với ví dụ, mô hình của bạn có thể yêu cầu chuyển đổi bằng Trình tối ưu hóa mẫu sang FP16 trên một máy riêng vì Trình tối ưu hóa Mẫu không được hỗ trợ trên Raspberry Pi*.

Đầu vào cho mạng nơ-ron

Hạng mục cuối cùng cần thiết là đầu vào cho mạng thần kinh. Đối với mô hình chúng tôi đã tải xuống, bạn cần một hình ảnh có ba kênh màu. Tải các tập tin cần thiết về bo mạch của bạn:

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

Cấu hình Trình điều Thanh Tính toán Nơ-ron Intel® 2 USB Linux

Một số quy tắc udev phải được thêm vào để cho phép hệ thống nhận Intel® NCS2 USB.

Lưu ý Nếu người dùng hiện tại không phải là thành viên của nhóm người dùng, hãy chạy lệnh sau và khởi động lại thiết bị của bạn.

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

Thiết lập môi trường OpenVINO™ hành:

source /home/pi/openvino_dist/setupvars.sh

Để thực hiện suy luận trên trình điều Thanh Tính toán Nơ-ron Intel® 2 đặt các quy tắc USB bằng cách chạy lệnh install_NCS_udev_rules.sh hành:

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

Trình điều khiển USB nên được cài đặt chính xác ngay bây giờ. Nếu thiết bị Thanh Tính toán Nơ-ron Intel® 2 phát hiện được khi chạy demo, hãy khởi động lại thiết bị của bạn và thử lại.

Chạy benchmark_app

Khi mô hình được tải xuống, hình ảnh đầu vào khả dụng và Thanh Tính toán Nơ-ron Intel® 2 được cắm vào cổng USB, hãy sử dụng lệnh sau để chạy ứng dụng 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

Thao tác này sẽ chạy ứng dụng với các tùy chọn đã chọn. Cờ -d báo cho chương trình thiết bị nào sử dụng để suy luận. Xác định MYRIAD kích hoạt trình cắm MYRIAD , sử dụng Thanh Tính toán Nơ-ron Intel® 2. Sau khi lệnh được thực thi thành công, thiết bị đầu cuối sẽ hiển thị các thống kê để suy luận. Bạn cũng có thể sử dụng trình cắm CPU để chạy suy luận trên ARM CPU của thiết bị Raspberry Pi 4*, tham khảo thông số kỹ thuật hoạt động của trình cắm ARM* để hỗ trợ hoạt động vì mô hình được sử dụng trong ví dụ này không được hỗ trợ bởi trình cắm 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


Nếu ứng dụng chạy thành công trên nền tảng Intel® NCS2, bộ công cụ OpenVINO™ mềm và Thanh Tính toán Nơ-ron Intel® 2 thiết lập chính xác để sử dụng trên thiết bị của bạn.

Biến môi trường

Bạn phải cập nhật một số biến môi trường trước khi biên dịch và chạy OpenVINO dụng bộ công cụ. Chạy kịch bản sau để tạm thời thiết lập các biến môi trường:

source /home/pi/openvino_dist/setupvars.sh

**(Tùy chọn)** Các OpenVINO™ biến môi trường được xóa khi bạn đóng vỏ. Là một tùy chọn, bạn có thể đặt vĩnh viễn các biến môi trường như sau:

echo "source /home/pi/openvino_dist/setupvars.sh" >> ~/.bashrc

Để kiểm tra thay đổi của bạn, hãy mở một thiết bị cuối mới. Bạn sẽ thấy những điều sau:

[setupvars.sh] OpenVINO environment initialized

Điều này hoàn thành quá trình biên dịch chéo và xây dựng quy trình phân phối mã nguồn mở của bộ công cụ OpenVINO™ cho Hệ điều hành Raspbian* và việc sử dụng với trình cắm Thanh Tính toán Nơ-ron Intel® 2 và ARM*.

Chủ đề liên quan
Xây dựng Open Model Zoo Demos trên Raspberry Pi*
OpenVINO™ công cụ Open Model Zoo
Diễn đàn Cộng đồng và Hỗ trợ kỹ thuật