Object Detection

Roboflow 上でホストされているオブジェクト検出モデルで推論を実行します。

Roboflow Hosted APIを使用してオブジェクト検出推論を実行する方法はいくつかあります。さまざまなSDKのいずれかを使用するか、ホストされたエンドポイントにRESTリクエストを送信できます。

依存関係をインストールするには、 pip install inference-sdk.

# inference-sdkをインポート
from inference_sdk import InferenceHTTPClient

CLIENT = InferenceHTTPClient(
    api_url="https://detect.roboflow.com",
    api_key="API_KEY"
)

result = CLIENT.infer(your_image.jpg, model_id="football-players-detection-3zvbc/12")

APIリファレンス

URL

POST https://detect.roboflow.com/:projectId/:versionNumber

名前
タイプ
説明

projectId

string

データセット名のURLセーフバージョンです。Web UIのメインプロジェクトビューのURLを見るか、モデルをトレーニングした後のデータセットバージョンのトレイン結果セクションで「Get curl command」ボタンをクリックして確認できます。

version

number

データセットのバージョンを識別するバージョン番号です

プロジェクトIDとバージョン番号の取得方法を見る こちら.

RESTリクエストを使ってHosted Inference APIに画像を送信する方法は2つあります:

  • 添付する base64 エンコード済み画像を POST リクエストボディ

  • 画像ファイルのURLを送信する image URLクエリ

    • 例: https://detect.roboflow.com/:datasetSlug/:versionNumber?image=https://imageurl.com

クエリパラメータ

名前
タイプ
説明

image

string

追加する画像のURL。他の場所でホストされている画像の場合に使用します。(リクエストボディにbase64エンコード画像をPOSTしない場合は必須) 注意: URLエンコードを忘れずに。

classes

string

特定のクラスのみの予測に制限します。カンマ区切りの文字列で指定してください。 例: dog,cat デフォルト: 指定なし(全クラス表示)

overlap

number

同じクラスのバウンディングボックス予測が1つのボックスに統合される前に許容される最大重複率(0-100のスケール)。

デフォルト: 30

confidence

number

返される予測のしきい値(0-100のスケール)。低い数値はより多くの予測を返し、高い数値はより確実な予測のみを返します。

デフォルト: 40

stroke

number

予測の周囲に表示されるバウンディングボックスの幅(ピクセル単位)( formatimage).

デフォルト: 1

labels

boolean

予測にテキストラベルを表示するかどうか( formatimage).

デフォルト: false

format

string

オプション:

  • json: JSON予測の配列を返します。(レスポンスフォーマットタブ参照)

  • image: アノテーション付き予測画像をバイナリブロブとして返します Content-Typeimage/jpeg.

デフォルト: json

api_key

string

あなたのAPIキー(ワークスペースのAPI設定ページで取得)

リクエストボディ

タイプ
説明

string

base64でエンコードされた画像。(クエリパラメータで画像URLを渡さない場合は必須)

Content-Typeは次のようにする必要があります application/x-www-form-urlencoded 文字列のボディとともに。

レスポンス形式

ホスト型API推論エンドポイントおよびほとんどのSDKは、 JSON 予測の配列を含むオブジェクトを返します。各予測には以下のプロパティがあります:

  • x = 検出されたオブジェクトの水平中心点

  • y = 検出されたオブジェクトの垂直中心点

  • width = バウンディングボックスの幅

  • height = バウンディングボックスの高さ

  • class = 検出されたオブジェクトのクラスラベル

  • confidence = 検出されたオブジェクトが正しいラベルと位置座標を持つというモデルの信頼度

REST APIからのレスポンスオブジェクトの例:

{
    "predictions": [
        {
            "x": 189.5,
            "y": 100,
            "width": 163,
            "height": 186,
            "class": "helmet",
            "confidence": 0.544
        }
    ],
    "image": {
        "width": 2048,
        "height": 1371
    }
}

この image 属性には推論に送信された画像の高さと幅が含まれます。バウンディングボックスの計算にこれらの値が必要になる場合があります。

Inference APIのJSON出力からボックスを描画する

バウンディングボックスを描画するためのフレームワークやパッケージは、位置形式が異なる場合があります。レスポンス JSON オブジェクトのプロパティを使えば、バウンディングボックスは以下のルールの組み合わせで常に描画できます:

  • 中心点は常に(x,y)

  • コーナーポイント (x1, y1) および (x2, y2) は次の方法で求められます:

    • x1 = x - (width/2)

    • y1 = y - (height/2)

    • x2 = x + (width/2)

    • y2 = y + (height/2)

コーナーポイントのアプローチは一般的なパターンであり、次のようなライブラリで見られます: Pillowbox オブジェクトを使ってバウンディングボックスを Image.

で描画する際は、検出されたすべてのdetectionを繰り返し処理するのを忘れないでください predictions!

# Pillowライブラリのboxオブジェクト例
for bounding_box in detections:
    x1 = bounding_box['x'] - bounding_box['width'] / 2
    x2 = bounding_box['x'] + bounding_box['width'] / 2
    y1 = bounding_box['y'] - bounding_box['height'] / 2
    y2 = bounding_box['y'] + bounding_box['height'] / 2
    box = (x1, x2, y1, y2)

Last updated

Was this helpful?