# Luxonis OAK

その [Luxonis OAK (OpenCV AI Kit)](https://shop.luxonis.com/) は、組み込みコンピュータビジョンシステムのデプロイに広く使用されているエッジデバイスです。

OAK デバイスは、下流のアプリケーションの動作を制御するホストマシンと組み合わせて使用されます。ぜひ刺激的な参考例として、 [Luxonis のユースケース](https://docs.luxonis.com/en/latest/#example-use-cases) および [Roboflow のケーススタディ](https://blog.roboflow.com/tag/case-studies/).

**をご覧ください。** ちなみに： [まだ OAK デバイスをお持ちでない場合は、](https://store.roboflow.com/) Roboflow Store 経由で購入

### すれば、10% 割引を受けられます。

タスクサポート

| 以下のタスクタイプがホスト型 API でサポートされています：                                                                                       | タスクタイプ |
| --------------------------------------------------------------------------------------------------------------------- | ------ |
| <p>Luxonis OAK デプロイでサポートされています</p><ul><li>オブジェクト検出：</li><li>Roboflow で学習された YOLOv8 モデル（Fast と Accurate の両方）</li></ul> | ✅      |
| 分類                                                                                                                    |        |
| インスタンスセグメンテーション                                                                                                       |        |
| セマンティックセグメンテーション                                                                                                      |        |

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

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

Roboflow Inference Server は以下のデバイスをサポートしています：

* OAK-D
* OAK-D-Lite
* OAK-D-POE
* OAK-1（深度なし）

#### インストール

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

```python
pip install roboflowoak
pip install depthai
pip install opencv-python
```

これで、 `roboflowoak` パッケージを使って、カスタム学習した Roboflow モデルを実行できます。

#### 推論の実行：デプロイ

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

また、以下をコメントアウトしてください： `max_depth = np.amax(depth)` および `cv2.imshow("depth", depth/max_depth)`

```python
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: (middle),
        #        y:(middle),
        #        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 スクリプトのパスに置き換えた後）

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

Apple Macbook Air（M1）をホストデバイスとして使用した場合、推論速度（ミリ秒）は平均約 15 ms、つまり 66 FPS でした。 ***注意**: OAK と一緒に使用するホストデバイスは FPS に大きな影響を与えます。システムを作成する際はこれを考慮してください。*

#### トラブルシューティング

OAK デバイスのセットアップで問題が発生している場合は、Luxonis のインストール手順を確認し、RGB の例を [Luxonis installation](https://docs.luxonis.com/en/latest/#demo-script)で正常に実行できることを確認してください。また、 [Roboflow Forum](https://discuss.roboflow.com/).

### も参照

* [ステップごとの Luxonis OAK セットアップガイド](https://blog.roboflow.com/opencv-ai-kit-deployment/)
* [M1 Chip 使用時のインストール問題 · Issue #299 · luxonis/depthai · GitHub](https://github.com/luxonis/depthai/issues/299) （depthai SDK）


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.roboflow.com/roboflow/roboflow-jp/deploy/sdks/luxonis-oak.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
