Ultralytics YOLOモデル向けHailoエクスポート#
Hailo AIアクセラレータは、Raspberry Pi AI HAT+やAI HAT+ 2などのエッジデバイス上で、コンパイル済みのHailo実行形式(HEF)モデルを実行します。Ultralyticsは、YOLOの検出、セグメンテーション、セマンティックセグメンテーション、深度推定、分類、ポーズ、OBBモデルを、Hailoデータフローコンパイラ(DFC)を使用してHEFへ直接エクスポートします。
Hailoデプロイメントは、カメラ、ロボット、産業システム、ゲートウェイなど、すべてのフレームをクラウドへ送信せずにローカルで物体検出を行う必要があるデバイスでのエッジコンピュータビジョン向けに設計されています。コンパイル済みのHEFには、選択したアクセラレータに必要な量子化済みネットワーク、ハードウェア割り当て、スケジューリング、オプションのHailoRT後処理が含まれます。
Ultralytics YOLOをHailoにデプロイする理由#
Ultralytics YOLOとHailoニューラルプロセッシングユニット(NPU)を組み合わせることで、モデルのトレーニングからエッジAI推論までを実現する実用的な方法が得られます。一般的なユースケースは次のとおりです。
- スマートカメラとビデオ分析:セキュリティ、小売、交通、占有状況のアプリケーション向けに、カメラの近くでリアルタイム物体検出を実行します。
- ロボティクスと自律システム:継続的なクラウド接続に依存せず、人、車両、荷物、工具、障害物などを検出します。
- 産業用コンピュータビジョン:検査、カウント、安全監視、品質管理向けにカスタムYOLOモデルをデプロイします。
- Raspberry Pi AIプロジェクト:AI HAT+またはAI HAT+ 2を使用して、Raspberry Piシステムにアクセラレーションされたビジョン推論を追加します。
- エッジゲートウェイとAI PC:複数のビデオまたはセンサーストリームをローカルで処理し、帯域幅とクラウドコンピューティングの要件を削減します。
画像をデプロイ先のデバイス内に保持できるため、ローカル推論によってプライバシーと応答時間を改善できます。実際のスループット、レイテンシ、電力使用量は、YOLOモデルのサイズ、入力解像度、Hailoアーキテクチャ、ホストシステム、アプリケーションパイプラインによって異なります。
Hailoエクスポートの仕組み#
Ultralyticsは、format="hailo"の完全なエクスポートワークフローを提供します。
YOLO (.pt) -> ONNX -> Hailo parse -> INT8 optimization -> HEF compileエクスポーターは次のステージを自動的に実行します。
- コンパイラ互換の設定で静的ONNXグラフをエクスポートします。
- モデルアーキテクチャに応じたヘッド出力を選択します。
- 正規化、アクティベーション、後処理のディレクティブを生成します。
- 代表的なキャリブレーションストリームを構築し、モデルをINT8に量子化します。
- 最適化されたグラフを、選択したHailoアクセラレータ向けにコンパイルします。
- Ultralyticsメタデータを含むHEFを保存し、中間ONNXファイルを削除します。
YOLOv8およびYOLO11の検出モデルは、コンパイル済みパイプラインでHailoRT YOLO NMSを使用します。YOLO26の検出モデルは、NMSを使用しない1対1出力を使用するため、エクスポーターは異なる出力および量子化パスを自動的に選択します。YOLOv8/YOLO11のセグメンテーション、ポーズ、OBBは生のヘッドテンソルをコンパイルし、Ultralyticsが推論時にデコードします。また、YOLOv8/YOLO11/YOLO26の分類はチップ上でsoftmaxを実行するため、HEFはクラス確率を直接返します。YOLO26のセマンティックセグメンテーションでは、エクスポーターがアクセラレータに応じて処理します。Hailo-8/8L(DFC v3.x)は、ホスト側でのアップサンプリングとリダクション用に分類器ロジットを返します。一方、Hailo-10H/15(DFC v5.x)はマルチクラスArgMaxヘッドをチップ上でコンパイルし、コンパクトなクラスマップを返します。単一クラスのヘッドはArgMaxではなくしきい値を必要とするため、すべてのターゲットでホストロジットパスを使用します。YOLO26の深度モデルは、a16内の密なロジット畳み込みをコンパイルし、ホスト上でメトリック深度マップを再構築します(ヘッドに続くclamp/expと学習済みのlog-affineキャリブレーションを含みます)。そのため、量子化器は生のロジットに対して最も広い範囲を維持します。ユーザーはONNXの終端ノードを探したり、Hailoモデルスクリプト(.alls)を記述したり、NMS JSONを手動で作成したりする必要はありません。
インストール#
Ultralyticsをインストールし、Hailo Developer Zoneから対象ハードウェア向けのDFC wheelをダウンロードしてください(無料登録が必要です)。
pip install ultralytics
pip install /path/to/hailo_dataflow_compiler-*.whlHailoのコンパイルにはLinux x86_64が必要です。対応するワークステーションでモデルをコンパイルし、出力ディレクトリを対象デバイスへコピーしてください。推論にDFCは必要ありません。
Hailo-8およびHailo-8LはDFC v3.xを使用します。Hailo-10HおよびHailo-15はDFC v5.xを使用します。対象アクセラレータに一致する世代のコンパイラをインストールしてください。
Ultralytics Platformは管理型のHailoエクスポートを提供するため、ローカルのHailoアカウントやDFCのインストールは必要ありません。
Hailo HEFモデルをエクスポートする#
format="hailo"を使用し、nameで対象アクセラレータを選択してください。
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
output = model.export(format="hailo", name="hailo8")
print(output) # yolo11n_hailo_model/対応するCLIコマンドは次のとおりです。
yolo export model=yolo11n.pt format=hailo name=hailo8HailoエクスポートはINT8のみ対応しています。dataが指定されていない場合、Ultralyticsはタスク固有のキャリブレーションデータセットを自動的にダウンロードします。カスタムモデルでは、代表的なトレーニング画像または検証画像を使用してください。
UltralyticsはDFCの最適化レベル2を強制し、実際のキャリブレーションデータセットサイズを使用するようファインチューニングを設定します。Hailoは、少なくとも1,024枚の多様な画像を推奨しています。組み込みの軽量データセットはレベル2でコンパイルされますが、本番環境のドメインを十分に表さない場合があります。本番用のHEFエクスポートでは、data="path/to/dataset.yaml"を使用して代表的なデータセットを渡してください。
model.export(format="hailo", name="hailo8", data="path/to/dataset.yaml")コンパイルでは固定の入力形状を使用します。デバイスで使用する解像度をimgszに設定してください。
model.export(format="hailo", name="hailo8", imgsz=640)対応モデルとハードウェア#
Hailoエコシステムは幅広いコンピュータビジョンワークロードをカバーしていますが、Ultralyticsのformat="hailo"エクスポーターは現在、標準的なYOLOの検出、セグメンテーション、セマンティックセグメンテーション、深度推定、分類、ポーズ、OBBヘッドを検証しています。タスク表には利用可能なエクスポーターパスが記載されており、ハードウェア検証については下記に別途記載しています。
| Ultralyticsタスク | Hailoへ直接エクスポート | 対応モデルファミリー | 注記 |
|---|---|---|---|
| 物体検出 | ✅ | YOLOv8、YOLO11、YOLO26 | カスタムモデルを含む標準Ultralytics Detectヘッド |
| インスタンスセグメンテーション | ✅ | YOLOv8、YOLO11 | Ultralyticsが推論時にデコードする生のヘッドテンソル。YOLO26-segは現在サポートされていません |
| セマンティックセグメンテーション | ✅ | YOLO26 | Hailo-8/8Lおよび単一クラスのヘッドはロジットを返します。Hailo-10H/15はマルチクラスマップを組み込みます |
| 深度推定 | ✅ | YOLO26 | a16で密なロジットをコンパイルします。Ultralyticsが推論時にメトリック深度マップを再構築します |
| 画像分類 | ✅ | YOLOv8、YOLO11、YOLO26 | チップ上でsoftmaxを実行し、HEFがクラス確率を直接返します |
| ポーズ推定 | ✅ | YOLOv8、YOLO11 | Ultralyticsが推論時にデコードする生のヘッドテンソル。YOLO26-poseは現在サポートされていません |
| 方向付き物体検出 | ✅ | YOLOv8、YOLO11 | Ultralyticsが推論時にデコードする生のヘッドテンソル。YOLO26-OBBは現在サポートされていません |
YOLOv10、YOLO-World、YOLOE、RT-DETRなどの特殊な検出ファミリーは、現在Ultralyticsのformat="hailo"パスでは❌サポートされていません。Ultralyticsは、検証されていないHEFを生成するのではなく、コンパイル前にこれらのタスクとモデルファミリーを拒否します。
| モデルファミリー | Hailo-8 / Hailo-8L | Hailo-10H / Hailo-15 | 出力 |
|---|---|---|---|
| YOLOv8 / YOLO11検出 | ✅ | ✅ | HailoRT YOLO NMSを含むHEF |
| YOLO26検出 | ✅ | ✅ | 対応ランタイム向けのNMSなし検出ヘッド出力 |
| YOLOv8-seg / YOLO11-seg | ✅ | ✅ | Ultralyticsが推論時にデコードする生のセグメンテーションテンソル |
| YOLOv8-pose / YOLO11-pose | Hailo-8Lで検証済み | 未検証 | Ultralyticsが推論時にデコードする生のポーズテンソル |
| YOLOv8-obb / YOLO11-obb | Hailo-8Lで検証済み | 未検証 | Ultralyticsが推論時にデコードする生のOBBテンソル |
| YOLOv8-cls / YOLO11-cls / YOLO26-cls | Hailo-8Lで検証済み | 未検証 | チップ上のsoftmax。HEFがクラス確率を返します |
| YOLO26-sem | Hailo-8Lで検証済み | 未検証 | ロジット、またはHailo-10H/15上で組み込まれたマルチクラスマップ |
| YOLO26-depth | Hailo-8Lで検証済み | 未検証 | 密なロジット。Ultralyticsがメトリック深度マップをデコードします |
ポーズ、OBB、分類、YOLO26セマンティックセグメンテーション、YOLO26深度推定(Hailo-8/8Lパス)は、HailoRT 4.23およびDFC 3.33を使用してHailo-8Lで検証されています。エクスポーターは一覧にあるその他のターゲットも受け付けますが、これらの新しいタスクパスは、本番環境で使用する前に対応するコンパイラとデバイスで検証する必要があります。
次のname値のいずれかを選択してください。
name | 対象アクセラレータ |
|---|---|
hailo8 | Hailo-8 |
hailo8l | Hailo-8L |
hailo10h | Hailo-10H |
hailo15h | Hailo-15H |
hailo15l | Hailo-15L |
nameを省略すると、hailo8lがデフォルトとして使用されます。nameには、デプロイ先のアクセラレータを設定してください。選択したターゲットに一致するDFC世代をインストールしてください。
HailoハードウェアとSDKの世代#
Hailoアクセラレータファミリーでは、異なるコンパイラ世代を使用します。生成されるHEFは対象ハードウェアと一致している必要があるため、エクスポートを実行するマシンではなく、推論を実行するデバイスに対応するnameを選択してください。
| ハードウェアファミリー | DFC世代 |
|---|---|
| Hailo-8 / Hailo-8L | DFC v3.x |
| Hailo-10H | DFC v5.x |
| Hailo-15H / Hailo-15L | DFC v5.x |
コンパイラはLinux x86_64上で実行され、生成されたHEFはHailoRTを介してHailoデバイス上で実行されます。この分離により、ワークステーションまたはUltralytics Platformでコンパイルし、小さなランタイムアーティファクトをARMまたはx86のエッジホストにデプロイできます。
互換性に関する注意事項#
Hailoのコンパイルはハードウェア固有であり、固定の入力形状を使用します。次の制約に注意してください。
- 選択した
nameは、デプロイ先のアクセラレータと一致している必要があります。 - キャリブレーション画像は、本番環境で想定される照明、視点、物体、背景を表す必要があります。
- 各HEFは固定の
imgsz向けにコンパイルされます。複数の解像度に対応するには、ホスト上でフレームをコンパイル済みサイズにリサイズするか、解像度ごとに別のHEFをコンパイルしてください。 - Ultralyticsはモデルメタデータから後処理設定を生成するため、カスタムクラス数に対応しています。
- 標準のUltralytics
Detectヘッドを備えた検出モデル、YOLOv8/YOLO11のセグメンテーション、ポーズ、OBBモデル、YOLOv8/YOLO11/YOLO26の分類モデル、およびYOLO26のセマンティックセグメンテーションと深度推定モデルがサポートされています。YOLO26のインスタンスセグメンテーション、ポーズ、指向性バウンディングボックス、ならびにYOLO-World、YOLOE、YOLOv10、RT-DETRのエクスポートは現在サポートされていません。 - Hailo-8/8LとHailo-10H/15のアーティファクトは異なるDFC世代でコンパイルされるため、相互に使用できません。
キャリブレーションとINT8量子化#
Hailo HEFのエクスポートでは、INT8量子化を使用してYOLOネットワークをアクセラレーター上に効率的にマッピングします。キャリブレーションデータセットはアクティベーション範囲を推定するものであり、モデルを再トレーニングしたり、コンパイル中にラベルを必要としたりすることはありません。
HailoハードウェアとDataflow Compilerは、INT4、INT8、INT16の精度をサポートしています。Ultralyticsのformat="hailo"パスはINT8でコンパイルし、タスクでより広い範囲が必要な場合は16ビットアクティベーション(a16)を適用します。
dataを省略すると、Ultralyticsはタスク固有の軽量なキャリブレーションデータセットを使用します。たとえば、検出にはCOCO128、セマンティックセグメンテーションにはcityscapes8、深度推定にはdepth8を使用します。高密度深度ヘッドはキャリブレーションドメインの影響を特に受けやすく、深度モデルを無関係な検出画像でキャリブレーションすると予測マップが平坦になり、ドメイン内のより大規模なセットを使用すると忠実度が向上します。カスタムコンピュータビジョンモデルでは、dataにデータセットYAMLを指定して、コンパイラーが実際のデプロイメントドメインを代表する画像を認識できるようにします。
model.export(format="hailo", name="hailo8", data="my_dataset.yaml")fractionは、キャリブレーションに使用する割合または画像数を選択します。[train, val, test]のリストは各splitの上限を指定し、2項目のリストではtestが完全な状態になり、0はtestをスキップします。画像を増やす効果があるのは、それらがデプロイメントドメインを代表している場合に限られます。ドメイン外の画像は量子化精度を低下させ、最適化時間を増加させる可能性があります。INT8 HEFの精度が元のPyTorchモデルを下回る場合は、モデルやランタイム設定を変更する前に、まずキャリブレーションデータを改善してください。
モデルファミリー別の精度に関する期待値#
ドメイン内キャリブレーション(COCO128、128画像)を使用してHailo-8Lで測定した場合、INT8 HEFのエクスポートでは、同じ評価プロトコルにおけるPyTorchのmAP50のうち、以下の割合が維持されます。
| モデル | mAP50維持率 | 注記 |
|---|---|---|
| YOLOv8n | ~100% | オンチップNMSを備えたDFLヘッド |
| YOLO11n | ~96% | バックボーンのAttentionブロックはINT8の影響をより受けやすいです |
| YOLO26n | ~93% | エンドツーエンドのヘッドとAttention。信頼度に関する注記を参照してください |
維持率は、同じ信頼度しきい値で両方のモデルを比較します。YOLOv8とYOLO11のHEFでは、エクスポート時のconf(デフォルトは0.25)がオンチップNMSに組み込まれるため、デフォルトの低いしきい値でPyTorchベースラインと検証すると、適合率-再現率曲線のより大きな部分が統合され、量子化による差が過大評価されます。
検出以外にも、セグメンテーション、ポーズ、OBB、分類のエクスポーター・パスを、同じHailo-8L(DFC 3.33、HailoRT 4.23)で検証しました。各INT8 HEFを、ドメイン内キャリブレーションを使用して、同じ検証splitにおける対応するPyTorchチェックポイントと比較しました。
| タスク | メトリック(検証split) | YOLOv8n | YOLO11n |
|---|---|---|---|
| インスタンスセグメンテーション | マスクmAP50維持率(COCO128-seg) | 98.0% | 93.6% |
| ポーズ | ボックスmAP50維持率(COCO8-pose) | 98.1% | 90.8% |
| 指向性バウンディングボックス | mAP50維持率(DOTA128) | ~100% | 96.9% |
| 分類 | top-1維持率(ImageNet val) | 92.6% | 95.4% |
セグメンテーション、ポーズ、OBBは各タスクのデフォルトのドメイン内セット(COCO128-seg、COCO8-pose、DOTA128)でキャリブレーションし、分類はImageNet100でキャリブレーションしました。これらのデフォルト設定から、2つの注意点が得られます。COCO8-poseはわずか8画像であるため、ポーズの結果は目安として扱い、本番環境ではより大きなdata=を渡してください。また、DOTA8では両モデルのmAP50がほぼ100%で飽和するため、OBBはDOTA128で評価しています。分類はYOLO11がYOLOv8より高い維持率を示す唯一のタスクです。他のタスクでは、YOLO11のAttentionバックボーンがINT8の影響をより受けやすくなっています。
デバイス測定から、3つの実践的なルールが得られます。
- 常にドメイン内でキャリブレーションしてください。 ドメイン外の画像によるファインチューニングは、ファインチューニングを完全に無効にすることと同等です。1,238枚のドメイン外画像でキャリブレーションしたYOLO26nは、ファインチューニングなしでコンパイルしたモデルと同じ精度(85.7%)を維持します。大規模なドメイン外セットよりも、小規模なドメイン内セットの方が有効です。
- YOLO26のデプロイメントでは
confを約0.05下げてください。 量子化によりYOLO26のスコアは平均で約0.05低下するため、PyTorchで調整したしきい値をHEFに適用すると有効な検出が失われます。デバイス上でconf=0.20を使用すると、conf=0.25におけるPyTorchの検出数と一致します。さらに少し(conf=0.15前後)下げると、信頼度の低い検出が増える代わりに、残っているmAP50の差がほぼすべて回復します。量子化では検出の約20%の順位も入れ替わります。これはどのしきい値でも元に戻せない恒久的な順序の変化ですが、その入れ替えによって低いしきい値でのmAP50回復が妨げられることはありません。 - Attentionによるペナルティは、Hailo-8/8L(DFC 3.33)では構造的なものです。 Attentionブロックは、コンパイラーが提供するすべてのモードでINT8アクティベーション入力を維持する
matmul演算にコンパイルされます。このグラフでは16ビット出力モードは割り当てに失敗し、周辺レイヤーの精度を上げても改善しません。これは、matmulが入力をいずれにせよINT8に再量子化するためです(depthwise畳み込みと出力畳み込みを16ビットで保護しても、テストではmAPが変化しませんでした)。精度を優先し、モデルを置き換え可能な場合、この環境では現在YOLO11の方がYOLO26より適切に量子化されます。新しいHailo世代(DFC 5.x)では、より多くの混合精度オプションが提供されるため、結果が異なる可能性があります。
エクスポートされたアーティファクト#
エクスポートすると、デプロイ可能なHEFとUltralyticsメタデータを含むディレクトリが作成されます。
yolo11n_hailo_model/
├── yolo11n.hef
├── metadata.yaml
└── nms_config.json*.hefは、HailoRTが読み込むコンパイル済みモデルです。metadata.yamlは、モデル名、タスク、入力サイズ、stride、Hailoターゲット情報を保持します。nms_config.jsonは、YOLOv8およびYOLO11の検出モデル用に生成されたHailoRT NMS設定を記録します。YOLO26の検出および検出以外のすべてのタスク(セグメンテーション、セマンティック、深度、分類、ポーズ、OBB)では、このファイルを使用しません。
中間ONNXグラフはコンパイル後に削除されます。
Hailoハードウェアで推論を実行する#
ターゲットデバイスにHailoRTをインストールします。Raspberry Pi AI HAT+およびAI HAT+ 2のユーザーは、Raspberry Pi AIソフトウェアガイドに従ってください。Raspberry Pi OSでは2つのパッケージセットを同時にインストールできないため、ハードウェアに一致するブロックのみを実行してから再起動してください。
AI HAT+(Hailo-8 / Hailo-8L)の場合:
sudo apt install dkms
sudo apt install hailo-all
sudo rebootAI HAT+ 2(Hailo-10H、Raspberry Pi OS Trixie以降)の場合:
sudo apt install dkms
sudo apt install hailo-h10-all
sudo reboot再起動後、アクセラレーターが検出されたことを確認します。
hailortcli fw-control identifyhailo-allおよびhailo-h10-allパッケージは、Raspberry Pi OS上でのみHailoRTをインストールします。それ以外のホストでは、DFCと同じ入手元であるHailo Developer ZoneからHailoRTパッケージをダウンロードしてインストールしてください。
完全なエクスポートディレクトリをデバイスにコピーし、metadata.yamlがHEFの隣に残るようにします。UltralyticsはHailoRTを使用して、エクスポートされたディレクトリ上でpredictとvalを直接実行します。
from ultralytics import YOLO
model = YOLO("yolo11n_hailo_model")
results = model.predict("path/to/image.jpg")検出モデルの場合、バックエンドはYOLOv8およびYOLO11のHailoRT NMS出力を変換し、YOLO26のone-to-one出力を自動的にデコードします。生のセグメンテーション、ポーズ、OBBテンソルをデコードし、オンチップの分類確率を返します。また、Hailo-8/8Lおよびすべての単一クラスヘッドではホスト側のリダクションを通じて、Hailo-10H/15のマルチクラスヘッドではオンチップのArgMaxを通じて、セマンティッククラスマップを生成します。TAPPAS、GStreamer、Raspberry Piのpicamera2.devices.Hailoヘルパーは、アプリケーション固有のパイプラインでも引き続き使用できます。
GStreamerデプロイメントでは、HEFをhailonetに渡します。
gst-launch-1.0 filesrc location=video.mp4 ! decodebin ! videoconvert ! \
hailonet hef-path=yolo11n_hailo_model/yolo11n.hef ! \
hailofilter function-name=yolov8 ! hailooverlay ! autovideosinkHailoデプロイメントオプション#
HEFは、複数のHailoランタイムインターフェースで共通して使用できる、同一のデプロイ可能なモデルアーティファクトです。アプリケーションに適したインターフェースを選択してください。
| ランタイムオプション | 最適な用途 |
|---|---|
| HailoRT PythonまたはC/C++ API | カスタムアプリケーションと推論の直接制御 |
Raspberry Piのpicamera2.devices.Hailo | Raspberry Pi上のCamera Moduleプロジェクト |
| GStreamerおよびHailoアプリケーション | リアルタイム動画ストリームと多段パイプライン |
hailortcli | デバイスチェック、HEF検査、ベンチマーク |
アプリケーションでUltralyticsのクラス名、入力サイズ、stride、その他のモデル情報が必要な場合は、metadata.yamlをHEFと一緒に保持してください。HEF自体は、カメラキャプチャ、可視化、トラッキング、アラート、ストレージに関するアプリケーションレベルのロジックを置き換えるものではありません。
HailoデバイスとHEFを検証する#
カメラや動画パイプラインを統合する前に、ランタイムとアクセラレーターを個別に検証します。
hailortcli fw-control identify
hailortcli parse-hef yolo11n_hailo_model/yolo11n.hefデバイスのみのパフォーマンス測定では、Hailo推論を動画デコード、画像リサイズ、描画、アプリケーションI/Oから分離できます。エンドツーエンドのレイテンシやフレーム毎秒を見積もる場合は、完全なアプリケーションを別途測定してください。
Hailoとその他のYOLOエクスポート形式の比較#
モデルを実行するハードウェアに基づいてエクスポート形式を選択してください。HEFはハードウェア固有であり、最終デバイスにすでにHailoアクセラレーターが搭載されている場合に選択するもので、汎用的なエッジ形式や自動的に最速となる形式ではありません。
| デプロイメントターゲットまたは優先事項 | 推奨されるUltralytics形式 | Hailoとの比較 |
|---|---|---|
| 既存のHailo NPUまたはRaspberry Pi HAT | Hailo HEF(format="hailo") | インストール済みのHailoアクセラレーターとHailoRTスタックを使用します |
| 新しい省電力型M.2またはSBC NPU | DeepX | より高いYOLOパフォーマンスと優れたワット当たり性能を求める場合の第一候補です |
| 高スループット、マルチストリームのエッジNPU | Axelera | 新しいアクセラレーターハードウェアで、より高いストリーム密度とスループットを評価します |
| NVIDIA GPU | TensorRT | 個別のNPUではなく、FP16およびINT8オプションを備えたNVIDIA GPUカーネルを使用します |
| Intel CPU、GPU、またはNPU | OpenVINO | Intelシステムにすでに統合されているアクセラレーターを対象にします |
| Appleハードウェア | CoreML | ネイティブAppleランタイムを通じてApple Neural Engine、GPU、CPUを使用します |
| Qualcomm Snapdragon NPU | QNN | 外部アクセラレーターを必要とせず、QualcommのオンデバイスNPU向けにコンパイルします |
| Rockchip NPU | RKNN | 手頃な価格のSBCや組み込みシステムで広く使用されています |
| Ambarella CVflow SoC | Ambarella | Ambarellaのカメラおよび組み込みビジョンSoC向けにコンパイルします |
| Raspberry Pi AI Camera | Sony IMX500 | ホストに接続されたHailoアクセラレーターではなく、カメラセンサー内でネットワークを実行します |
| モバイルまたは組み込みCPU/GPU | NCNN | 専用の対応NPUを利用できない場合に、軽量でポータブルなランタイムを提供します |
| ポータブルなクロスランタイムデプロイメント | ONNX | ランタイム間のポータビリティを維持します。HailoRTでONNXを実行するには、あらかじめHEFにコンパイルする必要があります |
NPUであるという理由だけで、Hailoがより高速または高い電力効率を持つと想定しないでください。新しいM.2デプロイメントでは、DeepXがより高いYOLOパフォーマンスと優れたワット当たり性能の有力候補であり、Axeleraは大幅に高いマルチストリームスループットを対象としています。Rockchipは、SBCや組み込みシステムで広く使われている低コストの選択肢です。ベンダーが示すTOPSや電力値は、アプリケーションのベンチマークとして直接比較できません。そのため、ハードウェアを購入する前に、候補デバイス上で同じYOLOチェックポイント、入力サイズ、精度、ホスト、完全な動画パイプラインを検証してください。
Hailoのコンピュータビジョン性能を最適化する#
モデルとパイプラインの選択は、多くの場合、コンパイラーフラグよりも重要です。
- 小さなYOLOモデルから始め、精度上必要な場合にのみモデルサイズを大きくしてください。
- アプリケーションに重要なオブジェクトを維持できる範囲で、最も低い固定
imgszを選択してください。 - 可能な場合は、実際のカメラと環境から取得したキャリブレーション画像を使用してください。
- 推論のたびにHEFを開き直すのではなく、フレーム間でHailoネットワークをアクティブな状態に保ってください。
- デバイス推論時間を、前処理、動画デコード、後処理、可視化、ネットワークI/Oから分離してください。
- 継続的な動画ワークロードには、GStreamerなどのストリーミングパイプラインを使用してください。
- 本番環境で使用するものとまったく同じアクセラレーターとHailoRTバージョンで、エクスポートしたHEFを検証してください。
エクスポート引数#
| 引数 | 型 | デフォルト | 説明 |
|---|---|---|---|
name | str | hailo8l | 対象のHailoアクセラレータアーキテクチャ |
imgsz | int、list | 640 | 固定モデル入力サイズ |
data | str | None | キャリブレーションデータセットのYAMLです。分類の場合は、代わりにデータセットディレクトリまたは組み込みデータセット名を指定します。省略すると、Ultralyticsがタスク固有のキャリブレーションデータセットを選択します。 |
fraction | float、int、またはlist | 1.0 | キャリブレーションサブセットを、比率、画像枚数、または [train, val, test] の比率/枚数として指定します。2項目のリストでは、test はすべて使用され、0 はスキップされます。 |
quantize | int | 8 | HailoエクスポートではINT8量子化が使用されます |
simplify | bool | True | 中間ONNXグラフを簡略化します |
conf | float | 0.25 | YOLOv8/YOLO11 HailoRT NMS信頼度しきい値 |
iou | float | 0.7 | YOLOv8/YOLO11 HailoRT NMS IoUしきい値 |
検出エクスポートでは、YOLOv8とYOLO11にHailoRT NMSが適用され、YOLO26ではNMSなしの1対1出力が維持されます。セグメンテーション、ポーズ、OBBでは生のヘッドテンソルが使用され、分類ではチップ上の確率が返されます。セマンティックセグメンテーションでは、Hailo-8/8L上では生のロジットが返され、マルチクラスのHailo-10H/15ヘッドでは、すべてのシングルクラスヘッドまたは組み込み済みのクラスマップが返されます。深度推定では生の深度ロジットが返され、推論時にUltralyticsがこれをメートル単位の深度マップにデコードします。end2end は渡さないでください。明示的なオーバーライドは拒否されます。動的シェイプ、組み込みのUltralytics NMS、FP16、FP32はサポートされていません。
Hailoエクスポートのトラブルシューティング#
Hailo Dataflow Compilerのインポートエラー#
エクスポートで hailo_sdk_client が見つからないと報告された場合は、Ultralyticsと同じPython環境に、対象ハードウェア世代用のDFC wheelをインストールしてください。Hailo-8/8LとHailo-10H/15では、異なるコンパイラ世代が必要です。
サポート対象外のオペレーティングシステムまたはアーキテクチャ#
HEFのコンパイルはLinux x86_64でサポートされています。ローカルコンピューターがmacOS、Windows、Raspberry Pi、またはその他のARMシステムの場合は、Ultralytics Platformからエクスポートするか、互換性のあるワークステーションを使用してください。
エクスポートに時間がかかる#
DFCの最適化は最も負荷の高いステージです。コンパイル時間は、モデルサイズ、入力解像度、キャリブレーションデータに応じて増加します。サポート対象のGPUを使用すると最適化を高速化できますが、CPUのみのコンパイルでは大幅に時間がかかる場合があります。
量子化モデルの精度が低下する#
本番環境の入力に類似し、重要なオブジェクト、スケール、照明条件、背景を含むキャリブレーション画像を使用してください。デプロイ前に、同じ検証セット上で元のPyTorchモデルとエクスポートしたHEFを比較してください。適切なキャリブレーションを行っても、モデルファミリーによっては中程度の差が残ります。測定済みのベースラインについては、モデルファミリー別の精度の目安を参照してください。
HEFをデバイスに読み込めない#
name が実際のHailoアーキテクチャに適合していること、またデバイスドライバー、ファームウェア、HailoRTパッケージに互換性があることを確認してください。hailortcli parse-hef でアーティファクトを検査し、hailortcli fw-control identify でアクセラレータを確認してください。
出力の解析結果が正しくないように見える#
Ultralyticsが対応するYOLOv8、YOLO11、またはYOLO26の後処理パスを選択できるように、metadata.yaml をHEFの隣に配置してください。カスタムHailoRTアプリケーションでも、エクスポートしたモデルファミリーに後処理を一致させる必要があります。
まとめ#
Ultralytics Hailoエクスポートを使用すると、トレーニング済みYOLOモデルからデプロイ可能なHEFへ直接変換できます。
- YOLOv8、YOLO11、またはYOLO26の検出モデルまたは分類モデル、YOLOv8/YOLO11のセグメンテーション、ポーズ、またはOBBモデル、あるいはYOLO26のセマンティックセグメンテーションまたは深度推定モデルを読み込みます。
format="hailo"でエクスポートし、対象アーキテクチャを選択します。- 対応するDFCを使用してローカルでキャリブレーションとコンパイルを行うか、Ultralytics Platformでマネージドエクスポートを使用します。
- HEFと
metadata.yamlをHailo搭載エッジデバイスにコピーします。 - HailoRT、Raspberry Pi Picamera2、またはGStreamerビデオパイプラインで推論を実行します。
その他のコンピュータービジョンのデプロイ先については、エクスポートモード、ベンチマークモード、インテグレーションガイドを参照してください。関連するハードウェアガイドには、DeepX、Axelera、ONNX、OpenVINO、TensorRT、NCNN、RKNN、Sony IMX500、Qualcomm QNNがあります。
FAQ#
いいえ。サポート対象のLinux x86_64システムでDFCを実行し、生成されたHEFをRaspberry Piにデプロイしてください。
サポート対象のGPUを使用すると、DFCの最適化時間を大幅に短縮できます。CPUコンパイルも可能ですが、完了までに大幅に長い時間がかかる場合があります。
直接エクスポートでは、標準のYOLOv8、YOLO11、またはYOLO26検出ヘッドを備えた検出モデル、YOLOv8/YOLO11のセグメンテーション、ポーズ、OBBモデル、YOLOv8/YOLO11/YOLO26の分類モデルがサポートされます。これらの標準アーキテクチャから構築されたカスタムトレーニングモデルも含まれます。YOLO26のセマンティックセグメンテーションモデルと深度推定モデルもサポートされています。YOLO26のインスタンスセグメンテーション、ポーズ、OBB、ならびにYOLOv10、YOLO-World、YOLOE、RT-DETRは、未検証のHEFを生成するのではなく拒否されます。
はい。カスタムの
.pt重みを使用して同じformat="hailo"コマンドを実行し、代表的なINT8キャリブレーション用のトレーニングデータセットYAMLをdataで渡してください。クラス名とクラス数はモデルメタデータから読み取られます。各HEFは固定入力シェイプ用にコンパイルされるため、1つのHEFを動的にリサイズすることはできません。実際には、ホスト上で入力をコンパイル済みサイズにリサイズするか、必要な解像度ごとに複数のHEFをコンパイルできます。デプロイパイプラインに合わせて、エクスポート時に
imgszを選択してください。YOLO26はNMSなしの1対1検出ヘッドを使用します。Ultralyticsは、YOLOv8とYOLO11で使用されるHailoRTのYOLOv8スタイルNMSを追加するのではなく、これらの出力テンソルを直接コンパイルします。
Hailo Dataflow Compilerは、Linux x86_64ビルドマシン上でモデルをハードウェア固有のHEFに変換および量子化します。HailoRTは、対象デバイス上でそのHEFを読み込み、実行します。
コンパイル済みのHEFをHailoランタイムにデプロイしてください。ONNXはエクスポート中に使用される中間表現であり、コンパイルが正常に完了すると削除されます。
ハードウェア世代に対応するコンパイラwheelをHailo Developer Zoneからダウンロードしてください。コンパイラが必要なのはHEFの作成時のみであり、HailoRTが対象アクセラレータ上で実行します。