> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/deployment/ja/regash/legacy-serverless/object-detection.md).

# 物体検出

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

{% tabs %}
{% tab title="Python" %}
依存関係をインストールするには、 `pip install inference-sdk`.

```python
# inference-sdk をインポート
from inference_sdk import InferenceHTTPClient, InferenceConfiguration

CLIENT = InferenceHTTPClient(
    api_url="https://serverless.roboflow.com",
    api_key="API_KEY"
).configure(InferenceConfiguration(api_key_transport="header"))

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

{% endtab %}

{% tab title="cURL" %}
**Linux または MacOS**

という名前のローカルファイルの JSON 予測を取得する `YOUR_IMAGE.jpg`:

```bash
base64 YOUR_IMAGE.jpg | curl -d @- \\
-H "Authorization: Bearer YOUR_KEY" \\
"https://serverless.roboflow.com/your-model/42"
```

その URL 経由で Web 上の別の場所にある画像で推論する（忘れずに [URL エンコードしてください](https://www.urlencoder.org/)):

```bash
curl -X POST \\
-H "Authorization: Bearer YOUR_KEY" \\
"https://serverless.roboflow.com/your-model/42?\
image=https%3A%2F%2Fi.imgur.com%2FPEEvqPN.png"
```

**Windows**

インストールする必要があります [Windows 用 curl](https://curl.se/windows/) および [Windows 用 GNU の base64 ツール](http://gnuwin32.sourceforge.net/packages/coreutils.htm)。これを行う最も簡単な方法は、次を使用することです [Windows 用 Git インストーラー](https://git-scm.com/downloads) も含まれています `curl` および `base64` インストール時に「Use Git and optional Unix tools from the Command Prompt」を選択すると、コマンドラインツールも含まれます。

その後、上記と同じコマンドを使用できます。
{% endtab %}

{% tab title="JavaScript" %}
**Node.js**

これらの例では組み込みの `fetch` API を使用します。Node.js 18 以降および最新のブラウザで動作するため、インストールする依存関係はありません。

**ローカル画像で推論する**

```javascript
const fs = require("fs");

const image = fs.readFileSync("YOUR_IMAGE.jpg", {
    encoding: "base64"
});

fetch("https://serverless.roboflow.com/your-model/42", {
    method: "POST",
    headers: {
        "Authorization": "Bearer YOUR_KEY",
        "Content-Type": "application/x-www-form-urlencoded"
    },
    body: image
})
    .then((response) => {
        if (!response.ok) throw new Error("ステータス " + response.status + " でリクエストに失敗しました");
        return response.json();
    })
    .then((data) => {
        console.log(data);
    })
    .catch((error) => {
        console.log(error.message);
    });
```

**URL 経由で外部の場所にホストされている画像で推論する**

```javascript
fetch(
    "https://serverless.roboflow.com/your-model/42?image=" +
        encodeURIComponent("https://i.imgur.com/PEEvqPN.png"),
    {
        method: "POST",
        headers: {
            "Authorization": "Bearer YOUR_KEY"
        }
    }
)
    .then((response) => {
        if (!response.ok) throw new Error("ステータス " + response.status + " でリクエストに失敗しました");
        return response.json();
    })
    .then((data) => {
        console.log(data);
    })
    .catch((error) => {
        console.log(error.message);
    });
```

**Web**

roboflow\.js を通じてリアルタイムのオンデバイス推論を利用できます `roboflow.js`。詳細は [こちらのドキュメント](/deployment/ja/serufuhosuto/sdks/web-browser.md).
{% endtab %}

{% tab title="Swift/iOS" %}
**Swift**

**ローカル画像で推論する**

```swift
import UIKit

// 画像を読み込み、Base64 に変換
let image = UIImage(named: "your-image-path") // アップロードする画像へのパス 例: image.jpg
let imageData = image?.jpegData(compressionQuality: 1)
let fileContent = imageData?.base64EncodedString()
let postData = fileContent!.data(using: .utf8)

// API_KEY、モデル、モデルバージョンを使って推論サーバー要求を初期化
var request = URLRequest(url: URL(string: "https://serverless.roboflow.com/your-model/your-model-version?name=YOUR_IMAGE.jpg")!,timeoutInterval: Double.infinity)
request.setValue("Bearer YOUR_APIKEY", forHTTPHeaderField: "Authorization")
request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.httpMethod = "POST"
request.httpBody = postData

// POST リクエストを実行
URLSession.shared.dataTask(with: request, completionHandler: { data, response, error in
    
    // 応答を文字列に解析
    guard let data = data else {
        print(String(describing: error))
        return
    }
    
    // 応答文字列を辞書に変換
    do {
        let dict = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
    } catch {
        print(error.localizedDescription)
    }
    
    // 文字列応答を出力
    print(String(data: data, encoding: .utf8)!)
}).resume()
```

**Objective-C**

[Objective-C のスニペットをリクエストするにはこちらをクリックしてください。](https://app.roboflow.com/request/snippet.inference-objc)
{% endtab %}

{% tab title="Android" %}
**Kotlin**

**ローカル画像で推論する**

```kotlin
import java.io.*
import java.net.HttpURLConnection
import java.net.URL
import java.nio.charset.StandardCharsets
import java.util.*

fun main() {
    // 画像パスを取得
    val filePath = System.getProperty("user.dir") + System.getProperty("file.separator") + "YOUR_IMAGE.jpg"
    val file = File(filePath)

    // Base64 でエンコード
    val encodedFile: String
    val fileInputStreamReader = FileInputStream(file)
    val bytes = ByteArray(file.length().toInt())
    fileInputStreamReader.read(bytes)
    encodedFile = String(Base64.getEncoder().encode(bytes), StandardCharsets.US_ASCII)
    val API_KEY = "" // あなたの API キー
    val MODEL_ENDPOINT = "dataset/v" // モデルエンドポイントを設定（データセット URL にあります）

    // URL を構築
    val uploadURL ="https://serverless.roboflow.com/" + MODEL_ENDPOINT + "?name=YOUR_IMAGE.jpg";

    // HTTP リクエスト
    var connection: HttpURLConnection? = null
    try {
        // URL への接続を設定
        val url = URL(uploadURL)
        connection = url.openConnection() as HttpURLConnection
        connection.requestMethod = "POST"
        connection.setRequestProperty("Content-Type",
                "application/x-www-form-urlencoded")
        connection.setRequestProperty("Content-Length",
                Integer.toString(encodedFile.toByteArray().size))
        connection.setRequestProperty("Authorization", "Bearer " + API_KEY)
        connection.setRequestProperty("Content-Language", "en-US")
        connection.useCaches = false
        connection.doOutput = true

        // リクエストを送信
        val wr = DataOutputStream(
                connection.outputStream)
        wr.writeBytes(encodedFile)
        wr.close()

        // 応答を取得
        val stream = connection.inputStream
        val reader = BufferedReader(InputStreamReader(stream))
        var line: String?
        while (reader.readLine().also { line = it } != null) {
            println(line)
        }
        reader.close()
    } catch (e: Exception) {
        e.printStackTrace()
    } finally {
        connection?.disconnect()
    }
}
main()
```

**URL 経由で外部の場所にホストされている画像で推論する**

```kotlin
import java.io.BufferedReader
import java.io.DataOutputStream
import java.io.InputStreamReader
import java.net.HttpURLConnection
import java.net.URL
import java.net.URLEncoder

fun main() {
    val imageURL = "https://i.imgur.com/PEEvqPN.png" // 画像 URL を置き換えてください
    val API_KEY = "" // あなたの API キー
    val MODEL_ENDPOINT = "dataset/v" // モデルエンドポイントを設定

    // アップロード URL
    val uploadURL = "https://serverless.roboflow.com/" + MODEL_ENDPOINT + "?image=" + URLEncoder.encode(imageURL, "utf-8");

    // HTTP リクエスト
    var connection: HttpURLConnection? = null
    try {
        // URL への接続を設定
        val url = URL(uploadURL)
        connection = url.openConnection() as HttpURLConnection
        connection.requestMethod = "POST"
        connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded")
        connection.setRequestProperty("Content-Length", Integer.toString(uploadURL.toByteArray().size))
        connection.setRequestProperty("Authorization", "Bearer " + API_KEY)
        connection.setRequestProperty("Content-Language", "en-US")
        connection.useCaches = false
        connection.doOutput = true

        // リクエストを送信
        val wr = DataOutputStream(connection.outputStream)
        wr.writeBytes(uploadURL)
        wr.close()

        // 応答を取得
        val stream = connection.inputStream
        val reader = BufferedReader(InputStreamReader(stream))
        var line: String?
        while (reader.readLine().also { line = it } != null) {
            println(line)
        }
        reader.close()
    } catch (e: Exception) {
        e.printStackTrace()
    } finally {
        connection?.disconnect()
    }
}

main()
```

**Java**

**ローカル画像で推論する**

```java
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class InferenceLocal {
    public static void main(String[] args) throws IOException {
        // 画像パスを取得
        String filePath = System.getProperty("user.dir") + System.getProperty("file.separator") + "YOUR_IMAGE.jpg";
        File file = new File(filePath);

        // Base64 でエンコード
        String encodedFile;
        FileInputStream fileInputStreamReader = new FileInputStream(file);
        byte[] bytes = new byte[(int) file.length()];
        fileInputStreamReader.read(bytes);
        encodedFile = new String(Base64.getEncoder().encode(bytes), StandardCharsets.US_ASCII);

        String API_KEY = ""; // あなたの API キー
        String MODEL_ENDPOINT = "dataset/v"; // モデルエンドポイント

        // URL を構築
        String uploadURL = "https://serverless.roboflow.com/" + MODEL_ENDPOINT + "?name=YOUR_IMAGE.jpg";

        // HTTP リクエスト
        HttpURLConnection connection = null;
        try {
            // URL への接続を設定
            URL url = new URL(uploadURL);
            connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("POST");
            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

            connection.setRequestProperty("Content-Length", Integer.toString(encodedFile.getBytes().length));
            connection.setRequestProperty("Authorization", "Bearer " + API_KEY);
            connection.setRequestProperty("Content-Language", "en-US");
            connection.setUseCaches(false);
            connection.setDoOutput(true);

            // リクエストを送信
            DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
            wr.writeBytes(encodedFile);
            wr.close();

            // 応答を取得
            InputStream stream = connection.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            reader.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (connection != null) {
                connection.disconnect();
            }
        }

    }

}
```

**URL 経由で外部の場所にホストされている画像で推論する**

```java
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

public class InferenceHosted {
    public static void main(String[] args) {
        String imageURL = "https://i.imgur.com/PEEvqPN.png"; // 画像 URL を置き換えてください
        String API_KEY = ""; // あなたの API キー
        String MODEL_ENDPOINT = "dataset/v"; // モデルエンドポイント

        // アップロード URL
        String uploadURL = "https://serverless.roboflow.com/" + MODEL_ENDPOINT + "?image="
                + URLEncoder.encode(imageURL, StandardCharsets.UTF_8);

        // HTTP リクエスト
        HttpURLConnection connection = null;
        try {
            // URL への接続を設定
            URL url = new URL(uploadURL);
            connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("POST");
            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

            connection.setRequestProperty("Content-Length", Integer.toString(uploadURL.getBytes().length));
            connection.setRequestProperty("Authorization", "Bearer " + API_KEY);
            connection.setRequestProperty("Content-Language", "en-US");
            connection.setUseCaches(false);
            connection.setDoOutput(true);

            // リクエストを送信
            DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
            wr.writeBytes(uploadURL);
            wr.close();

            // 応答を取得
            InputStream stream = connection.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            reader.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (connection != null) {
                connection.disconnect();
            }
        }
    }
}
```

{% endtab %}

{% tab title="Ruby" %}
**Gemfile**

{% code title="Gemfile" %}

```ruby
source "https://rubygems.org"

gem "httparty", "~> 0.18.1"
gem "base64", "~> 0.1.0"
gem "cgi", "~> 0.2.1"
```

{% endcode %}

**Gemfile.lock**

{% code title="Gemfile.lock" %}

```ruby
GEM
  remote: https://rubygems.org/
  仕様:
    base64 (0.1.0)
    cgi (0.2.1)
    httparty (0.18.1)
      mime-types (~> 3.0)
      multi_xml (>= 0.5.2)
    mime-types (3.3.1)
      mime-types-data (~> 3.2015)
    mime-types-data (3.2021.0225)
    multi_xml (0.6.0)

プラットフォーム
  x64-mingw32
  x86_64-linux

依存関係
  base64 (~> 0.1.0)
  cgi (~> 0.2.1)
  httparty (~> 0.18.1)

Bundler で使用
   2.2.15
```

{% endcode %}

**ローカル画像で推論する**

```ruby
require 'base64'
require 'httparty'

encoded = Base64.encode64(File.open("YOUR_IMAGE.jpg", "rb").read)
model_endpoint = "dataset/v" # モデルエンドポイントを設定
api_key = "" # ここに API キー

params = "?name=YOUR_IMAGE.jpg"

response = HTTParty.post(
    "https://serverless.roboflow.com/" + model_endpoint + params,
    body: encoded, 
    headers: {
    'Authorization' => "Bearer " + api_key,
    'Content-Type' => 'application/x-www-form-urlencoded',
    'charset' => 'utf-8'
  })

  puts response

 
```

**URL 経由で外部の場所にホストされている画像で推論する**

```ruby
require 'httparty'
require 'cgi'

model_endpoint = "dataset/v" # モデルエンドポイントを設定
api_key = "" # ここに API キー
img_url = "https://i.imgur.com/PEEvqPN.png" # URL を構築

img_url = CGI::escape(img_url)

params =  "?image=" + img_url

response = HTTParty.post(
    "https://serverless.roboflow.com/" + model_endpoint + params,
    headers: {
    'Authorization' => "Bearer " + api_key,
    'Content-Type' => 'application/x-www-form-urlencoded',
    'charset' => 'utf-8'
  })

puts response
```

{% endtab %}

{% tab title="PHP" %}
**ローカル画像で推論する**

```php
<?php

// 画像を Base64 でエンコード
$data = base64_encode(file_get_contents("YOUR_IMAGE.jpg"));

$api_key = ""; // API キーを設定
$model_endpoint = "dataset/v"; // モデルエンドポイントを設定（データセット URL にあります）

// HTTP リクエスト用 URL
$url = "https://serverless.roboflow.com/" . $model_endpoint
. "?name=YOUR_IMAGE.jpg";

// セットアップして HTTP リクエストを送信
$options = array(
  'http' => array (
    'header' => "Content-type: application/x-www-form-urlencoded\r\n"
              . "Authorization: Bearer " . $api_key . "\r\n",
    'method'  => 'POST',
    'content' => $data
  ));

$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
echo $result;
?>
```

**URL 経由で外部の場所にホストされている画像で推論する**

```php
<?php

$api_key = ""; // API キーを設定
$model_endpoint = "dataset/v"; // モデルエンドポイントを設定（データセット URL にあります）
$img_url = "https://i.imgur.com/PEEvqPN.png";

// HTTP リクエスト用 URL
$url =  "https://serverless.roboflow.com/" . $model_endpoint
. "?image=" . urlencode($img_url);

// セットアップして HTTP リクエストを送信
$options = array(
  'http' => array (
    'header' => "Content-type: application/x-www-form-urlencoded\r\n"
              . "Authorization: Bearer " . $api_key . "\r\n",
    'method'  => 'POST'
  ));

$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
echo $result;
?>
```

{% endtab %}

{% tab title="Go" %}
**ローカル画像で推論する**

```go
package main

import (
    "bufio"
    "encoding/base64"
    "fmt"
    "io/ioutil"
    "os"
	"net/http"
	"strings"
)

func main() {
	api_key := ""  // あなたの API キー
	model_endpoint := "dataset/v" // モデルエンドポイントを設定

    // ディスク上のファイルを開く。
    f, _ := os.Open("YOUR_IMAGE.jpg")

    // JPG 全体をバイトスライスに読み込む。
    reader := bufio.NewReader(f)
    content, _ := ioutil.ReadAll(reader)

    // base64 としてエンコードする。
    data := base64.StdEncoding.EncodeToString(content)
	uploadURL := "https://serverless.roboflow.com/" + model_endpoint + "?name=YOUR_IMAGE.jpg"

	req, _ := http.NewRequest("POST", uploadURL, strings.NewReader(data))
    req.Header.Set("Authorization", "Bearer "+api_key)
    req.Header.Set("Accept", "application/json")

    client := &http.Client{}
    resp, _ := client.Do(req)
    defer resp.Body.Close()

   	bytes, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(bytes))

}
```

**URL 経由で外部の場所にホストされている画像で推論する**

```go
package main

import (
    "fmt"
	"net/http"
	"net/url"
  "io/ioutil"
)

func main() {
	api_key := ""  // あなたの API キー
	model_endpoint := "dataset/v" // モデルエンドポイントを設定
	img_url := "https://i.ibb.co/jzr27x0/YOUR-IMAGE.jpg"


	uploadURL := "https://serverless.roboflow.com/" + model_endpoint + "?image=" + url.QueryEscape(img_url)

	req, _ := http.NewRequest("POST", uploadURL, nil)
    req.Header.Set("Authorization", "Bearer "+api_key)
    req.Header.Set("Accept", "application/json")

    client := &http.Client{}
    resp, _ := client.Do(req)
    defer resp.Body.Close()

   	bytes, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(bytes))


}
```

{% endtab %}

{% tab title=".NET" %}
**ローカル画像で推論する**

```csharp
using System;
using System.IO;
using System.Net;
using System.Text;

namespace InferenceLocal
{
    class InferenceLocal
    {

        static void Main(string[] args)
        {
            byte[] imageArray = System.IO.File.ReadAllBytes(@"YOUR_IMAGE.jpg");
            string encoded = Convert.ToBase64String(imageArray);
            byte[] data = Encoding.ASCII.GetBytes(encoded);
            string API_KEY = ""; // あなたの API キー
            string MODEL_ENDPOINT = "dataset/v"; // モデルのエンドポイントを設定

            // URL を構築
            string uploadURL =
                    "https://serverless.roboflow.com/" + MODEL_ENDPOINT + "?name=YOUR_IMAGE.jpg";

            // サービス要求の設定
            ServicePointManager.Expect100Continue = true;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

            // リクエストの構成
            WebRequest request = WebRequest.Create(uploadURL);
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            request.Headers.Add("Authorization", "Bearer " + API_KEY);
            request.ContentLength = data.Length;

            // データを書き込む
            using (Stream stream = request.GetRequestStream())
            {
                stream.Write(data, 0, data.Length);
            }

            // 応答を取得
            string responseContent = null;
            using (WebResponse response = request.GetResponse())
            {
                using (Stream stream = response.GetResponseStream())
                {
                    using (StreamReader sr99 = new StreamReader(stream))
                    {
                        responseContent = sr99.ReadToEnd();
                    }
                }
            }

            Console.WriteLine(responseContent);

        }
    }
}
```

**URL 経由で外部の場所にホストされている画像で推論する**

```csharp
using System;
using System.IO;
using System.Net;
using System.Web;

namespace InferenceHosted
{
    class InferenceHosted
    {
        static void Main(string[] args)
        {
            string API_KEY = ""; // あなたの API キー
            string imageURL = "https://i.ibb.co/jzr27x0/YOUR-IMAGE.jpg";
            string MODEL_ENDPOINT = "dataset/v"; // モデルのエンドポイントを設定

            // URL を構築
            string uploadURL =
                    "https://serverless.roboflow.com/" + MODEL_ENDPOINT
                    + "?image=" + HttpUtility.UrlEncode(imageURL);

            // サービス ポイントの設定
            ServicePointManager.Expect100Continue = true;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

            // HTTP リクエストの構成
            WebRequest request = WebRequest.Create(uploadURL);
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            request.Headers.Add("Authorization", "Bearer " + API_KEY);
            request.ContentLength = 0;

            // 応答を取得
            string responseContent = null;
            using (WebResponse response = request.GetResponse())
            {
                using (Stream stream = response.GetResponseStream())
                {
                    using (StreamReader sr99 = new StreamReader(stream))
                    {
                        responseContent = sr99.ReadToEnd();
                    }
                }
            }

            Console.WriteLine(responseContent);

        }
    }
}
```

{% endtab %}

{% tab title="詳細" %}
{% hint style="info" %}
AI搭載チャットボットのLennyに、コードサンプルを作成してもらうように頼んでみてください！
{% endhint %}
{% endtab %}
{% endtabs %}

## API リファレンス

### URL

<mark style="color:緑;">`POST`</mark> `https://serverless.roboflow.com/:projectId/:versionNumber`

<table data-search="false"><thead><tr><th width="157">名前</th><th width="101">型</th><th>説明</th></tr></thead><tbody><tr><td>projectId</td><td>文字列</td><td>データセット名の URL 安全な形式です。モデルを学習した後、メインのプロジェクトビューの URL を確認するか、データセットバージョンの train results セクションで「Get curl command」ボタンをクリックすると、Web UI で見つけることができます。</td></tr><tr><td>version</td><td>数値</td><td>データセットのバージョンを識別するバージョン番号</td></tr></tbody></table>

{% hint style="info" %}
プロジェクトIDとバージョン番号の取得方法を見る [こちら](https://docs.roboflow.com/reference/authentication/authentication/workspace-and-project-ids#how-to-retrieve-a-project-id-and-version-number).
{% endhint %}

RESTリクエスト経由で画像をHosted API（レガシー）に送信する方法は2つあります:

* 添付する `base64` エンコードされた画像を `POST` リクエストボディに
* 画像ファイルのURLを `image` URLクエリ
  * 例: `https://serverless.roboflow.com/:datasetSlug/:versionNumber?image=https://imageurl.com`

#### クエリパラメータ

<table data-search="false"><thead><tr><th width="120">名前</th><th width="106">型</th><th>説明</th></tr></thead><tbody><tr><td>image</td><td>文字列</td><td>追加する画像の URL。画像が別の場所でホストされている場合に使用します。（リクエスト本文で base64 エンコードされた画像を POST しない場合は必須です。）<br><br><strong>注:</strong> URL エンコードするのを忘れないでください。</td></tr><tr><td>classes</td><td>文字列</td><td>予測を特定のクラスのみに制限します。カンマ区切りの文字列で指定してください。<br><br><strong>例:</strong> dog,cat<br><br><strong>デフォルト:</strong> なし（すべてのクラスを表示）</td></tr><tr><td>overlap</td><td>数値</td><td><p>同じクラスのバウンディングボックス予測どうしが単一のボックスに結合される前に重なってよい最大割合（0〜100 のスケール）です。</p><p><strong>デフォルト:</strong> 30</p><p>このパラメータはRF-DETRモデルには影響しません。</p></td></tr><tr><td>confidence</td><td>数値</td><td><p>0〜100 のスケールで返される予測のしきい値。数値が低いほど、より多くの予測が返されます。数値が高いほど、高確度の予測は少なくなります。</p><p><strong>デフォルト:</strong> 40</p></td></tr><tr><td>stroke</td><td>数値</td><td><p>予測の周囲に表示されるバウンディングボックスの幅（ピクセル単位）（ <code>format</code> は <code>image</code>).</p><p><strong>デフォルト:</strong> 1</p></td></tr><tr><td>labels</td><td>真偽値</td><td><p>予測にテキストラベルを表示するかどうか（ <code>format</code> は <code>image</code>).</p><p><strong>デフォルト:</strong> false</p></td></tr><tr><td>format</td><td>文字列</td><td><p><strong>オプション:</strong></p><ul><li><strong>json:</strong> JSON予測の配列を返します。（レスポンス形式タブを参照）。</li><li><strong>image:</strong> 注釈付き予測を含む画像をバイナリBLOBとして返します。 <code>Content-Type</code> の <code>image/jpeg</code>.</li></ul><p><strong>デフォルト</strong>: <code>json</code></p></td></tr><tr><td>api_key</td><td>文字列</td><td>あなたの API キー（ワークスペースの API 設定ページで取得）</td></tr></tbody></table>

### リクエスト本文

<table data-search="false"><thead><tr><th width="104">型</th><th>説明</th></tr></thead><tbody><tr><td>文字列</td><td>base64 エンコードされた画像。（クエリパラメータで画像 URL を渡さない場合は必須です。）</td></tr></tbody></table>

コンテンツタイプは `application/x-www-form-urlencoded` で、文字列のボディを使用する必要があります。

## レスポンス形式

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

* `x` = 検出されたオブジェクトの水平方向の中心点
* `y` = 検出されたオブジェクトの垂直方向の中心点
* `width` = バウンディングボックスの幅
* `height` = バウンディングボックスの高さ
* `class` = 検出されたオブジェクトのクラスラベル
* `confidence` = 検出されたオブジェクトに正しいラベルと位置座標があるというモデルの信頼度

REST APIからのレスポンスオブジェクトの例を示します:

```json
{
    "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` を構築する際に `ボックス` オブジェクトを使って、 `Image`.

予測結果を扱う際は、検出されたすべての予測を必ず反復処理することを忘れないでください。 `予測結果`!

```python
# Pillowライブラリのボックスオブジェクトの例
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)
```
