クイックスタートガイド
クイックスタートガイド
DepthAI SDKは、Luxonisデバイスを使用してコンピュータビジョンアプリケーションを構築するための強力なツールです。このクイックスタートガイドは、SDKを使い始めるのに役立ちます。
インストール
DepthAI SDKはPyPIで入手可能です。以下のコマンドでインストールできます:
# Linux と macOS
python3 -m pip install depthai-sdk
# Windows
py -m pip install depthai-sdk
カメラを使う
OakCameraクラスはDepthAI SDKの基本的な部分で、OAKデバイスの各機能にアクセスするための高レベルなインターフェースを提供します。このクラスは、OAKカメラからビデオをキャプチャし、ビデオストリーム上でニューラルネットワークを実行し、結果を可視化するパイプラインの作成を簡素化します。
OakCameraを使用すると、create_camera()やcreate_stereo()でカラーストリームと深度ストリームを簡単に作成でき、create_nn()で事前に訓練されたニューラルネットワークを追加できます。さらに、callback()でパイプラインにカスタムコールバックを追加し、record()で出力を記録することができます。
ブロック動作
OakCameraオブジェクトを起動する際に、start()がメインスレッドをブロックするかどうかを指定できます。デフォルトでは、start()はメインスレッドをブロックしないので、oak.poll()でカメラをポーリングする必要があります。
from depthai_sdk import OakCamera
with OakCamera() as oak:
color = oak.create_camera('color', resolution='1080p')
oak.visualize([color])
oak.start(blocking=False)
while oak.running():
oak.poll()
# this code is executed while the pipeline is running
別の方法として、blocking引数をTrueに設定すると、ループして継続的にカメラをポーリングし、残りのコードをブロックします。
from depthai_sdk import OakCamera
with OakCamera() as oak:
color = oak.create_camera('color', resolution='1080p')
oak.visualize([color])
oak.start(blocking=True)
# this code doesn't execute until the pipeline is stopped
カラーストリームと深度ストリームの作成
カラーストリームを作成するには、OakCamera.create_camera()を使用します。このコードはセンサーの名前を引数として受け取り、CameraComponentオブジェクトを返します。
サポートされるセンサーの全リストは、color; left; right; cam_{socket},color, cam_{socket},monoです。
{socket}はOAK デバイス上のソケットを表すAからHまでの文字です。FFCデバイスでは通常カスタムソケット名が使用されます。
ストリームを可視化するには、OakCamera.visualize()を使用します。このコードは出力のリストを受け取り、それらを表示します。各コンポーネントには独自の出力があり、コンポーネントのセクションで確認できます。
以下は、カラーストリームと深度ストリームを作成し、ストリームを視覚化する例です:
from depthai_sdk import OakCamera
with OakCamera() as oak:
color = oak.create_camera('color', resolution='1080p')
stereo = oak.create_stereo(resolution='800p') # works with stereo devices only!
oak.visualize([color, stereo])
oak.start(blocking=True)
物体検出用YOLOニューラルネットワークの作成
DepthAI SDKは、オブジェクト検出、ポーズ推定、セマンティックセグメンテーション、およびその他のタスクに使用できる、事前にトレーニングされたニューラルネットワークを多数提供しています。ニューラルネットワークを作成するには、OakCamera.create_nn()を使用し、引数としてニューラルネットワークの名前を指定します。
OakCamera.create_camera()と同様に、OakCamera.create_nn() は、NNComponentオブジェクトを返します。
以下は、物体検出用のYOLOニューラルネットワークを作成し、その結果を視覚化する例です:
from depthai_sdk import OakCamera
with OakCamera() as oak:
color = oak.create_camera('color', resolution='1080p')
# List of models that are supported out-of-the-box by the SDK:
# https://docs.luxonis.com/projects/sdk/en/latest/features/ai_models/#sdk-supported-models
yolo = oak.create_nn('yolov6n_coco_640x640', input=color)
oak.visualize([color, yolo])
oak.start(blocking=True)
カスタムコールバックの追加
コールバックはカメラやニューラルネットワークから新しいフレームが利用可能になったときに呼び出される関数です。OakCameraはOakCamera.callback()を使用してパイプラインにカスタムコールバックを追加する機能を提供します。
以下は、オブジェクト検出用にYOLOニューラルネットワークを作成し、検出されたオブジェクトの数を表示する例です:
from depthai_sdk import OakCamera
def print_num_objects(packet):
print(f'Number of objects detected: {len(packet.detections)}')
with OakCamera() as oak:
color = oak.create_camera('color', resolution='1080p')
yolo = oak.create_nn('yolov6n_coco_640x640', input=color)
oak.callback(yolo, callback=print_num_objects)
oak.start(blocking=True)
レコーディング
DepthAI SDKは出力を記録するためのシンプルなAPIを提供します。OakCamera.record()は出力のリストと出力ファイルへのパスを受け取ります。
以下は、物体検出用のYOLOニューラルネットワークを作成し、結果を記録する例です:
from depthai_sdk import OakCamera
from depthai_sdk.record import RecordType
with OakCamera() as oak:
color = oak.create_camera('color', resolution='1080p')
yolo = oak.create_nn('yolov6n_cocoo_640x640', input=color)
oak.record([color, yolo], path='./records', record_type=RecordType.VIDEO)
oak.start(blocking=True)
出力を記録するためにSDKによってサポートされるいくつかのフォーマットがあります:
depthai_sdk.record.RecordType.VIDEO- ビデオファイルを記録します。depthai_sdk.record.RecordType.MCAP- MCAPファイルを記録します。depthai_sdk.record.RecordType.BAG- ROSバッグファイルを記録します。
出力の同期
複数の出力を同期させる必要があるケース、たとえば、カラーストリームとニューラルネットワーク出力を同時に記録する場合などでは、OakCamera.sync()を使用します。OakCamera.sync()は出力のリストを受け取り、指定されたコールバック関数に同期された出力を返します。
以下は、カラーストリームとYOLOニューラルネットワーク出力を同期させる例です:
from depthai_sdk import OakCamera
def callback(synced_packets):
print(synced_packets)
with OakCamera() as oak:
color = oak.create_camera('color', resolution='1080p')
yolo = oak.create_nn('yolov6n_coco_640x640', input=color)
oak.sync([color.out.main, yolo.out.main], callback=callback)
oak.start(blocking=True)
エンコードされたストリーム
Luxonisデバイスは、H.264、H.265、MJPEGフォーマットへの出力のオンデバイスエンコーディングをサポートしています。エンコードを有効にするには、OakCamera.create_camera()またはOakCamera.create_stereo()にencode引数を指定します。encode引数に指定できる値はh264、h265、mjpegです。
各コンポーネントはそれぞれエンコードされた出力を持ちます:
CameraComponent.Out.encodedStereoComponent.Out.encodedNNComponent.Out.encoded
以下は、エンコードされたカラー、YOLOニューラルネットワーク、視差ストリームを視覚化した例です:
from depthai_sdk import OakCamera
with OakCamera() as oak:
color = oak.create_camera('color', resolution='1080p', fps=20, encode='h264')
stereo = oak.create_stereo('400p', encode='h264')
yolo = oak.create_nn('yolov6nr3_coco_640x352', input=color)
oak.visualize([color.out.encoded, stereo.out.encoded, yolo.out.encoded])
oak.start(blocking=True)
質問がありますか? 技術サポートやその他の質問については、ディスカッションフォーラムへどうぞ。
出典 : Luxonisの資料 - Quickstart
https://docs.luxonis.com/projects/sdk/en/latest/quickstart/
*このガイドはLuxonis社の許可を得て、スイッチサイエンスが翻訳しています。