Roboflow の使い方
この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues
NVIDIA® Jetson デバイスでの Roboflow 推論の使い方
このウィキガイドでは、NVIDIA Jetson デバイス上で動作する Roboflow 推論サーバーを使用して AI モデルを簡単にデプロイする方法を説明します。ここでは、Roboflow Universe を使用して既にトレーニングされたモデルを選択し、そのモデルを Jetson デバイスにデプロイし、ライブウェブカメラストリームで推論を実行します。
Roboflow Inference は、コンピュータビジョンモデルを使用およびデプロイする最も簡単な方法であり、推論を実行するための HTTP Roboflow API を提供します。Roboflow 推論は以下をサポートしています:
- オブジェクト検出
- 画像セグメンテーション
- 画像分類
および CLIP や SAM のような基盤モデル。

前提条件
- Ubuntu ホスト PC(ネイティブまたは VMware Workstation Player を使用した VM)
- reComputer Jetson またはその他の NVIDIA Jetson デバイス
このウィキは、NVIDIA Jetson Orin NX 16GB モジュールを搭載した reComputer J4012 および reComputer Industrial J4012 でテストおよび検証されています。
Jetson に JetPack をフラッシュする
まず、Jetson デバイスに JetPack システムがフラッシュされていることを確認する必要があります。JetPack をデバイスにフラッシュするには、NVIDIA SDK Manager またはコマンドラインを使用できます。
Seeed の Jetson 搭載デバイスのフラッシュガイドについては、以下のリンクを参照してください:
- reComputer J2021 | J202
- reComputer J1020 | A206
- reComputer J4012 | J401
- A203 キャリアボード
- A205 キャリアボード
- A206 キャリアボード
- A603 キャリアボード
- A607 キャリアボード
- Jetson Xavier AGX H01 キット
- Jetson AGX Orin 32GB H01 キット
- reComputer Industrial
- reServer Industrial
JetPack バージョン 5.1.1 をフラッシュしてください。このウィキで検証済みのバージョンです。
Roboflow Universeで50,000以上のモデルを活用
Roboflowは、50,000以上のすぐに使用可能なAIモデルを提供しており、誰でも最速でコンピュータビジョンのデプロイを開始できます。Roboflow Universeでこれらすべてを探索できます。また、Roboflow Universeでは200,000以上のデータセットも提供されており、これらのデータセットを使用してモデルをトレーニングしたり、自分のデータセットを持ち込んでRoboflowオンライン画像アノテーションツールを使用してトレーニングを開始することができます。
ステップ1: Roboflow Universeから人検出モデルを参照として使用します。
ステップ2: モデル名は「model_name/version」という形式に従います。この場合、people-detection-general/7です。このモデル名は、後ほど推論を開始する際に使用します。

Roboflow APIキーの取得
Roboflow推論サーバーを動作させるために、Roboflow APIキーを取得する必要があります。
ステップ1: 新しいRoboflowアカウントにサインアップし、資格情報を入力します。
ステップ2: アカウントにサインインし、
Projects > Workspaces > <your_workspace_name> > Roboflow API
に移動し、「Private API Key」セクションの横にあるCopyをクリックします。

このプライベートキーを保存しておいてください。後で必要になります。
Roboflow推論サーバーの実行
NVIDIA JetsonでRoboflow推論を開始するには、以下の3つの方法があります。
- pipパッケージを使用 - pipパッケージを使用するのが最速の方法ですが、JetPackとともにSDKコンポーネント(CUDA、cuDNN、TensorRT)をインストールする必要があります。
- Docker Hubを使用 - Docker Hubを使用する方法は少し遅くなりますが、約19GBのDockerイメージを最初にプルする必要があります。ただし、DockerイメージにはすでにSDKコンポーネントが含まれているため、インストールする必要はありません。
- ローカルDockerビルドを使用 - ローカルDockerビルドを使用する方法は、Docker Hubの方法を拡張したもので、Dockerイメージのソースコードを希望するアプリケーション(例:INT8でTensorRT精度を有効化)に応じて変更できます。
Roboflow推論サーバーを実行する前に、推論に使用するAIモデルとRoboflow APIキーを取得する必要があります。まずそれを説明します。
- pipパッケージ
- Docker Hub
- ローカルDockerビルド
pipパッケージを使用
- ステップ1: JetsonデバイスをJetson L4Tでフラッシュした場合、最初にSDKコンポーネントをインストールする必要があります。
sudo apt update
sudo apt install nvidia-jetpack -y
- ステップ2: 以下のコマンドをターミナルで実行して、Roboflow推論サーバーのpipパッケージをインストールします。
sudo apt update
sudo apt install python3-pip -y
pip install inference-gpu
- ステップ3: 以下を実行し、取得したRoboflowプライベートAPIキーに置き換えます。
export ROBOFLOW_API_KEY=your_key_here
- ステップ4: Jetsonデバイスにウェブカメラを接続し、以下のPythonスクリプトを実行して、オープンソースの人検出モデルをウェブカメラストリームで動作させます。
webcam.py
import cv2
import inference
import supervision as sv
annotator = sv.BoxAnnotator()
inference.Stream(
source="webcam",
model=" people-detection-general/7",
output_channel_order="BGR",
use_main_thread=True,
on_prediction=lambda predictions, image: (
print(predictions),
cv2.imshow(
"Prediction",
annotator.annotate(
scene=image,
detections=sv.Detections.from_roboflow(predictions)
)
),
cv2.waitKey(1)
)
)
最終的に、以下のような結果が表示されます。

Docker Hubを使用
この方法を使用するには、デバイスをJetson L4Tでフラッシュするだけで十分です。この方法はクライアント-サーバーアーキテクチャを使用しており、Roboflow推論サーバーがJetson上の特定のネットワークポートで動作し、同じネットワーク上の任意のPCからこの推論サーバーにアクセスすることができます。また、Jetson自体をサーバー兼クライアントとして使用することも可能です。
サーバーセットアップ - Jetson
以下を実行して、Roboflow推論サーバーのDockerコンテナをダウンロードして実行します。
sudo docker run --network=host --runtime=nvidia roboflow/roboflow-inference-server-jetson-5.1.1
以下の出力が表示された場合、推論サーバーが正常に起動しています。

クライアントセットアップ - Jetson/ PC
- ステップ1: 必要なパッケージをインストールします。
sudo apt update
sudo apt install python3-pip -y
git clone https://github.com/roboflow/roboflow-api-snippets
cd Python/webcam
pip install -r requirements.txt
ステップ2: 同じディレクトリにroboflow_config.jsonファイルを作成し、Roboflow APIキーとモデル名を含めます。このGitHubリポジトリ内のroboflow_config.sample.jsonファイルを参照してください。
ステップ3: 同じデバイスの別のターミナルウィンドウ、または同じネットワーク上の別のPCで以下のPythonスクリプトを実行して、オープンソースの人検出モデルをウェブカメラストリームで動作させます。
python infer-simple.py
ローカルDockerビルドを使用
サーバーセットアップ - Jetson
この方法を使用するには、Jetson L4T をデバイスにフラッシュするだけで十分です。この方法はクライアント-サーバーアーキテクチャを使用しており、Roboflow 推論サーバーが Jetson 上の特定のネットワークポートで実行されます。同じネットワーク上の任意の PC を使用してこの推論サーバーにアクセスすることができ、Jetson 自体をサーバーとクライアントの両方として使用することも可能です。
- ステップ 1: Roboflow 推論サーバーのリポジトリをクローンします
git clone https://github.com/roboflow/inference
- ステップ 2: "inference" ディレクトリに移動し、独自の Docker イメージをコンパイルします
cd inference
sudo docker build \
-f docker/dockerfiles/Dockerfile.onnx.jetson.5.1.1 \
-t roboflow/roboflow-inference-server-jetson-5.1.1:seeed1 .
ここで "-t" の後のテキストは、構築するコンテナの名前です。任意の名前を付けることができます。
- ステップ 3: 以下のコマンドを実行して、コンパイルした Docker イメージがリストされているか確認します
sudo docker ps

- ステップ 4: コンパイルした Docker イメージに基づいて Docker コンテナを起動します
docker run --privileged --net=host --runtime=nvidia roboflow/roboflow-inference-server-jetson-5.1.1:seeed1
以下の出力が表示された場合、推論サーバーが正常に起動しています

クライアント設定 - Jetson/PC
以下の Python スクリプトを実行して、オープンソースの人物検出モデルをウェブカメラストリームで動作させます
webcam.py
import cv2
import base64
import requests
import time
upload_url = ("http://<ip_address_of_jetson>:9001/"
"people-detection-general/7"
"?api_key=xxxxxxxx"
"&stroke=5")
video = cv2.VideoCapture(0)
while True:
start = time.time()
ret, img = video.read()
if ret:
# アスペクト比を維持しながらリサイズして速度を向上させ、帯域幅を節約
height, width, channels = img.shape
scale = 416 / max(height, width)
img = cv2.resize(img, (round(scale * width), round(scale * height)))
# 画像を base64 文字列にエンコード
retval, buffer = cv2.imencode('.jpg', img)
img_str = base64.b64encode(buffer)
# Roboflow Infer API から予測を取得
resp = requests.post(upload_url, data=img_str, headers={
"Content-Type": "application/x-www-form-urlencoded"
}, stream=True)
resp = resp.json()
for bbox in resp["predictions"]:
img = cv2.rectangle(
img,
(int(bbox['x']-(bbox['width']/2)), int(bbox['y']-(bbox['height']/2))),
(int(bbox['x']+(bbox['width']/2)), int(bbox['y']+(bbox['height']/2))),
(0, 255, 0),
2)
cv2.putText(
img, f"{bbox['class']}",
(int(bbox['x']-(bbox['width']/2)), int(bbox['y']-(bbox['height']/2)-5)),
0, 0.9,
(0, 255, 0), thickness=2, lineType=cv2.LINE_AA
)
cv2.imshow('image', img)
print((1/(time.time()-start)), " fps")
if cv2.waitKey(1) == ord('q'):
break
video.release()
cv2.destroyAllWindows()
スクリプト内の upload_url
に含める必要がある要素は以下の通りです:
- Roboflow 推論サーバーの IP アドレス
- 実行したいモデル
- Roboflow API キー
モデルは Roboflow Universe で選択できます。
TensorRT を有効化
デフォルトでは、Roboflow 推論サーバーは CUDA ランタイムを使用しています。ただし、推論速度を向上させるために TensorRT ランタイムに変更したい場合は、以下を "inference/docker/dockerfiles/Dockerfile.onnx.jetson.5.1.1" ファイル内に追加し、Docker イメージを構築します
ENV ONNXRUNTIME_EXECUTION_PROVIDERS=TensorrtExecutionProvider
詳細情報
Roboflowは非常に詳細で包括的なドキュメントを提供しています。そのため、こちらをぜひご確認ください。
技術サポートと製品に関するディスカッション
私たちの製品をお選びいただきありがとうございます!製品をご利用いただく際にスムーズな体験を提供するため、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルをご用意しています。