Meet YOLO26: next-gen vision AI.

Link to this sectionUltralytics YOLO11을 위한 Sony IMX500 내보내기#

이 가이드는 Ultralytics YOLO11 모델을 Sony IMX500 센서가 탑재된 Raspberry Pi AI Camera로 내보내고 배포하는 방법을 다룹니다.

Raspberry Pi AI Camera와 같이 계산 능력이 제한된 장치에 컴퓨터 비전 모델을 배포하는 것은 까다로울 수 있습니다. 더 빠른 성능을 위해 최적화된 모델 형식을 사용하면 큰 차이를 만들 수 있습니다.

IMX500 모델 형식은 신경망에 대해 빠른 성능을 제공하면서 전력 소모를 최소화하도록 설계되었습니다. 이를 통해 고속 및 저전력 추론을 위해 Ultralytics YOLO11 모델을 최적화할 수 있습니다. 이 가이드에서는 Raspberry Pi AI Camera에서 모델이 잘 작동하도록 모델을 IMX500 형식으로 내보내고 배포하는 과정을 안내합니다.

Raspberry Pi AI Camera with Sony IMX500 sensor

Link to this section왜 IMX500으로 내보내야 합니까?#

Sony의 IMX500 Intelligent Vision Sensor는 엣지 AI 처리 분야에서 판도를 바꾸는 하드웨어입니다. 이는 온칩 AI 기능을 갖춘 세계 최초의 지능형 비전 센서입니다. 이 센서는 데이터 처리 병목 현상, 개인정보 보호 문제, 성능 제한을 포함하여 엣지 AI의 많은 과제를 극복하도록 돕습니다. 다른 센서들이 단순히 이미지와 프레임을 전달하는 반면, IMX500은 전체 상황을 전달합니다. 센서에서 직접 데이터를 처리하므로 장치가 실시간으로 인사이트를 생성할 수 있습니다.

Link to this sectionYOLO11 모델을 위한 Sony IMX500 내보내기#

IMX500은 처리를 위해 데이터를 클라우드로 보낼 필요 없이 센서에서 직접 데이터를 처리하는 방식을 혁신하도록 설계되었습니다.

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

IMX500 주요 특징:

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

시작하기 전에: 최상의 결과를 얻으려면 Model Training Guide, Data Preparation Guide, Hyperparameter Tuning Guide를 따라 YOLO11 모델이 내보내기를 위해 잘 준비되었는지 확인하십시오.

Link to this section지원되는 작업#

현재 다음 작업을 포함하는 모델만 IMX500 형식으로 내보낼 수 있습니다.

지원되는 모델 변형

IMX 내보내기는 YOLOv8nYOLO11n(나노)을 위해 설계 및 벤치마킹되었습니다. 다른 아키텍처 및 모델 규모는 지원되지 않습니다.

Link to this section사용 예제#

Ultralytics YOLO11 모델을 IMX500 형식으로 내보내고 내보낸 모델로 추론을 실행합니다.

IMX500 형식은 Export, Predict, Validate 모드를 지원합니다. 추론 및 검증은 Raspberry Pi AI Camera(IMX500)에서 실행됩니다.

참고

여기서는 모델이 예상대로 작동하는지 확인하기 위해 추론을 수행합니다. 그러나 Raspberry Pi AI Camera에서의 배포 및 추론은 Using IMX500 Export in Deployment 섹션으로 건너뛰어 주십시오.

Object Detection
 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")
포즈 추정(Pose Estimation)
 from ultralytics import YOLO

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

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

 # Load the exported model
 imx_model = YOLO("yolo11n-pose_imx_model")

 # Run inference
 results = imx_model("https://ultralytics.com/images/bus.jpg")
Classification
 from ultralytics import YOLO

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

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

 # Load the exported model
 imx_model = YOLO("yolo11n-cls_imx_model")

 # Run inference
 results = imx_model("https://ultralytics.com/images/bus.jpg", imgsz=224)
인스턴스 세그멘테이션
 from ultralytics import YOLO

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

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

 # Load the exported model
 imx_model = YOLO("yolo11n-seg_imx_model")

 # Run inference
 results = imx_model("https://ultralytics.com/images/bus.jpg")
검증
 from ultralytics import YOLO

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

 # Validate accuracy on the COCO8 dataset
 metrics = model.val(data="coco8.yaml")
경고

Ultralytics 패키지는 런타임 시 추가 내보내기 종속성을 설치합니다. 내보내기 명령을 처음 실행할 때 올바르게 작동하도록 콘솔을 다시 시작해야 할 수도 있습니다.

Link to this section내보내기 인수#

인수유형기본값설명
formatstr'imx'내보낸 모델의 대상 형식이며, 다양한 배포 환경과의 호환성을 정의합니다.
imgszint 또는 tuple640모델 입력에 필요한 이미지 크기입니다. 정사각형 이미지의 경우 정수를 사용할 수 있으며, 특정 치수의 경우 (height, width) 튜플을 사용할 수 있습니다.
int8boolTrueINT8 양자화를 활성화하여 모델을 추가로 압축하고, 주로 엣지 장치에서 accuracy 손실을 최소화하면서 추론 속도를 높입니다.
datastr'coco8.yaml'양자화에 필수적인 dataset 구성 파일 경로(기본값: coco8.yaml)입니다.
fractionfloat1.0INT8 양자화 보정에 사용할 데이터셋의 비율을 지정합니다. 전체 데이터셋의 하위 집합으로 보정할 수 있게 하여 실험이나 리소스가 제한된 경우에 유용합니다. INT8을 활성화하고 지정하지 않으면 전체 데이터셋이 사용됩니다.
nmsboolFalse내보낸 모델에 NMS(Non-Maximum Suppression)를 추가합니다. True인 경우 conf, iou, agnostic_nms도 허용됩니다.
devicestrNone내보내기 장치를 지정합니다: GPU(device=0), CPU(device=cpu).

CUDA를 지원하는 GPU에서 내보내는 경우 더 빠른 내보내기를 위해 device=0 인수를 전달하십시오.

내보내기 프로세스에 대한 자세한 내용은 내보내기에 대한 Ultralytics 문서 페이지를 참조하십시오.

내보내기 프로세스는 양자화 검증을 위한 ONNX 모델과 <model-name>_imx_model이라는 디렉토리를 생성합니다. 이 디렉토리에는 IMX500 하드웨어 배포용 모델 패키징에 필수적인 packerOut.zip 파일이 포함됩니다. 또한 <model-name>_imx_model 폴더에는 모델과 관련된 모든 레이블이 나열된 텍스트 파일(labels.txt)이 포함됩니다.

폴더 구조
yolo11n_imx_model
├── dnnParams.xml
├── labels.txt
├── packerOut.zip
├── model_imx.onnx
├── model_imx_MemoryReport.json
└── model_imx.pbtxt

Link to this section배포 시 IMX500 내보내기 사용#

Ultralytics YOLO11n 모델을 IMX500 형식으로 내보낸 후, 추론을 위해 Raspberry Pi AI Camera에 배포할 수 있습니다.

Link to this section하드웨어 필수 구성 요소#

다음 하드웨어가 있는지 확인하십시오:

  1. Raspberry Pi 5 또는 Raspberry Pi 4 Model B
  2. Raspberry Pi AI Camera

Raspberry Pi AI 카메라를 Raspberry Pi의 15핀 MIPI CSI 커넥터에 연결하고 Raspberry Pi의 전원을 켭니다.

Link to this section소프트웨어 필수 구성 요소#

참고

이 가이드는 Raspberry Pi 5에서 실행되는 Raspberry Pi OS Bookworm으로 테스트되었습니다.

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

sudo apt update && sudo apt full-upgrade

2단계: IMX500 센서를 작동하는 데 필요한 IMX500 펌웨어를 설치합니다.

sudo apt install imx500-all

3단계: 변경 사항을 적용하려면 Raspberry Pi를 재부팅하십시오.

sudo reboot

4단계: Aitrios Raspberry Pi application module library를 설치합니다.

pip install git+https://github.com/SonySemiconductorSolutions/aitrios-rpi-application-module-library.git

5단계: aitrios-rpi-application-module-library examples에서 사용 가능한 아래 스크립트를 사용하여 YOLO11 객체 탐지, 포즈 추정, 분류 및 세그멘테이션을 실행합니다.

참고

이 스크립트를 실행하기 전에 환경에 따라 model_filelabels.txt 디렉토리를 대체하십시오.

Python 스크립트
import numpy as np
from modlib.apps import Annotator
from modlib.devices import AiCamera
from modlib.models import COLOR_FORMAT, MODEL_TYPE, Model
from modlib.models.post_processors import pp_od_yolo_ultralytics

class YOLO(Model):
    """YOLO model for IMX500 deployment."""

    def __init__(self):
        """Initialize the YOLO model for IMX500 deployment."""
        super().__init__(
            model_file="yolo11n_imx_model/packerOut.zip",  # replace with proper directory
            model_type=MODEL_TYPE.CONVERTED,
            color_format=COLOR_FORMAT.RGB,
            preserve_aspect_ratio=False,
        )

        self.labels = np.genfromtxt(
            "yolo11n_imx_model/labels.txt",  # replace with proper directory
            dtype=str,
            delimiter="\n",
        )

    def post_process(self, output_tensors):
        """Post-process the output tensors for object detection."""
        return pp_od_yolo_ultralytics(output_tensors)

device = AiCamera(frame_rate=16)  # Optimal frame rate for maximum FPS of the YOLO model running on the AI Camera
model = YOLO()
device.deploy(model)

annotator = Annotator()

with device as stream:
    for frame in stream:
        detections = frame.detections[frame.detections.confidence > 0.55]
        labels = [f"{model.labels[class_id]}: {score:0.2f}" for _, score, class_id, _ in detections]

        annotator.annotate_boxes(frame, detections, labels=labels, alpha=0.3, corner_radius=10)
        frame.display()

Link to this section벤치마크#

아래의 YOLOv8n, YOLO11n, YOLOv8n-pose, YOLO11n-pose, YOLOv8n-cls 및 YOLO11n-cls 벤치마크는 Ultralytics 팀이 imx 모델 형식을 사용하여 Raspberry Pi AI Camera에서 속도와 정확도를 측정했습니다.

모델형식크기 (픽셀)packerOut.zip 크기 (MB)mAP50-95(B)추론 시간(ms/im)
YOLOv8nimx6402.10.47058.79
YOLO11nimx6402.20.51758.82
YOLOv8n-poseimx6402.00.68758.79
YOLO11n-poseimx6402.10.78862.50
모델형식크기 (픽셀)packerOut.zip 크기 (MB)acc (top1)acc (top5)추론 시간(ms/im)
YOLOv8n-clsimx2242.30.250.533.31
YOLO11n-clsimx2242.30.250.41733.31
참고

위 벤치마크에 대한 검증은 탐지 모델의 경우 COCO128 데이터 세트, 포즈 추정 모델의 경우 COCO8-Pose 데이터 세트, 분류 모델의 경우 ImageNet10을 사용하여 수행되었습니다.

Link to this section내부 구조는 어떻게 됩니까?#

Sony IMX500 YOLO model deployment workflow

Link to this sectionSony 모델 압축 툴킷(MCT)#

Sony's Model Compression Toolkit (MCT)는 양자화 및 가지치기를 통해 딥러닝 모델을 최적화하기 위한 강력한 도구입니다. 다양한 양자화 방법을 지원하며 정확도를 크게 희생하지 않고 모델 크기와 계산 복잡성을 줄이기 위한 고급 알고리즘을 제공합니다. MCT는 자원이 제한된 장치에 모델을 배포하여 효율적인 추론을 보장하고 지연 시간을 줄이는 데 특히 유용합니다.

Link to this sectionMCT의 지원 기능#

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

  1. 그래프 최적화: 배치 정규화와 같은 레이어를 이전 레이어로 폴딩하여 모델을 더 효율적인 버전으로 변환합니다.
  2. 양자화 파라미터 검색: 평균 제곱 오차(MSE), No-Clipping, 평균 절대 오차와 같은 지표를 사용하여 양자화 노이즈를 최소화합니다.
  3. 고급 양자화 알고리즘:
    • Shift Negative Correction: 대칭 활성화 양자화로 인한 성능 문제를 해결합니다.
    • 이상치 필터링: z-score를 사용하여 이상치를 감지하고 제거합니다.
    • 클러스터링: 더 나은 분포 일치를 위해 비균등 양자화 그리드를 활용합니다.
    • 혼합 정밀도 검색: 민감도에 따라 레이어별로 다른 양자화 비트 너비를 할당합니다.
  4. 시각화: TensorBoard를 사용하여 모델 성능 인사이트, 양자화 단계 및 비트 너비 구성을 관찰합니다.

Link to this section양자화#

MCT는 모델 크기를 줄이고 추론 속도를 향상시키기 위해 여러 양자화 방법을 지원합니다:

  1. 학습 후 양자화(PTQ):
    • Keras 및 PyTorch API를 통해 사용할 수 있습니다.
    • 복잡성: 낮음
    • 계산 비용: 낮음(CPU 몇 분)
  2. 기울기 기반 학습 후 양자화(GPTQ):
    • Keras 및 PyTorch API를 통해 사용할 수 있습니다.
    • 복잡성: 중간
    • 계산 비용: 보통(GPU 2-3시간)
  3. 양자화 인식 학습(QAT):
    • 복잡성: 높음
    • 계산 비용: 높음(GPU 12-36시간)

MCT는 또한 가중치 및 활성화에 대한 다양한 양자화 방식을 지원합니다:

  1. Power-of-Two (하드웨어 친화적)
  2. Symmetric (대칭)
  3. Uniform (균일반)

Link to this section구조적 가지치기(Structured Pruning)#

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

Link to this sectionIMX500 변환 도구(컴파일러)#

IMX500 변환 도구는 Sony의 IMX500 센서(예: Raspberry Pi AI Camera)에 배포할 모델을 컴파일할 수 있게 해주는 IMX500 도구 세트의 필수 구성 요소입니다. 이 도구는 Ultralytics 소프트웨어를 통해 처리된 Ultralytics YOLO11 모델의 전환을 용이하게 하며, 지정된 하드웨어에서 호환성과 효율적인 성능을 보장합니다. 모델 양자화 후의 내보내기 절차에는 필수 데이터와 장치별 구성을 포함하는 바이너리 파일 생성이 포함되어 Raspberry Pi AI Camera에서의 배포 프로세스를 간소화합니다.

Link to this section실제 활용 사례#

IMX500 형식으로의 내보내기는 산업 전반에 걸쳐 광범위하게 적용될 수 있습니다. 몇 가지 예는 다음과 같습니다.

  • 엣지 AI 및 IoT: 저전력 장치에서의 실시간 처리가 필수적인 드론이나 보안 카메라에서 객체 탐지를 활성화합니다.
  • 웨어러블 장치: 건강 모니터링 웨어러블에서 소규모 AI 처리에 최적화된 모델을 배포합니다.
  • 스마트 시티: 더 빠른 처리와 최소한의 지연 시간으로 교통 모니터링 및 안전 분석을 수행하기 위해 IMX500으로 내보낸 YOLO11 모델을 사용합니다.
  • 리테일 분석: 최적화된 모델을 POS 시스템이나 스마트 선반에 배포하여 매장 내 모니터링을 강화합니다.

Link to this section결론#

Ultralytics YOLO11 모델을 Sony의 IMX500 형식으로 내보내면 IMX500 기반 카메라에서 효율적인 추론을 위해 모델을 배포할 수 있습니다. 고급 양자화 기술을 활용하여 정확도를 크게 저하시키지 않으면서 모델 크기를 줄이고 추론 속도를 향상시킬 수 있습니다.

더 자세한 정보와 세부 지침은 Sony의 IMX500 웹사이트를 참조하십시오.

Link to this sectionFAQ#

Link to this sectionRaspberry Pi AI Camera를 위해 YOLO11 모델을 IMX500 형식으로 어떻게 내보냅니까?#

YOLO11 모델을 IMX500 형식으로 내보내려면 Python API 또는 CLI 명령을 사용하십시오:

from ultralytics import YOLO

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

내보내기 프로세스는 packerOut.zip을 포함하여 배포에 필요한 파일이 담긴 디렉토리를 생성합니다.

Link to this section엣지 AI 배포에 IMX500 형식을 사용할 때의 주요 이점은 무엇입니까?#

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

  • 온칩 AI 처리를 통한 지연 시간 및 전력 소비 감소
  • 이미지만이 아닌 이미지와 메타데이터(추론 결과)를 모두 출력
  • 클라우드 의존성 없이 로컬에서 데이터를 처리하여 개인정보 보호 강화
  • 시간에 민감한 애플리케이션에 이상적인 실시간 처리 기능
  • 리소스가 제한된 장치에서 효율적인 모델 배포를 위한 최적화된 양자화

Link to this sectionIMX500 배포를 위해 어떤 하드웨어 및 소프트웨어 필수 요구사항이 필요합니까?#

IMX500 모델 배포를 위해서는 다음이 필요합니다:

하드웨어:

  • Raspberry Pi 5 또는 Raspberry Pi 4 Model B
  • IMX500 센서가 탑재된 Raspberry Pi AI Camera

소프트웨어:

  • Raspberry Pi OS Bookworm
  • IMX500 펌웨어 및 도구 (sudo apt install imx500-all)

Link to this sectionIMX500에서 YOLO11 모델로부터 어떤 성능을 기대할 수 있습니까?#

Raspberry Pi AI Camera에서의 Ultralytics 벤치마크 기준:

  • YOLO11n은 이미지당 58.82ms의 추론 시간을 달성합니다
  • COCO128 데이터셋에서 mAP50-95 0.517 달성
  • 양자화 후 모델 크기는 2.2MB에 불과

이는 IMX500 형식이 엣지 AI 애플리케이션을 위해 좋은 정확도를 유지하면서 효율적인 실시간 추론을 제공함을 보여줍니다.

댓글