Ultralytics YOLOモデル向けDEEPXエクスポート#
専門的なNPUハードウェア上にコンピュータビジョンモデルを展開するには、互換性があり最適化されたモデルフォーマットが必要です。Ultralytics YOLOモデルをDEEPXフォーマットにエクスポートすることで、DEEPX NPUアクセラレータ上で効率的なINT8量子化推論が可能になります。このガイドでは、YOLOモデルをDEEPXフォーマットに変換し、DEEPX搭載ハードウェア上で展開する手順を説明します。
DEEPXとは?#
DEEPXは、エッジでの電力効率に優れたディープラーニング推論向けに設計されたニューラルプロセッシングユニット(NPU)を専門とするAI半導体企業です。DEEPX NPUは、要求の厳しい組み込みおよび産業用AIアプリケーション向けに設計されており、最小限の消費電力で高いスループットを実現します。ロボット工学、スマートカメラ、産業用オートメーションシステムなど、クラウド接続が信頼できない、または望ましくない展開シナリオに非常に適しています。
DEEPXエクスポート形式#
DEEPXエクスポートでは、DEEPX NPUハードウェアでの実行に最適化されたコンパイル済み.dxnnモデルバイナリが生成されます。コンパイルパイプラインでは、dx_comツールキットを使用してINT8量子化とハードウェア固有の最適化を実行し、展開準備が整った自己完結型のモデルディレクトリを作成します。
DEEPXモデルの主な特長#
DEEPXモデルは、エッジデプロイメントにおいていくつかの利点を提供します。
- INT8量子化: エクスポート時にモデルがINT8精度に量子化され、モデルサイズが大幅に縮小され、NPUのスループットが最大化されます。モデル量子化の詳細については、こちらをご覧ください。
- NPU最適化:
.dxnnフォーマットはDEEPX NPUハードウェア向けに特別にコンパイルされており、専用のアクセラレーションユニットを活用して高速で効率的な推論を実現します。 - 低消費電力: 推論をNPUにオフロードすることで、DEEPXモデルは同等のCPUやGPUによる推論よりもはるかに少ない電力で動作します。
- キャリブレーションベースの精度: エクスポートでは、実際のデータセット画像を用いたEMAベースのキャリブレーションを使用し、量子化中の精度低下を最小限に抑えます。
- 自己完結型出力: エクスポートされたモデルディレクトリには、コンパイル済みバイナリ、キャリブレーション設定、およびメタデータがバンドルされており、容易にデプロイできます。
サポートされているタスク#
DEEPX エクスポートは、すべての7つの Ultralytics タスクをサポートしています。セマンティックセグメンテーションと深度推定は、それらのヘッドを搭載している唯一のファミリーである 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リポジトリから自動的にインストールされます。インストールプロセスの詳細な手順とベストプラクティスについては、Ultralytics インストールガイドをご確認ください。YOLOに必要なパッケージのインストール中に問題が発生した場合は、一般的な問題ガイドを参照して解決策とヒントを確認してください。
使用方法#
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 documentation page on exporting をご覧ください。
出力構造#
エクスポートが成功すると、以下のレイアウトでモデルディレクトリが作成されます。
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-*.whlランタイムが正しくインストールされていることをdxrt-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ランタイムがインストールされたら、上記の使用方法セクションに示されているのと全く同じ方法で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/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、セグメンテーションにはcoco8-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)**する
model.export(format="deepx")を使用してDEEPXフォーマットにエクスポートするyolo valを使用して精度を**検証 (Validate)**し、量子化による損失が最小限であることを確認する- 定性的な検証のために
yolo predictを使用して**予測 (Predict)**を実行する dx_engineランタイムを使用して、エクスポートされた_deepx_model/ディレクトリをDEEPX NPUハードウェアに展開する
実際のアプリケーション#
DEEPX NPUハードウェア上に展開されたYOLOモデルは、幅広いエッジAIアプリケーションに最適です:
- スマート監視: 低消費電力でクラウド依存なしの、セキュリティおよび監視システム向けのリアルタイム物体検出。
- 産業オートメーション: 工場環境におけるオンデバイスでの品質管理、欠陥検出、プロセス監視。
- ロボティクス: 自律型ロボットやドローンにおける視覚ベースのナビゲーション、障害物回避、物体認識。
- スマート農業: 農業におけるコンピュータビジョンを使用した、作物の健康状態のモニタリング、害虫検出、および収量予測。
- 小売分析: リアルタイムのエッジ推論を用いた顧客フロー分析、棚の監視、在庫追跡。
要約#
このガイドでは、Ultralytics YOLOモデルをDEEPXフォーマットにエクスポートし、DEEPX NPUハードウェアに展開する方法を学びました。エクスポートパイプラインでは、INT8キャリブレーションとdx_comコンパイラを使用してハードウェアに最適化された.dxnnバイナリを生成し、dx_engineランタイムがデバイス上での推論を処理します。
Ultralytics YOLOとDEEPXのNPU技術の組み合わせにより、組み込みおよびエッジデバイス上で高度なコンピュータビジョンワークロードを実行するための効果的なソリューションが提供され、リアルタイムアプリケーション向けに低消費電力で高スループットを実現します。
使用方法の詳細については、DEEPX公式サイトをご覧ください。
また、他の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が強制されます。別の精度を要求した場合は、警告が表示されて上書きされます。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学習モードを使用してトレーニングされ、
format="deepx"でエクスポートされたモデルは、サポートされているレイヤー操作を使用している限り、DEEPX NPUハードウェアに展開できます。エクスポートは、検出、インスタンスセグメンテーション、セマンティックセグメンテーション、深度推定、分類、姿勢推定、回転バウンディングボックス(OBB)の7つのUltralyticsタスクすべてをサポートしています。DEEPXエクスポートパイプラインでは、EMAキャリブレーション方法を使用して、キャリブレーションデータセット内のすべての画像が使用されます。通常、十分な量子化精度を得るには数百枚の画像があれば十分です。大規模なデータセットでコンパイル時間が問題になる場合は、
dataをより小規模なデータセットに指定してください。DEEPXランタイムは
ultralyticsにバンドルされていないため、推論を実行する前に別途インストールする必要があります。x86-64 LinuxマシンおよびARM64 Linuxマシン(Raspberry Pi 5など)では、DEEPX-AI GitHubリリースからNPUドライバ(dxrt-driver-dkms)とランタイム(libdxrt)をインストールし、バンドルされているdx_enginePythonホイールをインストールします。ステップバイステップのコマンドについては、上記のランタイムのインストールセクションを参照してください。