소니 IMX500 내보내기 대상 Ultralytics YOLOv8
이 가이드는 소니 IMX500 센서가 탑재된 라즈베리 파이 AI 카메라에 Ultralytics YOLOv8 모델을 내보내고 배포하는 방법을 다룹니다.
라즈베리 파이 AI 카메라와 같이 연산 능력이 제한된 디바이스에 컴퓨터 비전 모델을 배포하는 것은 까다로울 수 있습니다. 더 빠른 성능에 최적화된 모델 형식을 사용하면 큰 차이를 만들 수 있습니다.
IMX500 모델 포맷은 신경망에 빠른 성능을 제공하면서 최소한의 전력을 사용하도록 설계되었습니다. 이를 통해 고속 및 저전력 추론을 위한 Ultralytics YOLOv8 모델을 고속 및 저전력 추론에 최적화할 수 있습니다. 이 가이드에서는 모델을 IMX500 포맷으로 내보내고 배포하는 방법을 안내하는 동시에 모델이 Raspberry Pi AI 카메라에서 더 잘 작동하도록 하는 방법을 설명합니다.
IMX500으로 내보내야 하는 이유
소니의 IMX500 지능형 비전 센서는 에지 AI 프로세싱의 판도를 바꾸는 하드웨어입니다. 온칩 AI 기능을 갖춘 세계 최초의 지능형 비전 센서입니다. 이 센서는 데이터 처리 병목 현상, 개인정보 보호 문제, 성능 제한 등 엣지 AI의 여러 문제를 극복하는 데 도움이 됩니다.
다른 센서는 이미지와 프레임만 전달하지만 IMX500은 전체 스토리를 전달합니다. 센서에서 직접 데이터를 처리하여 디바이스가 실시간으로 인사이트를 생성할 수 있습니다.
소니 IMX500 내보내기( YOLOv8 모델용)
IMX500은 디바이스가 클라우드에 데이터를 전송하여 처리할 필요 없이 센서에서 직접 데이터를 처리하는 방식을 혁신하도록 설계되었습니다.
IMX500은 양자화된 모델과 함께 작동합니다. 양자화는 정확도를 크게 떨어뜨리지 않으면서도 모델을 더 작고 빠르게 만듭니다. 지연 시간을 줄이고 클라우드에 의존하지 않고 로컬에서 데이터를 빠르게 처리하여 애플리케이션이 빠르게 응답할 수 있도록 지원하므로 엣지 컴퓨팅의 제한된 리소스에 이상적입니다. 또한 로컬 처리는 사용자 데이터가 원격 서버로 전송되지 않으므로 비공개로 안전하게 유지됩니다.
IMX500 주요 기능:
- 메타데이터 출력: IMX500은 이미지만 전송하는 대신 이미지와 메타데이터(추론 결과)를 모두 출력할 수 있으며, 데이터 크기를 최소화하고 대역폭을 줄이며 비용을 절감하기 위해 메타데이터만 출력할 수 있습니다.
- 개인정보 보호 문제 해결: IMX500은 디바이스에서 데이터를 처리함으로써 개인정보 보호 문제를 해결하여 인원 수 계산 및 재실자 추적과 같은 사람 중심 애플리케이션에 이상적입니다.
- 실시간 처리: 빠른 온-센서 처리로 실시간 의사 결정을 지원하여 자율 시스템과 같은 엣지 AI 애플리케이션에 적합합니다.
시작하기 전에: 최상의 결과를 얻으려면 모델 교육 가이드, 데이터 준비 가이드, 하이퍼파라미터 튜닝 가이드에 따라 YOLOv8 모델을 내보내기 위한 준비가 완료되었는지 확인하세요.
사용 예
Ultralytics YOLOv8 모델을 IMX500 형식으로 내보내고 내보낸 모델로 추론을 실행합니다.
참고
IMX 내보내기는 현재 YOLOv8n 모델에 대해서만 지원됩니다. 여기서는 모델이 예상대로 작동하는지 확인하기 위해 추론을 수행합니다. 그러나 라즈베리 파이 AI 카메라에 배포 및 추론을 수행하려면 배포에서 IMX500 내보내기 사용 섹션으로 이동하세요.
예
from ultralytics import YOLO
# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")
# Export the model
model.export(format="imx", data="coco8.yaml") # exports with PTQ quantization by default
# Load the exported model
imx_model = YOLO("yolov8n_imx_model")
# Run inference
results = imx_model("https://ultralytics.com/images/bus.jpg")
내보내기 인수
인수 | 유형 | 기본값 | 설명 |
---|---|---|---|
format |
str |
'imx' |
내보낸 모델의 대상 형식으로, 다양한 배포 환경과의 호환성을 정의합니다. |
imgsz |
int 또는 tuple |
640 |
모델 입력에 사용할 원하는 이미지 크기입니다. 정사각형 이미지의 경우 정수 또는 튜플일 수 있습니다. (height, width) 를 입력합니다. |
int8 |
bool |
True |
INT8 양자화를 활성화하여 모델을 더욱 압축하고 주로 에지 디바이스의 경우 정확도 손실을 최소화하면서 추론 속도를 높입니다. |
data |
str |
'coco8.yaml' |
경로 데이터 세트 구성 파일(기본값: coco8.yaml ), 정량화에 필수적인 요소입니다. |
내보내기 프로세스에 대한 자세한 내용은 내보내기 관련 문서 페이지(Ultralytics )를 참조하세요.
내보내기 프로세스는 정량화 유효성 검사를 위한 ONNX 모델을 다음과 같은 디렉터리와 함께 생성합니다. <model-name>_imx_model
. 이 디렉터리에는 packerOut.zip
파일은 IMX500 하드웨어에 배포하기 위해 모델을 패키징하는 데 필수적인 파일입니다. 또한 <model-name>_imx_model
폴더에는 텍스트 파일(labels.txt
) 모델과 관련된 모든 레이블을 나열합니다.
yolov8n_imx_model
├── dnnParams.xml
├── labels.txt
├── packerOut.zip
├── yolov8n_imx.onnx
├── yolov8n_imx500_model_MemoryReport.json
└── yolov8n_imx500_model.pbtxt
배포 시 IMX500 내보내기 사용
Ultralytics YOLOv8n 모델을 IMX500 형식으로 내보낸 후, 추론을 위해 라즈베리파이 AI 카메라에 배포할 수 있습니다.
하드웨어 사전 요구 사항
아래 하드웨어가 있는지 확인하세요:
- 라즈베리 파이 5 또는 라즈베리 파이 4 모델 B
- 라즈베리 파이 AI 카메라
라즈베리 파이 AI 카메라를 라즈베리 파이의 15핀 MIPI CSI 커넥터에 연결하고 라즈베리 파이의 전원을 켭니다.
소프트웨어 사전 요구 사항
참고
이 가이드는 라즈베리 파이 5에서 실행되는 라즈베리 파이 OS 북웜으로 테스트되었습니다.
1단계: 터미널 창을 열고 다음 명령을 실행하여 라즈베리파이 소프트웨어를 최신 버전으로 업데이트합니다.
2단계: 패키저 도구와 함께 IMX500 센서를 작동하는 데 필요한 IMX500 펌웨어를 설치합니다.
3단계: 실행을 위한 필수 구성 요소 설치하기 picamera2
애플리케이션을 다운로드합니다. 나중에 배포 프로세스에서 이 애플리케이션을 사용할 것입니다.
4단계: 변경 사항을 적용하려면 Raspberry Pi를 재부팅합니다.
모델 패키지화 및 AI 카메라에 배포
획득 후 packerOut.zip
파일을 패키저 도구로 전달하여 RPK 파일을 얻을 수 있습니다. 이 파일은 다음을 사용하여 AI 카메라에 직접 배포할 수 있습니다. picamera2
.
1단계: 모델을 RPK 파일로 패키지화하기
위와 같이 하면 network.rpk
파일을 지정된 출력 폴더에 저장합니다.
2단계: 복제 picamera2
리포지토리로 이동하여 설치한 후 imx500 예제로 이동합니다.
git clone https://github.com/raspberrypi/picamera2
cd picamera2
pip install -e . --break-system-packages
cd examples/imx500
3단계: IMX500 내보내기 중에 생성된 labels.txt 파일을 사용하여 YOLOv8 개체 감지를 실행합니다.
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
그러면 다음과 같이 실시간 추론 출력을 볼 수 있습니다.
벤치마크
YOLOv8 아래 벤치마크는 Ultralytics 팀에서 라즈베리 파이 AI 카메라로 실행한 것입니다. imx
속도와 정확도를 측정하는 모델 형식입니다.
모델 | 형식 | 상태 | 크기(MB) | mAP50-95(B) | 추론 시간(ms/im) |
---|---|---|---|---|---|
YOLOv8n | imx | ✅ | 2.9 | 0.522 | 58.82 |
참고
위의 벤치마크에 대한 검증은 coco8 데이터 세트를 사용하여 수행되었습니다.
후드 안에는 무엇이 있나요?
소니 모델 압축 툴킷(MCT)
소니의 모델 압축 툴킷(MCT) 은 양자화 및 가지치기를 통해 딥러닝 모델을 최적화하는 강력한 도구입니다. 다양한 양자화 방법을 지원하고 고급 알고리즘을 제공하여 정확도를 크게 저하시키지 않으면서도 모델 크기와 계산 복잡성을 줄일 수 있습니다. MCT는 리소스가 제한된 디바이스에 모델을 배포하는 데 특히 유용하며, 효율적인 추론과 지연 시간 단축을 보장합니다.
MCT의 지원 기능
소니의 MCT는 신경망 모델을 최적화하도록 설계된 다양한 기능을 제공합니다:
- 그래프 최적화: 일괄 정규화와 같은 레이어를 이전 레이어로 접어서 모델을 보다 효율적인 버전으로 변환합니다.
- 양자화 파라미터 검색: 평균 제곱 오차, 클리핑 없음, 평균 평균 오차 등의 메트릭을 사용하여 양자화 노이즈를 최소화합니다.
- 고급 정량화 알고리즘:
- 시프트 네거티브 보정: 대칭 활성화 양자화로 인한 성능 문제를 해결합니다.
- 이상값 필터링: z-score를 사용하여 이상값을 감지하고 제거합니다.
- 클러스터링: 더 나은 분포 매칭을 위해 균일하지 않은 양자화 격자를 활용합니다.
- 혼합 정밀도 검색: 감도에 따라 레이어당 서로 다른 양자화 비트 폭을 할당합니다.
- 시각화: 모델 성능 인사이트, 양자화 단계 및 비트 폭 구성을 관찰하려면 TensorBoard를 사용하세요.
정량화
MCT는 모델 크기를 줄이고 추론 속도를 개선하기 위해 여러 가지 정량화 방법을 지원합니다:
- 교육 후 정량화(PTQ):
- Keras 및 PyTorch API를 통해 사용할 수 있습니다.
- 복잡성: 낮음
- 계산 비용: 낮음 (CPU 분)
- 그래디언트 기반 학습 후 정량화(GPTQ):
- Keras 및 PyTorch API를 통해 사용할 수 있습니다.
- 복잡성: 중간
- 계산 비용: 보통(2~3 GPU 시간)
- 수량화 인식 교육(QAT):
- 복잡성: 높음
- 컴퓨팅 비용: 높음(12-36 GPU 시간)
MCT는 가중치 및 활성화에 대한 다양한 정량화 체계도 지원합니다:
- 파워 오브 투(하드웨어 친화적)
- 대칭
- 유니폼
구조화된 가지 치기
MCT는 특정 하드웨어 아키텍처를 위해 설계된 구조화된 하드웨어 인식 모델 가지치기를 도입합니다. 이 기술은 SIMD 그룹을 가지치기하여 대상 플랫폼의 SIMD(단일 명령어, 다중 데이터) 기능을 활용합니다. 이를 통해 모델 크기와 복잡성을 줄이면서 채널 활용도를 최적화하고, 가중치 메모리 풋프린트의 목표 리소스 활용을 위해 SIMD 아키텍처에 맞춰 조정합니다. Keras 및 PyTorch API를 통해 사용할 수 있습니다.
IMX500 변환기 도구(컴파일러)
IMX500 변환 도구는 IMX500 도구 세트의 필수 요소로, 소니의 IMX500 센서에 배포할 모델(예: 라즈베리 파이 AI 카메라)을 컴파일할 수 있습니다. 이 도구는 Ultralytics 소프트웨어를 통해 처리된 Ultralytics YOLOv8 모델의 전환을 용이하게 하여 지정된 하드웨어에서 호환되고 효율적으로 작동하도록 보장합니다. 모델 정량화 후 내보내기 절차에는 필수 데이터와 장치별 구성을 캡슐화하는 바이너리 파일 생성이 포함되며, 이를 통해 Raspberry Pi AI 카메라의 배포 프로세스를 간소화할 수 있습니다.
실제 사용 사례
IMX500 형식으로 내보내기는 산업 전반에 걸쳐 폭넓게 적용될 수 있습니다. 다음은 몇 가지 예입니다:
- 엣지 AI 및 IoT: 저전력 디바이스에서 실시간 처리가 필수인 드론이나 보안 카메라에서 물체 감지 기능을 지원합니다.
- 웨어러블 디바이스: 건강 모니터링 웨어러블 디바이스에 소규모 AI 처리에 최적화된 모델을 배포하세요.
- 스마트 시티: 빠른 처리와 최소한의 대기 시간으로 교통 모니터링 및 안전 분석을 위해 IMX500 내보내기( YOLOv8 ) 모델을 사용합니다.
- 리테일 분석: POS 시스템이나 스마트 선반에 최적화된 모델을 배포하여 매장 내 모니터링을 강화하세요.
결론
Ultralytics YOLOv8 모델을 소니의 IMX500 포맷으로 내보내면 IMX500 기반 카메라에서 효율적인 추론을 위해 모델을 배포할 수 있습니다. 고급 양자화 기술을 활용하면 정확도를 크게 저하시키지 않으면서 모델 크기를 줄이고 추론 속도를 향상시킬 수 있습니다.
자세한 정보 및 세부 지침은 소니 IMX500 웹사이트를 참조하세요.
자주 묻는 질문
YOLOv8 모델을 라즈베리파이 AI 카메라용 IMX500 포맷으로 내보내려면 어떻게 해야 하나요?
YOLOv8 모델을 IMX500 형식으로 내보내려면 Python API 또는 CLI 명령을 사용합니다:
from ultralytics import YOLO
model = YOLO("yolov8n.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
)
IMX500의 YOLOv8 모델에서 어떤 성능을 기대할 수 있나요?
라즈베리파이 AI 카메라의 Ultralytics 벤치마크 기준:
- 이미지당 58.82ms의 추론 시간을 달성한 YOLOv8n
- COCO8 데이터 세트에서 mAP50-95의 0.522
- 양자화 후 2.9MB에 불과한 모델 크기
이는 IMX500 포맷이 에지 AI 애플리케이션에 우수한 정확도를 유지하면서 효율적인 실시간 추론을 제공한다는 것을 보여줍니다.
내보낸 모델을 패키징하여 Raspberry Pi AI 카메라에 배포하려면 어떻게 해야 하나요?
IMX500 형식으로 내보낸 후
-
패키저 도구를 사용하여 RPK 파일을 생성합니다:
-
picamera2를 복제하여 설치합니다:
-
생성된 RPK 파일을 사용하여 추론을 실행합니다: