콘텐츠로 건너뛰기

Sony IMX500 Export for Ultralytics YOLO11

This guide covers exporting and deploying Ultralytics YOLO11 models to Raspberry Pi AI Cameras that feature the Sony IMX500 sensor.

라즈베리 파이 AI 카메라와 같이 연산 능력이 제한된 디바이스에 컴퓨터 비전 모델을 배포하는 것은 까다로울 수 있습니다. 더 빠른 성능에 최적화된 모델 형식을 사용하면 큰 차이를 만들 수 있습니다.

The IMX500 model format is designed to use minimal power while delivering fast performance for neural networks. It allows you to optimize your Ultralytics YOLO11 models for high-speed and low-power inferencing. In this guide, we'll walk you through exporting and deploying your models to the IMX500 format while making it easier for your models to perform well on the Raspberry Pi AI Camera.

라즈베리 파이 AI 카메라

IMX500으로 내보내야 하는 이유

소니의 IMX500 지능형 비전 센서는 에지 AI 프로세싱의 판도를 바꾸는 하드웨어입니다. 온칩 AI 기능을 갖춘 세계 최초의 지능형 비전 센서입니다. 이 센서는 데이터 처리 병목 현상, 개인정보 보호 문제, 성능 제한 등 엣지 AI의 여러 문제를 극복하는 데 도움이 됩니다.
다른 센서는 이미지와 프레임만 전달하지만 IMX500은 전체 스토리를 전달합니다. 센서에서 직접 데이터를 처리하여 디바이스가 실시간으로 인사이트를 생성할 수 있습니다.

Sony's IMX500 Export for YOLO11 Models

IMX500은 디바이스가 클라우드에 데이터를 전송하여 처리할 필요 없이 센서에서 직접 데이터를 처리하는 방식을 혁신하도록 설계되었습니다.

IMX500은 양자화된 모델과 함께 작동합니다. 양자화는 정확도를 크게 떨어뜨리지 않으면서도 모델을 더 작고 빠르게 만듭니다. 지연 시간을 줄이고 클라우드에 의존하지 않고 로컬에서 데이터를 빠르게 처리하여 애플리케이션이 빠르게 응답할 수 있도록 지원하므로 엣지 컴퓨팅의 제한된 리소스에 이상적입니다. 또한 로컬 처리는 사용자 데이터가 원격 서버로 전송되지 않으므로 비공개로 안전하게 유지됩니다.

IMX500 주요 기능:

  • 메타데이터 출력: IMX500은 이미지만 전송하는 대신 이미지와 메타데이터(추론 결과)를 모두 출력할 수 있으며, 데이터 크기를 최소화하고 대역폭을 줄이며 비용을 절감하기 위해 메타데이터만 출력할 수 있습니다.
  • 개인정보 보호 문제 해결: IMX500은 디바이스에서 데이터를 처리함으로써 개인정보 보호 문제를 해결하여 인원 수 계산 및 재실자 추적과 같은 사람 중심 애플리케이션에 이상적입니다.
  • 실시간 처리: 빠른 온-센서 처리로 실시간 의사 결정을 지원하여 자율 시스템과 같은 엣지 AI 애플리케이션에 적합합니다.

Before You Begin: For best results, ensure your YOLO11 model is well-prepared for export by following our Model Training Guide, Data Preparation Guide, and Hyperparameter Tuning Guide.

사용 예

Export an Ultralytics YOLO11 model to IMX500 format and run inference with the exported model.

참고

여기서는 모델이 예상대로 작동하는지 확인하기 위해 추론을 수행합니다. 그러나 라즈베리 파이 AI 카메라에서 배포 및 추론을 수행하려면 배포에서 IMX500 내보내기 사용 섹션으로 이동하세요.

from ultralytics import YOLO

# Load a YOLO11n PyTorch model
model = YOLO("yolo11n.pt")

# Export the model
model.export(format="imx", data="coco8.yaml")  # exports with PTQ quantization by default

# Load the exported model
imx_model = YOLO("yolo11n_imx_model")

# Run inference
results = imx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to imx format with Post-Training Quantization (PTQ)
yolo export model=yolo11n.pt format=imx data=coco8.yaml

# Run inference with the exported model
yolo predict model=yolo11n_imx_model source='https://ultralytics.com/images/bus.jpg'

경고

The Ultralytics package installs additional export dependencies at runtime. The first time you run the export command, you may need to restart your console to ensure it works correctly.

내보내기 인수

인수 유형 기본값 설명
format str 'imx' 내보낸 모델의 대상 형식으로, 다양한 배포 환경과의 호환성을 정의합니다.
imgsz int 또는 tuple 640 모델 입력에 사용할 원하는 이미지 크기입니다. 정사각형 이미지의 경우 정수 또는 튜플일 수 있습니다. (height, width) 를 입력합니다.
int8 bool True INT8 양자화를 활성화하여 모델을 더욱 압축하고 주로 에지 디바이스의 경우 정확도 손실을 최소화하면서 추론 속도를 높입니다.
data str 'coco8.yaml' 경로 데이터 세트 구성 파일(기본값: coco8.yaml), 정량화에 필수적인 요소입니다.
fraction float 1.0 INT8 정량화 보정에 사용할 데이터 세트의 일부를 지정합니다. 전체 데이터 세트의 하위 집합을 보정할 수 있어 실험이나 리소스가 제한되어 있는 경우에 유용합니다. INT8을 활성화한 상태에서 지정하지 않으면 전체 데이터 세트가 사용됩니다.
device str None 내보낼 장치를 지정합니다: GPU (device=0), CPU (device=cpu).

CUDA 지원하는 GPU 익스포트하는 경우, 인수를 전달해 주세요. device=0 를 사용하여 더 빠르게 내보낼 수 있습니다.

내보내기 프로세스에 대한 자세한 내용은 내보내기 관련 문서 페이지(Ultralytics )를 참조하세요.

내보내기 프로세스는 정량화 유효성 검사를 위한 ONNX 모델을 다음과 같은 디렉터리와 함께 생성합니다. <model-name>_imx_model. 이 디렉터리에는 packerOut.zip 파일은 IMX500 하드웨어에 배포하기 위해 모델을 패키징하는 데 필수적인 파일입니다. 또한 <model-name>_imx_model 폴더에는 텍스트 파일(labels.txt) 모델과 관련된 모든 레이블을 나열합니다.

yolo11n_imx_model
├── dnnParams.xml
├── labels.txt
├── packerOut.zip
├── yolo11n_imx.onnx
├── yolo11n_imx500_model_MemoryReport.json
└── yolo11n_imx500_model.pbtxt

배포 시 IMX500 내보내기 사용

After exporting Ultralytics YOLO11n model to IMX500 format, it can be deployed to Raspberry Pi AI Camera for inference.

하드웨어 사전 요구 사항

아래 하드웨어가 있는지 확인하세요:

  1. 라즈베리 파이 5 또는 라즈베리 파이 4 모델 B
  2. 라즈베리 파이 AI 카메라

라즈베리 파이 AI 카메라를 라즈베리 파이의 15핀 MIPI CSI 커넥터에 연결하고 라즈베리 파이의 전원을 켭니다.

소프트웨어 사전 요구 사항

참고

이 가이드는 라즈베리 파이 5에서 실행되는 라즈베리 파이 OS 북웜으로 테스트되었습니다.

1단계: 터미널 창을 열고 다음 명령을 실행하여 라즈베리파이 소프트웨어를 최신 버전으로 업데이트합니다.

sudo apt update && sudo apt full-upgrade

2단계: 패키저 도구와 함께 IMX500 센서를 작동하는 데 필요한 IMX500 펌웨어를 설치합니다.

sudo apt install imx500-all imx500-tools

3단계: 실행을 위한 필수 구성 요소 설치하기 picamera2 애플리케이션을 다운로드합니다. 나중에 배포 프로세스에서 이 애플리케이션을 사용할 것입니다.

sudo apt install python3-opencv python3-munkres

4단계: 변경 사항을 적용하려면 Raspberry Pi를 재부팅합니다.

sudo reboot

모델 패키지화 및 AI 카메라에 배포

획득 후 packerOut.zip 파일을 패키저 도구로 전달하여 RPK 파일을 얻을 수 있습니다. 이 파일은 다음을 사용하여 AI 카메라에 직접 배포할 수 있습니다. picamera2.

1단계: 모델을 RPK 파일로 패키지화하기

imx500-package -i path/to/packerOut.zip -o path/to/output/folder

위와 같이 하면 network.rpk 파일을 지정된 출력 폴더에 저장합니다.

2단계: 복제 picamera2 리포지토리로 이동하여 설치한 후 imx500 예제로 이동합니다.

git clone https://github.com/raspberrypi/picamera2
cd picamera2
pip install -e . --break-system-packages
cd examples/imx500

Step 3: Run YOLO11 object detection, using the labels.txt file that has been generated during the IMX500 export.

python imx500_object_detection_demo.py --model path/to/network.rpk --fps 17 --bbox-normalization --ignore-dash-labels --bbox-order xy --labels path/to/labels.txt

그러면 다음과 같이 실시간 추론 출력을 볼 수 있습니다.

라즈베리파이 AI 카메라에서 추론하기

벤치마크

YOLOv8 and YOLO11n benchmarks below were run by the Ultralytics team on Raspberry Pi AI Camera with imx 속도와 정확도를 측정하는 모델 형식입니다.

모델 형식 상태 Size of RPK (MB) mAP50-95(B) 추론 시간(ms/im)
YOLOv8n imx 3.1 0.602 58.82
YOLO11n imx 3.2 0.644 62.50

참고

Validation for the above benchmark was done using coco8 dataset on a Raspberry Pi 5

후드 안에는 무엇이 있나요?

IMX500 배포

소니 모델 압축 툴킷(MCT)

소니의 모델 압축 툴킷(MCT) 은 양자화 및 가지치기를 통해 딥러닝 모델을 최적화하는 강력한 도구입니다. 다양한 양자화 방법을 지원하고 고급 알고리즘을 제공하여 정확도를 크게 저하시키지 않으면서도 모델 크기와 계산 복잡성을 줄일 수 있습니다. MCT는 리소스가 제한된 디바이스에 모델을 배포하는 데 특히 유용하며, 효율적인 추론과 지연 시간 단축을 보장합니다.

MCT의 지원 기능

소니의 MCT는 신경망 모델을 최적화하도록 설계된 다양한 기능을 제공합니다:

  1. 그래프 최적화: 일괄 정규화와 같은 레이어를 이전 레이어로 접어서 모델을 보다 효율적인 버전으로 변환합니다.
  2. 양자화 파라미터 검색: 평균 제곱 오차, 클리핑 없음, 평균 평균 오차 등의 메트릭을 사용하여 양자화 노이즈를 최소화합니다.
  3. 고급 정량화 알고리즘:
    • 시프트 네거티브 보정: 대칭 활성화 양자화로 인한 성능 문제를 해결합니다.
    • 이상값 필터링: z-score를 사용하여 이상값을 감지하고 제거합니다.
    • 클러스터링: 더 나은 분포 매칭을 위해 균일하지 않은 양자화 격자를 활용합니다.
    • 혼합 정밀도 검색: 감도에 따라 레이어당 서로 다른 양자화 비트 폭을 할당합니다.
  4. 시각화: 모델 성능 인사이트, 양자화 단계 및 비트 폭 구성을 관찰하려면 TensorBoard를 사용하세요.

정량화

MCT는 모델 크기를 줄이고 추론 속도를 개선하기 위해 여러 가지 정량화 방법을 지원합니다:

  1. 교육 후 정량화(PTQ):
    • Keras 및 PyTorch API를 통해 사용할 수 있습니다.
    • 복잡성: 낮음
    • 계산 비용: 낮음 (CPU 분)
  2. 그래디언트 기반 학습 후 정량화(GPTQ):
    • Keras 및 PyTorch API를 통해 사용할 수 있습니다.
    • 복잡성: 중간
    • 계산 비용: 보통(2~3 GPU 시간)
  3. 수량화 인식 교육(QAT):
    • 복잡성: 높음
    • 컴퓨팅 비용: 높음(12-36 GPU 시간)

MCT는 가중치 및 활성화에 대한 다양한 정량화 체계도 지원합니다:

  1. 파워 오브 투(하드웨어 친화적)
  2. 대칭
  3. 유니폼

구조화된 가지 치기

MCT는 특정 하드웨어 아키텍처를 위해 설계된 구조화된 하드웨어 인식 모델 가지치기를 도입합니다. 이 기술은 SIMD 그룹을 가지치기하여 대상 플랫폼의 SIMD(단일 명령어, 다중 데이터) 기능을 활용합니다. 이를 통해 모델 크기와 복잡성을 줄이면서 채널 활용도를 최적화하고, 가중치 메모리 풋프린트의 목표 리소스 활용을 위해 SIMD 아키텍처에 맞춰 조정합니다. Keras 및 PyTorch API를 통해 사용할 수 있습니다.

IMX500 변환기 도구(컴파일러)

The IMX500 Converter Tool is integral to the IMX500 toolset, allowing the compilation of models for deployment on Sony's IMX500 sensor (for instance, Raspberry Pi AI Cameras). This tool facilitates the transition of Ultralytics YOLO11 models processed through Ultralytics software, ensuring they are compatible and perform efficiently on the specified hardware. The export procedure following model quantization involves the generation of binary files that encapsulate essential data and device-specific configurations, streamlining the deployment process on the Raspberry Pi AI Camera.

실제 사용 사례

IMX500 형식으로 내보내기는 산업 전반에 걸쳐 폭넓게 적용될 수 있습니다. 다음은 몇 가지 예입니다:

  • 엣지 AI 및 IoT: 저전력 디바이스에서 실시간 처리가 필수인 드론이나 보안 카메라에서 물체 감지 기능을 지원합니다.
  • 웨어러블 디바이스: 건강 모니터링 웨어러블 디바이스에 소규모 AI 처리에 최적화된 모델을 배포하세요.
  • Smart Cities: Use IMX500-exported YOLO11 models for traffic monitoring and safety analysis with faster processing and minimal latency.
  • 리테일 분석: POS 시스템이나 스마트 선반에 최적화된 모델을 배포하여 매장 내 모니터링을 강화하세요.

결론

Exporting Ultralytics YOLO11 models to Sony's IMX500 format allows you to deploy your models for efficient inference on IMX500-based cameras. By leveraging advanced quantization techniques, you can reduce model size and improve inference speed without significantly compromising accuracy.

자세한 정보 및 세부 지침은 소니 IMX500 웹사이트를 참조하세요.

자주 묻는 질문

How do I export a YOLO11 model to IMX500 format for Raspberry Pi AI Camera?

To export a YOLO11 model to IMX500 format, use either the Python API or CLI command:

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
model.export(format="imx")  # Exports with PTQ quantization by default

내보내기 프로세스는 다음을 포함하여 배포에 필요한 파일이 포함된 디렉터리를 생성합니다. packerOut.zip 라즈베리파이의 IMX500 패키저 도구와 함께 사용할 수 있습니다.

엣지 AI 배포에 IMX500 형식을 사용하면 어떤 주요 이점이 있나요?

IMX500 형식은 엣지 배포에 몇 가지 중요한 이점을 제공합니다:

  • 온칩 AI 처리로 지연 시간 및 전력 소비 감소
  • 이미지만 출력하는 대신 이미지와 메타데이터(추론 결과)를 모두 출력합니다.
  • 클라우드에 의존하지 않고 로컬에서 데이터를 처리하여 개인 정보 보호 강화
  • 시간에 민감한 애플리케이션에 이상적인 실시간 처리 기능
  • 리소스가 제한된 디바이스에서 효율적인 모델 배포를 위한 최적화된 정량화

IMX500 배포에 필요한 하드웨어 및 소프트웨어 전제 조건은 무엇인가요?

IMX500 모델을 배포하려면 다음이 필요합니다:

하드웨어:

  • 라즈베리 파이 5 또는 라즈베리 파이 4 모델 B
  • IMX500 센서가 장착된 라즈베리파이 AI 카메라

소프트웨어:

  • 라즈베리 파이 OS 북웜
  • IMX500 펌웨어 및 도구(sudo apt install imx500-all imx500-tools)
  • Python 패키지 picamera2 (sudo apt install python3-opencv python3-munkres)

What performance can I expect from YOLO11 models on the IMX500?

라즈베리파이 AI 카메라의 Ultralytics 벤치마크 기준:

  • YOLO11n achieves 58.82ms inference time per image
  • COCO8 데이터 세트에서 mAP50-95의 0.522
  • 양자화 후 2.9MB에 불과한 모델 크기

이는 IMX500 포맷이 에지 AI 애플리케이션에 우수한 정확도를 유지하면서 효율적인 실시간 추론을 제공한다는 것을 보여줍니다.

내보낸 모델을 패키징하여 Raspberry Pi AI 카메라에 배포하려면 어떻게 해야 하나요?

IMX500 형식으로 내보낸 후

  1. 패키저 도구를 사용하여 RPK 파일을 생성합니다:

    imx500-package -i path/to/packerOut.zip -o path/to/output/folder
    
  2. picamera2를 복제하여 설치합니다:

    git clone https://github.com/raspberrypi/picamera2
    cd picamera2 && pip install -e . --break-system-packages
    
  3. 생성된 RPK 파일을 사용하여 추론을 실행합니다:

    python imx500_object_detection_demo.py --model path/to/network.rpk --fps 17 --bbox-normalization --labels path/to/labels.txt
    
5개월 전 생성됨 ✏️ 2 일 전 업데이트됨

댓글