Meet YOLO26: next-gen vision AI.

Link to this sectionUltralytics YOLO 모델을 위한 Ambarella CVflow 내보내기#

미리보기 가이드 — 벤더 검증 전

이 가이드는 초기 미리보기 단계이며 Ambarella에서 완전히 검토하거나 검증하지 않았습니다. 벤더 피드백에 따라 명령어, 호환성 세부 정보 및 워크플로 단계가 변경될 수 있습니다. 현재 format="ambarella" 내보내기 대상은 없으며, 표준 ONNX 내보내기(format="onnx")와 amba_config/amba_chipset 인수를 결합하여 사용하는 워크플로를 따릅니다. 이후 생성된 ONNX 모델을 Ambarella의 CVflow 툴체인을 사용하여 오프라인에서 배포 가능한 AmbaPB 형식으로 컴파일합니다.

Ultralytics YOLO 모델을 Ambarella SoC에 배포하려면 CVflow® AI 엔진에 최적화된 모델 형식이 필요합니다. 이 Ultralytics 포크는 Ambarella의 SpongeTorch 압축 툴킷을 학습, 검증 및 내보내기 파이프라인에 직접 통합하므로 Ambarella 하드웨어에서 효율적으로 실행되는 가지치기(pruned) 및 양자화 최적화 모델을 생성할 수 있습니다. 이 가이드에서는 현재의 객체 탐지 워크플로인 압축 인식 학습, ONNX 내보내기, CVflow 툴체인을 사용한 컴파일, 그리고 컴파일된 AmbaPB 모델을 이용한 추론 과정을 설명합니다.

참고

이 워크플로에는 PyPI에서 제공되지 않는 독점적인 Ambarella 툴체인 구성 요소(spongetorch, CVflow 컴파일러 및 cvflowbackend)가 필요합니다. Ambarella Developer Zone에 등록하여 Cooper™ 개발자 플랫폼을 통해 SDK 액세스 권한을 얻으십시오.

Link to this sectionAmbarella CVflow란 무엇입니까?#

Ambarella는 산타클라라에 본사를 둔 반도체 기업으로, IP 보안 카메라, 대시 카메라, 드론, 로봇 공학 및 자동차 시스템에 널리 사용되는 저전력 AI 비전 SoC로 유명합니다. 이 칩은 전용 신경 벡터 처리 아키텍처(온칩 AI 가속기 또는 NPU)인 **CVflow®**를 중심으로 구축되어 매우 낮은 전력으로 높은 추론 처리량을 제공합니다(예: CV72S는 3W 미만에서 4K 보안 카메라 AI 워크로드를 실행). PyTorch와 같은 표준 프레임워크에서 학습된 모델은 배포 전 Ambarella의 오프라인 툴체인을 통해 CVflow의 기본 형식으로 컴파일됩니다.

현재 CVflow SoC 제품군 및 일반적인 애플리케이션:

SoC 제품군일반적인 애플리케이션
CV72 / CV754K AI 보안 카메라, 스마트 카메라, 산업용 비전
CV5 / CV52드론, 액션 카메라, 로봇 공학, 다중 카메라 시스템
CV3-AD자동차 ADAS 및 자율 주행 도메인 컨트롤러
N1온프레미스 생성형 AI 및 다중 스트림 비디오 분석 어플라이언스

Link to this section왜 Ambarella에 YOLO를 배포해야 합니까?#

  • 전력 효율성: CVflow SoC는 상시 가동되는 엣지 AI를 위해 설계되었으며, 카메라급 전력 예산 내에서 실시간 객체 탐지를 실행합니다.
  • 압축 인식 학습: SpongeTorch는 학습 중에 가지치기양자화 인식 최적화를 적용하므로, 모델이 NPU에 친화적이면서도 정확도를 유지하는 방법을 학습합니다.
  • 비트 정확(Bit-exact) 호스트 검증: 컴파일된 AmbaPB 모델은 워크스테이션에서 Ultralytics predict/val을 통해 칩에서 실행될 때와 정확히 동일하게 실행되므로, 하드웨어에 배포하기 전에 양자화된 mAP를 측정할 수 있습니다.
  • 통합 카메라 파이프라인: Ambarella SoC는 AI 엔진과 ISP 및 비디오 인코더를 결합하여 AI 카메라를 위한 단일 칩 솔루션을 제공합니다.

Link to this section워크플로 개요#

파이프라인은 네 단계로 구성됩니다:

  1. 압축 인식 학습 — SpongeKit 구성(amba_config)으로 학습하여 SpongeTorch가 학습 중에 점진적으로 가지치기/양자화를 적용하도록 합니다.
  2. ONNX 내보내기 — 동일한 amba_config를 사용하여 압축된 체크포인트를 내보내고, ONNX 그래프에서 압축 구조를 보존합니다.
  3. CVflow 컴파일 — CVflow 툴체인을 사용하여 ONNX 모델을 AmbaPB 아티팩트로 컴파일합니다.
  4. 추론 및 검증 — 컴파일된 *.ambapb.ckpt.onnx 모델을 AmbaPB 백엔드를 통해 Ultralytics predict/val로 실행한 다음 보드에 배포합니다.

SpongeTorch의 학습 시간 최적화가 필요하지 않은 경우, SpongeTorch 학습 및 SpongeTorch 인식 내보내기를 일반 ONNX 내보내기로 대체할 수 있습니다( SpongeTorch 없이 내보내기 참조).

Link to this section사전 요구 사항#

Link to this section설치#

이 Ultralytics 포크를 설치한 다음 SDK 배포판에서 Ambarella 툴체인 휠을 설치하십시오:

!!! 팁 "설치"

# Install this Ultralytics fork from source
git clone https://github.com/Ambarella-Inc/ultralytics
cd ultralytics
git checkout amba_v8.4.46
pip install -e .

# Install Ambarella toolchain wheels from the SDK
pip install /path/to/spongetorch-*.whl
pip install /path/to/cvflowbackend-*.whl

The AmbaPB inference backend locates cvflowbackend through the CVflow toolchain's tv2 command (tv2 -libpath cvflowbackend), so the toolchain must be installed and on your PATH before running inference or validation with compiled models.

Link to this sectionSpongeKit 구성 파일#

SpongeTorch는 적용할 압축 단계(가지치기 희소성 목표, 양자화 설정 및 압축 일정)를 정의하는 SpongeKit 구성 파일(protobuf-text 형식, .prototxt)에 의해 구동됩니다. Ambarella SDK 릴리스에서 예제 구성과 일치하는 스키마 문서를 얻으십시오. 검증 시 준비되지 않은 모델을 준비해야 할 때는 학습 구성을 사용하고, 압축된 체크포인트를 내보낼 때는 항상 동일한 구성을 사용하십시오.

Link to this sectionAmba 인수#

train, valexport 모드 전반에서 SpongeTorch 통합을 제어하는 두 가지 인수는 다음과 같습니다:

인수유형기본값설명
amba_configstrNonespongetorch.prepare()에 전달되는 SpongeKit 구성의 경로입니다. 압축 인식 학습 및 SpongeTorch 인식 내보내기를 활성화합니다.
amba_chipsetstrNonespongetorch.set_target_chipset()에 전달되는 대상 칩셋 이름입니다(예: CV72).

이 포크에는 다음과 같은 일반 내보내기 인수도 추가되었습니다:

인수유형기본값설명
export_filestrNone사용자 지정 내보내기 출력 경로/이름입니다(예: '/tmp/model.onnx' 또는 'model.onnx').

Link to this section압축 인식 학습#

SpongeTorch 압축을 활성화하여 모델을 학습(또는 미세 조정)하십시오:

사용법
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
model.train(
    data="coco8.yaml",
    epochs=100,
    amba_config="config.prototxt",
    amba_chipset="CV72",
)

amba_config가 설정되면, 트레이너는 설정 시 spongetorch.prepare()로 모델과 옵티마이저를 래핑합니다. 압축은 단계 일정에 따라 점진적으로 적용되므로, 네트워크는 희소해지고 양자화하기 쉬워지는 동시에 정확도를 유지하는 방법을 학습합니다. 학습된 체크포인트는 나중에 내보내기 단계에서 필요한 SpongeTorch의 희소 상태(_orig/_mask 텐서)를 저장합니다. 구성 파일은 재현성을 위해 amba_config.prototxt로 실행 디렉토리에 복사됩니다.

체크포인트 게이팅

best.pt and last.pt are intentionally not saved until the SpongeTorch compression schedule crosses its end_step — a half-compressed checkpoint would not be usable. Ensure epochs is long enough for the schedule in your config to complete; the log reports when checkpoint saving begins. If training ends before the schedule completes, the final epoch is saved anyway with a warning, but such a checkpoint should not be deployed.

처음부터 학습하는 대신 미세 조정

최상의 정확도를 위해 먼저 모델을 정상적으로 학습(또는 사전 학습된 체크포인트에서 시작)한 다음, 학습된 가중치에 amba_config를 사용하여 더 짧은 압축 미세 조정을 실행하십시오.

Link to this section압축된 체크포인트 검증#

컴파일 전 동일한 구성을 사용하여 정확도를 검증하십시오:

사용법
yolo val model=runs/detect/train/weights/best.pt data=coco8.yaml \
  amba_config=config.prototxt amba_chipset=CV72

검증기는 필요할 때 spongetorch.prepare()를 다시 적용하고 Conv+BN 융합을 비활성화하여 압축 구조가 보존되도록 합니다. 압축되지 않은 기준선과 mAP를 비교하십시오. 정확도 하락폭이 너무 크면 SpongeKit 구성을 조정하고 다시 학습하십시오.

Link to this sectionONNX로 내보내기#

학습에 사용된 동일한 amba_config를 사용하여 압축된 체크포인트를 내보내십시오:

사용법
from ultralytics import YOLO

model = YOLO("runs/detect/train/weights/best.pt")
model.export(
    format="onnx",
    amba_config="config.prototxt",
    amba_chipset="CV72",
)

내보내기 도구는 모델을 다시 빌드하고, 구성으로 spongetorch.prepare()를 다시 적용하며, 희소 체크포인트 가중치를 준비된 구조로 다시 로드하고, Conv+BN 융합이 비활성화된 상태에서 ONNX로 트레이싱합니다. 이 과정은 CVflow 컴파일러가 기대하는 정확한 형식의 그래프를 생성합니다.

Link to this section모델 메타데이터 보존#

ONNX 내보내기는 모델 작업, 클래스 이름, 스트라이드 및 입력 크기를 ONNX 파일에 포함하며, AmbaPB 백엔드는 컴파일된 모델 옆의 metadata.yaml 보조 파일에서 이 정보를 읽습니다. CVflow 컴파일러가 이 보조 파일을 생성하지 않는 경우 컴파일 전에 ONNX 모델에서 추출하십시오:

import onnx

from ultralytics.utils import YAML

model = onnx.load("model.onnx")
YAML.save("metadata.yaml", {item.key: item.value for item in model.metadata_props})

metadata.yaml을 컴파일된 *.ambapb.ckpt.onnx 또는 *.ambapb.fastckpt.onnx 파일과 같은 디렉토리에 보관하십시오.

경고
  • 체크포인트에는 SpongeTorch 압축 상태가 포함되어야 합니다. amba_config가 설정된 상태에서 일반 체크포인트를 내보내면 *"체크포인트에 SpongeTorch 가지치기 상태가 없습니다... 내보내기 전에 Amba 학습에서 압축된 체크포인트를 사용하십시오."*라는 오류가 발생합니다.
  • 구성이 학습 중에 사용된 것과 일치해야 하며, 그렇지 않으면 가중치 로드가 실패합니다.

Link to this sectionCVflow 툴체인으로 컴파일#

SDK의 컴파일 가이드를 따라 SDK의 CVflow 컴파일러를 사용하여 대상 칩셋에 맞게 내보낸 ONNX 모델을 컴파일하십시오. 컴파일러는 그래프를 CVflow AI 엔진(양자화, 스케줄링, 메모리 계획)에 매핑하고 배포 가능한 AmbaPB 아티팩트를 생성합니다.

참고

Ultralytics에서 컴파일된 모델을 인식하려면 파일 이름이 .ambapb.ckpt.onnx 또는 .ambapb.fastckpt.onnx로 끝나야 합니다.

Link to this section컴파일된 모델로 추론 실행#

컴파일된 AmbaPB 모델은 Ultralytics API를 통해 직접 로드됩니다. AutoBackend.ambapb 접미사를 감지하고 추론을 cvflowbackend로 라우팅하여 AI 엔진에서 실행될 때와 비트 단위로 동일하게 모델을 실행합니다:

사용법
from ultralytics import YOLO

model = YOLO("model.ambapb.ckpt.onnx")

# Inference
results = model("https://ultralytics.com/images/bus.jpg")

# Validation
metrics = model.val(data="coco8.yaml")

이는 컴파일러 양자화 효과를 모두 포함하여 하드웨어 배포 전 최종 정확도 검사 단계입니다. 컴파일된 모델 옆에 metadata.yaml 파일이 있으면 백엔드가 클래스 이름, 스트라이드 및 작업 정보를 읽습니다. 백엔드는 기본적으로 CVflow 추론 모드 acinf를 사용합니다. 환경 변수 ULTRALYTICS_AMBAPB_DEBUG=1을 설정하여 디버깅을 위한 입력/출력 세부 정보를 기록하십시오.

Link to this section보드에 배포#

Ambarella SDK 런타임을 사용하여 Ambarella 장치에 컴파일된 모델을 로드하십시오. 전처리 및 후처리는 탐지 모델이 컴파일된 방식과 일치해야 합니다. 0–255 범위의 레터박스 RGB 입력(Ultralytics AmbaPB 백엔드는 컴파일된 모델에 0–255 RGB를 공급) 및 출력에 대한 표준 YOLO 탐지 디코딩이 필요합니다. 런타임 API에 대해서는 SDK 배포 문서를 참조하십시오.

Link to this sectionSpongeTorch 없이 내보내기#

SpongeTorch의 학습 시간 가지치기 및 양자화 인식 최적화가 필요하지 않은 경우, 표준 Ultralytics 파이프라인도 CVflow 컴파일이 가능한 모델을 생성합니다:

사용법
yolo export model=yolo26n.pt format=onnx

결과물인 ONNX를 CVflow 툴체인으로 컴파일하면 도구 자체가 사후 학습 양자화를 수행합니다. 이 경로는 학습 시 spongetorch 종속성이 없는 간단한 워크플로를 제공하는 대신, NPU 성능과 양자화된 정확도를 일부 희생합니다.

Link to this section실제 활용 사례#

Ambarella CVflow SoC에서 실행되는 Ultralytics YOLO 모델은 엣지에서의 상시 가동 비전을 지원합니다:

  • AI 보안 카메라: 3W 미만의 전력 예산 내에서 4K IP 카메라에서 사람 및 차량 실시간 탐지.
  • 드론 및 로봇 공학: CV5급 칩에서 내비게이션, 검사 및 배송을 위한 온보드 객체 탐지 및 추적.
  • 자동차: CV3-AD 도메인 컨트롤러에서 보행자 및 차량 탐지와 같은 ADAS 인식 워크로드.
  • 산업 및 소매 분석: 엣지 어플라이언스에서 다중 스트림 인원 계수, PPE 탐지 및 선반 모니터링.

Link to this section요약#

이 미리보기 가이드에서는 Ambarella CVflow SoC에 Ultralytics YOLO 모델을 배포하기 위한 현재 워크플로를 설명했습니다: SpongeTorch(amba_config/amba_chipset)를 사용한 압축 인식 학습, 압축된 체크포인트의 ONNX 내보내기, CVflow 툴체인을 사용한 AmbaPB 오프라인 컴파일, 그리고 보드 배포 전 Ultralytics를 통한 컴파일된 모델의 비트 정확(bit-exact) 검증 과정입니다.

다른 엣지 AI 대상은 관련 Hailo, Rockchip RKNN, Sony IMX500, Qualcomm QNN, DEEPXAxelera 가이드를 참조하십시오. 전체 내보내기 형식 목록은 내보내기 모드 문서와 통합 페이지를 방문하십시오.

Link to this sectionFAQ#

Link to this sectionYOLO 모델을 model.export()를 사용하여 Ambarella 형식으로 직접 내보낼 수 있습니까?#

아니요. format="ambarella" 대상은 없습니다. ONNX로 내보낸 다음(선택적으로 amba_config를 통해 SpongeTorch 압축 사용), SDK의 Ambarella CVflow 툴체인을 사용하여 오프라인에서 ONNX 모델을 AmbaPB로 컴파일하십시오.

Link to this section어떤 Ambarella 칩에서 Ultralytics YOLO 모델을 실행할 수 있습니까?#

CVflow 툴체인에서 지원하는 모든 CVflow 기반 SoC를 대상으로 할 수 있습니다. 여기에는 AI 카메라용 CV72/CV75 제품군, 드론 및 로봇용 CV5/CV52, 자동차용 CV3-AD가 포함됩니다. amba_chipset 인수는 SpongeTorch의 최적화 대상을 구성하므로, 컴파일 시 별도로 일치하는 대상을 선택하십시오. 허용되는 칩셋 문자열 및 가용성은 설치된 SDK 릴리스에 따라 다릅니다.

Link to this sectionSpongeTorch란 무엇이며 꼭 필요한가요?#

SpongeTorch는 Ambarella의 모델 압축 툴킷으로, 가지치기 및 양자화 인식 학습을 위해 Ultralytics의 Ambarella 포크에 통합되어 있습니다. 이는 선택 사항입니다. 일반 Ultralytics ONNX 내보내기도 사후 학습 양자화를 사용하여 CVflow 툴체인으로 컴파일할 수 있지만, NPU 성능과 양자화 정확도 면에서 일부 손실이 발생할 수 있습니다.

Link to this sectionAmbarella SDK, SpongeTorch 및 CVflow 툴체인은 어디서 얻을 수 있습니까?#

이는 독점적이며 PyPI에 없습니다. Ambarella Developer Zone에 등록하여 SDK 액세스를 요청하십시오. spongetorchcvflowbackend 휠과 CVflow 컴파일러는 SDK 배포판과 함께 제공됩니다.

Link to this section배포 전 컴파일된 모델의 정확도를 어떻게 확인합니까?#

Ambarella 포크가 설치된 상태에서 yolo val model=model.ambapb.ckpt.onnx data=your_data.yaml을 실행하십시오. AmbaPB 백엔드가 CVflow AI 엔진에서 실행되는 것과 동일하게 컴파일된 모델을 비트 단위로 실행하므로, 보고된 mAP에는 모든 컴파일러 양자화 효과가 포함됩니다.

댓글