Ultralytics YOLO27:

Ultralytics YOLOモデルのDEEPXエクスポート#

専用NPUハードウェアにコンピュータービジョンモデルをデプロイするには、互換性があり最適化されたモデル形式が必要です。Ultralytics YOLOモデルをDEEPX形式にエクスポートすると、DEEPX NPUアクセラレーター上でINT8量子化による効率的な推論を実行できます。このガイドでは、YOLOモデルをDEEPX形式に変換し、DEEPX搭載ハードウェアにデプロイする方法を説明します。

DEEPXとは#

DEEPX NPU Inference

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でのみ利用できます。

タスクYOLOv8YOLO11YOLO26
検出✅✅✅
セグメンテーション✅✅✅
セマンティック❌❌✅
深度❌❌✅
分類✅✅✅
姿勢推定✅✅✅
OBB✅✅✅

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")

エクスポート引数#

引数型デフォルト説明
formatstr'deepx'エクスポートするモデルのターゲット形式を指定します。DEEPX NPUハードウェアとの互換性を定義します。
imgszintまたはtuple640モデル入力に使用する画像サイズです。DEEPXエクスポートでは正方形の入力が必要です。整数(例: 640)または高さと幅が等しいタプルを指定してください。
quantizeintまたはstr8/auto量子化精度です。DEEPXエクスポートでは8(INT8)が必須で、指定されていない場合は自動的に有効になります。非推奨のhalf/int8フラグに代わるものです。
simplifyboolTrueonnxslimを使用して、中間ONNXグラフを簡略化します。
opsetintNone中間ONNXグラフのONNX opsetバージョンを指定します。指定しない場合は、サポートされている最新バージョンが使用されます。
datastrNoneINT8キャリブレーションに使用するデータセットYAMLです。分類の場合は、データセットディレクトリまたは組み込みデータセット名を指定します。quantize=8と併せて省略した場合、Ultralyticsがモデルのタスクに応じたデフォルトのキャリブレーションデータセットを選択します。
devicestrNoneエクスポートに使用するデバイスを指定します。GPU(device=0)またはCPU(device=cpu)を指定します。
optimizeboolFalseコンパイラーの最適化を強化します。推論レイテンシーが短縮される一方、コンパイル時間は長くなります。
ヒント

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-*.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.dxnn
注記

dxtronは、x86-64とaarch64の両プラットフォームで利用できます。

ベンチマーク#

UltralyticsチームはYOLO26モデルのベンチマークを実施し、PyTorchとDEEPXの速度と精度を比較しました。

パフォーマンス
Raspberry Pi 5 DEEPX M1 NPU vs PyTorch benchmarks
モデル形式ステータスサイズ(MB)metrics/mAP50-95(B)推論時間(ms/画像)
YOLO26nPyTorch✅5.30.4760315.2
YOLO26nDEEPX✅6.60.466034.6
YOLO26n-segPyTorch✅6.50.4080485.4
YOLO26n-segDEEPX✅7.90.392053.8
YOLO26n-posePyTorch✅7.60.4230506.3
YOLO26n-poseDEEPX✅8.80.459037.6
YOLO26n-obbPyTorch✅5.70.8171094.4
YOLO26n-obbDEEPX✅7.30.78356.4
モデル形式ステータスサイズ(MB)精度(top1)精度(top5)推論時間(ms/画像)
YOLO26n-clsPyTorch✅5.60.4310.71623.8
YOLO26n-clsDEEPX✅5.90.3330.6862.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 reboot

PCIeの世代を確認します。PCIe Gen3の想定速度は8GT/sです。

sudo lspci -vvv | grep -iA 33 accelerators | grep -E "LnkCap|LnkSta"

推奨ワークフロー#

  1. Ultralytics の Train Mode を使用してモデルをトレーニングします
  2. model.export(format="deepx")を使用してDEEPX形式にエクスポートします
  3. yolo val を使用して精度を検証し、量子化による損失が最小限であることを確認します
  4. yolo predict を使用して推論し、定性的に検証します
  5. エクスポートした_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_engine Python wheelをインストールしてください。手順ごとのコマンドについては、上記のランタイムのインストールセクションをご覧ください。

コメント