Kit Peralatan OpenVINO™ Pengodean Silang dan Plugin NCS2 Menggunakan Dockerfile Prakonfigurasi untuk OS 32-Bit Debian*

Dokumentasi

Instal & Pengaturan

000057005

16/06/2023

Catatan
  • Semua langkah diperlukan dalam instalasi.
  • Langkah-langkah ini telah diuji dengan board Raspberry Pi 4* dan Raspbian* Buster, 32-bit.
  • Diperlukan koneksi Internet untuk mengikuti langkah-langkah dalam panduan ini.
  • Artikel ini diverifikasi menggunakan rilis 2022.1 dari distribusi sumber terbuka dari kit peralatan OpenVINO™.

Kit peralatan OpenVINO™ dengan cepat menerapkan aplikasi dan solusi yang meniru visi manusia. Kit peralatan memperluas beban kerja visi komputer (CV) di seluruh perangkat keras Intel® berdasarkan Convolutional Neural Networks (CNN), yang memaksimalkan performa. Langkah-langkah ini secara umum ikuti cara membuat plugin CPU ARM yang tersedia. Namun, perubahan spesifik diperlukan untuk menjalankan semuanya pada Raspberry Pi 4*. Panduan ini memberikan langkah-langkah untuk membangun distribusi sumber terbuka dari kit peralatan OpenVINO™ untuk OS Raspbian* 32-bit dengan metode kompilasi silang.

Klik pada topik untuk detailnya:

Persyaratan sistem
Catatan Panduan ini mengasumsikan bahwa Anda menjalankan board Raspberry Pi* Anda dengan sistem operasi yang tercantum di bawah ini.

Hardware

  • Raspberry Pi* 4 (Raspberry Pi* 3 Model B+ harus berfungsi.)
  • Setidaknya Kartu microSD 16 GB
  • Intel® Neural Compute Stick 2
  • Koneksi Internet Ethernet atau jaringan nirkabel yang kompatibel
  • Mesin host dengan kontainer docker terpasang

Sistem operasi target

  • Raspbian* Buster, 32-bit
Mengatur lingkungan rakit Anda
Catatan Panduan ini berisi perintah yang perlu dijalankan sebagai akses root atau sudo untuk menginstal dengan benar.

Pastikan perangkat lunak perangkat Anda terbarui:

sudo apt update && sudo apt upgrade -y

Menginstal Kontainer Docker
Catatan Anda dapat mengikuti instruksi instalasi berdasarkan dokumentasi resmi 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

Repositor klon openvino_contrib
Catatan Versi toolkit openvino_contrib dan OpenVINO untuk artikel ini berdasarkan pada 2022.1

Unduh kode sumber dan modifikasi berkas konfigurasi:

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

Buka direktori arm_plugin:

cd openvino_contrib/modules/arm_plugin

Modifikasi konten file Dockerfile.RPi32_buster seperti di bawah ini dengan alat editor:

vim dockerfiles/Dockerfile.RPi32_buster

Tambahkan "RUN pip install protobuf==3.20.0" pada baris 114, seperti yang ditunjukkan pada diagram di bawah ini.

Screenshot

Simpan file yang diedit.

Modifikasi konten file arm_cpu_plugin_build.sh seperti yang ditunjukkan di bawah ini dengan alat editor:

vim scripts/arm_cpu_plugin_build.sh

Edit baris 77, 78, 79 dan 136 dan tambahkan perubahan seperti yang ditunjukkan dalam huruf tebal di bawah ini:

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 \

Simpan file yang diedit.

Kit peralatan OpenVINO™ Kompilasi Silang dalam lingkungan kontainer Docker

Pada langkah ini, kami akan menjalankan skrip untuk mengunduh dan mengkompilasi silang OpenVINO™ kit peralatan dan komponen lain seperti OpenCV* dalam lingkungan kontainer Docker:

Buka direktori plugin CPU ARM:

cd openvino_contrib/modules/arm_plugin

Buat gambar Docker*:

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

Buat plugin di kontainer Docker*:

Proses build dilakukan dengan /arm_cpu_plugin_build.sh skrip yang dijalankan di dalam direktori /arm_cpu_plugin (perintah kontainer bawaan untuk mengeksekusi). Semua hasil menengah dan artefak build disimpan di dalam direktori kerja.

Sehingga seseorang dapat memasang seluruh direktori kerja untuk mendapatkan semua hasil yang disimpan di luar kontainer:

mkdir build

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

Catatan

Ada beberapa variabel lingkungan yang mengontrol eksekusi skrip /arm_cpu_plugin_build.sh .

  • BUILD_JOBS mengontrol jumlah thread untuk kompilasi secara bersamaan
  • BUILD_TYPE mengontrol Konfigurasi Debug/Rilis (Rilis secara bawaan)
  • pengambilan sumber kontrol UPDATE_SOURCES
    • clean - jangan muat ulang sumber jika sudah dimuat. Cukup bersihkan folder build (bawaan)
    • muat ulang - hapus semua sumber yang dimuat dan ambil kembali
    • periksa - jangan muat ulang atau bersihkan sumber
  • WITH_OMZ_DEMO membangun demo C++ Open Model Zoo (AKTIF secara bawaan)

Dalam folder build , OV_ARM_package.tar.gz dihasilkan

ls build

Transfer OV_ARM_package.tar.gz ke perangkat target (Raspberry Pi 4* 32-bit Buster)
Ada berbagai cara untuk mentransfer paket ke perangkat target (Raspberry Pi 4*), salinan aman langsung ke perangkat target, salin paket ke drive jempol USB dan transfer.
Artikel ini akan menunjukkan cara memasang drive jempol USB di mesin host dan menyalin paket build ke drive ibu jari yang dipasang.

Masukkan USB thumb drive ke port USB sistem, kemudian periksa boot perangkat menggunakan perintah di bawah ini;

sudo fdisk -l

Setelah diverifikasi boot perangkat, pasang boot perangkat (misalnya /dev/sda) ke /mnt;

sudo mount /dev/sda /mnt

Selanjutnya, salin paket OpenVINO ke USB thumb drive;

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

Memverifikasi paket build

Setelah menyelesaikan kompilasi silang, dan berhasil menyalin OV_ARM_package.tar.gz ke perangkat target (Raspberry Pi 4*).

Instal alat kompilasi

sudo apt update
sudo apt instal cmake -y

Ekstrak OV_ARM_package.tar.gzpackage

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

Sumber Variabel Pengaturan

source ~/openvino_dist/setupvars.sh

Mengkompile kode Sampel

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

Untuk memverifikasi bahwa kit peralatan dan Intel® Neural Compute Stick 2 serta plugin ARM* bekerja pada perangkat Anda, selesaikan langkah-langkah berikut:

  1. Jalankan aplikasi sampel hello_query_device untuk mengonfirmasi bahwa semua pustaka dimuat dengan benar.
  2. Unduh model yang telah dilatih sebelumnya.
  3. Pilih input untuk jaringan syaraf (yaitu berkas gambar).
  4. Konfigurasi driver USB Intel® Neural Compute Stick 2 Linux*.
  5. Jalankan benchmark_app dengan model dan input yang dipilih.

Aplikasi sampel

Kit peralatan Intel® OpenVINO™ mencakup aplikasi sampel yang menggunakan Inference Engine dan Intel® Neural Compute Stick 2. Salah satu aplikasi adalah hello_query_device, yang dapat ditemukan di direktori berikut:

~/inference_engine_cpp_samples_build/armv7l/Release

Jalankan perintah berikut untuk menguji hello_query_device:

cd ~/inference_engine_cpp_samples_build/armv7l/Release

./hello_query_device

Harus mencetak dialog, yang mendeskripsikan perangkat yang tersedia untuk inferensi yang ada pada sistem.

Mengunduh model

Aplikasi memerlukan model untuk menyampaikan masukan. Anda dapat memperoleh model kit peralatan Intel® OpenVINO™ dalam format IR dengan:

  • Menggunakan Pengoptimal Model untuk mengonversi model yang ada dari salah satu kerangka kerja yang didukung menjadi format IR untuk Inference Engine. Perhatikan bahwa paket Model Optimizer tidak tersedia untuk Raspberry Pi*.
  • Menggunakan alat Pengunduh Model untuk mengunduh dari Open Model Zoo. Hanya model publik yang telah dilatih sebelumnya.
  • Unduh file IR langsung dari storage.openvinotookit.org

Untuk tujuan kami, mengunduh secara langsung adalah hal yang paling mudah. Gunakan perintah berikut untuk mengambil model deteksi orang-kendaraan-sepeda:

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

Catatan Intel® Neural Compute Stick 2 memerlukan model yang dioptimalkan untuk format titik ambang 16 bit yang dikenal sebagai FP16. Jika berbeda dari contoh, model Anda mungkin memerlukan konversi menggunakan Pengoptimal Model ke FP16 pada mesin terpisah karena Pengoptimal Model tidak didukung pada Raspberry Pi*.

Input untuk jaringan syaraf

Item terakhir yang diperlukan adalah input untuk jaringan syaraf. Untuk model yang telah kami unduh, Anda memerlukan gambar dengan tiga saluran warna. Unduh file yang diperlukan ke board Anda:

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

Mengonfigurasi Driver USB Linux Intel® Neural Compute Stick 2

Beberapa aturan udev harus ditambahkan untuk memungkinkan sistem mengenali Intel® NCS2 perangkat USB.

Catatan Jika pengguna saat ini bukan anggota grup pengguna, jalankan perintah berikut dan reboot perangkat Anda.

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

Mengatur lingkungan OpenVINO™:

source /home/pi/openvino_dist/setupvars.sh

Untuk melakukan inferensi pada Intel® Neural Compute Stick 2, instal aturan USB dengan menjalankan skrip install_NCS_udev_rules.sh :

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

Driver USB harus diinstal dengan benar sekarang. Jika Intel® Neural Compute Stick 2 tidak terdeteksi saat menjalankan demo, hidupkan ulang perangkat Anda dan coba lagi.

Menjalankan benchmark_app

Ketika model diunduh, gambar input tersedia, dan Intel® Neural Compute Stick 2 dicolokkan ke port USB, gunakan perintah berikut untuk menjalankan 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

Ini akan menjalankan aplikasi dengan opsi yang dipilih. Bendera -d memberi tahu program perangkat mana yang digunakan untuk inferensi. Menentukan MYRIAD mengaktifkan plugin MYRIAD , menggunakan Intel® Neural Compute Stick 2. Setelah perintah berhasil dijalankan, terminal akan menampilkan statistik untuk inferensi. Anda juga dapat menggunakan plugin CPU untuk menjalankan inferensi pada CPU ARM perangkat Raspberry Pi 4*Anda, lihat spesifikasi penyetelan operasi plugin ARM* untuk dukungan operasi karena model yang digunakan dalam contoh ini tidak didukung oleh plugin 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


Jika aplikasi berhasil dijalankan pada Intel® NCS2 Anda, OpenVINO™ kit peralatan dan Intel® Neural Compute Stick 2 diatur dengan benar untuk digunakan pada perangkat Anda.

Variabel lingkungan

Anda harus memperbarui beberapa variabel lingkungan sebelum mengkompirasi dan menjalankan aplikasi kit peralatan OpenVINO. Jalankan skrip berikut untuk mengatur variabel lingkungan sementara:

source /home/pi/openvino_dist/setupvars.sh

**(Opsional)** Variabel lingkungan OpenVINO™ dihapus saat Anda menutup shell. Sebagai opsi, Anda dapat menetapkan variabel lingkungan secara permanen sebagai berikut:

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

Untuk menguji perubahan Anda, buka terminal baru. Anda akan melihat hal berikut:

[setupvars.sh] OpenVINO environment initialized

Hal ini melengkapi prosedur kompilasi silang dan build untuk distribusi sumber terbuka kit peralatan OpenVINO™ untuk OS Raspbian*, dan penggunaan dengan plugin Intel® Neural Compute Stick 2 dan ARM*.

Topik terkait
Membangun Demo Open Model Zoo pada Raspberry Pi*
OpenVINO™ toolkit Open Model Zoo
Forum Komunitas dan Dukungan Teknis