物体検出

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を 画像 URLクエリで送信

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

クエリパラメータ

名前
タイプ
説明

画像

string

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

classes

string

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

overlap

number

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

デフォルト: 30

confidence

number

返される予測のしきい値(0-100スケール)。数値が低いほど多くの予測が返され、高いほど高確度の予測のみ返されます。

デフォルト: 40

stroke

number

予測の周囲に表示されるバウンディングボックスの幅(ピクセル単位)( format の場合のみ有効) 画像).

デフォルト: 1

labels

boolean

予測にテキストラベルを表示するかどうか( format の場合のみ有効) 画像).

デフォルト: 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
    }
}

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

推論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)

コーナーポイント方式は一般的なパターンで、 Pillow などのライブラリで box オブジェクトを使ってバウンディングボックスを描画する際に見られます Image.

detectionsで見つかったすべての検出を繰り返し処理するのを忘れずに 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?