Ultralytics YOLO 모델용 DEEPX Export#
특수 NPU 하드웨어에 computer vision 모델을 배포하려면 호환 가능하고 최적화된 모델 형식이 필요합니다. Ultralytics YOLO 모델을 DEEPX 형식으로 Export하면 DEEPX NPU 가속기에서 효율적인 INT8 양자화 추론을 수행할 수 있습니다. 이 가이드에서는 YOLO 모델을 DEEPX 형식으로 변환하고 DEEPX 기반 하드웨어에 배포하는 방법을 안내합니다.
DEEPX란 무엇입니까?#
DEEPX는 엣지에서 전력 효율적인 딥러닝 추론을 위해 설계된 신경 처리 장치(NPUs)를 전문으로 하는 AI 반도체 기업입니다. DEEPX NPU는 까다로운 임베디드 및 산업용 AI 애플리케이션을 위해 설계되었으며, 최소한의 전력 소비로 높은 처리량을 제공합니다. 이 하드웨어는 로보틱스, 스마트 카메라, 산업 자동화 시스템처럼 클라우드 연결이 불안정하거나 바람직하지 않은 배포 시나리오에 적합합니다.
DEEPX Export 형식#
DEEPX Export는 DEEPX NPU 하드웨어에서 실행되도록 최적화된 컴파일된 .dxnn 모델 바이너리를 생성합니다. 컴파일 파이프라인은 dx_com 툴킷을 사용하여 INT8 양자화와 하드웨어별 최적화를 수행하고, 배포에 바로 사용할 수 있는 독립형 모델 디렉터리를 생성합니다.
DEEPX 모델의 주요 기능#
DEEPX 모델은 엣지 배포에 다음과 같은 여러 장점을 제공합니다:
- INT8 양자화: Export 중 모델을 INT8 정밀도로 양자화하여 모델 크기를 크게 줄이고 NPU 처리량을 극대화합니다. 모델 양자화에 대해 자세히 알아보세요.
- NPU 최적화:
.dxnn형식은 DEEPX NPU 하드웨어용으로 특별히 컴파일되며, 전용 가속 유닛을 활용하여 빠르고 효율적인 추론을 수행합니다. - 낮은 전력 소비: 추론을 NPU로 오프로드하므로 DEEPX 모델은 동등한 CPU 또는 GPU 추론보다 훨씬 적은 전력을 소비합니다.
- Calibration 기반 정확도: Export에서는 실제 데이터셋 이미지를 사용한 EMA 기반 calibration을 적용하여 양자화 중 정확도 손실을 최소화합니다.
- 독립형 출력: Export된 모델 디렉터리에는 컴파일된 바이너리, calibration 설정, 메타데이터가 포함되어 있어 간편하게 배포할 수 있습니다.
지원되는 작업#
DEEPX Export는 Ultralytics의 7가지 작업을 모두 지원합니다. 의미론적 segmentation과 depth estimation은 해당 head를 제공하는 유일한 제품군인 YOLO26에서만 사용할 수 있습니다.
DEEPX로 Export: YOLO 모델 변환#
Ultralytics YOLO 모델을 DEEPX 형식으로 Export하고 Export된 모델로 추론을 실행합니다.
DEEPX Export는 x86-64 Linux 머신에서만 지원됩니다. ARM64(aarch64)는 Export 단계에서 지원되지 않습니다. 하지만 Export된 dxnn 모델은 ARM64 플랫폼과 완전히 호환되며 실행할 수 있습니다.
설치#
필요한 패키지를 설치하려면 다음을 실행합니다:
# Install the required package for YOLO
pip install ultralyticsdx_com 컴파일러는 최초 내보내기 시 DEEPX SDK 저장소에서 자동으로 설치됩니다. 현재 내보내기 워크플로는 DX-COM 2.3.0을 사용하며, 이는 glibc 2.31 이상이 탑재된 x86-64 Linux 환경의 Python 3.8–3.12용 휠을 제공합니다.
컴파일러의 PyPI 릴리스는 취소되었습니다. 내보내기 종속성을 미리 설치하려면 --find-links을 사용하여 SDK 휠 페이지를 제공하십시오. 이는 pip 및 uv pip 모두에서 작동합니다.
pip install "ultralytics[export-deepx]" --find-links https://sdk.deepx.ai/release/dxcom/v2.3.0/index.html편집 가능한 저장소 설치를 위해 "ultralytics[export-deepx]"을 -e ".[export-base,export-deepx]"로 교체하십시오. CI에서 사용하는 Python 3.12 환경 및 스모크 내보내기를 재현하려면 저장소 루트에서 기존 환경 빌더를 실행하십시오.
ULTRALYTICS_ISOLATED_VENVS="$PWD/.venvs" python .github/scripts/create-export-env.py --env isolated-deepx환경 빌더에는 uv와 설치된 Ultralytics 체크아웃이 필요합니다. 이 빌더는 SDK 소스에서 컴파일러를 설치하고 테스트된 종속성 제약 조건을 자동으로 적용합니다.
사용법#
DEEPX 형식은 Export, Predict, Validate 모드를 지원합니다. 추론과 validation은 DEEPX NPU 하드웨어에서 실행됩니다. 모델을 Export한 다음 Export된 모델을 로드하여 추론을 실행하거나 정확도를 validation합니다.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to DEEPX format (quantize=8 is enforced automatically)
model.export(format="deepx") # creates 'yolo26n_deepx_model/'from ultralytics import YOLO
# Load the exported DEEPX model
model = YOLO("yolo26n_deepx_model")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported DEEPX model
model = YOLO("yolo26n_deepx_model")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")내보내기 인수#
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
format | str | 'deepx' | Export된 모델의 대상 형식으로, DEEPX NPU 하드웨어와의 호환성을 정의합니다. |
imgsz | int 또는 tuple | 640 | 모델 입력에 사용할 이미지 크기입니다. DEEPX Export에는 정사각형 입력이 필요하므로 정수(예: 640) 또는 높이와 너비가 같은 튜플을 전달해야 합니다. |
quantize | int 또는 str | 8/auto | 양자화 정밀도입니다. 8 (INT8)은 DEEPX Export에 필수이며 지정하지 않으면 자동으로 활성화됩니다. 더 이상 사용되지 않는 half/int8 플래그를 대체합니다. |
simplify | bool | True | onnxslim을 사용하여 중간 ONNX graph를 단순화합니다. |
opset | int | None | 중간 ONNX graph의 ONNX opset 버전을 지정합니다. 설정하지 않으면 지원되는 최신 버전을 사용합니다. |
data | str | None | INT8 calibration에 사용하는 Dataset YAML입니다. classification에서는 대신 데이터셋 디렉터리 또는 기본 제공 데이터셋 이름을 사용합니다. quantize=8과 함께 생략하면 Ultralytics가 모델 작업에 대한 기본 calibration 데이터셋을 선택합니다. |
device | str | None | Export에 사용할 장치를 지정합니다: GPU (device=0) 또는 CPU (device=cpu)입니다. |
optimize | bool | False | 더 높은 compiler 최적화를 활성화하여 추론 latency를 줄이고 컴파일 시간을 늘립니다. |
DEEPX Export는 항상 x86-64 Linux 호스트에서 실행하세요. dx_com compiler는 ARM64를 지원하지 않습니다.
내보내기 프로세스에 대한 자세한 내용은 Ultralytics 내보내기 문서 페이지를 참조하십시오.
출력 구조#
Export가 성공적으로 완료되면 다음과 같은 구조의 모델 디렉터리가 생성됩니다:
yolo26n_deepx_model/
├── yolo26n.dxnn # Compiled DEEPX model binary (NPU executable)
├── config.json # Calibration and preprocessing configuration
└── metadata.yaml # Model metadata (classes, image size, task, etc.).dxnn 파일은 dx_engine runtime이 NPU에서 직접 로드하는 컴파일된 모델 바이너리입니다. metadata.yaml에는 Ultralytics 추론 파이프라인에서 사용하는 클래스 이름, 이미지 크기 및 기타 정보가 포함됩니다.
Export된 YOLO DEEPX 모델 배포#
Ultralytics YOLO 모델을 DEEPX 형식으로 성공적으로 Export한 후에는 DEEPX NPU 하드웨어에 모델을 배포해야 합니다.
Runtime 설치#
추론에는 DEEPX NPU driver, libdxrt runtime, dx_engine Python 패키지가 필요합니다.
DEEPX runtime은 x86-64 Linux와 ARM64(예: Raspberry Pi 5)를 모두 지원합니다.
# Install the NPU driver and libdxrt runtime
sudo apt update
wget https://github.com/DEEPX-AI/dx_rt_npu_linux_driver/raw/main/release/2.4.1/dxrt-driver-dkms_2.4.1-2_all.deb
sudo apt install ./dxrt-driver-dkms_2.4.1-2_all.deb
wget https://github.com/DEEPX-AI/dx_rt/raw/main/release/3.3.2/libdxrt_3.3.2_all.deb
sudo apt install ./libdxrt_3.3.2_all.deb
# Create dx-engine wheel
cd /usr/share/libdxrt/python_package && sudo ./make_whl.sh
# Install the bundled dx_engine Python wheel
pip install dx_engine-*.whldxrt-cli --version을 사용하여 runtime이 올바르게 설치되었는지 확인합니다. 다음과 비슷한 출력이 표시됩니다:
DXRT v3.3.2
Minimum Driver Versions
Device Driver: v2.4.0
PCIe Driver: v2.2.0
Firmware: v2.5.2
Minimum Compiler Versions
Compiler: v1.18.1
.dxnn File Format: v6runtime이 설치되면 위의 Usage 섹션에 표시된 것과 동일한 방법으로 DEEPX 장치에서 추론과 validation을 실행하세요. Export된 _deepx_model은 YOLO(...)를 사용하여 직접 로드됩니다.
dxtron으로 시각화#
dxtron은 컴파일된 .dxnn 모델을 검사하기 위한 DEEPX의 graph visualizer입니다.
DEEPX SDK에서 .deb 패키지를 다운로드하고 dpkg를 통해 설치하여 x86-64 Linux에 dxtron을 설치합니다:
wget https://sdk.deepx.ai/release/dxtron/v2.0.1/dxtron_2.0.1_amd64.deb
sudo dpkg -i dxtron_2.0.1_amd64.deb그런 다음 Export된 모델을 엽니다:
dxtron yolo26n_deepx_model/yolo26n.dxnndxtron은 x86-64 및 aarch64 플랫폼 모두에서 사용할 수 있습니다.
벤치마크#
Ultralytics 팀은 PyTorch와 DEEPX 간 속도 및 정확도를 비교하여 YOLO26 모델을 benchmark했습니다.
| 모델 | 형식 | 상태 | 크기(MB) | metrics/mAP50-95(B) | 추론 시간 (ms/im) |
|---|---|---|---|---|---|
| YOLO26n | PyTorch | ✅ | 5.3 | 0.4760 | 315.2 |
| YOLO26n | DEEPX | ✅ | 6.6 | 0.4660 | 34.6 |
| YOLO26n-seg | PyTorch | ✅ | 6.5 | 0.4080 | 485.4 |
| YOLO26n-seg | DEEPX | ✅ | 7.9 | 0.3920 | 53.8 |
| YOLO26n-pose | PyTorch | ✅ | 7.6 | 0.4230 | 506.3 |
| YOLO26n-pose | DEEPX | ✅ | 8.8 | 0.4590 | 37.6 |
| YOLO26n-obb | PyTorch | ✅ | 5.7 | 0.817 | 1094.4 |
| YOLO26n-obb | DEEPX | ✅ | 7.3 | 0.783 | 56.4 |
| 모델 | 형식 | 상태 | 크기(MB) | acc (top1) | acc (top5) | 추론 시간 (ms/im) |
|---|---|---|---|---|---|---|
| YOLO26n-cls | PyTorch | ✅ | 5.6 | 0.431 | 0.716 | 23.8 |
| YOLO26n-cls | DEEPX | ✅ | 5.9 | 0.333 | 0.686 | 2.7 |
위 벤치마크에 대한 검증은 객체 검출의 경우 COCO128, 세그멘테이션의 경우 COCO128-seg, 포즈 추정의 경우 COCO8-pose, 분류의 경우 ImageNet100, OBB 모델의 경우 DOTA128을 사용하여 수행되었습니다. 추론 시간에는 전처리 및 후처리가 포함되지 않습니다.
Raspberry Pi 5에 연결된 DX-M1 NPU에서 최상의 추론 처리량을 얻으려면 boot 설정 파일을 열고 PCIe Gen 3 지원을 활성화하세요.
sudo nano /boot/firmware/config.txt파일 끝에 다음 줄을 추가합니다:
dtparam=pciex1
dtparam=pciex1_gen=3저장하고 종료(Ctrl+X, Y, Enter 순서)한 다음 재부팅합니다:
sudo rebootPCIe generation을 확인합니다. PCIe Gen3의 예상 속도는 8GT/s입니다.
sudo lspci -vvv | grep -iA 33 accelerators | grep -E "LnkCap|LnkSta"권장 워크플로#
- Ultralytics 학습 모드를 사용하여 모델을 학습합니다.
model.export(format="deepx")을 사용하여 DEEPX 형식으로 Export합니다.yolo val으로 정확도를 검증하여 양자화 손실이 최소인지 확인합니다.- 정성적 검증을 위해
yolo predict을 사용하여 예측합니다. dx_engineruntime을 사용하여 Export된_deepx_model/디렉터리를 DEEPX NPU 하드웨어에 Deploy합니다.
실제 애플리케이션#
DEEPX NPU 하드웨어에 배포된 YOLO 모델은 다양한 엣지 AI 애플리케이션에 적합합니다:
- 스마트 감시: 낮은 전력 소비와 클라우드 의존성 없이 보안 및 모니터링 시스템에서 실시간 객체 detection을 수행합니다.
- 산업 자동화: 공장 환경에서 디바이스 내 품질 관리, 결함 detection, 프로세스 모니터링을 수행합니다.
- 로보틱스: 자율 로봇과 드론에서 vision 기반 내비게이션, 장애물 회피, 객체 인식을 수행합니다.
- 스마트 농업: 농업 computer vision을 사용하여 작물 상태 모니터링, 해충 detection, 수확량 추정을 수행합니다.
- Retail Analytics: 실시간 엣지 추론을 통한 고객 동선 분석, 진열대 모니터링, 재고 추적을 수행합니다.
요약#
이 가이드에서는 Ultralytics YOLO 모델을 DEEPX 형식으로 Export하고 DEEPX NPU 하드웨어에 배포하는 방법을 알아보았습니다. Export 파이프라인은 INT8 calibration과 dx_com compiler를 사용하여 하드웨어에 최적화된 .dxnn 바이너리를 생성하며, dx_engine runtime은 디바이스에서 추론을 처리합니다.
Ultralytics YOLO와 DEEPX의 NPU 기술을 결합하면 임베디드 및 엣지 디바이스에서 고급 computer vision workload를 실행하는 효과적인 솔루션을 제공합니다. 또한 실시간 애플리케이션에 필요한 높은 처리량과 낮은 전력 소비를 실현합니다.
사용 방법에 대한 자세한 내용은 DEEPX 공식 웹사이트를 방문하세요.
또한 다른 Ultralytics YOLO 통합에 대해 자세히 알아보려면 통합 가이드 페이지를 방문하세요. 이곳에서 유용한 다양한 리소스와 정보를 확인할 수 있습니다.
FAQ#
Python의
export()메서드 또는 CLI를 사용하여 모델을 Export할 수 있습니다. Export는 INT8 양자화를 자동으로 활성화하고 calibration 데이터셋을 사용하여 정확도 손실을 최소화합니다.dx_comcompiler 패키지가 아직 설치되지 않은 경우 자동으로 설치됩니다.예시from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="deepx")DEEPX NPU는 INT8 연산을 최고의 효율로 실행하도록 설계되었습니다.
dx_comcompiler는 실제 데이터셋 이미지를 사용한 EMA 기반 calibration으로 Export 중 모델을 양자화하여 NPU가 최대 성능을 발휘하도록 합니다. DEEPX Export에는 항상 INT8이 적용되며, 다른 정밀도를 요청하면 경고와 함께 INT8로 재정의됩니다.DEEPX 모델 Export(컴파일)에는 x86-64 Linux 호스트가 필요합니다. ARM64(aarch64) 및 Windows 머신에서는 Export 단계가 지원되지 않습니다. Export된
.dxnn모델을 사용하는 추론은dx_engineruntime이 지원하는 모든 Linux 플랫폼(x86-64 및 ARM64)에서 실행할 수 있습니다.Export는 다음 항목을 포함하는 디렉터리(예:
yolo26n_deepx_model/)를 생성합니다:yolo26n.dxnn— 컴파일된 NPU 바이너리config.json— calibration 및 preprocessing 설정metadata.yaml— 클래스 이름과 이미지 크기를 포함한 모델 메타데이터
예. Ultralytics Train Mode를 사용하여 학습하고
format="deepx"로 Export한 모델은 지원되는 layer operation을 사용하는 경우 DEEPX NPU 하드웨어에 배포할 수 있습니다. Export는 detection, instance segmentation, semantic segmentation, depth estimation, classification, pose estimation, oriented bounding box(OBB) 등 Ultralytics의 7가지 작업을 모두 지원합니다.DEEPX Export 파이프라인은 EMA calibration 방법을 사용하여 calibration 데이터셋의 모든 이미지를 처리합니다. 일반적으로 양자화 정확도를 높이는 데는 수백 장의 이미지면 충분합니다. 대규모 데이터셋에서 컴파일 시간이 문제가 되면
data이 더 작은 데이터셋을 사용하도록 지정하세요.DEEPX runtime은
ultralytics에 포함되어 있지 않으므로 추론을 실행하기 전에 별도로 설치해야 합니다. x86-64 Linux 머신과 ARM64 Linux 머신(예: Raspberry Pi 5)에서는 DEEPX-AI GitHub releases에서 NPU driver(dxrt-driver-dkms)와 runtime(libdxrt)을 설치한 다음, 함께 제공되는dx_enginePython wheel을 설치하세요. 단계별 명령은 위의 Runtime 설치 섹션을 참조하세요.