> 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/keypoint-detection.md).

# キーポイント検出

レガシーの Roboflow Hosted API でホストされているキーポイント検出モデルに対して推論を実行します。

{% tabs %}
{% tab title="Python" %}
Python を使用してホストされた API 経由で推論を実行するには、次を使用します `roboflow` Python パッケージ:

```python
from roboflow import Roboflow
rf = Roboflow(api_key="API_KEY")
project = rf.workspace().project("MODEL_ENDPOINT")
model = project.version(VERSION).models()[0]

# ローカル画像で推論
print(model.predict("your_image.jpg", confidence=40, overlap=30).json())

# 推論結果を可視化
# model.predict("your_image.jpg", confidence=40, overlap=30).save("prediction.jpg")

# 別の場所でホストされている画像で推論
# print(model.predict("URL_OF_YOUR_IMAGE", hosted=True, confidence=40, overlap=30).json())
```

{% 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"
```

Web 上の別の場所でホストされている画像をその URL 経由で推論する場合（忘れずに [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)。これを行う最も簡単な方法は、次を使用することです: [Git for Windows インストーラー](https://git-scm.com/downloads) これには次も含まれます: `curl` および `base64` インストール時に「コマンド プロンプトから Git とオプションの Unix ツールを使用」を選択すると、コマンドラインツールも含まれます。

その後、上記と同じコマンドを使用できます。
{% 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/self-hosted/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)

    // Base 64 エンコード
    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);

        // Base 64 エンコード
        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
  リモート: 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)

同梱バージョン
   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="Elixir" %}
ユーザーからリクエストがあるたびにコードスニペットを追加しています。Elixirアプリに推論APIを統合したい場合は、 [ここをクリックして投票を記録してください](https://app.roboflow.com/request/snippet.upload-elixir).
{% endtab %}
{% endtabs %}

### レスポンスオブジェクトの形式

ホストされたAPIの推論ルートは `JSON` 予測の配列を含むオブジェクトを返します。各予測には以下のプロパティがあります:

* `x` = 検出されたオブジェクトの水平方向の中心点
* `y` = 検出されたオブジェクトの垂直方向の中心点
* `width` = バウンディングボックスの幅
* `height` = バウンディングボックスの高さ
* `class` = 検出されたオブジェクトのクラスラベル
* `confidence` = 検出されたオブジェクトに正しいラベルと位置座標があるというモデルの確信度
* `keypoints` = キーポイント予測の配列
  * `x` = キーポイントの水平方向の中心（画像左上隅を基準）
  * `y` = キーポイントの垂直方向の中心（画像左上隅を基準）
  * `class_name` = キーポイントの名前
  * `class_id` = キーポイントのID。スケルトンにマッピングされます `vertices` バージョンレコードで、頂点の色とスケルトンのエッジを対応付けるために、 [プロジェクトのバージョンを表示](https://docs.roboflow.com/datasets/versions/dataset-versions#view-a-version)
  * `confidence` = キーポイントが正しい位置にあり、可視である（遮蔽されていない、または削除されていない）という確信度

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

```json
{
    "predictions": [
        {
            "x": 189.5,
            "y": 100,
            "width": 163,
            "height": 186,
            "class": "helmet",
            "confidence": 0.544,
            "keypoints": [
                {
                    "x": 189, 
                    "y": 20,
                    "class_name": "top",
                    "class_id": 0,
                    "confidence": 0.91
                },
                {
                    "x": 188, 
                    "y": 180,
                    "class_name": "bottom",
                    "class_id": 1,
                    "confidence": 0.93
                }
            ]
        }
    ],
    "image": {
        "width": 2048,
        "height": 1371
    }
}
```

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

### Inference APIのパラメータ

## Inference APIの使用

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

base64エンコードされた画像をモデルのエンドポイントに直接POSTできます。あるいは、URLをクエリ文字列の `画像` パラメータとして渡すこともできます。画像がすでに別の場所でホストされている場合です。

#### パスパラメータ

| 名前          | 型   | 説明                                                                                                            |
| ----------- | --- | ------------------------------------------------------------------------------------------------------------- |
| datasetSlug | 文字列 | データセット名のURL安全版です。学習後、モデルのデータセットバージョンの学習結果セクションにあるメインプロジェクトビューのURLを見るか、「curlコマンドを取得」ボタンをクリックすると、Web UIで確認できます。 |
| version     | 数値  | データセットのバージョンを識別するバージョン番号                                                                                      |

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

| 名前         | 型   | 説明                                                                                                                                                                                                                                                                            |
| ---------- | --- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 画像         | 文字列 | <p>追加する画像のURL。画像が別の場所でホストされている場合に使用します。（リクエストボディでbase64エンコードされた画像をPOSTしない場合は必須です。）<br><br><strong>注意:</strong> URLエンコードするのを忘れないでください。</p>                                                                                                                                     |
| classes    | 文字列 | <p>予測を特定のクラスのみに制限します。カンマ区切りの文字列で指定してください。<br><br><strong>例:</strong> dog,cat<br><br><strong>デフォルト:</strong> なし（すべてのクラスを表示）</p>                                                                                                                                                |
| overlap    | 数値  | <p>同じクラスのバウンディングボックス予測が1つのボックスにまとめられる前に重なってよい最大割合（0〜100）<br><br><strong>デフォルト:</strong> 30</p>                                                                                                                                                                                |
| confidence | 数値  | <p>返される予測のしきい値（0〜100）。数値が低いほど多くの予測が返されます。数値が高いほど、確信度の高い予測だけが少なく返されます。<br><br><strong>デフォルト:</strong> 40</p>                                                                                                                                                                   |
| stroke     | 数値  | <p>予測の周囲に表示されるバウンディングボックスの幅（ピクセル単位）（ <code>format</code> は <code>画像</code>).<br><br><strong>デフォルト:</strong> 1</p>                                                                                                                                                             |
| labels     | 真偽値 | <p>予測にテキストラベルを表示するかどうか（ <code>format</code> は <code>画像</code>).<br><br><strong>デフォルト:</strong> false</p>                                                                                                                                                                      |
| format     | 文字列 | <p><strong>json</strong> - JSON予測の配列を返します。（レスポンス形式タブを参照）。<br><strong>画像</strong> - 注釈付き予測を含む画像を、 <code>Content-Type</code> の <code>image/jpeg</code>. <strong>image\_and\_json</strong> - base64のvisualizationフィールドを含むJSON予測の配列を返します。<br><br><strong>デフォルト</strong>: json</p> |
| api\_key   | 文字列 | あなたのAPIキー（ワークスペースのAPI設定ページで取得できます）                                                                                                                                                                                                                                            |

#### リクエストボディ

| 名前 | 型   | 説明                                             |
| -- | --- | ---------------------------------------------- |
|    | 文字列 | base64エンコードされた画像。（クエリパラメータで画像URLを渡さない場合は必須です）。 |

{% tabs %}
{% tab title="200件のJSON形式の予測。(x,y)はボックスの" %}

```
{
    "predictions": [{
        "x": 234.0,
        "y": 363.5,
        "width": 160,
        "height": 197,
        "class": "手",
        "confidence": 0.943
    }, {
        "x": 504.5,
        "y": 363.0,
        "width": 215,
        "height": 172,
        "class": "手",
        "confidence": 0.917
    }, {
        "x": 1112.5,
        "y": 691.0,
        "width": 139,
        "height": 52,
        "class": "手",
        "confidence": 0.87
    }, {
        "x": 78.5,
        "y": 700.0,
        "width": 139,
        "height": 34,
        "class": "手",
        "confidence": 0.404
    }]
}
```

{% endtab %}

{% tab title="403 モデルにアクセスする権限がapi\_keyにありません。" %}

```
{
    "Message": "このリソースにアクセスする権限がユーザーにありません"
}
```

{% endtab %}
{% endtabs %}
