Luxonis OAK

Myriad X VPU を搭載した OpenCV AI Kit に Roboflow Train モデルをデプロイします。

The Luxonis OAK(OpenCV AI Kit) 組み込みコンピュータビジョンシステムのデプロイによく使われるエッジデバイスです。

OAKデバイスは、下流アプリケーションの操作を駆動するホストマシンと組み合わせて使用されます。参考として興味深い例を見るには、 LuxonisのユースケースRoboflowのケーススタディ.

ちなみに: まだOAKデバイスをお持ちでない場合は、 Roboflow Storeで購入できます 10%の割引が適用されます。

サポートされるタスク

ホストされたAPIで次のタスクタイプがサポートされています:

タスクタイプ
Luxonis OAKデプロイでサポートされているか

物体検出:

  • RoboflowでトレーニングされたYOLOv8モデル(FastおよびAccurate)

  • RoboflowでトレーニングされたYOLOv11モデル

分類

インスタンスセグメンテーション

セマンティックセグメンテーション

モデルをLuxonis OAKにデプロイする

サポートされているLuxonisデバイスとホスト要件

Roboflow Inference Serverは次のデバイスをサポートしています:

  • OAK-D

  • OAK-D-Lite

  • OAK-D-POE

  • OAK-1(深度なし)

インストール

以下のパッケージをインストールしてください: roboflowoak, depthai, および opencv-python パッケージ:

pip install roboflowoak
pip install depthai
pip install opencv-python

これでカスタムトレーニング済みのRoboflowモデルを実行するために roboflowoak パッケージを使用できます。

推論の実行:デプロイ

Depth機能のないOAKデバイスへデプロイする場合は、インスタンス化(作成)時に depth=False を設定してください。 rf オブジェクト。Depth付きのOAKにはモデル名に「D」が付いています(例:OAK-D、OAK-D-Lite)。

また、次をコメントアウトしてください max_depth = np.amax(depth)cv2.imshow("depth", depth/max_depth)

from roboflowoak import RoboflowOak
import cv2
import time
import numpy as np

if __name__ == '__main__':
    # RoboflowOakモジュールでオブジェクト(rf)をインスタンス化する
    rf = RoboflowOak(model="YOUR-MODEL-ID", confidence=0.05, overlap=0.5,
    version="YOUR-MODEL-VERSION-#", api_key="YOUR-PRIVATE_API_KEY", rgb=True,
    depth=True, device=None, blocking=True)
    # モデルを実行し、検出結果を含むビデオ出力を表示する
    while True:
        t0 = time.time()
        # rf.detect() 関数がモデル推論を実行します
        result, frame, raw_frame, depth = rf.detect()
        predictions = result["predictions"]
        #{
        #    predictions:
        #    [ {
        #        x:(中央)、
        #        y:(中央)、
        #        width:
        #        height:
        #        depth: ###->
        #        confidence:
        #        class:
        #        mask: {
        #    ]
        #}
        #frame - 前処理後のフレーム(予測付き)
        #raw_frame - OAKからの元のフレーム
        #depth - raw_frameの深度マップ。中心カメラに中心補正されています
        
        # timing: ベンチマーク目的の計測
        t = time.time()-t0
        print("FPS ", 1/t)
        print("PREDICTIONS ", [p.json() for p in predictions])

        # 深度計算のためのパラメータ設定
        # DepthなしのOAKを使用している場合は次の2行をコメントアウトしてください
        max_depth = np.amax(depth)
        cv2.imshow("depth", depth/max_depth)
        # 動画フィードを連続フレームとして表示する
        cv2.imshow("frame", frame)
    
        # OAK推論ウィンドウを閉じる/推論を停止する方法:CTRL+q または CTRL+c
        if cv2.waitKey(1) == ord('q'):
            break

以下のコードを入力してください(プレースホルダのテキストをPythonスクリプトのパスに置き換えた後):

# ウィンドウを閉じる(中断または推論終了)には、キーボードで CTRL+c を入力してください
python3 /path/to/[YOUR-PYTHON-FILE].py

ホストデバイスにApple MacBook Air(M1)を使用した場合の推論速度(ミリ秒)は平均で約15ms、つまり約66FPSでした。 注意:OAKで使用するホストデバイスはFPSに大きく影響します。システムを構築する際はこれを考慮してください。

トラブルシューティング

OAKデバイスのセットアップで問題が発生している場合、Luxonisのインストール手順を参照し、RGBの例が正常に実行できることを確認してください( Luxonisのインストール)。また、ヘルプが必要な場合は Roboflowフォーラム.

で投稿することもできます。

Last updated

Was this helpful?