ワークフローをデプロイする

ワークフローをデプロイする方法は4つあります:

  1. 画像を Roboflow API に送信してワークフローで処理します。

  2. を作成する Roboflow専用デプロイメント あなた専用にプロビジョニングされたインフラストラクチャ上で。

  3. ご自身のハードウェアでワークフローを実行するには Roboflow Inference.

  4. をスケジュールする Roboflow Cloudでバッチジョブ 大量のデータ処理をコーディングなしで自動化します。

ご自身のハードウェアでワークフローを実行する場合、画像だけでなく動画ファイル(通常の ウェブカメラ やプロ仕様の CCTVカメラ).

オンプレミスデプロイメントを選択すると、Inferenceをデプロイできる任意のシステムでワークフローを実行できます。これには以下が含まれます:

  • NVIDIA Jetson

  • AWS EC2、GCP Cloud Engine、Azure仮想マシン

  • Raspberry Pi

Roboflow Enterpriseの顧客は、Baslerカメラでの推論実行など、追加のビデオストリームオプションを利用できます。詳細については、 Roboflow営業チームにお問い合わせください.

ワークフローをデプロイする

ワークフローをデプロイするには、Workflowsエディタ左上の「Deploy」ボタンをクリックしてください。すべてのデプロイメントオプションはこのページに記載されています。

Workflowsエディタ内のコードスニペットには、あなたのワークフローURLとAPIキーがあらかじめ入力されています。

ワークフローの利用制限について詳しくは、 Roboflow料金ページ.

画像を処理する

Roboflow APIまたはローカルInferenceサーバーを使って、単一画像でワークフローを実行できます。

まず、Roboflow Inference SDKをインストールします:

pip install inference-sdk inference-cli 

ローカルで実行する場合は、 公式Dockerインストール手順 に従ってマシンにDockerをインストールし、Inferenceサーバーを起動します:

inference server start

次に、新しいPythonファイルを作成し、以下のコードを追加します:

from inference_sdk import InferenceHTTPClient

client = InferenceHTTPClient(
    api_url="https://detect.roboflow.com",  # ローカルデプロイの場合は "http://127.0.0.1:9001"
    api_key="API_KEY"
)

result = client.run_workflow(
    workspace_name="workspace-name",
    workflow_id="workflow-id",
    images={
        "image": "YOUR_IMAGE.jpg"
    }
)

上記の API_KEY をあなたのRoboflow APIキーに置き換えてください。また、 workspace-nameworkflow-id をあなたのRoboflowワークスペース名とワークフローIDに置き換えてください。

これらの値を見つけるには、Roboflowワークフローを開いて「Deploy Workflow」をクリックします。その後、ページに表示されるコードスニペットからワークスペース名とワークフローIDをコピーしてください。

ローカル実行はCPUおよびNVIDIA CUDA GPUデバイスで動作します。最高のパフォーマンスを得るには、NVIDIA JetsonやNVIDIA GPU搭載のクラウドサーバーなど、GPU対応デバイスでデプロイしてください。

ビデオストリーム(RTSP、ウェブカメラ)を処理する

ワークフローをビデオストリームのフレームにデプロイできます。これはウェブカメラやRTSPストリームでも可能です。また、動画ファイルにもワークフローを実行できます。

まず、Inferenceをインストールします:

pip install inference  # GPUマシンの場合は inference-gpu

Inferenceのインストールには数分かかる場合があります。

次に、新しいPythonファイルを作成し、以下のコードを追加します:

# InferencePipelineオブジェクトをインポート
from inference import InferencePipeline

def my_sink(result, video_frame):
    print(result) # 各フレームの予測結果で何かをする
    

# パイプラインオブジェクトを初期化
pipeline = InferencePipeline.init_with_workflow(
    api_key="API_KEY",
    workspace_name="workspace-name",
    workflow_id="workflow-id",
    video_reference=0, # 動画パス、RSTPストリーム、デバイスID(int、内蔵ウェブカメラは通常0)、またはRTSPストリームURL
    on_prediction=my_sink
)
pipeline.start() #パイプラインを開始
pipeline.join() #パイプラインスレッドの終了を待つ

上記の API_KEY をあなたのRoboflow APIキーに置き換えてください。また、 workspace-nameworkflow-id をあなたのRoboflowワークスペース名とワークフローIDに置き換えてください。

これらの値を見つけるには、Roboflowワークフローを開いて「Deploy Workflow」をクリックします。その後、ページに表示されるコードスニペットからワークスペース名とワークフローIDをコピーしてください。

上記のコードを実行すると、ワークフローがあなたのビデオまたはビデオストリームで実行されます。

データのバッチ処理

Roboflowバッチ処理サービスを使えば、ディレクトリ内の画像や動画ファイルなど、データのバッチ全体を効率的に処理できます。この完全管理型ソリューションはコーディングやローカル計算を必要としません。データとワークフローを選択するだけで、あとはRoboflowが処理します。

バッチ処理はUI、CLI、REST APIのいずれにも対応しています。以下ではCLIコマンドを紹介します。詳しくは すべてのオプション.

処理を実行するには、Inference CLIをインストールします:

pip install inference-cli

その後、データを取り込むことができます:

inference rf-cloud data-staging create-batch-of-images \
    --images-dir <your-images-dir-path> \
    --batch-id <your-batch-id>

データが読み込まれたら、処理ジョブを開始します:

inference rf-cloud batch-processing process-images-with-workflow \
    --workflow-id <workflow-id> \
    --batch-id <batch-id>

ジョブの進捗は次のコマンドで表示できます:

inference rf-cloud batch-processing show-job-details \
    --job-id <your-job-id>  # ジョブ作成時にjob-idが表示されます

ジョブが完了したら、結果をエクスポートします:

inference rf-cloud data-staging export-batch \
    --target-dir <dir-to-export-result> \
    --batch-id <output-batch-of-a-job>

Last updated

Was this helpful?