Inférence#
Ultralytics Platform fournit une inférence dans le navigateur pour tester les modèles entraînés ainsi que des points de terminaison dédiés pour un accès programmatique.

Onglet Prédiction#
Chaque modèle avec des poids inclut un onglet Predict pour l’inférence dans le navigateur :
- Accède à ton modèle
- Clique sur l’onglet Predict
- Importe une image, utilise un exemple ou ouvre ta webcam
- Examine la superposition spécifique à la tâche, le résumé des prédictions, les temps d’exécution et la réponse brute
Les modèles sans poids affichent plutôt un état vide : entraîne le modèle ou importe d’abord les poids.

Méthodes d’entrée#
Le panneau de prédiction prend en charge plusieurs méthodes d’entrée :
| Méthode | Description |
|---|---|
| Importation d’image | Fais glisser-déposer une image ou clique pour l’importer |
| Images d’exemple | Clique sur les exemples intégrés (images du jeu de données ou valeurs par défaut) |
| Capture par webcam | Flux vidéo en direct avec capture d’une seule image |
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:#fffImporter une image#
Fais glisser-déposer une image ou clique pour l’importer :
- Formats pris en charge : JPEG, PNG, WebP, AVIF, HEIC, JP2, TIFF, BMP
- Taille maximale : 10 MB
- Inférence automatique : les résultats s’affichent automatiquement après l’importation
Le panneau de prédiction lance automatiquement l’inférence lorsque tu importes une image, sélectionnes un exemple ou captures une image avec la webcam. Aucun clic sur un bouton n’est nécessaire.
Avant l’importation, le panneau redimensionne l’image afin que son côté le plus long corresponde à la valeur sélectionnée Image Size, puis demande des coordonnées normalisées. Cela accélère les tests dans le navigateur ; les requêtes que tu envoies toi-même ne sont pas redimensionnées.
Images d’exemple#
Le panneau de prédiction affiche jusqu’à deux images d’exemple provenant du jeu de données associé à ton modèle, en privilégiant la partition val, puis
test, puis train. Si aucun jeu de données n’est associé, des exemples par défaut sont utilisés :
| Image | Contenu |
|---|---|
bus.jpg | Scène de rue avec des véhicules |
zidane.jpg | Scène sportive avec des personnes |
Pour les modèles OBB, des images aériennes de bateaux et d’un aéroport sont affichées à la place.
Les images d’exemple sont préchargées au chargement de la page. Ainsi, cliquer sur un exemple lance une inférence quasi instantanée, sans attendre son téléchargement.
Webcam#
Clique sur la carte de la webcam pour démarrer un flux vidéo en direct :
- Autorise l’accès à la caméra lorsque cela t’est demandé
- Clique sur l’aperçu vidéo pour capturer une image
- L’inférence s’exécute automatiquement sur l’image capturée
- Clique à nouveau pour redémarrer la webcam
Afficher les résultats#
Les résultats de l’inférence affichent la sortie appropriée à la tâche du modèle : boîtes, masques, points clés, boîtes orientées, scores de classification, couverture sémantique ou carte de profondeur. Lorsque c’est possible, les résultats des objets utilisent les couleurs de classes du jeu de données. Le panneau affiche également les temps de prétraitement, d’inférence, de post-traitement et du réseau.

Le panneau des résultats affiche :
| Champ | Description |
|---|---|
| Résumé des résultats | Liste des détections, ou les 5 principales classes pour les modèles de classification et sémantiques |
| Statistiques de vitesse | Prétraitement, inférence, post-traitement et réseau (ms) |
| Versions | Versions d’Ultralytics et de PyTorch, ainsi que la plage de profondeur ou la taille du masque, le cas échéant |
| Réponse JSON | Réponse brute de l’API dans un bloc de code, avec les données cartographiques en base64 masquées |
Deux commandes apparaissent au-dessus de l’aperçu une fois les résultats disponibles : clique sur l’image pour l’agrandir en conservant les superpositions, et utilise le bouton de téléchargement pour enregistrer un fichier JPEG annoté du résultat actuel.
Paramètres d’inférence#
Ajuste le comportement de l’inférence à l’aide des trois curseurs situés sous l’image :

| Paramètre | Plage | Valeur par défaut | Description |
|---|---|---|---|
| Confiance | 0.01 – 1.0, par incréments de 0.01 | 0.25 | Seuil minimal de confiance |
| IoU | 0.0 – 0.95, par incréments de 0.01 | 0.7 | Seuil IoU de NMS |
| Taille de l'image | 32 – 1280, par incréments de 32 | 640 | Dimension de redimensionnement de l’entrée |
La modification d’un paramètre relance automatiquement l’inférence sur l’image actuelle, avec un délai anti-rebond de 500ms. Il n’est pas nécessaire de réimporter l’image.
Seuil de confiance#
Filtre les prédictions selon leur confiance :
- Élevé (0.5+) : moins de prédictions, mais plus certaines
- Faible (0.1-0.25) : davantage de prédictions, avec un peu de bruit
- Par défaut (0.25) : équilibre adapté à la plupart des cas d’utilisation
Seuil IoU#
Contrôle la suppression non maximale (NMS) :
- Élevé (0.7+) : autorise davantage de boîtes qui se chevauchent
- Faible (0.3-0.5) : supprime plus agressivement les détections qui se chevauchent
- Par défaut (0.7) : comportement NMS équilibré pour la plupart des cas d’utilisation
Prédiction du déploiement#
Chaque point de terminaison dédié en cours d’exécution inclut un onglet Predict directement sur sa carte de déploiement. Il utilise le propre service d’inférence du déploiement plutôt que le service de prédiction partagé, ce qui te permet de tester ton point de terminaison déployé depuis le navigateur.
Sur un point de terminaison payant avec la surveillance activée, les images traitées contribuent également à l'onglet Surveillance. Les exemples échantillonnés et les graphiques agrégés de l'onglet Surveillance sont des données légères et temporaires conservées en mémoire ; l'arrêt, le redémarrage, le redéploiement, le redimensionnement ou le remplacement du modèle peuvent effacer les exemples échantillonnés et les graphiques agrégés. Enregistre les exemples dans un jeu de données pour conserver les exemples.
API du point de terminaison dédié#
La carte API Docs de l’onglet Predict du modèle contient des requêtes d’exemple en Python, JavaScript et cURL, préremplies avec
la confiance, l’IoU et la taille d’image actuellement définies par les curseurs. L’URL et la clé sont des valeurs fictives jusqu’à ce que tu déploies le
modèle — un bouton Deploy situé à côté des onglets de code ouvre directement son onglet Deploy. Après le déploiement, l’onglet
Code de la carte de déploiement renseigne l’URL de ce point de terminaison et, pour les propriétaires de l’espace de travail, sa clé API associée, prêtes à être copiées et exécutées.
Authentification#
Inclus ta clé API dans les requêtes :
Authorization: Bearer YOUR_API_KEYPour lancer l’inférence depuis tes propres scripts, notebooks ou applications, inclus une clé API. Génère-en une dans Settings > API Keys. Un point de terminaison dédié n’accepte que l’unique clé avec laquelle il a été créé ; l’API de modèle partagée accepte toute clé active de l’espace de travail, et les modèles publics acceptent également les requêtes anonymes.
Point de terminaison#
Les points de terminaison dédiés reçoivent les requêtes sur leur propre URL :
POST https://YOUR_DEPLOYMENT_URL.run.app/predictL’inférence partagée utilise l’API de la Platform avec le chemin complet du modèle :
POST https://platform.ultralytics.com/api/models/{owner}/{project}/{model}/predictLes deux acceptent le même corps multipart/form-data et renvoient la même structure de réponse. Avec le
SDK Python, utilise client.models.predict(owner, project, model, body=...) pour l’inférence
partagée ou client.deployments.predict(owner, deployment, body=...) pour un déploiement dédié :
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})Requête#
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())
Paramètres de requête#
| Paramètre | Type | Valeur par défaut | Plage | Description |
|---|---|---|---|---|
file | file | - | - | Fichier image ou vidéo (requis sauf si source est défini) |
conf | float | 0.25 | 0.01 – 1.0 | Seuil minimal de confiance |
iou | float | 0.7 | 0.0 – 0.95 | Seuil IoU de NMS |
imgsz | int | 640 | 32 – 1280 | Taille de l’image d’entrée en pixels |
normalize | bool | false | - | Renvoyer les coordonnées des boîtes englobantes entre 0 et 1 |
decimals | int | 5 | 0 – 10 | Précision décimale des valeurs de coordonnées |
bits | int | 8 | 8, 12, 16 | Quantification de la carte de profondeur, uniquement pour les modèles de profondeur |
source | string | - | - | URL de l’image ou chaîne base64 (alternative à file) |
Réponse#
{
"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"
}
}
}
Champs de la réponse#
| Champ | Type | Description |
|---|---|---|
images | tableau | Liste des images traitées, avec une entrée par image vidéo pour les vidéos |
images[].shape | tableau | Dimensions de l’image [hauteur, largeur] |
images[].results | tableau | Liste des détections |
images[].results[].class | int | Indice de classe (ID entier) |
images[].results[].name | string | Nom de la classe |
images[].results[].confidence | float | Confiance de la détection (0-1) |
images[].results[].box | objet | Coordonnées de la boîte englobante |
images[].semantic_mask | objet | Carte des classes par pixel (modèles sémantiques uniquement) |
images[].depth | objet | Carte de profondeur par pixel (modèles de profondeur uniquement) |
images[].speed | objet | Temps de traitement en millisecondes |
metadata | objet | Nombre d’images, temps de service, tâche et versions d’Ultralytics/PyTorch |
Réponses spécifiques à la tâche#
Le format de réponse varie selon la tâche :
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400}
}Limites de débit#
L’API de modèles partagée est limitée à 20 requêtes/minute pour chaque clé API, utilisateur connecté ou adresse IP anonyme. En cas de
limitation, l’API renvoie 429 avec un en-tête Retry-After. Consulte la référence complète des
limites de débit pour toutes les catégories de points de terminaison.
Les requêtes envoyées directement à un point de terminaison dédié ne passent pas par le limiteur de débit de l’API Platform. Le point de terminaison réduit tout de même la charge avec 429 et un en-tête Retry-After lorsqu’il atteint temporairement sa capacité. Pour l’inférence locale à haut volume, consulte le guide du mode Predict.
Gestion des erreurs#
Réponses d’erreur courantes :
| Code | Message | Solution |
|---|---|---|
| 400 | Image non valide | Vérifie le format du fichier ou que le modèle dispose de poids entraînés |
| 401 | Non autorisé | Vérifie la clé API |
| 404 | Modèle introuvable | Vérifie le propriétaire, le projet et les noms du modèle |
| 413 | Entrée trop volumineuse | Réduis la taille du fichier en dessous de la limite du point de terminaison |
| 429 | Débit limité | Attends, puis réessaie, ou envoie les requêtes directement à un point de terminaison dédié |
| 500 | Erreur du serveur | Réessaie la requête |
| 503 | Service indisponible | Le service Predict démarre ou est inaccessible ; attends un court instant, puis réessaie |
FAQ#
Les deux méthodes d’inférence acceptent les fichiers vidéo :
- Les points de terminaison dédiés acceptent directement les fichiers vidéo. Formats pris en charge (jusqu’à 100 Mo) : ASF, AVI, GIF, M4V, MKV, MOV, MP4, MPEG, MPG, TS, WEBM, WMV. Chaque image est traitée individuellement et les résultats sont renvoyés image par image. Consulte les points de terminaison dédiés pour plus de détails.
- L’inférence partagée (
POST /api/models/{owner}/{project}/{model}/predict) utilise le même service Predict et accepte les mêmes formats vidéo. L’onglet Predict du navigateur permet uniquement de sélectionner des images ; utilise donc l’API ou un point de terminaison dédié pour les vidéos.
- Limite de l’onglet Predict : 10 Mo
- Limite de l’API : 100 Mo pour l’inférence partagée et les points de terminaison dédiés
- Redimensionnement automatique dans l’onglet Predict : les images sont redimensionnées à la
Image Sizesélectionnée avant l’envoi
Les grandes images sont automatiquement redimensionnées dans le navigateur tout en conservant leur rapport hauteur/largeur. Les requêtes que tu envoies toi-même ne sont pas redimensionnées ; les images dépassant la limite sont donc rejetées avec
413.L’API actuelle traite une image par requête. Pour le traitement par lots :
- Envoie des requêtes distinctes pour chaque image
- Répartis les requêtes entre les points de terminaison dédiés lorsque cela est pertinent
- Utilise l’inférence locale pour les grands lots
Inférence par lots avec Pythonimport 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))
Dans l’onglet Predict, le bouton de téléchargement situé au-dessus de l’aperçu enregistre le résultat actuel au format JPEG annoté. L’API elle-même renvoie des prédictions JSON. Pour les visualiser :
plot()d’Ultralytics :Consulte la documentation du mode Predict pour découvrir l’API complète des résultats et les options de visualisation.