Ultralytics YOLOモデルのDEEPXエクスポート#
専用NPUハードウェアにコンピュータービジョンモデルをデプロイするには、互換性があり最適化されたモデル形式が必要です。Ultralytics YOLOモデルをDEEPX形式にエクスポートすると、DEEPX NPUアクセラレーター上で効率的なINT8量子化推論を実行できます。このガイドでは、YOLOモデルをDEEPX形式に変換し、DEEPX搭載ハードウェアにデプロイする方法を説明します。
DEEPXとは?#
DEEPXは、エッジで電力効率に優れたディープラーニング推論を実現するニューラルプロセッシングユニット (NPUs) を専門とするAI半導体企業です。DEEPX NPUは、電力消費を最小限に抑えながら高いスループットを実現するよう設計されており、高度な組み込みAIおよび産業用AIアプリケーションに対応します。ロボット、スマートカメラ、産業オートメーションシステムなど、クラウド接続が不安定または望ましくないデプロイシナリオに適しています。
DEEPXエクスポート形式#
DEEPXエクスポートでは、DEEPX NPUハードウェアでの実行に最適化されたコンパイル済み.dxnnモデルバイナリが生成されます。コンパイルパイプラインでは、dx_comツールキットを使用してINT8量子化とハードウェア固有の最適化を実行し、デプロイの準備が整った自己完結型のモデルディレクトリを生成します。
DEEPXモデルの主な機能#
DEEPXモデルは、エッジデプロイにおいて次のような利点を提供します。
- INT8量子化: エクスポート時にモデルがINT8精度へ量子化されるため、モデルサイズを大幅に削減し、NPUスループットを最大化できます。モデル量子化の詳細をご覧ください。
- NPU最適化:
.dxnn形式はDEEPX NPUハードウェア向けに特別にコンパイルされ、専用アクセラレーションユニットを活用して高速かつ効率的な推論を実現します。 - 低消費電力: 推論をNPUにオフロードすることで、DEEPXモデルは同等のCPUまたはGPU推論よりもはるかに少ない電力で動作します。
- キャリブレーションベースの精度: エクスポートでは、実際のデータセット画像を使用したEMAベースのキャリブレーションにより、量子化時の精度低下を最小限に抑えます。
- 自己完結型の出力: エクスポートされたモデルディレクトリには、コンパイル済みバイナリ、キャリブレーション設定、メタデータが含まれており、簡単にデプロイできます。
サポートされるタスク#
DEEPXエクスポートは、Ultralyticsの7つすべてのタスクに対応します。セマンティックセグメンテーションと深度推定は、これらのヘッドを搭載する唯一のファミリーであるYOLO26でのみ利用できます。
DEEPXへのエクスポート: YOLOモデルの変換#
Ultralytics YOLOモデルをDEEPX形式にエクスポートし、エクスポートしたモデルで推論を実行します。
DEEPXエクスポートはx86-64 Linuxマシンでのみサポートされます。ARM64 (aarch64) はエクスポート手順ではサポートされません。ただし、エクスポートされた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 リリースは取り下げられています。エクスポートの依存関係を事前にインストールするには、SDK ホイールページに --find-links を指定します。これは 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モードをサポートします。推論と検証はDEEPX NPUハードウェア上で実行されます。モデルをエクスポートした後、エクスポート済みモデルを読み込んで推論を実行するか、精度を検証してください。
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' | エクスポートするモデルのターゲット形式を指定し、DEEPX NPUハードウェアとの互換性を定義します。 |
imgsz | intまたはtuple | 640 | モデル入力に使用する画像サイズです。DEEPXエクスポートでは正方形の入力が必要です。整数(例: 640)または高さと幅が等しいタプルを指定してください。 |
quantize | intまたはstr | 8/auto | 量子化精度です。DEEPXエクスポートでは8 (INT8) が必須で、指定されていない場合は自動的に有効になります。非推奨のhalf/int8フラグを置き換えます。 |
simplify | bool | True | onnxslimを使用して中間ONNXグラフを簡略化します。 |
opset | int | None | 中間ONNXグラフのONNX opsetバージョンを指定します。設定しない場合は、サポートされている最新バージョンが使用されます。 |
data | str | None | INT8キャリブレーションに使用するデータセットYAMLです。分類の場合は、データセットディレクトリまたは組み込みデータセット名を指定します。quantize=8と併用して省略した場合、Ultralyticsがモデルタスクに適したデフォルトのキャリブレーションデータセットを選択します。 |
device | str | None | エクスポートに使用するデバイスを指定します。GPU (device=0) またはCPU (device=cpu) です。 |
optimize | bool | False | より高いコンパイラー最適化を有効にします。推論レイテンシは短縮されますが、コンパイル時間は長くなります。 |
DEEPXエクスポートは必ずx86-64 Linuxホスト上で実行してください。dx_comコンパイラーはARM64をサポートしていません。
エクスポートプロセスの詳細については、エクスポートに関するUltralyticsドキュメントページをご覧ください。
出力構造#
エクスポートが成功すると、次の構成のモデルディレクトリが作成されます。
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ランタイムがNPU上で直接読み込むコンパイル済みモデルバイナリです。metadata.yamlには、クラス名、画像サイズ、その他Ultralytics推論パイプラインで使用される情報が含まれます。
エクスポートしたYOLO DEEPXモデルのデプロイ#
Ultralytics YOLOモデルをDEEPX形式に正常にエクスポートしたら、次はこれらのモデルをDEEPX NPUハードウェアにデプロイします。
ランタイムのインストール#
推論には、DEEPX NPUドライバー、libdxrtランタイム、dx_engine Pythonパッケージが必要です。
DEEPXランタイムは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を使用して、ランタイムが正しくインストールされていることを確認します。次のような出力が表示されます。
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: v6ランタイムをインストールしたら、上記のUsageセクションに示されているとおりに、DEEPXデバイス上で推論と検証を実行します。エクスポートされた_deepx_modelは、YOLO(...)で直接読み込まれます。
dxtronによる可視化#
dxtronは、コンパイル済みの.dxnnモデルを検査するためのDEEPXのグラフビジュアライザーです。
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次に、エクスポートしたモデルを開きます。
dxtron yolo26n_deepx_model/yolo26n.dxnndxtronはx86-64とaarch64の両方のプラットフォームで利用できます。
ベンチマーク#
UltralyticsチームはYOLO26モデルのベンチマークを実施し、PyTorchとDEEPXの速度および精度を比較しました。
| モデル | 形式 | ステータス | サイズ (MB) | metrics/mAP50-95(B) | 推論時間(ms/画像) |
|---|---|---|---|---|---|
| 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/画像) |
|---|---|---|---|---|---|---|
| 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から最高の推論スループットを得るには、ブート設定ファイルを開き、PCIe Gen 3のサポートを有効にします。
sudo nano /boot/firmware/config.txtファイルの末尾に次の行を追加します。
dtparam=pciex1
dtparam=pciex1_gen=3保存して終了し(Ctrl+X、Y、Enterの順)、再起動します。
sudo rebootPCIeの世代を確認します。PCIe Gen3では、期待される速度は8GT/sです。
sudo lspci -vvv | grep -iA 33 accelerators | grep -E "LnkCap|LnkSta"推奨ワークフロー#
- UltralyticsのTrain Modeを使用してモデルをトレーニングします。
model.export(format="deepx")を使用してDEEPX形式にエクスポートしますyolo valで精度を検証し、量子化による損失が最小限であることを確認します。yolo predictを使用して予測し、定性的な検証を行います。- エクスポートした
_deepx_model/ディレクトリを、dx_engineランタイムを使用してDEEPX NPUハードウェアにデプロイします
実世界での用途#
DEEPX NPUハードウェアにデプロイされたYOLOモデルは、さまざまなエッジAIアプリケーションに適しています。
- スマート監視: 低消費電力かつクラウドに依存せず、セキュリティおよび監視システム向けのリアルタイム物体検出を実現します。
- 産業オートメーション: 工場環境で、デバイス上の品質管理、欠陥検出、プロセス監視を実行します。
- ロボティクス: 自律型ロボットやドローンで、ビジョンベースのナビゲーション、障害物回避、物体認識を実現します。
- スマート農業: 農業におけるコンピュータービジョンを使用して、作物の健全性監視、害虫検出、収穫量推定を行います。
- リテール分析: リアルタイムのエッジ推論により、顧客の流れの分析、棚の監視、在庫追跡を実行します。
まとめ#
このガイドでは、Ultralytics YOLOモデルをDEEPX形式にエクスポートし、DEEPX NPUハードウェアにデプロイする方法を学びました。エクスポートパイプラインでは、INT8キャリブレーションとdx_comコンパイラーを使用して、ハードウェアに最適化された.dxnnバイナリを生成します。一方、dx_engineランタイムがデバイス上で推論を処理します。
Ultralytics YOLOとDEEPXのNPUテクノロジーを組み合わせることで、組み込みデバイスやエッジデバイス上で高度なコンピュータービジョンワークロードを実行する効果的なソリューションを提供します。リアルタイムアプリケーションにおいて、低消費電力で高いスループットを実現します。
使用方法の詳細については、DEEPX公式Webサイトをご覧ください。
また、その他のUltralytics YOLO統合について詳しく知りたい場合は、統合ガイドページをご覧ください。役立つリソースや知見が豊富に掲載されています。
FAQ#
Pythonでは
export()メソッドを使用するか、CLI経由でモデルをエクスポートできます。エクスポートではINT8量子化が自動的に有効になり、キャリブレーションデータセットを使用して精度低下を最小限に抑えます。dx_comコンパイラーパッケージがまだインストールされていない場合は、自動的にインストールされます。例from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="deepx")DEEPX NPUは、INT8演算を最大効率で実行するように設計されています。
dx_comコンパイラーは、実際のデータセット画像を使用したEMAベースのキャリブレーションによってエクスポート時にモデルを量子化し、NPUが性能を最大限に発揮できるようにします。DEEPXエクスポートではINT8が常に適用されます。別の精度を指定した場合は、警告とともにINT8へ上書きされます。DEEPXモデルのエクスポート(コンパイル)には、x86-64 Linuxホストが必要です。ARM64 (aarch64) とWindowsマシンではエクスポート手順はサポートされません。エクスポートされた
.dxnnモデルによる推論は、dx_engineランタイムがサポートする任意のLinuxプラットフォーム(x86-64およびARM64)で実行できます。エクスポートによって、次のファイルを含むディレクトリ(例:
yolo26n_deepx_model/)が作成されます。yolo26n.dxnn— コンパイル済みNPUバイナリconfig.json— キャリブレーションおよび前処理の設定metadata.yaml— クラス名や画像サイズなどのモデルメタデータ
はい。Ultralytics Train Modeを使用してトレーニングし、
format="deepx"でエクスポートしたモデルは、サポートされているレイヤー演算を使用していれば、DEEPX NPUハードウェアにデプロイできます。エクスポートは、Ultralyticsの7つすべてのタスク、すなわち検出、インスタンスセグメンテーション、セマンティックセグメンテーション、深度推定、分類、姿勢推定、方向付きバウンディングボックス (OBB) をサポートします。DEEPXエクスポートパイプラインでは、EMAキャリブレーション手法を使用してキャリブレーションデータセット内のすべての画像を処理します。通常、量子化で良好な精度を得るには数百枚の画像で十分です。大規模なデータセットでコンパイル時間が問題になる場合は、
dataに小規模なデータセットを指定してください。DEEPXランタイムは
ultralyticsに同梱されていないため、推論を実行する前に別途インストールする必要があります。x86-64 LinuxマシンおよびARM64 Linuxマシン(例: Raspberry Pi 5)では、DEEPX-AI GitHubのリリースからNPUドライバー(dxrt-driver-dkms)とランタイム(libdxrt)をインストールし、続いて同梱のdx_enginePythonホイールをインストールしてください。手順ごとのコマンドについては、上記のランタイムのインストールセクションをご覧ください。