Passer au contenu

API d'inférence Ultralytics HUB

Après avoir entraîné un modèle, vous pouvez utiliser l'API d'inférence partagée gratuitement. Si vous êtes un utilisateur Pro, vous pouvez accéder à l'API d'inférence dédiée. L'API d'inférence Ultralytics HUB vous permet d'exécuter l'inférence via notre API REST sans avoir besoin d'installer et de configurer l'environnement Ultralytics YOLO localement.

Capture d'écran Ultralytics HUB de l'onglet Deploy à l'intérieur de la page Model avec une flèche pointant vers la carte Dedicated Inference API et une autre vers la carte Shared Inference API


Regarder : Présentation de l'API d'inférence Ultralytics HUB

API d'inférence dédiée

En réponse à une forte demande et à un intérêt généralisé, nous sommes ravis de dévoiler l'API d'inférence dédiée Ultralytics HUB, offrant un déploiement en un seul clic dans un environnement dédié pour nos utilisateurs Pro !

Remarque

Nous sommes ravis d'offrir cette fonctionnalité GRATUITEMENT pendant notre bêta publique dans le cadre du Pro Plan, avec des niveaux payants possibles à l'avenir.

  • Couverture mondiale : Déployé dans 38 régions du monde, assurant un accès à faible latence depuis n'importe quel endroit. Consultez la liste complète des régions Google Cloud.
  • Basé sur Google Cloud Run : Soutenu par Google Cloud Run, fournissant une infrastructure infiniment scalable et très fiable.
  • Haute Vitesse : Une latence inférieure à 100 ms est possible pour l'inférence YOLOv8n à une résolution de 640 à partir de régions proches, selon les tests d'Ultralytics.
  • Sécurité Renforcée : Fournit des fonctionnalités de sécurité robustes pour protéger vos données et garantir la conformité aux normes de l'industrie. En savoir plus sur la sécurité de Google Cloud.

Pour utiliser l'API d'inférence dédiée Ultralytics HUB, cliquez sur le bouton Start Endpoint. Ensuite, utilisez l'URL de point de terminaison unique comme décrit dans les guides ci-dessous.

Capture d'écran Ultralytics HUB de l'onglet Deploy à l'intérieur de la page Model avec une flèche pointant vers le bouton Start Endpoint dans la carte Dedicated Inference API

Astuce

Choisissez la région avec la latence la plus faible pour obtenir les meilleures performances, comme décrit dans la documentation.

Pour arrêter le point de terminaison dédié, cliquez sur le bouton Arrêter le point de terminaison.

Capture d'écran Ultralytics HUB de l'onglet Deploy à l'intérieur de la page Model avec une flèche pointant vers le bouton Stop Endpoint dans la carte Dedicated Inference API

API d'inférence partagée

Pour utiliser l'API d'inférence partagée Ultralytics HUB, suivez les guides ci-dessous.

L'API d'inférence partagée Ultralytics HUB a les limites d'utilisation suivantes :

  • 100 appels / heure

Python

Pour accéder à l'API d'inférence Ultralytics HUB à l'aide de Python, utilisez le code suivant :

import requests

# API URL
url = "https://predict.ultralytics.com"

# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}

# Inference arguments (use actual MODEL_ID)
data = {"model": "https://hub.ultralytics.com/models/MODEL_ID", "imgsz": 640, "conf": 0.25, "iou": 0.45}

# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
    files = {"file": image_file}
    response = requests.post(url, headers=headers, files=files, data=data)

print(response.json())

Remarque

Remplacez MODEL_ID avec l'ID de modèle souhaité, API_KEY avec votre clé API réelle, et path/to/image.jpg avec le chemin d'accès à l'image sur laquelle vous souhaitez exécuter l'inférence.

Si vous utilisez notre API d'inférence dédiée, remplacez le url également.

cURL

Pour accéder à l'API d'inférence Ultralytics HUB à l'aide de cURL, utilisez le code suivant :

curl -X POST "https://predict.ultralytics.com" \
  -H "x-api-key: API_KEY" \
  -F "model=https://hub.ultralytics.com/models/MODEL_ID" \
  -F "file=@/path/to/image.jpg" \
  -F "imgsz=640" \
  -F "conf=0.25" \
  -F "iou=0.45"

Remarque

Remplacez MODEL_ID avec l'ID de modèle souhaité, API_KEY avec votre clé API réelle, et path/to/image.jpg avec le chemin d'accès à l'image sur laquelle vous souhaitez exécuter l'inférence.

Si vous utilisez notre API d'inférence dédiée, remplacez le url également.

Arguments

Consultez le tableau ci-dessous pour une liste complète des arguments d'inférence disponibles.

Argument Par défaut Type Description
file file Fichier image ou vidéo à utiliser pour l'inférence.
imgsz 640 int Taille de l'image d'entrée, la plage valide est 32 - 1280 pixels.
conf 0.25 float Seuil de confiance pour les prédictions, plage valide 0.01 - 1.0.
iou 0.45 float Intersection sur Union seuil (IoU), plage valide 0.0 - 0.95.

Réponse

L'API d'inférence Ultralytics HUB renvoie une réponse JSON.

Classification

Modèle de classification

from ultralytics import YOLO

# Load model
model = YOLO("yolov8n-cls.pt")

# Run inference
results = model("image.jpg")

# Print image.jpg results in JSON format
print(results[0].to_json())
curl -X POST "https://predict.ultralytics.com" \
  -H "x-api-key: API_KEY" \
  -F "model=https://hub.ultralytics.com/models/MODEL_ID" \
  -F "file=@/path/to/image.jpg" \
  -F "imgsz=640" \
  -F "conf=0.25" \
  -F "iou=0.45"
import requests

# API URL
url = "https://predict.ultralytics.com"

# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}

# Inference arguments (use actual MODEL_ID)
data = {"model": "https://hub.ultralytics.com/models/MODEL_ID", "imgsz": 640, "conf": 0.25, "iou": 0.45}

# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
    files = {"file": image_file}
    response = requests.post(url, headers=headers, files=files, data=data)

print(response.json())
{
  "images": [
    {
      "results": [
        {
          "class": 0,
          "name": "person",
          "confidence": 0.92
        }
      ],
      "shape": [
        750,
        600
      ],
      "speed": {
        "inference": 200.8,
        "postprocess": 0.8,
        "preprocess": 2.8
      }
    }
  ],
  "metadata": ...
}

Détection

Modèle de détection

from ultralytics import YOLO

# Load model
model = YOLO("yolov8n.pt")

# Run inference
results = model("image.jpg")

# Print image.jpg results in JSON format
print(results[0].to_json())
curl -X POST "https://predict.ultralytics.com" \
  -H "x-api-key: API_KEY" \
  -F "model=https://hub.ultralytics.com/models/MODEL_ID" \
  -F "file=@/path/to/image.jpg" \
  -F "imgsz=640" \
  -F "conf=0.25" \
  -F "iou=0.45"
import requests

# API URL
url = "https://predict.ultralytics.com"

# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}

# Inference arguments (use actual MODEL_ID)
data = {"model": "https://hub.ultralytics.com/models/MODEL_ID", "imgsz": 640, "conf": 0.25, "iou": 0.45}

# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
    files = {"file": image_file}
    response = requests.post(url, headers=headers, files=files, data=data)

print(response.json())
{
  "images": [
    {
      "results": [
        {
          "class": 0,
          "name": "person",
          "confidence": 0.92,
          "box": {
            "x1": 118,
            "x2": 416,
            "y1": 112,
            "y2": 660
          }
        }
      ],
      "shape": [
        750,
        600
      ],
      "speed": {
        "inference": 200.8,
        "postprocess": 0.8,
        "preprocess": 2.8
      }
    }
  ],
  "metadata": ...
}

OBB

Modèle OBB

from ultralytics import YOLO

# Load model
model = YOLO("yolov8n-obb.pt")

# Run inference
results = model("image.jpg")

# Print image.jpg results in JSON format
print(results[0].tojson())
curl -X POST "https://predict.ultralytics.com" \
  -H "x-api-key: API_KEY" \
  -F "model=https://hub.ultralytics.com/models/MODEL_ID" \
  -F "file=@/path/to/image.jpg" \
  -F "imgsz=640" \
  -F "conf=0.25" \
  -F "iou=0.45"
import requests

# API URL
url = "https://predict.ultralytics.com"

# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}

# Inference arguments (use actual MODEL_ID)
data = {"model": "https://hub.ultralytics.com/models/MODEL_ID", "imgsz": 640, "conf": 0.25, "iou": 0.45}

# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
    files = {"file": image_file}
    response = requests.post(url, headers=headers, files=files, data=data)

print(response.json())
{
  "images": [
    {
      "results": [
        {
          "class": 0,
          "name": "person",
          "confidence": 0.92,
          "box": {
            "x1": 374.85565,
            "x2": 392.31824,
            "x3": 412.81805,
            "x4": 395.35547,
            "y1": 264.40704,
            "y2": 267.45728,
            "y3": 150.0966,
            "y4": 147.04634
          }
        }
      ],
      "shape": [
        750,
        600
      ],
      "speed": {
        "inference": 200.8,
        "postprocess": 0.8,
        "preprocess": 2.8
      }
    }
  ],
  "metadata": ...
}

Segmentation

Modèle de segmentation

from ultralytics import YOLO

# Load model
model = YOLO("yolov8n-seg.pt")

# Run inference
results = model("image.jpg")

# Print image.jpg results in JSON format
print(results[0].tojson())
curl -X POST "https://predict.ultralytics.com" \
  -H "x-api-key: API_KEY" \
  -F "model=https://hub.ultralytics.com/models/MODEL_ID" \
  -F "file=@/path/to/image.jpg" \
  -F "imgsz=640" \
  -F "conf=0.25" \
  -F "iou=0.45"
import requests

# API URL
url = "https://predict.ultralytics.com"

# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}

# Inference arguments (use actual MODEL_ID)
data = {"model": "https://hub.ultralytics.com/models/MODEL_ID", "imgsz": 640, "conf": 0.25, "iou": 0.45}

# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
    files = {"file": image_file}
    response = requests.post(url, headers=headers, files=files, data=data)

print(response.json())
{
  "images": [
    {
      "results": [
        {
          "class": 0,
          "name": "person",
          "confidence": 0.92,
          "box": {
            "x1": 118,
            "x2": 416,
            "y1": 112,
            "y2": 660
          },
          "segments": {
            "x": [
              266.015625,
              266.015625,
              258.984375,
              ...
            ],
            "y": [
              110.15625,
              113.67188262939453,
              120.70311737060547,
              ...
            ]
          }
        }
      ],
      "shape": [
        750,
        600
      ],
      "speed": {
        "inference": 200.8,
        "postprocess": 0.8,
        "preprocess": 2.8
      }
    }
  ],
  "metadata": ...
}

Pose

Modèle de pose

from ultralytics import YOLO

# Load model
model = YOLO("yolov8n-pose.pt")

# Run inference
results = model("image.jpg")

# Print image.jpg results in JSON format
print(results[0].tojson())
curl -X POST "https://predict.ultralytics.com" \
  -H "x-api-key: API_KEY" \
  -F "model=https://hub.ultralytics.com/models/MODEL_ID" \
  -F "file=@/path/to/image.jpg" \
  -F "imgsz=640" \
  -F "conf=0.25" \
  -F "iou=0.45"
import requests

# API URL
url = "https://predict.ultralytics.com"

# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}

# Inference arguments (use actual MODEL_ID)
data = {"model": "https://hub.ultralytics.com/models/MODEL_ID", "imgsz": 640, "conf": 0.25, "iou": 0.45}

# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
    files = {"file": image_file}
    response = requests.post(url, headers=headers, files=files, data=data)

print(response.json())
{
  "images": [
    {
      "results": [
        {
          "class": 0,
          "name": "person",
          "confidence": 0.92,
          "box": {
            "x1": 118,
            "x2": 416,
            "y1": 112,
            "y2": 660
          },
          "keypoints": {
            "visible": [
              0.9909399747848511,
              0.8162999749183655,
              0.9872099757194519,
              ...
            ],
            "x": [
              316.3871765136719,
              315.9374694824219,
              304.878173828125,
              ...
            ],
            "y": [
              156.4207763671875,
              148.05775451660156,
              144.93240356445312,
              ...
            ]
          }
        }
      ],
      "shape": [
        750,
        600
      ],
      "speed": {
        "inference": 200.8,
        "postprocess": 0.8,
        "preprocess": 2.8
      }
    }
  ],
  "metadata": ...
}


📅 Créé il y a 1 an ✏️ Mis à jour il y a 5 mois

Commentaires