Skip to main content

Jetson Platform ServicesでreComputer上でZero-Shot Detectionを実行する方法

はじめに

CLIPなどの生成AI vision transformerにより、オープンボキャブラリオブジェクト検出が可能なゼロショット検出モデルの構築が可能になりました。つまり、モデルは検出する事前定義されたクラスのセットに制限されません。検出するオブジェクトは、ユーザーによって実行時に設定されます。Zero Shot Detection AIサービスは、ビデオライブストリーム入力でのオープンボキャブラリ検出のためのJetson Servicesを使用した生成AIの迅速な展開を可能にします。Zero Shot Detection AIサービスは、ストリーム入力と検出するオブジェクトを制御するREST APIエンドポイントを公開します。

このwikiでは、reComputer J4012上でZero-Shot Detectionを実行する方法のチュートリアルを提供します。

要件

セットアップ手順を進める前に、システムが以下の前提条件を満たしていることを確認してください:

  • Ubuntu 22.04以降を実行するreComputer J4012 Orin NX 16G。

  • ドライバーバージョン:535.113.01、Jetpack 6.0、CUDAバージョン:12.2

  • JetPackおよび関連するJetsonサービスパッケージがインストールされていることを確認してください。

    sudo apt-get install nvidia-jetpack
    sudo apt install nvidia-jetson-services
  • IPカメラやローカル動画はRTSP経由でストリーミングできます。(RTSPストリーミングには、提供しているNVStreamerチュートリアルの使用を推奨します。)

はじめに

ステップ1: このリンクを使用してNGCからJetsonにアプリケーションパッケージ**zero_shot_detection-1.1.0.tar.gzをダウンロードします:NGC Reference Workflow and Resources。NGCの認証情報を入力する必要があります。ページで、Download**メニュー(右上角)で利用可能なオプションの1つを使用してください:

tar -xvf zero_shot_detection-1.1.0.tar.gz
cd ~/zero_shot_detection/example_1

ステップ 2: ゼロショット検出AIサービスはjetson-ingressjetson-redisサービスを使用します。jetson-ingressサービスを設定して、ゼロショット検出REST APIを公開する必要があります。提供されたデフォルト設定を対応するサービス設定ディレクトリにコピーしてください。

sudo cp config/zero_shot_detection-nginx.conf /opt/nvidia/jetson/services/ingress/config

ステップ 3: 基本サービスを実行します。

sudo systemctl start jetson-monitoring
sudo systemctl start jetson-sys-monitoring
sudo systemctl start jetson-gpu-monitoring

ステップ4: プラットフォームイングレス設定ファイル(監視サービスに使用)内のすべての行が、以下のファイルでコメントアウトされていないことを確認してください:

/opt/nvidia/jetson/services/ingress/config/platform-nginx.conf

ステップ5: APIゲートウェイを起動して監視ダッシュボードにアクセスします。

sudo systemctl restart jetson-ingress
sudo systemctl restart jetson-redis
sudo systemctl restart jetson-vst

ステップ 6: ゼロショット検出AIサービスを開始します。

sudo docker compose up -d

To check if all required containers have started, you can run the following command:

sudo docker ps

RTSP ストリーム入力の追加

まず、ゼロショット検出モデルで使用するRTSPストリームを以下のcurlコマンドで追加できます。ストリーミングにはNVStreamerチュートリアルの使用を推奨します。

  • ステップ 1: 0.0.0.0をあなたのJetson IPに、liveStreamUrlリンクをあなたのRTSPリンクに置き換えて、ターミナルで以下のコマンドを入力してください:

    curl --location 'http://0.0.0.0:5010/api/v1/live-stream' \
    --header 'Content-Type: application/json' \
    --data '{
    "liveStreamUrl": "rtsp://0.0.0.0:31554/nvstream/root/store/nvstreamer_videos/car.mp4"
    }'

注意:curlコマンドの他に、ゼロショット検出サービスが開始されている時にhttp://0.0.0.0:5010/docsで利用可能なAPIドキュメントページを通じて直接REST APIをテストすることもできます。

  • ステップ 2: 最初のステップを実行した後、IDが返されます。このIDを記録して、後続のステップで使用する必要があります。

    {"id": "a782e200-eb48-4d17-a1b9-5ac0696217f7"}

    後でIDを取得するには、以下のコマンドを使用することもできます:

    curl --location 'http://0.0.0.0:5010/api/v1/live-stream'

    IDでストリームを削除するには、以下のコマンドを使用できます:

    curl --location --request DELETE 'http://0.0.0.0:5010/api/v1/live-stream/{id}'

検出クラスの追加

ゼロショット検出モデルは、実行時に検出クラスを更新することができます。このエンドポイントは検出するオブジェクトのリストと関連する閾値を受け取ります。閾値は検出の感度です。高い値は偽陽性を減らします。低い値は偽陽性を増やします。現在このサービスは1つのストリームのみをサポートしていますが、将来的にはこのAPIはマルチストリームサポートを可能にします。

  • ステップ 1: 0.0.0.0をあなたのreComputer IPアドレスに置き換え、objectsを検出する必要があるオブジェクト(最大10個)に変更し、各カテゴリのthresholdsを設定し、前のステップで返されたidを使用してください。コマンドを完成させた後、ターミナルで以下を入力してください:

    curl -X 'POST' \
    'http://192.168.49.101:5010/api/v1/detection/classes' \
    -H 'accept: application/json' \
    -H 'Content-Type: application/json' \
    -d '{
    "objects": [
    "a car", "a people"
    ],
    "thresholds": [
    0.2, 0.04
    ],
    "id": "a782e200-eb48-4d17-a1b9-5ac0696217f7"
    }'

RTSPストリーム結果の表示

検出出力はrtsp://reComputer_ip:5011/outを通じてストリーミングされます。ビデオストリーム出力を可視化するためのPythonスクリプトを提供しています。事前にopencv-pythonライブラリをインストールしてから、以下のPythonスクリプトを実行してください:

  • ステップ 1: opencv-pythonライブラリをインストールします:

    pip install opencv-python
  • ステップ 2: 以下のPythonスクリプトを実行します:

    import cv2
    rtsp_url = "rtsp://reComputer_ip:5011/out"
    cap = cv2.VideoCapture(rtsp_url)
    if not cap.isOpened():
    print("Cannot open RTSP stream")
    exit()
    while True:
    ret, frame = cap.read()
    if not ret:
    print("Failed to retrieve frame")
    break
    cv2.imshow('RTSP Stream', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
    break
    cap.release()
    cv2.destroyAllWindows()

シャットダウン

ゼロショット検出サービスを停止するには、compose.yamlファイルが配置されている同じディレクトリで以下のコマンドを実行してください:

sudo docker compose down

詳細情報

Jetson Platform Servicesを使用したゼロショット検出: https://docs.nvidia.com/jetson/jps/inference-services/zero_shot_detection.html

技術サポート & 製品ディスカッション

私たちの製品をお選びいただき、ありがとうございます!私たちは、お客様の製品体験が可能な限りスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、複数のコミュニケーションチャンネルを用意しています。

Loading Comments...