Ghi chú |
|
Bộ công cụ OpenVINO™ nhanh chóng triển khai các ứng dụng và giải pháp mô phỏng tầm nhìn 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 Intel® dựa trên Mạng nơ-ron tích chập (CNN), giúp tối đa hóa hiệu suất. Các bước này thường tuân theo plugin Cách xây dựng CPU ARM 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 bản phân phối mã nguồn mở của bộ công cụ OpenVINO™ cho HĐH Raspbian* 32-bit bằng phương pháp biên dịch chéo.
Nhấp vào chủ đề để biết chi tiết:
Ghi | Hướng dẫn này giả định rằng bạn đã thiết lập và chạy bo mạch Raspberry Pi* với hệ điều hành được liệt kê bên dưới. |
Phần cứng
Hệ điều hành mục tiêu
Ghi | Hướng dẫn này chứa các lệnh cần được thực thi dưới dạng quyền truy cập root 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
Ghi | 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
Ghi | Phiên bản bộ công cụ openvino_contrib và OpenVINO 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
Chuyển đến thư mục arm_plugin:
cd openvino_contrib/modules/arm_plugin
Sửa đổi nội dung của tệp Dockerfile.RPi32_buster như dưới đây bằng các công cụ chỉnh sửa:
vim dockerfiles/Dockerfile.RPi32_buster
Thêm "RUN pip install protobuf==3.20.0" trong dòng 114, như thể hiện trong sơ đồ dưới đây.
Lưu tệp đã chỉnh sửa.
Sửa đổi nội dung của tệp arm_cpu_plugin_build.sh như hình dưới đây bằng các công cụ chỉnh sửa:
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 in đậm 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 này, chúng ta sẽ chạy script để download và cross-compile OpenVINO™ toolkit và các thành phần khác như OpenCV* trong môi trường Docker container:
Chuyển đến thư mục plugin ARM CPU:
cd openvino_contrib/modules/arm_plugin
Tạo hình ảnh Docker*:
docker image build -t arm-plugin -f dockerfiles/Dockerfile.RPi32_buster .
Xây dựng plugin trong bộ chứa Docker*:
Quá trình xây dựng được thực hiện bởi /arm_cpu_plugin_build.sh tập lệnh được thực thi bên trong thư mục /arm_cpu_plugin (lệnh container mặc định để thực thi). Tất cả các kết quả trung gian và tạo tác 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 container:
mkdir build
docker container run --rm -ti -v $PWD/build:/arm_cpu_plugin arm-plugin
Ghi | Có một vài biến môi trường kiểm soát việc thực thi tập lệnh /arm_cpu_plugin_build.sh .
|
Trong thư mục xây dựng , OV_ARM_package.tar.gz được tạo
ls build
Chuyển OV_ARM_package.tar.gz sang thiết bị đích (Raspberry Pi 4* 32-bit Buster)
Có nhiều cách khác nhau để chuyển các gói sang thiết bị đích (Raspberry Pi 4 *), sao chép an toàn trực tiếp vào thiết bị đích, sao chép gói vào ổ USB và chuyển nó.
Bài viết này sẽ hướng dẫn cách gắn ổ USB vào máy chủ và sao chép gói bản dựng vào ổ đĩa ngón tay cái được gắn.
Cắm ổ USB vào cổng USB hệ thống, sau đó kiểm tra khởi động thiết bị bằng lệnh bên dưới;
sudo fdisk -l
Sau khi xác minh thiết bị khởi động, gắn khởi động thiết bị (ví dụ /dev/sda) vào /mnt;
sudo mount /dev/sda /mnt
Tiếp theo, sao chép gói OpenVINO vào ổ USB;
sudo cp -rf build/OV_ARM_package.tar.gz /mnt/
Sau khi hoàn thà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ị đích (Raspberry Pi 4*).
Cài đặt công cụ biên dịch
sudo apt update
sudo apt cài đặt cmake -y
Giải nén 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à plugin Thanh Tính toán Nơ-ron Intel® 2 và ARM* hoạt động trên thiết bị của bạn, hãy hoàn tất các bước sau:
Bộ công cụ Intel® OpenVINO™ bao gồm các ứng dụng mẫu sử dụng Công cụ suy luận và Thanh Tính toán Nơ-ron Intel® 2. Một trong những ứng dụng là hello_query_device, 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 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.
Ứng dụng cần một mô hình để chuyển đầu vào. Bạn có thể lấy các mô hình cho bộ công cụ Intel® OpenVINO™ ở định dạng IR bằng cách:
Đối với 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 để lấy mô hình phát hiện người-xe-xe đạp:
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
Ghi | 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 phẩy độ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ô hình sang FP16 trên một máy riêng biệt vì Trình tối ưu hóa mô hình không được hỗ trợ trên Raspberry Pi*. |
Mục cuối cùng cần thiết là đầu vào cho mạng lưới 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 xuống 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
Một số quy tắc udev phải được thêm vào để cho phép hệ thống nhận dạng các thiết bị USB Intel® NCS2.
Ghi | 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™:
source /home/pi/openvino_dist/setupvars.sh
Để thực hiện suy luận trên Thanh Tính toán Nơ-ron Intel® 2, hãy cài đặt các quy tắc USB bằng cách chạy tập lệnh install_NCS_udev_rules.sh :
sh /home/pi/openvino_dist/install_dependencies/install_NCS_udev_rules.sh
Trình điều khiển USB sẽ được cài đặt chính xác ngay bây giờ. Nếu không phát hiện thấy Thanh Tính toán Nơ-ron Intel® 2 khi chạy demo, hãy khởi động lại thiết bị của bạn và thử lại.
Khi mô hình được tải xuống, hình ảnh đầu vào có sẵn 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 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 cho chương trình biết nên sử dụng thiết bị nào để suy luận. Chỉ định MYRIAD sẽ kích hoạt plugin MYRIAD , sử dụng Thanh Tính toán Nơ-ron Intel® 2. Sau khi lệnh thực thi thành công, thiết bị đầu cuối sẽ hiển thị số liệu thống kê để suy luận. Bạn cũng có thể sử dụng plugin CPU để chạy suy luận trên CPU ARM của thiết bị Raspberry Pi 4*, tham khảo đặc tả bộ hoạt động của plugin ARM* để được hỗ trợ hoạt động vì mô hình được sử dụng trong ví dụ này không được plugin ARM * hỗ trợ.
[ 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 Intel® NCS2 của bạn, bộ công cụ và Thanh Tính toán Nơ-ron Intel® 2 OpenVINO™ sẽ được thiết lập chính xác để sử dụng trên thiết bị của bạn.
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 các ứng dụng bộ công cụ OpenVINO. Chạy tập lệnh sau để đặt các biến môi trường tạm thời:
source /home/pi/openvino_dist/setupvars.sh
**(Tùy chọn)** Các biến môi trường OpenVINO™ được loại bỏ khi bạn đóng shell. Như 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ị đầu cuối mới. Bạn sẽ thấy như sau:
[setupvars.sh] OpenVINO environment initialized
Điều này hoàn thành quy trình biên dịch chéo và xây dựng cho bản phân phối mã nguồn mở của bộ công cụ OpenVINO™ cho hệ điều hành Raspbian* và cách sử dụng với plugin Thanh Tính toán Nơ-ron Intel® 2 và ARM*.