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
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 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.
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.
|
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:
- 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.
- Tải xuống mẫu máy đã qua đào tạo trước.
- Chọn đầu vào cho mạng nơ-ron (ví dụ: tệp hình ảnh).
- Thiết lập cấu Thanh Tính toán Nơ-ron Intel® 2 điều khiển USB Linux*.
- 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 |