32비트 Debian* OS용 사전 구성된 Dockerfile을 사용하여 교차 컴파일 OpenVINO™ 툴킷 및 NCS2 플러그인

문서

설치 및 설정

000057005

2023-06-16

노트
  • 설치에는 모든 단계가 필요합니다.
  • 이러한 단계는 Raspberry Pi 4* 보드 및 Raspbian* Buster, 32비트로 테스트되었습니다.
  • 이 가이드의 단계를 따르려면 인터넷 연결이 필요합니다.
  • 이 문서는 OpenVINO™ 툴킷의 오픈 소스 배포판 2022.1 릴리스를 사용하여 확인되었습니다.

OpenVINO™ 툴킷은 인간의 비전을 모방하는 응용 프로그램과 솔루션을 신속하게 배포합니다. 툴킷은 컨볼루션 뉴럴 네트웍스(CNN)를 기반으로 인텔® 하드웨어 전반에 걸쳐 컴퓨터 비전(CV) 워크로드를 확장하여 성능을 극대화합니다. 이 단계는 일반적으로 사용 가능한 ARM CPU 플러그인을 구축하는 방법을 따릅니다. 그러나 Raspberry Pi 4*에서 모든 것을 실행하려면 특정 변경 사항이 필요합니다. 이 가이드는 크로스 컴파일 방법을 사용하여 Raspbian* 32비트 OS용 OpenVINO™ 툴킷의 오픈 소스 배포를 구축하는 단계를 제공합니다.

자세한 내용은 주제를 클릭하십시오 .

시스템 요구 사항
참고 이 가이드는 아래에 나열된 운영 체제로 Raspberry Pi* 보드를 가동하고 실행 중이라고 가정합니다.

하드웨어

  • Raspberry Pi* 4(Raspberry Pi* 3 모델 B+가 작동해야 합니다.)
  • 최소 16GB 마이크로SD 카드
  • 인텔® 뉴럴 컴퓨트 스틱 2
  • 이더넷 인터넷 연결 또는 호환 가능한 무선 네트워크
  • docker 컨테이너가 설치된 호스트 머신

대상 운영 체제

  • Raspbian* 버스터, 32비트
빌드 환경 설정
참고 이 가이드에는 올바르게 설치하려면 루트 또는 sudo 액세스로 실행해야 하는 명령이 포함되어 있습니다.

장치 소프트웨어가 최신 버전인지 확인하십시오.

sudo apt update && sudo apt upgrade -y

Docker 컨테이너 설치
참고 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

아래 다이어그램에 표시된 대로 114줄에 "RUN pip install protobuf==3.20.0"을 추가합니다.

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 \

편집된 파일을 저장합니다.

Docker 컨테이너 환경에서 크로스 컴파일 OpenVINO™ 툴킷

이 단계에서는 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 디렉토리 내에서 실행되는 /arm_cpu_plugin_build.sh 스크립트(실행하는 기본 컨테이너 명령)에 의해 수행됩니다. 모든 중간 결과와 빌드 아티팩트 는 작업 디렉토리 내에 저장됩니다.

따라서 모든 결과를 컨테이너 외부에 저장하기 위해 전체 작업 디렉토리를 탑재할 수 있습니다.

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
    • clean - 이미 로드된 경우 소스를 다시 로드하지 마십시오. 빌드 폴더를 정리하기만 하십시오(기본값)
    • 다시 로드 - 로드된 모든 소스를 삭제하고 다시 검색
    • 확인 - 소스를 다시 로드하거나 정리하지 마십시오.
  • WITH_OMZ_DEMO C++ Open Model Zoo 데모를 빌드합니다(기본적으로 ON)

빌드 폴더에서 OV_ARM_package.tar.gz가 생성됩니다.

ls build

OV_ARM_package.tar.gz를 대상 장치로 전송합니다(Raspberry Pi 4* 32비트 버스터)
패키지를 대상 장치(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/

빌드 패키지 확인

교차 컴파일을 완료한 후 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

툴킷과 인텔® 뉴럴 컴퓨트 스틱 2 및 ARM* 플러그인이 장치에서 작동하는지 확인하려면 다음 단계를 완료하십시오.

  1. 샘플 응용 프로그램 hello_query_device 실행하여 모든 라이브러리가 올바르게 로드되었는지 확인합니다.
  2. 사전 교육을 받은 모델을 다운로드하십시오.
  3. 신경망(예: 이미지 파일)에 대한 입력을 선택합니다.
  4. 인텔® 뉴럴 컴퓨트 스틱 2 Linux* USB 드라이버를 구성합니다.
  5. 선택한 모델과 입력으로 benchmark_app 실행 합니다.

샘플 응용 프로그램

인텔® 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™ 툴킷 모델을 얻을 수 있습니다.

  • 모델 최적화기를 사용하여 기존 모델을 지원되는 프레임워크 중 하나에서 추론 엔진의 IR 형식으로 변환합니다. 모델 최적화 패키지는 Raspberry Pi*에 사용할 수 없습니다.
  • 모델 다운로더 도구를 사용하여 Open Model Zoo에서 다운로드합니다. 사전 교육을 받은 공개 모델만 해당됩니다.
  • storage.openvinotookit.org 직접 IR 파일을 다운로드하십시오.

당사의 목적을 위해 직접 다운로드하는 것이 가장 쉽습니다. 다음 명령을 사용하여 사람-차량-자전거 감지 모델을 잡습니다.

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*에서 지원되지 않으므로 모델 최적화기를 사용하여 별도의 컴퓨터에서 FP16으로 변환해야 할 수 있습니다.

신경망 입력

필요한 마지막 항목은 신경망 입력입니다. 다운로드한 모델의 경우 세 개의 색상 채널이 있는 이미지가 필요합니다. 보드에 필요한 파일을 다운로드하십시오.

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

인텔® 뉴럴 컴퓨트 스틱 2 Linux USB 드라이버 구성

시스템이 인텔® 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 감지되지 않으면 장치를 다시 시작하고 다시 시도하십시오.

실행 benchmark_app

모델을 다운로드하면 입력 이미지를 사용할 수 있고 인텔® 뉴럴 컴퓨트 스틱 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 활용합니다. 명령이 성공적으로 실행되면 터미널에 추론 통계가 표시됩니다. 또한 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* 플러그인 사용 시 크로스 컴파일 및 빌드 절차를 완료합니다.

관련 주제
Raspberry Pi*에서 열린 모델 동물원 데모 구축
OpenVINO™ 툴킷 오픈 모델 동물원
커뮤니티 포럼 및 기술 지원