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
データセットのバージョンを識別するバージョン番号です
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
予測の周囲に表示されるバウンディングボックスの幅(ピクセル単位)( format
が image
).
デフォルト: 1
labels
boolean
予測にテキストラベルを表示するかどうか( format
が image
).
デフォルト: false
format
string
オプション:
json: JSON予測の配列を返します。(レスポンスフォーマットタブ参照)
image: アノテーション付き予測画像をバイナリブロブとして返します
Content-Type
はimage/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)
コーナーポイントのアプローチは一般的なパターンであり、次のようなライブラリで見られます: Pillow
で box
オブジェクトを使ってバウンディングボックスを 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?