Ultralytics YOLOモデルのDEEPXエクスポート
特殊なNPUハードウェアにコンピュータービジョンモデルをデプロイするには、互換性があり最適化されたモデル形式が必要です。Ultralytics YOLOモデルをDEEPX形式にエクスポートすると、DEEPX NPUアクセラレーター上でINT8量子化による効率的な推論が可能になります。このガイドでは、YOLOモデルをDEEPX形式に変換し、DEEPX搭載ハードウェアにデプロイする方法を説明します。
DEEPXとは何ですか?#
DEEPXは、エッジでの電力効率に優れた深層学習推論向けに設計されたニューラルプロセッシングユニット (NPUs)を専門とするAI半導体企業であり、Ultralyticsのパートナーです。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コンパイラーは、初回のエクスポート時にPyPIから自動的にインストールされます。DX-COM 2.5.0は、glibc 2.31以降を搭載したx86-64 Linux向けにPython 3.8~3.14用のwheelを提供しており、16 GB以上のRAMが必要です。エクスポートに必要な依存関係を事前にインストールするには、次のようにします。
pip install "ultralytics[export-deepx]"編集可能なリポジトリインストールの場合は、"ultralytics[export-deepx]" を -e ".[export-base,export-deepx]" に置き換えます。Python 3.14 環境と CI で使用されるスモークエクスポートを再現するには、リポジトリのルートから既存の環境ビルダーを実行します。
ULTRALYTICS_ISOLATED_VENVS="$PWD/.venvs" python .github/scripts/create-export-env.py --env isolated-deepx環境ビルダーには、uv とインストール済みの Ultralytics チェックアウトが必要です。テスト済みの依存関係制約は自動的に適用されます。
DX-COM 2.5.0は.dxnnファイル形式v9を生成します。この形式を読み込めるのはDX-RT 3.5.0以降のみです。ランタイムのインストールに記載されている対応するDEEPXランタイムをインストールし、個々のコンポーネントをアップグレードする前にDEEPXバージョン互換性マトリックスを確認してください。
使用方法#
DEEPX形式は、エクスポート、予測、検証の各モードに対応しています。推論と検証はDEEPX NPUハードウェア上で実行されます。モデルをエクスポートした後、エクスポート済みモデルを読み込んで推論を実行するか、精度を検証します。
PredictとValidateを実行するには、DEEPXランタイムがインストールされたDEEPX NPUデバイスが必要です(ランタイムのインストールを参照)。エクスポートはNPUのないx86-64 Linuxホスト上で実行されます。推論を実行するには、エクスポートされた_deepx_model/ディレクトリを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/自動 | 量子化の精度です。DEEPXエクスポートでは8(INT8)が必須で、指定されていない場合は自動的に有効になります。非推奨のhalf/int8フラグを置き換えるものです。 |
simplify | bool | True | onnxslimを使用して、中間ONNXグラフを簡素化します。 |
opset | int | None | 中間ONNXグラフのONNX opsetバージョンを指定します。指定しない場合は、opset 18(PyTorch < 2.4ではより低いバージョン)を使用し、インストール済みの onnx のバージョンを上限とします。 |
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ドライバー(v2.7.0以降)、DX-RTランタイム(v3.5.0以降)、NPUファームウェアv2.7.6以降、およびdx_engine Pythonパッケージが必要です。これらは、DX-COM 2.5.0でコンパイルされたモデルの実行に必要なバージョンです。
DEEPXランタイムはx86-64 LinuxとARM64(例: Raspberry Pi 5)の両方をサポートしています。
次のいずれかの方法で、NPUドライバーとlibdxrt-binランタイムパッケージをインストールしてください。
オプションA:GitHubリリースパッケージからインストール#
DEEPX-AI GitHubリポジトリからドライバーとランタイムの.debパッケージをダウンロードしてインストールしてください。ランタイムパッケージはCPUアーキテクチャごとに提供されています(amd64またはarm64)。
# Install the NPU driver and DX-RT runtime
sudo apt update
wget https://github.com/DEEPX-AI/dx_rt_npu_linux_driver/raw/main/release/2.7.0/dxrt-driver-dkms_2.7.0-2_all.deb
sudo apt install ./dxrt-driver-dkms_2.7.0-2_all.deb
wget https://github.com/DEEPX-AI/dx_rt/raw/main/release/3.5.0/libdxrt-bin_3.5.0_$(dpkg --print-architecture).deb
sudo apt install ./libdxrt-bin_3.5.0_$(dpkg --print-architecture).debオプションB:DEEPX aptリポジトリからインストール#
DEEPX aptリポジトリを一度登録した後、aptを使用してドライバーとランタイムをインストールおよびアップグレードしてください。
# Add the DEEPX apt repository
wget -O - https://apt.releases.deepx.ai/gpg | sudo gpg --dearmor -o /usr/share/keyrings/deepx-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/deepx-archive-keyring.gpg] https://apt.releases.deepx.ai $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") main" | sudo tee /etc/apt/sources.list.d/deepx.list
# Install the NPU driver and DX-RT runtime
sudo apt update
sudo apt install dxrt-driver-dkms libdxrt-binドライバーのインストール後にホストを再起動し、新しいカーネルモジュールを読み込んでからdxcliを実行してください。
Pythonパッケージとファームウェア#
libdxrt-binには、Python 3.8~3.14用のdx_engine wheelが/usr/share/libdxrt-bin/python/に含まれていますが、インストールはされません。UltralyticsとNumPyがインストールされている環境で、お使いのPythonバージョンに対応するwheelをインストールしてください。
python -m pip install --upgrade --no-index --find-links /usr/share/libdxrt-bin/python dx_engineDX-RT 3.5.0にはNPUファームウェアv2.7.6以降が必要です。dxcli -sを使用してファームウェアのバージョンとデバイスIDを確認し、バージョンが古い場合は、お使いのモジュールに対応するファームウェアイメージで更新してください。DX-M1とDX-M1M M.2モジュールではファームウェアイメージが異なるため、お使いのモジュールに対応するものだけをダウンロードしてください。dxcli -sのデバイス情報では、モジュールはM1またはM1Mとして表示されます。
# Download the firmware image matching your module (DX-M1 shown)
wget -O dx-m1-2.7.6.bin https://github.com/DEEPX-AI/dx_fw/raw/main/m1/2.7.6/mdot2/fw.bin
# wget -O dx-m1m-2.7.6.bin https://github.com/DEEPX-AI/dx_fw/raw/main/m1m/2.7.6/mdot2/fw.bin # DX-M1M
# Update the selected device; replace DEVICE_ID with its ID from dxcli -s
sudo systemctl stop dxrt.service
dxcli -d DEVICE_ID -u dx-m1-2.7.6.bin # for DX-M1M use dx-m1m-2.7.6.bin insteadファームウェアを書き込んだ後、ファームウェアのバージョンを確認する前にホストの電源を完全に切り、再度起動してください。物理的に電源を切断できない場合は、DEEPXトラブルシューティングガイドの説明に従ってホストを再起動してください。
dxcli -sを使用してインストールを検証してください。このコマンドは、各デバイスのランタイム、ドライバー、ファームウェアのバージョンを表示します。import dx_engineは、dx_engine wheelとインストール済みのlibdxrtランタイムのバージョンが異なる場合、RuntimeErrorを発生させます。そのため、ランタイムのアップグレード後に/usr/share/libdxrt-bin/python/からwheelを再インストールしてください。
ランタイムをインストールしたら、上記の使用方法セクションに示すとおり、DEEPXデバイス上で推論と検証を実行します。エクスポートした_deepx_modelは、YOLO(...)で直接読み込めます。
コンパイル済みモデルの確認#
DX-COM 2.5.0では、DX-TRONグラフビジュアライザーに代わり、コンパイル済みモデルの構造とCPU/NPUの処理負荷の内訳を表示するインタラクティブなHTMLコンパイルサマリーレポートが導入されています。必要に応じて、エクスポート時に書き出された中間ONNXモデルを、x86-64のエクスポートホスト上でdxcom CLIを使って再コンパイルし、レポートを生成してください。
dxcom -m yolo26n.onnx -c yolo26n_deepx_model/config.json -o yolo26n_deepx_report --export_htmlレポートを表示するには、ブラウザーでyolo26n_deepx_report/yolo26n_summary.htmlを開いてください。
ベンチマーク#
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) | 精度(top1) | 精度(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、分類にImageNet100、姿勢推定にCOCO8-pose、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を使用して推論します 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公式ウェブサイトをご覧ください。
よくある質問#
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ハードウェアにデプロイできます。エクスポートはUltralyticsの7つすべてのタスク、すなわち検出、インスタンスセグメンテーション、セマンティックセグメンテーション、深度推定、分類、姿勢推定、方向付きバウンディングボックス(OBB)に対応しています。DEEPXエクスポートパイプラインでは、キャリブレーションデータセットの画像に対してEMAキャリブレーションを100ステップ実行するよう、
dx_comコンパイラーを設定します。良好な量子化精度を得るには、通常、数百枚の画像で十分です。大規模なデータセットでコンパイル時間が問題になる場合は、dataに小規模なデータセットを指定してください。DEEPXランタイムは
ultralyticsに含まれていないため、推論を実行する前に別途インストールする必要があります。x86-64 LinuxマシンおよびARM64 Linuxマシン(例:Raspberry Pi 5)では、DEEPX-AI GitHubリリースパッケージまたはDEEPX aptリポジトリからNPUドライバー(dxrt-driver-dkms)とランタイム(libdxrt-bin)をインストールし、必要に応じてNPUファームウェアをv2.7.6以降に更新したうえで、同梱のdx_enginePython wheelを環境にインストールしてください。DX-COM 2.5.0でエクスポートされたモデルには、DX-RT 3.5.0以降が必要です。手順ごとのコマンドについては、上記のランタイムのインストールセクションを参照してください。
コメント
質問したり、結果を共有したり、ほかの人をサポートしたりできます。
