주요 콘텐츠로 건너뛰기
지식 기술 자료

32비트 Debian* OS용으로 사전 구성된 Dockerfile을 사용하여 OpenVINO™ 툴킷과 NCS2 플러그인 크로스 컴파일

콘텐츠 형태: 설치 및 설정   |   문서 ID: 000057005   |   마지막 검토일: 2025-02-20
노트
  • 설치에는 모든 단계가 필요합니다.
  • 이 단계는 Raspberry Pi 4* 보드 및 Raspbian* Buster, 32비트에서 테스트되었습니다.
  • 이 가이드의 단계를 수행하려면 인터넷 연결이 필요합니다.
  • 이 문서는 OpenVINO™ 툴킷의 오픈 소스 배포판 2022.1 릴리스를 사용하여 검증되었습니다.

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

자세한 내용을 보려면 주제를 클릭하십시오 .

시스템 요구사항
메모 이 가이드에서는 Raspberry Pi* 보드가 아래 나열된 운영 체제로 가동되고 있다고 가정합니다.

하드웨어

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

대상 운영 체제

  • 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

아래 다이어그램과 같이 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™ 툴킷 교차 컴파일Cross-Compile toolkit in Docker container environment

이 단계에서는 스크립트를 실행하여 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_JOBS 는 동시 컴파일을 위한 스레드 수를 제어합니다
  • BUILD_TYPE 컨트롤 디버그/릴리스 구성(기본적으로 릴리스)
  • UPDATE_SOURCES 는 소스 검색을 제어합니다.
    • 정리 - 이미 로드된 경우 소스를 다시 로드하지 않습니다. 빌드 폴더만 정리하면 됩니다(기본값).
    • 다시 로드 - 로드된 모든 소스를 삭제하고 다시 검색합니다.
    • 확인 - 원본을 다시 로드하거나 정리하지 않습니다.
  • 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

장치 부팅이 확인되면 장치 부팅(예: /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* 플러그인이 장치에서 작동하는지 확인하려면 다음 단계를 완료하십시오.

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

  • Model Optimizer를 사용하여 지원되는 프레임워크 중 하나의 기존 모델을 추론 엔진용 IR 형식으로 변환합니다. 참고: Model Optimizer 패키지는 Raspberry Pi*에 사용할 수 없습니다.
  • Model Downloader 도구를 사용하여 Open Model Zoo 에서 다운로드합니다. 미리 학습된 공용 모델만 해당됩니다.
  • storage.openvinotookit.org 에서 직접 IR 파일 다운로드

우리의 목적을 위해 직접 다운로드하는 것이 가장 쉽습니다. 다음 명령을 사용하여 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

인텔® 뉴럴 컴퓨트 스틱 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 활용하여 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* 플러그인 사용을 위한 크로스 컴파일 및 구축 절차가 완료됩니다.

관련 제품

이 문서는 2개의 제품에 적용됩니다.

부인 정보

이 페이지의 콘텐츠는 원본 영어 콘텐츠에 대한 사람 번역 및 컴퓨터 번역의 조합으로 완성되었습니다. 이 콘텐츠는 편의와 일반적인 정보 제공을 위해서만 제공되었으며, 완전하거나 정확한 것으로 간주되어선 안 됩니다. 이 페이지의 영어 버전과 번역 간 모순이 있는 경우, 영어 버전이 우선적으로 적용됩니다. 이 페이지의 영어 버전을 확인하십시오.

추가적 도움이 필요하십니까?

지원팀 연락처
지원팀 연락처