Ultralytics YOLO27 :
Get Started

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 d’Ultralytics Platform avec une superposition de détections

Onglet Predict#

Chaque modèle avec des poids comprend un onglet Predict pour effectuer des inférences dans le navigateur :

  1. Accède à ton modèle
  2. Clique sur l’onglet Predict
  3. Charge une image, utilise un exemple ou ouvre ta webcam
  4. 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.

Zone de dépôt de fichiers pour charger une image dans l’onglet Predict d’Ultralytics Platform

Méthodes d’entrée#

Le panneau de prédiction prend en charge plusieurs méthodes d’entrée :

MéthodeDescription
Chargement d’imageFais glisser-déposer une image ou clique pour la charger
Images d’exempleClique sur les exemples intégrés (images de jeu de données ou images par défaut)
Capture par webcamFlux vidéo en direct avec capture d’une seule image
Caméra IPFlux 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
Inférence automatique

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.

Redimensionnement côté client

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 :

ImageContenu
bus.jpgScène de rue avec des véhicules
zidane.jpgScè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.

Images préchargées

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 :

  1. Autorise l’accès à la caméra lorsque le navigateur te le demande
  2. Clique sur l’aperçu vidéo pour capturer une image
  3. L’inférence s’exécute automatiquement sur l’image capturée
  4. 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.

Résultats de l’onglet Predict d’Ultralytics Platform avec détections et statistiques de vitesse

Le panneau des résultats affiche :

ChampDescription
Résumé des résultatsListe des détections, ou des 5 classes principales pour la classification et les modèles sémantiques
Statistiques de vitessePrétraitement, inférence, post-traitement et réseau (ms)
VersionsVersions d’Ultralytics et de PyTorch, ainsi que plage de profondeur ou taille du masque, le cas échéant
Réponse JSONRé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) :

Curseurs des paramètres de l’onglet Predict de la plateforme Ultralytics

ParamètrePlageValeur par défautDescription
Confiance0.01 – 1.0, par pas de 0.010.25Seuil de confiance minimal
IoU0.0 – 0.95, par pas de 0.010.7Seuil IoU de la NMS
Taille de l'image32 – 1280, par pas de 32640Dimension de redimensionnement de l’entrée
Relance automatique

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 :

SourceFonctionnement
WebcamLe navigateur envoie les images au point de terminaison une par une et affiche chaque résultat sur le flux en direct
Caméra IPSaisis 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_KEY
Clé API requise

Pour 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/predict

L’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}/predict

Les 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())

Exemples de code de l’onglet Predict de la plateforme Ultralytics, onglet Python

Paramètres de requête#

ParamètreTypeValeur par défautPlageDescription
filefichier--Fichier image ou vidéo (obligatoire sauf si source est défini)
conffloat0.250.01 – 1.0Seuil de confiance minimal
ioufloat0.70.0 – 0.95Seuil IoU de la NMS
imgszint-32 – 1280Taille 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)
normalizeboolfalse-Renvoyer les coordonnées des boîtes englobantes entre 0 et 1
decimalsint50 – 10Précision décimale des valeurs de coordonnées
vid_strideint1≥ 1Prédire une image vidéo sur N ; les images fixes ne sont pas concernées
bitsint88, 12, 16Quantification de la carte de profondeur, modèles de profondeur uniquement
sourcechaî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"
        }
    }
}

Vue de la réponse JSON de l’onglet Predict de la plateforme Ultralytics

Champs de la réponse#

ChampTypeDescription
imagestableauListe des images traitées, une entrée par image vidéo traitée
images[].shapetableauDimensions de l’image [hauteur, largeur]
images[].resultstableauListe des détections
images[].results[].classintIndice de classe (ID entier)
images[].results[].namechaîneNom de la classe
images[].results[].confidencefloatConfiance de la détection (0-1)
images[].results[].boxobjetCoordonnées de la boîte englobante
images[].semantic_maskobjetCarte des classes par pixel (modèles sémantiques uniquement)
images[].depthobjetCarte de profondeur par pixel (modèles de profondeur uniquement)
images[].speedobjetTemps de traitement en millisecondes
metadataobjetNombre 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.

Besoin d’un débit supérieur ?

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 :

CodeMessageSolution
400Image non valideVérifie le format du fichier ou que le modèle dispose de poids entraînés
401Non autoriséVérifie la clé API
404Modèle introuvableVérifie le propriétaire, le projet et les noms de modèles
413Entrée trop volumineuseRéduis la taille du fichier pour qu’elle soit inférieure à la limite du point de terminaison
429Limite de débit atteintePatiente et réessaie, ou envoie les requêtes directement à un point de terminaison dédié
500Erreur du serveurRéessaie la requête
503Service indisponibleLe 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 :

    1. Utilise les prédictions pour dessiner des boîtes localement
    2. Exécute le modèle localement avec Ultralytics et enregistre le résultat annoté avec save() (ou récupère un tableau avec plot()) :
    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 Size sé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 :

    1. Envoie une requête distincte pour chaque image
    2. Répartis les requêtes sur plusieurs points de terminaison dédiés, si nécessaire
    3. Utilise l’inférence locale pour les grands lots
    Inférence par lots avec 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))

Commentaires