Ultralytics YOLO11용 Sony IMX500 내보내기
이 가이드에서는 Ultralytics YOLO11 모델을 Sony IMX500 센서가 탑재된 Raspberry Pi AI Camera로 내보내고 배포하는 방법을 다룹니다.
Raspberry Pi AI Camera와 같이 계산 능력이 제한된 장치에 컴퓨터 비전 모델을 배포하는 것은 까다로울 수 있습니다. 더 빠른 성능을 위해 최적화된 모델 형식을 사용하면 큰 차이를 만들 수 있습니다.
IMX500 모델 형식은 신경망의 성능을 빠르게 유지하면서 전력을 최소로 사용하도록 설계되었습니다. 이를 통해 Ultralytics YOLO11 모델을 고속 저전력 추론에 최적화할 수 있습니다. 이 가이드에서는 모델을 IMX500 형식으로 내보내고 배포하는 과정을 안내하며, Raspberry Pi AI Camera에서 모델이 잘 작동하도록 돕습니다.
왜 IMX500으로 내보내야 합니까?
Sony의 IMX500 Intelligent Vision Sensor는 엣지 AI 처리 분야에서 판도를 바꾸는 하드웨어입니다. 이는 온칩 AI 기능을 갖춘 세계 최초의 지능형 비전 센서입니다. 이 센서는 데이터 처리 병목 현상, 개인 정보 보호 문제, 성능 제한을 포함하여 엣지 AI의 많은 과제를 해결하는 데 도움을 줍니다. 다른 센서들이 단순히 이미지와 프레임을 전달하는 반면, IMX500은 전체 상황을 파악합니다. 센서에서 데이터를 직접 처리하므로 장치가 실시간으로 통찰력을 생성할 수 있습니다.
YOLO11 모델을 위한 Sony의 IMX500 내보내기
IMX500은 데이터를 클라우드로 전송하여 처리할 필요 없이 센서에서 직접 데이터를 처리하는 방식을 혁신하도록 설계되었습니다.
IMX500은 양자화된 모델과 함께 작동합니다. 양자화는 정확도를 크게 잃지 않으면서 모델을 더 작고 빠르게 만듭니다. 이는 엣지 컴퓨팅의 제한된 자원에 이상적이며, 지연 시간을 줄이고 클라우드 의존성 없이 로컬에서 빠른 데이터 처리를 가능하게 하여 애플리케이션이 즉각적으로 응답할 수 있게 합니다. 또한 로컬 처리는 원격 서버로 전송되지 않으므로 사용자 데이터를 비공개적이고 안전하게 유지합니다.
IMX500 주요 특징:
- 메타데이터 출력: IMX500은 이미지만 전송하는 대신 이미지와 메타데이터(추론 결과)를 모두 출력할 수 있으며, 데이터 크기를 최소화하고 대역폭을 줄이며 비용을 절감하기 위해 메타데이터만 출력할 수도 있습니다.
- 개인 정보 보호 문제 해결: IMX500은 장치에서 데이터를 처리함으로써 개인 정보 보호 문제를 해결하며, 사람 수 계산이나 점유 추적과 같은 인간 중심 애플리케이션에 이상적입니다.
- 실시간 처리: 빠르고 센서 내(on-sensor) 처리는 실시간 의사결정을 지원하며, 자율 시스템과 같은 엣지 AI 애플리케이션에 완벽합니다.
시작하기 전에: 최상의 결과를 위해 모델 학습 가이드, 데이터 준비 가이드 및 하이퍼파라미터 튜닝 가이드를 따라 YOLO11 모델을 내보내기 준비 상태로 만드십시오.
지원 작업
현재 다음 작업을 포함하는 모델만 IMX500 형식으로 내보낼 수 있습니다.
IMX 내보내기는 YOLOv8n 및 YOLO11n(나노)에 대해 설계 및 벤치마킹되었습니다. 다른 아키텍처 및 모델 크기는 지원되지 않습니다.
사용 예시
Ultralytics YOLO11 모델을 IMX500 형식으로 내보내고 내보낸 모델로 추론을 실행합니다.
여기서는 모델이 예상대로 작동하는지 확인하기 위해 추론을 수행합니다. 그러나 Raspberry Pi AI Camera에서의 배포 및 추론은 배포에서 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") 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") 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")Ultralytics 패키지는 런타임 시 추가 내보내기 종속성을 설치합니다. 내보내기 명령을 처음 실행할 때, 제대로 작동하도록 콘솔을 재시작해야 할 수도 있습니다.
내보내기 인수
| 인수(Argument) | 유형(Type) | 기본값(Default) | 설명 |
|---|---|---|---|
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이 활성화된 상태에서 지정하지 않으면 전체 데이터셋이 사용됩니다. |
nms | bool | False | 내보낸 모델에 NMS(Non-Maximum Suppression)를 추가합니다. True인 경우 conf, iou, agnostic_nms도 허용됩니다. |
device | str | None | 내보내기를 위한 장치를 지정합니다: 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배포에서 IMX500 내보내기 사용
Ultralytics YOLO11n 모델을 IMX500 형식으로 내보낸 후, 추론을 위해 Raspberry Pi AI Camera에 배포할 수 있습니다.
하드웨어 필수 조건
다음 하드웨어를 갖추었는지 확인하십시오:
- Raspberry Pi 5 또는 Raspberry Pi 4 Model B
- Raspberry Pi AI Camera
Raspberry Pi AI 카메라를 Raspberry Pi의 15핀 MIPI CSI 커넥터에 연결하고 Raspberry Pi의 전원을 켭니다.
소프트웨어 필수 조건
이 가이드는 Raspberry Pi 5에서 실행되는 Raspberry Pi OS Bookworm으로 테스트되었습니다.
1단계: 터미널 창을 열고 다음 명령을 실행하여 Raspberry Pi 소프트웨어를 최신 버전으로 업데이트합니다.
sudo apt update && sudo apt full-upgrade2단계: IMX500 센서를 작동하는 데 필요한 IMX500 펌웨어를 설치합니다.
sudo apt install imx500-all3단계: 변경 사항을 적용하기 위해 Raspberry Pi를 재부팅합니다.
sudo reboot4단계: Aitrios Raspberry Pi 애플리케이션 모듈 라이브러리를 설치합니다.
pip install git+https://github.com/SonySemiconductorSolutions/aitrios-rpi-application-module-library.git5단계: aitrios-rpi-application-module-library 예제에서 제공되는 아래 스크립트를 사용하여 YOLO11 객체 탐지, 포즈 추정, 분류 및 세분화를 실행합니다.
이 스크립트를 실행하기 전에 환경에 따라 model_file 및 labels.txt 디렉토리를 교체했는지 확인하십시오.
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 DPS 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()벤치마크
YOLOv8n, YOLO11n, YOLOv8n-pose, YOLO11n-pose, YOLOv8n-cls 및 YOLO11n-cls 벤치마크는 Ultralytics 팀이 Raspberry Pi AI Camera에서 imx 모델 형식을 사용하여 속도와 정확도를 측정한 결과입니다.
| 모델 | 형식 | 크기(픽셀) | packerOut.zip 크기(MB) | mAP50-95(B) | 추론 시간 (ms/im) |
|---|---|---|---|---|---|
| YOLOv8n | imx | 640 | 2.1 | 0.470 | 58.79 |
| YOLO11n | imx | 640 | 2.2 | 0.517 | 58.82 |
| YOLOv8n-pose | imx | 640 | 2.0 | 0.687 | 58.79 |
| YOLO11n-pose | imx | 640 | 2.1 | 0.788 | 62.50 |
| 모델 | 형식 | 크기(픽셀) | packerOut.zip 크기(MB) | acc (top1) | acc (top5) | 추론 시간 (ms/im) |
|---|---|---|---|---|---|---|
| YOLOv8n-cls | imx | 224 | 2.3 | 0.25 | 0.5 | 33.31 |
| YOLO11n-cls | imx | 224 | 2.3 | 0.25 | 0.417 | 33.31 |
위 벤치마크에 대한 검증은 탐지 모델의 경우 COCO128 데이터셋, 포즈 추정 모델의 경우 COCO8-Pose 데이터셋, 분류 모델의 경우 ImageNet10 데이터셋을 사용하여 수행되었습니다.
내부적으로 어떻게 작동합니까?
Sony 모델 압축 툴킷(MCT)
Sony의 모델 압축 툴킷(MCT)은 양자화 및 가지치기(pruning)를 통해 딥러닝 모델을 최적화하는 강력한 도구입니다. 이 도구는 다양한 양자화 방법을 지원하며 정확도를 크게 희생하지 않으면서 모델 크기와 계산 복잡성을 줄이는 고급 알고리즘을 제공합니다. MCT는 특히 자원이 제한된 장치에 모델을 배포하여 효율적인 추론과 지연 시간 단축을 보장하는 데 유용합니다.
MCT의 지원 기능
Sony의 MCT는 신경망 모델을 최적화하도록 설계된 다양한 기능을 제공합니다:
- 그래프 최적화: 배치 정규화와 같은 레이어를 이전 레이어로 폴딩하여 모델을 더 효율적인 버전으로 변환합니다.
- 양자화 파라미터 탐색: 평균 제곱 오차(MSE), No-Clipping, 평균 절대 오차(MAE)와 같은 지표를 사용하여 양자화 노이즈를 최소화합니다.
- 고급 양자화 알고리즘:
- Shift Negative Correction: 대칭 활성화 양자화로 인한 성능 문제를 해결합니다.
- 이상치 필터링: z-점수를 사용하여 이상치를 감지하고 제거합니다.
- 클러스터링: 더 나은 분포 매칭을 위해 비균일 양자화 그리드를 활용합니다.
- 혼합 정밀도 탐색: 민감도에 따라 레이어별로 서로 다른 양자화 비트 너비를 할당합니다.
- 시각화: TensorBoard를 사용하여 모델 성능 통찰력, 양자화 단계 및 비트 너비 구성을 관찰합니다.
양자화
MCT는 모델 크기를 줄이고 추론 속도를 향상하기 위한 몇 가지 양자화 방법을 지원합니다:
- 학습 후 양자화(PTQ):
- Keras 및 PyTorch API를 통해 사용할 수 있습니다.
- 복잡도: 낮음
- 계산 비용: 낮음 (CPU 분 단위)
- 그래디언트 기반 학습 후 양자화(GPTQ):
- Keras 및 PyTorch API를 통해 사용할 수 있습니다.
- 복잡도: 중간
- 계산 비용: 보통 (2~3 GPU 시간)
- 양자화 인식 학습(QAT):
- 복잡도: 높음
- 계산 비용: 높음 (12~36 GPU 시간)
MCT는 또한 가중치 및 활성화를 위한 다양한 양자화 방식을 지원합니다:
- 2의 거듭제곱 (하드웨어 친화적)
- 대칭(Symmetric)
- 균일(Uniform)
구조적 가지치기(Structured Pruning)
MCT는 특정 하드웨어 아키텍처용으로 설계된 구조적, 하드웨어 인식 모델 가지치기를 도입합니다. 이 기술은 SIMD 그룹을 가지치기하여 대상 플랫폼의 SIMD(Single Instruction, Multiple Data) 기능을 활용합니다. 이는 가중치 메모리 사용량의 목표 리소스 활용을 위해 SIMD 아키텍처에 맞춰 채널 활용도를 최적화하면서 모델 크기와 복잡성을 줄입니다. Keras 및 PyTorch API를 통해 사용할 수 있습니다.
IMX500 변환기 도구(컴파일러)
IMX500 변환기 도구는 Sony의 IMX500 센서(예: Raspberry Pi AI Camera) 배포를 위한 모델 컴파일을 허용하는 IMX500 툴셋의 핵심입니다. 이 도구는 Ultralytics 소프트웨어를 통해 처리된 Ultralytics YOLO11 모델을 전환하여 지정된 하드웨어에서 호환되고 효율적으로 작동하도록 보장합니다. 모델 양자화 후의 내보내기 절차에는 필수 데이터와 장치별 구성을 캡슐화하는 바이너리 파일 생성이 포함되어 Raspberry Pi AI Camera에서의 배포 프로세스를 간소화합니다.
실제 사용 사례
IMX500 형식으로의 내보내기는 산업 전반에 걸쳐 광범위하게 적용될 수 있습니다. 몇 가지 예는 다음과 같습니다:
- 엣지 AI 및 IoT: 저전력 장치에서의 실시간 처리가 필수적인 드론이나 보안 카메라에서 객체 탐지를 활성화합니다.
- 웨어러블 장치: 건강 모니터링 웨어러블에서 소규모 AI 처리에 최적화된 모델을 배포합니다.
- 스마트 시티: IMX500으로 내보낸 YOLO11 모델을 사용하여 더 빠른 처리와 최소한의 지연 시간으로 교통 모니터링 및 안전 분석을 수행할 수 있습니다.
- 소매 분석: POS 시스템이나 스마트 선반에 최적화된 모델을 배포하여 매장 내 모니터링을 강화하십시오.
결론
Ultralytics YOLO11 모델을 Sony의 IMX500 형식으로 내보내면 IMX500 기반 카메라에서 효율적인 추론을 위해 모델을 배포할 수 있습니다. 고급 양자화 기법을 활용하면 정확도를 크게 저하시키지 않으면서 모델 크기를 줄이고 추론 속도를 향상할 수 있습니다.
더 자세한 정보와 상세 가이드라인은 Sony의 IMX500 웹사이트를 참조하십시오.
FAQ
Raspberry 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을 포함하여 배포에 필요한 파일들이 담긴 디렉토리가 생성됩니다.
엣지 AI 배포를 위해 IMX500 형식을 사용할 때의 주요 이점은 무엇입니까?
IMX500 형식은 엣지 배포에 대해 다음과 같은 몇 가지 중요한 이점을 제공합니다:
- 온칩 AI 처리를 통한 지연 시간 및 전력 소비 감소
- 이미지만이 아닌 이미지와 메타데이터(추론 결과)를 모두 출력
- 클라우드 의존성 없이 로컬에서 데이터를 처리하여 개인정보 보호 강화
- 시간에 민감한 애플리케이션에 이상적인 실시간 처리 기능
- 리소스가 제한된 장치에서의 효율적인 모델 배포를 위한 최적화된 양자화
IMX500 배포를 위해 필요한 하드웨어 및 소프트웨어 필수 구성 요소는 무엇입니까?
IMX500 모델을 배포하려면 다음이 필요합니다:
하드웨어:
- Raspberry Pi 5 또는 Raspberry Pi 4 Model B
- IMX500 센서가 장착된 Raspberry Pi AI Camera
소프트웨어:
- Raspberry Pi OS Bookworm
- IMX500 펌웨어 및 도구 (
sudo apt install imx500-all)
IMX500에서 YOLO11 모델의 성능은 어느 정도입니까?
Raspberry Pi AI Camera에서 수행한 Ultralytics 벤치마크 결과는 다음과 같습니다:
- YOLO11n은 이미지당 62.50ms의 추론 시간을 달성합니다
- COCO128 데이터셋 기준 mAP50-95 0.492 달성
- 양자화 후 모델 크기는 3.2MB에 불과함
이는 IMX500 형식이 엣지 AI 애플리케이션을 위해 좋은 정확도를 유지하면서 효율적인 실시간 추론을 제공함을 보여줍니다.