การคอมไพล์ชุดเครื่องมือ OpenVINO™ และปลั๊กอิน NCS2 แบบข้ามโดยใช้ Dockerfile ที่กําหนดค่ามาล่วงหน้าสําหรับระบบปฏิบัติการ Debian* 32 บิต

เอกสาร

การติดตั้งและตั้งค่า

000057005

16/06/2023

หมาย เหตุ
  • ต้องระบุขั้นตอนทั้งหมดในการติดตั้ง
  • ขั้นตอนเหล่านี้ได้รับการทดสอบกับบอร์ด Raspberry Pi 4* และ Raspbian* Buster รุ่น 32 บิต
  • ต้องดําเนินการเชื่อมต่ออินเทอร์เน็ตตามขั้นตอนต่างๆ ในคู่มือนี้
  • บทความได้รับการรับรองโดยใช้การเผยแพร่โอเพนซอร์สของชุดเครื่องมือ OpenVINO™ ในปี 2022.1

ชุดเครื่องมือ OpenVINO™ ปรับใช้แอปพลิเคชันและโซลูชันที่จําลองวิสัยทัศน์ของมนุษย์ได้อย่างรวดเร็ว ชุดเครื่องมือขยายเวิร์กโหลดคอมพิวเตอร์วิทัศน์ (CV) ทั่วทั้งฮาร์ดแวร์ของ Intel® ที่ใช้ Convolutional Neural Networks (CNN) ซึ่งเพิ่มประสิทธิภาพสูงสุด ขั้นตอนเหล่านี้โดยทั่วไปให้ทําตามขั้นตอน วิธีสร้างปลั๊กอิน ARM CPU ที่มีอยู่ อย่างไรก็ตาม การเปลี่ยนแปลงเฉพาะจําเป็นต้องดําเนินการทุกอย่างบน Raspberry Pi 4* คู่มือนี้อธิบายขั้นตอนการสร้างการกระจายโอเพนซอร์สของชุดเครื่องมือ OpenVINO™ สําหรับระบบปฏิบัติการ Raspbian* 32 บิตด้วยวิธีการคอมไพล์ข้าม

คลิกที่หัวข้อเพื่อดูรายละเอียด:

ความต้องการของระบบ
หมาย เหตุ คู่มือนี้ถือว่าคุณมีบอร์ด Raspberry Pi* ทํางานและใช้งานกับระบบปฏิบัติการที่ระบุไว้ด้านล่าง

ฮาร์ดแวร์

  • Raspberry Pi* 4 (Raspberry Pi* 3 Model B+ ควรทํางาน)
  • การ์ด microSD ขนาด 16 GB เป็นอย่างน้อย
  • Intel® Neural Compute Stick 2
  • การเชื่อมต่ออินเทอร์เน็ตอีเธอร์เน็ตหรือเครือข่ายไร้สายที่เข้ากันได้
  • เครื่องโฮสต์ที่ติดตั้งคอนเทนเนอร์ Docker

ระบบปฏิบัติการเป้าหมาย

  • Raspbian* Buster, 32 บิต
การตั้งค่าสภาพแวดล้อมการสร้างของคุณ
หมาย เหตุ คู่มือนี้มีคําสั่งที่จําเป็นต้องดําเนินการเป็นการเข้าถึง root หรือ sudo เพื่อติดตั้งอย่างถูกต้อง

ตรวจสอบให้แน่ใจว่าซอฟต์แวร์อุปกรณ์ของคุณทันสมัย:

sudo apt update && sudo apt upgrade -y

การติดตั้งคอนเทนเนอร์ 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

เพิ่ม "RUN pip install protobuf==3.20.0" ในแถวที่ 114 ตามที่แสดงไว้ในแผนภาพด้านล่าง

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 \

บันทึกไฟล์ที่แก้ไข

ชุดเครื่องมือ cross-Compile OpenVINO™ ในสภาพแวดล้อมคอนเทนเนอร์ Docker

ในขั้นตอนนี้ เราจะเรียกใช้สคริปต์เพื่อดาวน์โหลดและคอมไพล์ข้าม OpenVINO™ชุดเครื่องมือและส่วนประกอบอื่น ๆ เช่น OpenCV* ในสภาพแวดล้อมคอนเทนเนอร์ Docker :

ไปที่ไดเรกทอรีปลั๊กอิน ARM CPU:

cd openvino_contrib/modules/arm_plugin

สร้างภาพ Docker*

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

สร้างปลั๊กอินในคอนเทนเนอร์ Docker*:

กระบวนการสร้างดําเนินการโดยสคริปต์ /arm_cpu_plugin_build.sh ดําเนินการภายในไดเรกทอรี /arm_cpu_plugin (คําสั่งคอนเทนเนอร์เริ่มต้นเพื่อดําเนินการ) ผลลัพธ์ระดับกลางทั้งหมดและวัตถุสร้างจะถูกจัดเก็บไว้ในไดเรกทอรีการทํางาน

ดังนั้นหนึ่งสามารถติดตั้งไดเรกทอรีที่ทํางานทั้งหมดเพื่อรับผลลัพธ์ทั้งหมดที่เก็บไว้นอกคอนเทนเนอร์:

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 ควบคุมการดึงแหล่งข้อมูล
    • สะอาด - อย่าโหลดแหล่งข้อมูลใหม่หากโหลดไว้แล้ว ล้างข้อมูลในโฟลเดอร์ Build (ค่าเริ่มต้น)
    • โหลดใหม่ - ลบแหล่งข้อมูลที่โหลดทั้งหมดและเรียกใช้อีกครั้ง
    • ตรวจสอบ - อย่าโหลดใหม่หรือแหล่งการล้างข้อมูล
  • WITH_OMZ_DEMO สร้างการสาธิต C++ Open Model Zoo (เปิดตามค่าเริ่มต้น)

ในโฟลเดอร์ Build จะมีการสร้าง 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

เมื่อตรวจสอบยืนยันการบู๊ตอุปกรณ์แล้ว ให้ติดตั้ง Device Boot (ตัวอย่างเช่น /dev/sda) ลงใน/mnt

sudo mount /dev/sda /mnt

ถัดไป ให้คัดลอกแพคเกจ OpenVINO ไปยังไดรฟ์หัวแม่มือ USB

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

การตรวจสอบแพคเกจ build

หลังจากเสร็จสิ้นการคอมไพล์ข้ามและคัดลอก OV_ARM_package.tar.gz ไปยังอุปกรณ์เป้าหมาย (Raspberry Pi 4*)

ติดตั้งเครื่องมือการคอมไพล์

sudo apt update
sudo apt ติดตั้ง 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® Neural Compute Stick 2 และ ARM* ทํางานบนอุปกรณ์ของคุณหรือไม่ ให้ทําตามขั้นตอนต่อไปนี้:

  1. เรียกใช้ แอปพลิเคชันตัวอย่าง hello_query_device เพื่อยืนยันว่าไลบรารีทั้งหมดโหลดอย่างถูกต้อง
  2. ดาวน์โหลด รุ่นที่ผ่านการฝึกอบรมมาแล้ว
  3. เลือก อินพุตสําหรับโครงข่ายประสาทเทียม (เช่น ไฟล์ภาพ)
  4. กําหนดค่า ไดรเวอร์ usb Intel® Neural Compute Stick 2 Linux*
  5. เรียกใช้ benchmark_app ด้วยรุ่นและอินพุตที่เลือก

ตัวอย่างการใช้งาน

ชุดเครื่องมือ Intel® OpenVINO™ ประกอบด้วยแอปพลิเคชันตัวอย่างที่ใช้ Inference Engine และ Intel® Neural Compute Stick 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

โดยควรพิมพ์กล่องโต้ตอบซึ่งอธิบายอุปกรณ์ที่มีอยู่สําหรับการอนุมานที่มีอยู่ในระบบ

การดาวน์โหลดรุ่น

แอปพลิเคชันต้องการโมเดลในการส่งผ่านอินพุต คุณสามารถขอรับรุ่นของชุดเครื่องมือ Intel® OpenVINO™ ในรูปแบบ IR ตาม:

  • การใช้ Model Optimizer เพื่อแปลงโมเดลที่มีอยู่จากหนึ่งในเฟรมเวิร์กที่รองรับในรูปแบบ IR สําหรับ Inference Engine หมายเหตุ แพคเกจตัวเพิ่มประสิทธิภาพรุ่นไม่พร้อมใช้งานสําหรับ Raspberry Pi*
  • ใช้เครื่องมือตัวดาวน์โหลดโมเดลเพื่อดาวน์โหลดจาก Open Model Zoo เฉพาะรุ่นที่ผ่านการฝึกอบรมมาล่วงหน้าสําหรับสาธารณะเท่านั้น
  • ดาวน์โหลด ไฟล์ IR โดยตรงจาก storage.openvinotookit.org

เพื่อจุดประสงค์ของเรา การดาวน์โหลดโดยตรงนั้นง่ายที่สุด ใช้คําสั่งต่อไปนี้เพื่อดึงโมเดลตรวจจับการตรวจจับการตรวจจับด้วยยานพาหนะของบุคคล:

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® Neural Compute Stick 2 ต้องการรุ่นที่ปรับให้เหมาะสมสําหรับรูปแบบจุดลอยตัว 16 บิตที่เรียกว่า FP16 หากแตกต่างจากตัวอย่าง รุ่นของคุณอาจต้องการการแปลงโดยใช้ Model Optimizer เป็น FP16 บนเครื่องแยกต่างหากเนื่องจากไม่รองรับ Model Optimizer บน Raspberry Pi*

อินพุตสําหรับโครงข่ายประสาทเทียม

รายการสุดท้ายที่จําเป็นคือการป้อนข้อมูลสําหรับโครงข่ายประสาทเทียม สําหรับรุ่นที่เราดาวน์โหลดมา คุณจําเป็นต้องมีภาพที่มีสีสามช่อง ดาวน์โหลดไฟล์ที่จําเป็นไปยังบอร์ดของคุณ:

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

การกําหนดค่าไดรเวอร์ usb Intel® Neural Compute Stick 2 Linux

ต้องเพิ่มกฎ udev บางอย่างเพื่อให้ระบบจดจําอุปกรณ์ USB Intel® NCS2 ได้

หมาย เหตุ หากผู้ใช้ปัจจุบันไม่ได้เป็นสมาชิกของกลุ่มผู้ใช้ ให้เรียกใช้คําสั่งต่อไปนี้และรีบูตอุปกรณ์ของคุณ

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

ตั้งค่าสภาพแวดล้อม OpenVINO™:

source /home/pi/openvino_dist/setupvars.sh

ในการดําเนินการอนุมานบน Intel® Neural Compute Stick 2 ให้ติดตั้งกฎ USB โดยเรียกใช้สคริปต์ install_NCS_udev_rules.sh :

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

ควรติดตั้งไดรเวอร์ USB อย่างถูกต้องในตอนนี้ หากไม่พบ Intel® Neural Compute Stick 2 เมื่อใช้งานการสาธิต ให้รีสตาร์ตอุปกรณ์ของคุณและลองอีกครั้ง

เรียกใช้ benchmark_app

เมื่อดาวน์โหลดรุ่นแล้ว จะมีภาพอินพุตให้ใช้งาน และมีการเสียบ Intel® Neural Compute Stick 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 จะบอกโปรแกรมว่าอุปกรณ์ใดที่จะใช้สําหรับการอนุมาน การระบุ MYRIAD จะเปิดใช้งานปลั๊กอิน MYRIAD โดยใช้ Intel® Neural Compute Stick 2 หลังจากดําเนินการคําสั่งสําเร็จแล้ว เทอร์มินัลจะแสดงสถิติสําหรับการอนุมาน คุณยังสามารถใช้ปลั๊กอิน CPU เพื่อเรียกใช้การอนุมานบน ARM CPU ของอุปกรณ์ Raspberry Pi 4* ของคุณได้ ตาม ข้อมูลจําเพาะชุดการทํางานของปลั๊กอิน 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® Neural Compute Stick 2 ถูกตั้งค่าไว้อย่างถูกต้องสําหรับใช้บนอุปกรณ์ของคุณ

ตัวแปรสภาพแวดล้อม

คุณต้องอัพเดตตัวแปรสภาพแวดล้อมหลายตัวก่อนที่จะคอมไพล์และเรียกใช้งานแอปพลิเคชันชุดเครื่องมือ OpenVINO เรียกใช้สคริปต์ต่อไปนี้เพื่อตั้งค่าตัวแปรสภาพแวดล้อมชั่วคราว:

source /home/pi/openvino_dist/setupvars.sh

**(ไม่บังคับ)** ตัวแปรสภาพแวดล้อม OpenVINO™จะถูกลบออกเมื่อคุณปิด Shell ในฐานะตัวเลือก คุณสามารถตั้งตัวแปรสภาพแวดล้อมได้ดังนี้:

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

หากต้องการทดสอบการเปลี่ยนแปลงของคุณ ให้เปิดเทอร์มินัลใหม่ คุณจะเห็นรายการต่อไปนี้:

[setupvars.sh] OpenVINO environment initialized

ซึ่งเสร็จสิ้นขั้นตอนการคอมไพล์และการสร้างข้ามสําหรับการกระจายชุดเครื่องมือ OpenVINO™ แบบโอเพนซอร์สสําหรับระบบปฏิบัติการ Raspbian* และการใช้งานกับปลั๊กอิน Intel® Neural Compute Stick 2 และ ARM*

หัวข้อที่เกี่ยวข้อง
การสร้างการสาธิต Zoo Model แบบเปิดบน Raspberry Pi*
สวนโจวแบบเปิดของชุดเครื่องมือ OpenVINO™
ฟอรัมชุมชนและการสนับสนุนทางเทคนิค