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.
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.
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.
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": ...
}