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

Onglet Predict#
Chaque modèle avec des poids comprend un onglet Predict pour effectuer des inférences dans le navigateur :
- Accède à ton modèle
- Clique sur l’onglet Predict
- Charge une image, utilise un exemple ou ouvre ta webcam
- Consulte la superposition propre à la tâche, le résumé de prédiction, les durées et la réponse brute
Les modèles sans poids affichent plutôt un état vide — entraîne d’abord le modèle ou charge des poids.

Méthodes d’entrée#
Le panneau de prédiction prend en charge plusieurs méthodes d’entrée :
| Méthode | Description |
|---|---|
| Chargement d’image | Fais glisser-déposer une image ou clique pour la charger |
| Images d’exemple | Clique sur les exemples intégrés (images de jeu de données ou images par défaut) |
| Capture par webcam | Flux vidéo en direct avec capture d’une seule image |
| Caméra IP | Flux RTSP ou RTSPS sur ton propre déploiement |
Charger une image#
Fais glisser-déposer une image ou clique pour la charger :
- 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 le chargement
Le panneau de prédiction lance automatiquement l’inférence lorsque tu charges une image, sélectionnes un exemple ou captures une image avec la webcam. Aucun clic sur un bouton n’est nécessaire.
Avant le chargement, le panneau redimensionne l’image afin que son côté le plus long corresponde à la valeur sélectionnée de Image Size, et 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 issues 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 à l’ouverture de la page ; cliquer sur un exemple lance donc l’inférence presque instantanément, sans attendre le téléchargement.
Webcam#
Sélectionne Webcam au-dessus de la zone d’image pour démarrer un flux vidéo en direct :
- Autorise l’accès à la caméra lorsque le navigateur te le demande
- Clique sur l’aperçu vidéo pour capturer une image
- L’inférence s’exécute automatiquement sur l’image capturée
- Clique sur Retour à la webcam pour revenir au flux en direct
Dans l’onglet Predict de ton propre déploiement, la webcam exécute plutôt l’inférence en continu. Consulte la page Inférence en direct avec une caméra.
Afficher les résultats#
Les résultats d’inférence affichent la sortie adapté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 de détection utilisent les couleurs des classes du jeu de données. Le panneau affiche également les durées 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 des 5 classes principales pour la classification et les modèles sémantiques |
| Statistiques de vitesse | Prétraitement, inférence, post-traitement et réseau (ms) |
| Versions | Versions d’Ultralytics et de PyTorch, ainsi que plage de profondeur ou 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 de carte en base64 omises |
Une fois les résultats disponibles, deux commandes apparaissent sur l’aperçu : clique sur l’image pour l’agrandir sans perdre les superpositions, et utilise le bouton de téléchargement pour enregistrer un JPEG annoté du résultat actuel.
Paramètres d’inférence#
Ajuste le comportement de l’inférence à l’aide des trois curseurs sous l’image (les modèles de profondeur n’affichent que Taille de l’image) :

| Paramètre | Plage | Valeur par défaut | Description |
|---|---|---|---|
| Confiance | 0.01 – 1.0, par pas de 0.01 | 0.25 | Seuil de confiance minimal |
| IoU | 0.0 – 0.95, par pas de 0.01 | 0.7 | Seuil IoU de la NMS |
| Taille de l'image | 32 – 1280, par pas 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 500 ms. Pas besoin de la téléverser à nouveau.
Seuil de confiance#
Filtre les prédictions selon leur confiance :
- Plus élevé (0.5+) : moins de prédictions, mais plus certaines
- Plus bas (0.1-0.25) : davantage de prédictions, avec un peu de bruit
- Par défaut (0.25) : un bon équilibre pour la plupart des cas d’utilisation
Seuil IoU#
Contrôle la suppression non maximale :
- Plus élevé (0.7+) : autorise davantage de boîtes qui se chevauchent
- Plus bas (0.3-0.5) : supprime plus agressivement les détections qui se chevauchent
- Par défaut (0.7) : un 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 comprend un onglet Predict sur sa page de déploiement. Celui-ci utilise le service d’inférence propre au 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 prêt, les images traitées alimentent également l’onglet Monitoring. Ses exemples et graphiques agrégés sont des données temporaires légères conservées en mémoire ; l’arrêt, le redémarrage, le redéploiement, le redimensionnement ou le remplacement du modèle peut les effacer. Enregistre les exemples dans un jeu de données pour les conserver.
Inférence en direct avec une caméra#
Dans l’onglet Predict d’un déploiement qui t’appartient, sélectionne Webcam ou Caméra IP pour exécuter le point de terminaison sur une vidéo en direct :
| Source | Fonctionnement |
|---|---|
| Webcam | Le navigateur envoie les images au point de terminaison une par une et affiche chaque résultat sur le flux en direct |
| Caméra IP | Saisis une URL rtsp:// ou rtsps://, identifiants compris, puis clique sur Connecter ; le point de terminaison lit la caméra et renvoie chaque résultat en flux |
L’inférence en direct utilise la clé API associée au point de terminaison, que seul le propriétaire de l’espace de travail peut charger ; pour les autres membres de l’équipe, la webcam capture des images isolées et la Caméra IP n’est pas disponible, comme dans l’onglet Predict d’un modèle. La caméra IP doit être accessible depuis Internet : le point de terminaison refuse les adresses réseau locales telles que 192.168.x.x. Chaque résultat correspond à l’image la plus récente ; les images sont donc ignorées si l’inférence prend du retard. Les changements de curseur s’appliquent à l’image suivante de la webcam et redémarrent le flux de la caméra IP. L’inférence en direct est suspendue lorsque l’onglet du navigateur est masqué. Clique sur l’aperçu pour capturer une image, ou sur Déconnecter pour arrêter la visualisation de la caméra IP.
Caméra en arrière-plan#
Un point de terminaison doté de ressources personnalisées en CPU et en mémoire peut surveiller une caméra IP même après ta déconnexion ou la fermeture de la page. Une fois que la caméra connectée affiche des résultats, active Continuer l’exécution en arrière-plan. L’en-tête du déploiement affiche Caméra activée, et les résultats apparaissent dans l’onglet Surveillance sous forme d’exemples temporaires et de statistiques de prédiction.
- Paramètres : la caméra en arrière-plan utilise toujours le seuil de confiance par défaut (0.25), l’IoU (0.7) et la taille d’image d’entraînement du modèle ; les curseurs ne s’appliquent pas à cette caméra.
- Coût : la caméra utilise l’instance active du point de terminaison sans frais supplémentaires ; le tarif horaire de fonctionnement s’applique, que la caméra soit activée ou non.
- Modifications : activer ou désactiver la caméra, ou en choisir une autre, redémarre l’instance du point de terminaison. Le point de terminaison reste ainsi prêt, mais ses données temporaires de surveillance sont effacées.
- Arrêt : désactive le commutateur. La déconnexion ou la fermeture de la page ne l’arrête pas, et le redimensionnement du point de terminaison à la taille par défaut la supprime. Si la caméra se déconnecte, le point de terminaison continue d’essayer de se reconnecter.
- Cycle de vie du point de terminaison : arrêter le point de terminaison arrête la caméra et les frais ; le redémarrer réactive la caméra enregistrée.
Les points de terminaison de taille par défaut proposent l’inférence en direct par webcam et caméra IP, sans option d’arrière-plan. Pour enregistrer une caméra en arrière-plan via l’API, utilise l’action camera du déploiement.
Diffuser les résultats depuis l’API#
Envoie une URL RTSP ou RTSPS en tant que source, avec l’en-tête Accept: text/event-stream, à une URL de point de terminaison dédié pour recevoir les résultats sous forme d’événements envoyés par le serveur :
curl -N -X POST \
"https://YOUR_DEPLOYMENT_URL.run.app/predict" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: text/event-stream" \
-F "source=rtsp://user:password@camera.example.com:554/stream" \
-F "conf=0.25"Chaque événement d’image contient images dans le format de réponse, avec des coordonnées normalisées (0-1), une URL de données JPEG preview de l’image, et metadata avec la tâche et les noms des classes. Seuls conf, iou et imgsz s’appliquent, et la diffusion de l’URL de la caméra en arrière-plan du point de terminaison utilise ses paramètres par défaut. Les événements ne contenant que status ne transportent aucune image, et un événement contenant un message error (la caméra n’a pas pu être lue ou le point de terminaison ne peut pas exécuter le modèle) met fin au flux. Le flux se ferme également au redémarrage du point de terminaison ou lorsque la requête atteint sa limite de temps ; si le flux se termine sans erreur, reconnecte-toi en augmentant progressivement le délai d’attente. La route de prédiction de déploiement de l’API Platform et le SDK ne prennent pas en charge la diffusion en continu ; envoie les requêtes de caméra à l’URL du point de terminaison avec sa clé API associée. Une requête de caméra source sans l’en-tête renvoie 400.
API du point de terminaison dédié#
La carte API Docs de l’onglet Predict du modèle contient des exemples de requêtes Python, JavaScript et cURL, préremplis avec les valeurs de confiance, d’IoU et de taille d’image actuellement définies sur les curseurs. L’URL et la clé sont des espaces réservés jusqu’au déploiement du modèle — un bouton Deploy à côté des onglets de code te mène directement à l’onglet Deploy du modèle. Après le déploiement, l’onglet de résultat Docs dans l’onglet Predict de la page 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ête à être copiée et exécutée.
Authentification#
Inclue 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 à leur propre URL :
POST https://YOUR_DEPLOYMENT_URL.run.app/predictL’inférence partagée utilise l’API de la plateforme 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 une réponse de même structure. 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é. Les deux méthodes du SDK appellent l’API de la plateforme ; ses limites de débit et la limite de taille des requêtes s’appliquent donc. Pour les éviter, envoie directement une requête à l’URL d’un point de terminaison dédié, comme indiqué sous Requête. Exemple d’inférence partagée :
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 | fichier | - | - | Fichier image ou vidéo (obligatoire sauf si source est défini) |
conf | float | 0.25 | 0.01 – 1.0 | Seuil de confiance minimal |
iou | float | 0.7 | 0.0 – 0.95 | Seuil IoU de la NMS |
imgsz | int | - | 32 – 1280 | Taille de l’image d’entrée en pixels ; par défaut, la taille utilisée pour l’entraînement du modèle (640 si elle n’est pas disponible) |
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 |
vid_stride | int | 1 | ≥ 1 | Prédire une image vidéo sur N ; les images fixes ne sont pas concernées |
bits | int | 8 | 8, 12, 16 | Quantification de la carte de profondeur, modèles de profondeur uniquement |
source | chaîne | - | - | URL d’image ou chaîne encodée en base64 (alternative à file) ; 4 096 caractères max. via l’API de la plateforme |
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,
"classNames": ["person", "bicycle", "car", "..."],
"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, une entrée par image vidéo traitée |
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 | chaîne | 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, noms des classes du modèle, durées du service, tâche et versions |
Réponses spécifiques à la tâche#
Le format de la 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èle partagée est limitée à 20 requêtes/minute pour chaque clé API, appelant connecté ou adresse IP anonyme. La route de prédiction des déploiements de la plateforme (POST /api/deployments/{owner}/{deployment}/predict) est soumise à la même limite. 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 de la plateforme. Le point de terminaison régule toutefois la charge avec 429 et un en-tête Retry-After lorsqu’il atteint temporairement sa capacité. Pour effectuer des inférences locales à grande échelle, 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 de modèles |
| 413 | Entrée trop volumineuse | Réduis la taille du fichier pour qu’elle soit inférieure à la limite du point de terminaison |
| 429 | Limite de débit atteinte | Patiente et 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 ; patiente un instant et 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’à 32 Mo par requête) : ASF, AVI, GIF, M4V, MKV, MOV, MP4, MPEG, MPG, TS, WEBM, WMV. Les résultats sont renvoyés pour chaque image traitée, et une requête peut durer jusqu’à 1 heure. Consulte les points de terminaison dédiés pour en savoir plus.
- L’inférence partagée (
POST /api/models/{owner}/{project}/{model}/predict) utilise le même service de prédiction et accepte les mêmes formats vidéo, mais les requêtes sont limitées à environ 4,5 Mo et expirent au bout d’environ 30 secondes, ce qui ne convient qu’aux clips courts. L’onglet Prédire du navigateur ne permet de téléverser que des images ; utilise donc un point de terminaison dédié pour les fichiers vidéo, ou l’inférence en direct avec une caméra pour une webcam ou une caméra IP.
Les modèles de profondeur n’acceptent pas les fichiers vidéo.
Dans l’onglet Predict, le bouton de téléchargement au-dessus de l’aperçu enregistre le résultat actuel sous forme de JPEG annoté. L’API elle-même renvoie des prédictions JSON. Pour les visualiser :
- Utilise les prédictions pour dessiner des boîtes localement
- Exécute le modèle localement avec Ultralytics et enregistre le résultat annoté avec
save()(ou récupère un tableau avecplot()) :
from ultralytics import YOLO model = YOLO("yolo26n.pt") results = model("image.jpg") results[0].save("annotated.jpg")Consulte la documentation du mode Predict pour découvrir l’API complète des résultats et les options de visualisation.
- Limite de l’onglet Predict : 10 Mo
- Limite de l’API d’inférence partagée : environ 4,5 Mo par requête, y compris via le SDK Python
- Limite des points de terminaison dédiés : 32 Mo par requête envoyée directement à l’URL du point de terminaison
- Redimensionnement automatique dans l’onglet Predict : les images sont redimensionnées à la taille
Image Sizesélectionnée avant leur envoi
Les grandes images sont automatiquement redimensionnées dans le navigateur en conservant leur rapport hauteur/largeur. Les requêtes que tu envoies toi-même ne sont pas redimensionnées ; celles qui dépassent la limite sont donc rejetées avec
413.L’API actuelle traite une image par requête. Pour traiter des lots :
- Envoie une requête distincte pour chaque image
- Répartis les requêtes sur plusieurs points de terminaison dédiés, si nécessaire
- 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))