推論#
Ultralytics Platformは、トレーニング済みモデルをテストするためのブラウザベースの推論機能と、プログラムからアクセスするための専用エンドポイントを提供します。

推論タブ#
重みを持つすべてのモデルには、ブラウザベースの推論用の Predict タブが含まれています:
- モデルのページへ移動します
- Predictタブをクリックします
- 画像をアップロードするか、例を使用するか、Webカメラを開きます
- タスク固有のオーバーレイ、予測サマリー、処理時間、および生レスポンスを確認します。
重みを持たないモデルには代わりに空の状態が表示されます。最初にモデルをトレーニングするか、重みをアップロードしてください。

入力方法#
予測パネルは複数の入力方法をサポートしています。
| メソッド | 説明 |
|---|---|
| 画像のアップロード | ドラッグ&ドロップ、またはクリックして画像をアップロードします |
| サンプル画像 | 組み込みのサンプル(データセット画像またはデフォルト)をクリックします |
| Webカメラキャプチャ | シングルフレームキャプチャが可能なライブカメラフィード |
graph LR
A[Upload Image]:::start --> D[Auto-Inference]:::proc
B[Example Image]:::start --> D
C[Webcam Capture]:::start --> D
D --> E[Results + Overlays]:::out
classDef start fill:#4CAF50,color:#fff
classDef proc fill:#2196F3,color:#fff
classDef out fill:#9C27B0,color:#fff画像をアップロード#
ドラッグ&ドロップ、またはクリックしてアップロードします:
- 対応フォーマット: JPEG, PNG, WebP, AVIF, HEIC, JP2, TIFF, BMP
- 最大サイズ: 10 MB
- 自動推論: アップロード後に結果が自動的に表示されます
予測パネルは、画像のアップロード、サンプルの選択、またはWebカメラのフレームキャプチャを行うと自動的に推論を実行します。ボタンをクリックする必要はありません。
アップロードする前に、パネルは画像の最も長い辺が選択された Image Size に一致するようにリサイズし、正規化された座標をリクエストします。これによりブラウザでのテストが高速に保たれます。ご自身で送信するリクエストはリサイズされません。
サンプル画像#
予測パネルには、モデルのリンクされたデータセットからの最大2つのサンプル画像が表示され、val 分割、次に test、その次に train が優先されます。データセットがリンクされていない場合は、デフォルトのサンプルが使用されます:
| 画像 | コンテンツ |
|---|---|
bus.jpg | 車両が映った街中のシーン |
zidane.jpg | 人が映ったスポーツシーン |
OBBモデルの場合は、ボートや空港の航空写真が代わりに表示されます。
サンプル画像はページ読み込み時にプリロードされるため、サンプルをクリックするとダウンロード待ち時間なしでほぼ瞬時に推論がトリガーされます。
Webcam#
Webカメラカードをクリックしてライブカメラフィードを開始します:
- プロンプトが表示されたらカメラへのアクセスを許可します
- ビデオプレビューをクリックしてフレームをキャプチャします
- キャプチャしたフレームに対して自動的に推論が実行されます
- もう一度クリックするとWebカメラが再起動します
結果を表示#
推論結果には、モデルのタスクに応じた出力(バックス、マスク、キーポイント、指向性バックス、分類スコア、セマンティックカバレッジ、または深度マップ)が表示されます。オブジェクトの結果には、可能な場合、データセットのクラスカラーが使用されます。また、パネルには前処理、推論、後処理、およびネットワークの処理時間も表示されます。
結果パネルには以下が表示されます。
| フィールド | 説明 |
|---|---|
| 結果サマリー | 検出ごとのリスト、または分類およびセマンティックモデルの場合は上位5つのクラス |
| 速度統計 | 前処理、推論、後処理、およびネットワーク(ms) |
| バージョン | UltralyticsおよびPyTorchのバージョン、および該当する場合は深度範囲またはマスクサイズ |
| JSONレスポンス | コードブロック内の生のAPIレスポンス。base64マップデータは省略されています |
結果が表示されると、プレビューの上に2つのコントロールが表示されます。画像をクリックするとオーバーレイを維持したまま拡大でき、ダウンロードボタンを使用すると現在結果のアノテーション付きJPEGを保存できます。
推論パラメータ#
画像の下の3つのスライダーで推論の挙動を調整します:

| パラメータ | 範囲 | デフォルト | 説明 |
|---|---|---|---|
| Confidence | 0.01 – 1.0、0.01刻み | 0.25 | 最小信頼度しきい値 |
| IoU | 0.0 – 0.95、0.01刻み | 0.7 | NMS IoUしきい値 |
| Image Size | 32 – 1280、32刻み | 640 | 入力リサイズの寸法 |
パラメータを変更すると、500msのデバウンスを挟んで現在の画像に対する推論が自動的に再実行されます。再アップロードは不要です。
信頼度しきい値#
信頼度に基づいて予測をフィルタリングします:
- 高 (0.5以上): 予測数は減少しますが、より確実性が高い結果になります
- 低 (0.1-0.25): より多くの予測が得られますが、ノイズが含まれる可能性があります
- デフォルト (0.25): ほとんどのユースケースでバランスが取れています
IoUしきい値#
NMS (Non-Maximum Suppression) を制御します:
- 高 (0.7以上): 重なり合うボックスをより多く許可します
- Lower (0.3-0.5): 重なり合う検出をより積極的に抑制します
- デフォルト (0.7): ほとんどのユースケースでバランスの取れたNMS動作を提供します
デプロイメント予測#
実行中の各dedicated endpointには、デプロイメントカードに直接Predictタブが含まれます。これは共有予測サービスではなく、デプロイメント独自の推論サービスを使用するため、ブラウザからデプロイされたエンドポイントをテストできます。
専用エンドポイント API#
モデルの Predict タブにある API Docs カードには、スライダーで現在設定されている信頼度、IoU、画像サイズがあらかじめ入力された、Python、JavaScript、cURLのリクエスト例が含まれています。URLとキーは、モデルをデプロイするまではプレースホルダーです。コードタブの横にある Deploy ボタンをクリックすると、モデルの Deploy タブに移動します。デプロイ後、デプロイカードの Code タブには、そのエンドポイントのURLと、ワークスペース所有者の場合はバインドされたAPIキーが入力され、コピーして実行する準備が整います。
認証#
リクエストにAPIキーを含めてください:
Authorization: Bearer YOUR_API_KEY独自のスクリプト、ノートブック、またはアプリから推論を実行するには、APIキーを含めます。Settings > API Keys で作成してください。専用エンドポイントは作成時に使用された単一のキーのみを受け入れます。共有モデルAPIはワークスペース内のアクティブなキーを受け入れ、パブリックモデルは匿名のリクエストも受け入れます。
エンドポイント#
専用エンドポイントは独自のURLでリクエストを受け付けます:
POST https://YOUR_DEPLOYMENT_URL.run.app/predict共有推論では、モデルのフルパスを指定してプラットフォームAPIを使用します:
POST https://platform.ultralytics.com/api/models/{owner}/{project}/{model}/predictどちらも同じ multipart/form-data ボディを受け入れ、同じレスポンスの形状を返します。Python SDK を使用する場合は、共有推論には client.models.predict(owner, project, model, body=...) を使用し、専用デプロイには client.deployments.predict(owner, deployment, body=...) を使用します:
from ultralytics_platform import Platform
client = Platform() # reads ULTRALYTICS_API_KEY
with open("image.jpg", "rb") as f:
results = client.models.predict("acme-vision", "inspection", "v3", body={"file": f, "conf": 0.25})リクエスト#
import requests
url = "https://YOUR_DEPLOYMENT_URL.run.app/predict"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
data = {"conf": 0.25, "iou": 0.7, "imgsz": 640}
with open("image.jpg", "rb") as image_file:
response = requests.post(url, headers=headers, files={"file": image_file}, data=data)
print(response.json())
リクエストパラメータ#
| パラメータ | タイプ | デフォルト | 範囲 | 説明 |
|---|---|---|---|---|
file | ファイル | - | - | 画像または動画ファイル(source が設定されている場合を除き必須) |
conf | float | 0.25 | 0.01 – 1.0 | 最小信頼度しきい値 |
iou | float | 0.7 | 0.0 – 0.95 | NMS IoUしきい値 |
imgsz | int | 640 | 32 – 1280 | 入力画像のサイズ(ピクセル単位) |
normalize | bool | false | - | バウンディングボックスの座標を0~1で返します |
decimals | int | 5 | 0 – 10 | 座標値の小数点以下の精度 |
bits | int | 8 | 8, 12, 16 | 深度マップの量子化(深度モデルのみ) |
source | string | - | - | 画像 URL または base64 文字列(file の代替) |
レスポンス#
{
"images": [
{
"shape": [1080, 1920],
"results": [
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": { "x1": 100, "y1": 50, "x2": 300, "y2": 400 }
},
{
"class": 2,
"name": "car",
"confidence": 0.87,
"box": { "x1": 400, "y1": 200, "x2": 600, "y2": 350 }
}
],
"speed": {
"preprocess": 1.2,
"inference": 12.5,
"postprocess": 2.3
}
}
],
"metadata": {
"imageCount": 1,
"functionTimeAlive": 1284.51,
"functionTimeCall": 0.018,
"task": "detect",
"version": {
"ultralytics": "8.x.x",
"torch": "2.6.0",
"torchvision": "0.21.0",
"python": "3.13.0"
}
}
}
レスポンスフィールド#
| フィールド | タイプ | 説明 |
|---|---|---|
images | 配列 | 処理された画像のリスト(動画の場合は動画フレームごとに1つのエントリ) |
images[].shape | 配列 | 画像サイズ [高さ, 幅] |
images[].results | 配列 | 検出結果のリスト |
images[].results[].class | int | クラスインデックス (整数ID) |
images[].results[].name | string | クラス名 |
images[].results[].confidence | float | 検出の信頼度 (0-1) |
images[].results[].box | オブジェクト | バウンディングボックスの座標 |
images[].semantic_mask | オブジェクト | ピクセルごとのクラスマップ(セマンティックモデルのみ) |
images[].depth | オブジェクト | ピクセルごとの深度マップ(深度モデルのみ) |
images[].speed | オブジェクト | ミリ秒単位の処理時間 |
metadata | オブジェクト | 画像数、サービスタイミング、タスク、およびUltralytics/PyTorchのバージョン |
タスク固有のレスポンス#
レスポンス形式はタスクによって異なります:
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400}
}レート制限#
共有モデルAPIは、各APIキー、サインインした呼び出し元、または匿名IPに対して20リクエスト/分に制限されています。スロットルされると、APIは429をRetry-Afterヘッダーとともに返します。すべてのエンドポイントカテゴリについては、完全なrate-limit referenceを参照してください。
専用エンドポイントに直接送信されたリクエストは、プラットフォームAPIのレートリミッターを通過しません。エンドポイントは、一時的に容量いっぱいのときには、429 と Retry-After ヘッダーを用いて負荷を逃がします。大容量のローカル推論については、Predict モードガイドを参照してください。
エラーハンドリング#
一般的なエラーレスポンス:
| コード | メッセージ | 解決策 |
|---|---|---|
| 400 | 無効な画像 | ファイル形式を確認するか、モデルにトレーニング済みの重みがあることを確認してください |
| 401 | 未承認 | APIキーを確認してください |
| 404 | モデルが見つかりません | 所有者、プロジェクト、モデル名を確認してください |
| 413 | 入力が大きすぎます | ファイルサイズをエンドポイントの制限未満に減らしてください |
| 429 | レート制限 | 待機して再試行するか、dedicated endpointにリクエストを直接送信してください。 |
| 500 | サーバーエラー | リクエストを再試行 |
| 503 | サービス利用不可 | Predictサービスが起動中または到達不能です。しばらく待ってから再試行してください |
よくある質問 (FAQ)#
どちらの推論方法も動画ファイルを受け付けます:
- Dedicated endpointsはビデオファイルを直接受け入れます。サポートされている形式(最大100 MB):ASF、AVI、GIF、M4V、MKV、MOV、MP4、MPEG、MPG、TS、WEBM、WMV。各フレームは個別に処理され、結果はフレームごとに返されます。詳細については、dedicated endpointsを参照してください。
- 共有推論 (
POST /api/models/{owner}/{project}/{model}/predict) は同じ予測サービスを使用し、同じ動画フォーマットを受け付けます。ブラウザの Predict タブは画像のみを選択するため、動画の場合はAPIまたは専用エンドポイントを使用してください。
Predict タブでは、プレビュー上のダウンロードボタンで現在結果のアノテーション付きJPEGとして保存できます。API自体はJSON予測を返します。それらを可視化するには:
- 予測結果を使用してローカルでボックスを描画する
- Ultralyticsの
plot()メソッドを使用します。
from ultralytics import YOLO model = YOLO("yolo26n.pt") results = model("image.jpg") results[0].save("annotated.jpg")完全な結果APIと視覚化オプションについては、Predict mode documentationを参照してください。
- Predict タブの制限: 10 MB
- API制限: 共有推論と専用エンドポイントの両方で 100 MB
- Predictタブでの自動リサイズ:画像はアップロード前に選択された
Image Sizeにリサイズされます
大きな画像はアスペクト比を維持したままブラウザで自動的にリサイズされます。ご自身で送信するリクエストはリサイズされないため、制限を超える画像は
413で拒否されます。現在のAPIは1リクエストにつき1画像を処理します。バッチ処理を行うには:
- 画像ごとに個別のリクエストを送信します
- 必要に応じて専用エンドポイント間でリクエストを分散させます
- 大規模なバッチにはローカル推論を使用します
Pythonを使用したバッチ推論import concurrent.futures import requests url = "https://YOUR_DEPLOYMENT_URL.run.app/predict" headers = {"Authorization": "Bearer YOUR_API_KEY"} images = ["img1.jpg", "img2.jpg", "img3.jpg"] def predict(image_path): with open(image_path, "rb") as f: return requests.post(url, headers=headers, files={"file": f}).json() with concurrent.futures.ThreadPoolExecutor(max_workers=4) as executor: results = list(executor.map(predict, images))