노트 |
|
OpenVINO™ 툴킷은 인간의 비전을 모방하는 애플리케이션과 솔루션을 신속하게 배포합니다. 이 툴킷은 성능을 극대화하는 CNN(Convolutional Neural Networks) 기반 인텔® 하드웨어 전반으로 컴퓨터 비전(CV) 워크로드를 확장합니다. 이 단계는 일반적으로 사용 가능한 ARM CPU 플러그인을 빌드하는 방법을 따릅니다. 그러나 Raspberry Pi 4*에서 모든 것을 실행하려면 특정 변경이 필요합니다. 이 가이드에서는 크로스 컴파일 방법을 사용하여 Raspbian* 32비트 OS용 OpenVINO™ 툴킷의 오픈 소스 배포를 구축하는 단계를 제공합니다.
자세한 내용을 보려면 주제를 클릭하십시오 .
메모 | 이 가이드에서는 Raspberry Pi* 보드가 아래 나열된 운영 체제로 가동되고 있다고 가정합니다. |
하드웨어
대상 운영 체제
메모 | 이 가이드에는 올바르게 설치하기 위해 root 또는 sudo 액세스로 실행해야 하는 명령이 포함되어 있습니다. |
장치 소프트웨어가 최신 상태인지 확인하십시오.
sudo apt update && sudo apt upgrade -y
메모 | 도커 공식 문서를 기반으로 설치 지침을 따를 수 있습니다. 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 툴킷 버전은 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
아래 다이어그램과 같이 114행에 "RUN pip install protobuf==3.20.0"를 추가합니다.
편집한 파일을 저장합니다.
편집기 도구를 사용하여 아래와 같이 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 \
편집한 파일을 저장합니다.
이 단계에서는 스크립트를 실행하여 Docker 컨테이너 환경에서 OpenVINO™ 툴킷 및 기타 구성 요소(예: OpenCV*)를 다운로드하고 교차 컴파일합니다.
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 폴더에 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
장치 부팅이 확인되면 장치 부팅(예: /dev/sda)을 /mnt에 마운트합니다.
sudo mount /dev/sda /mnt
그런 다음 OpenVINO 패키지를 USB 썸 드라이브에 복사합니다.
sudo cp -rf build/OV_ARM_package.tar.gz /mnt/
크로스 컴파일을 완료한 후, 대상 장치(Raspberry Pi 4*)에 OV_ARM_package.tar.gz 성공적으로 복사하였다.
컴파일 도구 설치
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
툴킷과 인텔® 뉴럴 컴퓨트 스틱 2 및 ARM* 플러그인이 장치에서 작동하는지 확인하려면 다음 단계를 완료하십시오.
인텔® OpenVINO™ 툴킷에는 추론 엔진과 인텔® 뉴럴 컴퓨트 스틱 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
시스템에 있는 유추에 사용할 수 있는 장치를 설명하는 대화 상자를 인쇄해야 합니다.
응용 프로그램에는 입력을 전달할 모델이 필요합니다. 다음과 같은 방법으로 IR 형식의 인텔® OpenVINO™ 툴킷 모델을 얻을 수 있습니다.
우리의 목적을 위해 직접 다운로드하는 것이 가장 쉽습니다. 다음 명령을 사용하여 person-vehicle-bike 감지 모델을 선택합니다.
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
메모 | 인텔® 뉴럴 컴퓨트 스틱 2에는 FP16이라고 하는 16비트 부동 소수점 형식에 최적화된 모델이 필요합니다. 예시와 다를 경우, Raspberry Pi*에서는 모델 옵티마이저가 지원되지 않기 때문에 Model Optimizer를 사용하여 별도의 시스템에서 FP16으로 모델을 변환해야 할 수도 있습니다. |
마지막으로 필요한 항목은 신경망에 대한 입력입니다. 다운로드한 모델의 경우 3개의 색상 채널이 있는 이미지가 필요합니다. 보드에 필요한 파일을 다운로드합니다.
wget https://cdn.pixabay.com/photo/2018/07/06/00/33/person-3519503_960_720.jpg -O ~/Downloads/person.jpg
시스템이 인텔® NCS2 USB 장치를 인식할 수 있도록 일부 udev 규칙을 추가해야 합니다.
메모 | 현재 사용자가 사용자 그룹의 구성원이 아닌 경우 다음 명령을 실행하고 디바이스를 재부팅합니다. |
sudo usermod -a -G users "$(whoami)"
OpenVINO™ 환경을 설정합니다.
source /home/pi/openvino_dist/setupvars.sh
인텔® 뉴럴 컴퓨트 스틱 2에서 유추를 수행하려면 install_NCS_udev_rules.sh 스크립트를 실행하여 USB 규칙을 설치합니다.
sh /home/pi/openvino_dist/install_dependencies/install_NCS_udev_rules.sh
이제 USB 드라이버가 올바르게 설치되어야 합니다. 데모를 실행할 때 인텔® 뉴럴 컴퓨트 스틱 2 감지되지 않으면 장치를 다시 시작하고 다시 시도하십시오.
모델을 다운로드하고, 입력 이미지를 사용할 수 있으며, 인텔® 뉴럴 컴퓨트 스틱 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 를 지정하면 인텔® 뉴럴 컴퓨트 스틱 2 활용하여 MYRIAD 플러그인이 활성화됩니다. 명령이 성공적으로 실행되면 터미널은 추론에 대한 통계를 표시합니다. 또한 CPU 플러그인을 사용하여 Raspberry Pi 4* 장치의 ARM CPU에서 추론을 실행할 수 있습니다. 이 예에서 사용된 모델은 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
응용 프로그램이 인텔® NCS2에서 성공적으로 실행되면 OpenVINO™ 툴킷 및 인텔® 뉴럴 컴퓨트 스틱 2 장치에서 사용할 수 있도록 올바르게 설정된 것입니다.
OpenVINO 툴킷 애플리케이션을 컴파일하고 실행하기 전에 여러 환경 변수를 업데이트해야 합니다. 다음 스크립트를 실행하여 환경 변수를 임시로 설정합니다.
source /home/pi/openvino_dist/setupvars.sh
**(선택 사항)** 셸을 닫으면 OpenVINO™ 환경 변수가 제거됩니다. 옵션으로 다음과 같이 환경 변수를 영구적으로 설정할 수 있습니다.
echo "source /home/pi/openvino_dist/setupvars.sh" >> ~/.bashrc
변경 사항을 테스트하려면 새 터미널을 엽니다. 다음을 확인할 수 있습니다.
[setupvars.sh] OpenVINO environment initialized
이것으로 Raspbian* OS용 OpenVINO™ 툴킷의 오픈 소스 배포와 인텔® 뉴럴 컴퓨트 스틱 2 및 ARM* 플러그인 사용을 위한 크로스 컴파일 및 구축 절차가 완료됩니다.