Ultralytics YOLO27: 대기자 명단에 등록해 주십시오.

Neutron을 사용한 NXP i.MX95 내보내기

Ultralytics YOLO를 format="nxp"과 함께 내보내 NXP i.MX95 Neutron NPU용으로 컴파일된 INT8 .tflite 모델을 생성합니다. 내보내기 도구는 LiteRT 변환 및 보정 파이프라인을 재사용한 다음, NXP의 Neutron SDK 3.3.0 컴파일러를 실행하여 엣지 AI 배포를 수행합니다.

이 대상은 Sony IMX500 (format="imx")과 다릅니다. NXP i.MX8M Plus, i.MX93 및 기타 NXP 프로세서는 서로 다른 가속기 스택을 사용하므로 i.MX95 아티팩트를 해당 대상에서 사용할 수 없습니다.

내보내기#

Linux x86_64에서 Python 3.10 이상을 사용해 내보내세요. Python 3.13 및 3.14에서 컴파일을 검증했습니다. 필요에 따라 Ultralytics가 변환 종속성을 설치합니다. Neutron SDK는 NXP의 패키지 저장소에서 제공됩니다.

pip install -U ultralytics
pip install eiq-neutron-sdk==3.3.0 --extra-index-url https://eiq.nxp.com/repository
NXP i.MX95로 내보내기
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
path = model.export(format="nxp", imgsz=640, data="coco128.yaml")
# yolo26n_nxp.tflite를 생성합니다

카메라, 조명, 객체 크기 등 배포 환경을 대표하는 보정 이미지를 사용하세요. INT8 양자화는 정확도를 낮출 수 있으므로 호스트에서 중간 yolo26n_int8.tflite을 PyTorch 모델과 비교하세요. coco128.yaml는 편리한 예시일 뿐이며, 애플리케이션별 보정과 독립적인 검증 데이터셋을 대체하지 않습니다.

인수설명
imgsz고정 입력 이미지 크기(예: 640 또는 (480, 640)).
quantizeINT8 (8); 자동으로 활성화됩니다. 다른 정밀도는 지원되지 않습니다.
data보정 데이터셋 YAML 또는 분류 데이터셋입니다.
fraction보정 이미지의 비율 또는 개수입니다.
device내보내기 및 보정 중에 사용하는 디바이스입니다. 컴파일 대상은 계속 i.MX95입니다.

배치 크기는 1로 고정됩니다. 탐지 모델 내보내기는 외부 NMS용 원시 예측값을 사용합니다. Ultralytics는 예측 및 검증 중에 이 후처리를 적용합니다. 이 내보내기에서는 임베디드 NMS와 YOLO26의 NMS 없는 top-k 출력을 지원하지 않습니다.

Platform#

Ultralytics Platform에서 모델의 Export 탭을 열고 NXP를 선택하세요. 이미지 크기를 선택한 다음 내보내기가 완료되면 컴파일된 _nxp.tflite 아티팩트를 다운로드하세요. Platform은 CPU 작업자에서 컴파일러를 실행하므로 배포와 성능 측정에만 NXP 보드가 필요합니다. 일반적인 워크플로는 Platform 모델 내보내기 안내를 참조하세요.

Platform은 INT8을 고정 설정으로 표시하며 모델의 작업에 맞는 내보내기 도구 기본 보정 데이터셋을 사용합니다. 현재 보정 data 또는 fraction 제어 기능은 제공하지 않습니다. 자체 대표 이미지를 사용해 보정하려면 위의 Python 또는 CLI 내보내기 예시를 사용하세요.

i.MX95에 배포#

Neutron SDK 3.3.0과 호환되는 BSP에 대해 NXP가 제공하는 TensorFlow Lite 런타임, libneutron_delegate.so, Neutron 드라이버 및 펌웨어를 설치하세요. 보드 설정 및 런타임 호환성은 NXP 배포 가이드를 따르세요.

Ultralytics 런타임은 보드의 tflite_runtime 및 Neutron delegate를 로드합니다. Ultralytics가 NXP 런타임을 선택하도록 _nxp.tflite 접미사를 유지하세요. 보드에서 다음 예측 및 검증 예시를 실행하세요.

NXP 모델로 예측
from ultralytics import YOLO

model = YOLO("yolo26n_nxp.tflite")
results = model.predict("https://ultralytics.com/images/bus.jpg", imgsz=640)
NXP 모델 검증
from ultralytics import YOLO

model = YOLO("yolo26n_nxp.tflite")
metrics = model.val(data="coco128.yaml", imgsz=640, batch=1)

TensorFlow Lite를 직접 벤치마크하려면 보드의 벤치마크 실행 파일을 사용하세요.

benchmark_model --graph=yolo26n_nxp.tflite --external_delegate_path=/usr/lib/libneutron_delegate.so

연산자 지원 범위 및 성능#

컴파일 과정에서 지원되는 서브그래프가 NeutronGraph 연산으로 대체됩니다. 지원되지 않는 연산자는 CPU에서 실행됩니다. 내보내기에 성공했다고 해서 모든 연산이 NPU에서 실행되거나 CPU/NPU 전환 오버헤드가 제거된다는 의미는 아닙니다. 어텐션, 텐서 레이아웃 변경 및 후처리에는 여전히 CPU 실행이 필요할 수 있습니다.

내보내기 로그에는 변환된 연산자, NPU 파티션, 메모리 추정치, 예상 NPU 사이클 등 NXP 컴파일러 통계가 포함됩니다. 이 추정치에는 CPU 연산자, 전처리, 후처리 및 런타임 오버헤드가 포함되지 않습니다. 대상 보드에서 전체 프레임 지연 시간, 최대 RAM 사용량 및 배포 저장 공간을 측정하세요. 이론상 TOPS와 컴파일된 파일 크기만으로는 이러한 값을 판단할 수 없습니다.

보정된 중간 모델을 PyTorch 모델과 비교해 검증한 다음, 동일한 데이터셋과 이미지 크기를 사용해 보드에서 컴파일된 모델을 검증하세요. 호스트 컴파일 및 중간 모델 정확도 검증만으로는 NPU에서의 수치적 동등성이나 지연 시간이 입증되지 않습니다. 애플리케이션 수준 검증 계획은 모델 배포 모범 사례를 참조하세요.

자주 묻는 질문#

  • Linux x86_64에서 Python의 model.export(format="nxp", data="your_dataset.yaml") 또는 CLI의 yolo export model=best.pt format=nxp data=your_dataset.yaml을 사용하세요. 내보내기 도구는 모델을 INT8로 보정하고 Neutron SDK 3.3.0으로 컴파일하여 best_nxp.tflite를 생성합니다. 사전 학습된 YOLO26n 모델을 사용하려면 내보내기 예시를 따르세요.

  • 예. YOLO("best_nxp.tflite")을 로드하고 predict() 또는 val()를 호출하거나, yolo predict과 yolo val를 사용하세요. 두 방법 모두 보드의 TensorFlow Lite 런타임과 Neutron delegate를 사용합니다. _nxp.tflite 파일 이름 접미사를 유지하고 i.MX95에 배포에 설명된 호환 NXP 런타임을 설치하세요.

  • 이 내보내기의 대상은 i.MX95로 한정됩니다. 다른 NXP 프로세서는 가속기와 배포 도구 체인이 다르므로 i.MX95 Neutron 아티팩트를 i.MX8M Plus 또는 i.MX93에서 재사용할 수 없습니다. 별도의 format="imx" 옵션은 NXP i.MX 프로세서가 아닌 Sony IMX500을 대상으로 합니다.

  • Neutron은 지원되는 서브그래프를 NPU용으로 컴파일하고 지원되지 않는 연산자는 TensorFlow Lite에 남겨 CPU에서 실행합니다. 어텐션, 레이아웃 변경 및 후처리로 인해 여러 파티션과 데이터 전송 오버헤드가 발생할 수 있습니다. 컴파일러의 변환 연산자 통계를 확인한 다음 보드에서 전체 애플리케이션의 프로파일을 측정하세요. 컴파일에 성공해도 모든 연산이 NPU에서 실행된다는 보장은 없습니다.

  • 대표 이미지를 사용해 보정하고 독립적인 검증 세트에서 PyTorch 모델, INT8 중간 모델 및 컴파일된 모델을 비교하세요. 정확도는 Validate 모드를 사용해 측정하고, i.MX95 보드에서 프레임 지연 시간, 프로세스의 최대 RAM 사용량 및 배포 저장 공간을 측정하세요. 컴파일러 메모리 추정치, 모델 파일 크기 및 TOPS 등급만으로는 애플리케이션 성능을 판단하기에 충분하지 않습니다.

기여자

댓글

질문을 하거나 결과를 공유하거나 다른 사람을 도와주세요.