Ultralytics YOLO27:

Ultralytics YOLOのLuxonis OAKへのデプロイ#

Luxonis OAKカメラでは、Luxonisのツールを使って変換した後、Ultralytics YOLOモデルをデバイス上で実行できます。これは手動で行うデプロイワークフローであり、LuxonisはUltralyticsのネイティブなmodel.export(format="...")ターゲットではありません。

このガイドではRVC2およびRVC4デバイスを扱います。カメラのプラットフォームに合わせて変換してください。RVC2とRVC4の成果物は相互に使用できません。対応するモデルファミリーとタスクは異なる場合があるため、変換する前にLuxonis Toolsの対応表をご確認ください。

yolo26n.ptなど、対応するYOLOの.ptチェックポイント、または独自のトレーニング済みモデルを使用します。変換後のNN Archiveには、モデルとランタイムのメタデータがまとめられています。

Luxonis Hubを使ったクラウド変換#

  1. Luxonis Hubにサインインし、クイック変換を開きます。
  2. YOLOを選択し、RVC2またはRVC4を選んで、.ptチェックポイントをアップロードします。
  3. 入力形状と変換パラメーターを設定し、変換を実行します。
  4. 完了後、以下の推論例で使う変換済みモデルの識別子をコピーするか、NN Archiveをダウンロードします。

自動変換またはカスタムRVC4キャリブレーションデータには、HubAI SDKを使用してください。Python 3.10以降の環境で、インストール手順に従ってください。詳細な変換手順では、レジストリ管理と事前定義済みのキャリブレーションデータセットを利用できます。

ToolsおよびModelConverterを使ったローカル変換#

Python 3.10以降とDockerを使用します。依存関係の制約を含め、上流のセットアップ手順に従ってLuxonis Toolsをインストールします。Toolsは、Luxonisで解析できるようにYOLOの出力を準備します。一般的なONNXエクスポートでは、この手順を代替できません。

# Export the checkpoint to an ONNX NN Archive
tools yolo26n.pt --imgsz "640 640" --output-dir output

# Install the target-platform converter
pip install modelconv==0.6.0

Toolsは、output/内のタイムスタンプ付きディレクトリにyolo26n.tar.xzを書き込みます。以下の例のパスをそのファイルに置き換えてください。RVC4のINT8変換では、calibration_images/にデプロイ環境を代表する画像を用意してください。キャリブレーションデータの要件をご覧ください。

modelconverter convert rvc4 --path output/yolo26n_20260807_104858/yolo26n.tar.xz \
  calibration.path calibration_images/

RVC2の場合は、rvc4の代わりにrvc2を使用してください。FP16変換にキャリブレーション画像は必要ありません。推論には、中間のONNXアーカイブではなく、ModelConverterの出力ディレクトリにある生成済みのコンパイル済みNN Archiveを使用してください。出力パスとプラットフォーム固有のオプションについては、ModelConverterをご覧ください。

OAKカメラで推論を実行#

対応するOAKカメラを接続し、Python環境にDepthAIをインストールします。

pip install depthai==3.9.0

プライベートHubモデルの場合は、スクリプトを実行する前にDEPTHAI_HUB_API_KEYにLuxonis Hub APIキーを設定してください。your-model-identifierをHubの識別子に置き換えるか、ローカルのコンパイル済みNN Archiveを使用してください。

import depthai as dai

model = "your-model-identifier"
# または、変換済みのローカル成果物を使用します。
# model = dai.NNArchive("path/to/model.rvc4.tar.xz")

visualizer = dai.RemoteConnection()

with dai.Pipeline() as pipeline:
    camera = pipeline.create(dai.node.Camera).build()
    detection = pipeline.create(dai.node.DetectionNetwork).build(camera, model)

    visualizer.addTopic("rgb", detection.passthrough, group="RGB")
    visualizer.addTopic("detections", detection.out, group="RGB")

    pipeline.start()
    visualizer.registerPipeline(pipeline)

    while pipeline.isRunning():
        if visualizer.waitKey(1) == ord("q"):
            pipeline.stop()

http://localhost:8082を開くと、RGBストリームと検出結果を表示できます。DetectionNetworkは、対応するインスタンスセグメンテーションモデルとポーズモデルもサポートしています。セマンティックセグメンテーションや分類など、ほかのタスクについては、タスク別の推論ガイダンスに従ってください。

ステレオ深度パイプラインについては、空間検出の例をご覧ください。ベンチマークガイドを参考に、対象カメラでモデルを測定してください。スループットは、モデル、入力サイズ、精度、パイプライン構成によって異なります。

よくある質問#

  • いいえ。LuxonisはUltralyticsのネイティブなエクスポート形式ではありません。.ptチェックポイントをLuxonis HubまたはローカルのToolsおよびModelConverterワークフローで変換し、生成されたNN ArchiveをDepthAIで実行してください。

  • いいえ。RVC2とRVC4の成果物は異なるハードウェア向けにコンパイルされており、相互に使用できません。そのため、プラットフォームごとに変換してください。

  • 対応状況はUltralyticsではなくLuxonisのツールによって決まります。変換する前にLuxonis Toolsの対応表を確認し、検出以外のモデルの実行方法についてはタスク別の推論ガイダンスをご覧ください。

コントリビューター

コメント