Ultralytics YOLOモデルのDEEPXエクスポート#
専用NPUハードウェアにコンピュータービジョンモデルをデプロイするには、互換性があり最適化されたモデル形式が必要です。Ultralytics YOLOモデルをDEEPX形式にエクスポートすると、DEEPX NPUアクセラレーター上でINT8量子化による効率的な推論を実行できます。このガイドでは、YOLOモデルをDEEPX形式に変換し、DEEPX搭載ハードウェアにデプロイする方法を説明します。
DEEPXとは#
DEEPXは、エッジでのディープラーニング推論を電力効率よく実行するために設計されたニューラルプロセッシングユニット(NPUs)を専門とするAI半導体企業です。DEEPX NPUは、要求の厳しい組み込みAIや産業用AIアプリケーション向けに設計されており、消費電力を最小限に抑えながら高いスループットを実現します。DEEPXのハードウェアは、ロボティクス、スマートカメラ、産業オートメーションシステムなど、クラウド接続が不安定、または望ましくない環境でのデプロイに適しています。
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 ultralytics初回のエクスポート時に、dx_comコンパイラーがDEEPX SDKリポジトリから自動的にインストールされます。現在のエクスポートワークフローではDX-COM 2.3.0を使用しており、glibc 2.31以降を搭載したx86-64 Linux上のPython 3.8~3.12向けwheelが提供されています。
コンパイラーのPyPIリリースはyank(公開取り下げ)されています。エクスポートの依存関係を事前にインストールするには、SDKのwheelページを--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]"に置き換えてください。Python 3.12環境と、CIで使用されるエクスポートのスモークテストを再現するには、リポジトリのルートから既存の環境ビルダーを実行します。
ULTRALYTICS_ISOLATED_VENVS="$PWD/.venvs" python .github/scripts/create-export-env.py --env isolated-deepx環境ビルダーにはuvと、インストール済みのUltralyticsチェックアウトが必要です。SDKのソースからコンパイラーをインストールし、テスト済みの依存関係制約を自動的に適用します。
使用方法#
DEEPX形式は、エクスポート、予測、検証の各モードに対応しています。推論と検証はDEEPX NPUハードウェア上で実行されます。モデルをエクスポートした後、エクスポート済みモデルを読み込んで推論を実行するか、精度を検証してください。
from ultralytics import YOLO
# YOLO26モデルをロードする
model = YOLO("yolo26n.pt")
# モデルをDEEPX形式にエクスポートします(quantize=8は自動的に適用されます)
model.export(format="deepx") # creates 'yolo26n_deepx_model/'from ultralytics import YOLO
# エクスポート済みのDEEPXモデルを読み込みます
model = YOLO("yolo26n_deepx_model")
# 推論を実行
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# エクスポート済みのDEEPXモデルを読み込みます
model = YOLO("yolo26n_deepx_model")
# COCO8データセットで精度を検証する
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ランタイムをインストールしたら、上記の使用方法セクションの手順に従って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) | 精度(top1) | 精度(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公式ウェブサイトをご覧ください。
また、Ultralytics YOLOのその他のインテグレーションについて詳しく知りたい場合は、インテグレーションガイドページをご覧ください。役立つリソースや情報を多数掲載しています。
よくある質問#
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のトレーニングモードでトレーニングし、
format="deepx"でエクスポートしたモデルは、サポート対象のレイヤー演算を使用していれば、DEEPX NPUハードウェアにデプロイできます。エクスポートは、物体検出、インスタンスセグメンテーション、セマンティックセグメンテーション、深度推定、分類、姿勢推定、有向バウンディングボックス(OBB)の7つすべてのUltralyticsタスクに対応しています。DEEPXエクスポートパイプラインは、キャリブレーションデータセットの画像を対象に、EMAキャリブレーションを100ステップ実行するよう
dx_comコンパイラーを設定します。良好な量子化精度を得るには、通常は数百枚の画像で十分です。大規模なデータセットでコンパイル時間が問題になる場合は、dataに小規模なデータセットを指定してください。DEEPXランタイムは
ultralyticsに同梱されていないため、推論の実行前に別途インストールする必要があります。x86-64 LinuxマシンとARM64 Linuxマシン(例: Raspberry Pi 5)では、DEEPX-AI GitHubのリリースからNPUドライバー(dxrt-driver-dkms)とランタイム(libdxrt)をインストールし、同梱のdx_enginePython wheelをインストールしてください。手順ごとのコマンドについては、上記のランタイムのインストールセクションをご覧ください。