Ultralytics YOLO27 : Inscris-toi sur la liste d’attente.
Get Started
Fondamentaux de la vision par ordinateur·Comprendre les métriques·Leçon 10/10
Leçondébutant

Du laboratoire à la production

Installe Ultralytics, exécute YOLO26 sur tes propres images, vérifie les résultats par rapport à tes spécifications et choisis la prochaine étape.

Dix minutes avec un modèle préentraîné suffisent à répondre à la question qui détermine tout ton plan : un modèle prêt à l’emploi couvre-t-il déjà tes classes et ta caméra, ou as-tu besoin de tes propres données ? Ici, tu installes Ultralytics, exécutes YOLO26 sur des images réelles et vérifies le résultat par rapport aux spécifications rédigées dans la première leçon.

Résultat

Exécute YOLO26 sur tes propres images et décide, d’après les résultats, si tu dois créer un prototype avec des poids préentraînés ou constituer un jeu de données.

Parcours accéléré
Si tu connais déjà les bases, voici la version courte.
  1. Installation : pip install ultralytics, puis yolo checks.

  2. Prédiction : yolo predict model=yolo26n.pt source=https://ultralytics.com/images/bus.jpg.

  3. Vérification : lesquelles des classes de tes spécifications sont préentraînées, et les boîtes sont-elles correctes sur tes images ?

  4. Choisis le prochain cours en fonction de la réponse.

Pratique

Installation#

pip install ultralytics
yolo checks

La première ligne installe le paquet Python ultralytics et la commande yolo, ainsi que PyTorch s’il n’est pas déjà installé. yolo checks affiche les versions de Python, PyTorch et CUDA, ainsi que le matériel qu’Ultralytics utilisera, pour que tu puisses vérifier la configuration avant de lancer quoi que ce soit. Utilise un nouvel environnement virtuel ; le guide de démarrage rapide couvre conda, Docker et les configurations GPU.

Version de Python

Le paquet ultralytics s’installe avec Python 3.8 et les versions ultérieures, mais les versions actuelles de PyTorch nécessitent Python 3.10 ou une version ultérieure. Si ton environnement est plus ancien, crée d’abord un nouvel environnement virtuel avec une version récente de Python.

Sélecteur PyTorch Start Locally avec Stable, Mac, Pip, Python et Default sélectionnés, affichant la commande d’installation pip3 pour torch, torchvision et torchaudio

Un GPU qui n’est pas utilisé

Symptôme : yolo checks indique CPU sur une machine équipée d’un GPU NVIDIA, et l’inférence est lente. Cause : une version de PyTorch réservée au CPU — par exemple, la roue pip installée par défaut sous Windows. Solution : sélectionne ton système d’exploitation, ton gestionnaire de paquets et ta version de CUDA dans le sélecteur PyTorch ci-dessus, exécute la commande affichée, puis réinstalle ultralytics. Sur un Mac, comme dans la capture d’écran, la version installée par défaut convient ; Ultralytics s’exécute sur le CPU, sauf si tu passes device=mps pour utiliser le GPU Apple.

Une première prédiction#

from ultralytics import YOLO

model = YOLO("yolo26n.pt")  # télécharge le modèle nano d’environ 5 Mo à la première utilisation
results = model("https://ultralytics.com/images/bus.jpg", save=True)

for box in results[0].boxes:
    print(model.names[int(box.cls)], round(float(box.conf), 2))

Les deux affichent un résumé sur une ligne par image et enregistrent l’image annotée dans runs/detect/predict :

image 1/1 .../bus.jpg: 640x480 4 persons, 1 bus, 19.7ms
Speed: 0.9ms preprocess, 19.7ms inference, 0.4ms postprocess per image at shape (1, 3, 640, 480)
Results saved to runs/detect/predict

Détail ligne par ligne : l’image a été redimensionnée en 640×480 pour l’inférence ; le modèle a détecté quatre personnes et un bus ; l’inférence a pris environ 20 ms sur le processeur d’un ordinateur portable. La ligne Speed est ta première vérification de latence : compare-la à la fréquence d’images indiquée dans la ligne d’entrée de tes spécifications. Ouvre l’image enregistrée : chaque boîte affiche la classe, la boîte et la confiance présentées dans la leçon sur la détection.

Vérifie les résultats par rapport à tes spécifications#

QuestionSi ouiSi non
Tes classes font-elles partie des 80 classes COCO que le modèle connaît ?Créer un prototype sans aucun entraînementTu as besoin de données annotées et d’un ajustement fin (guide sur l’ajustement fin)
Sur tes images, les boîtes dont le score dépasse ton seuil encadrent-elles les bons objets ?La tâche et le point de vue correspondentAttends-toi à un écart de domaine : collecte des données provenant de tes caméras
Le type de sortie est-il celui dont ta règle de décision a besoin ?Conserve la tâcheChange de poids : -seg, -sem, -depth, -pose, -obb ou -cls
La vitesse est-elle suffisante pour ta fréquence d’images sur le matériel cible ?Passe à la suiteEssaie un modèle plus petit ou un format d’export optimisé

La première question a une réponse précise : model.names répertorie toutes les classes connues du modèle préentraîné. Pour les spécifications du chariot élévateur, person est une classe COCO, contrairement à forklift ; aucun seuil ne permettra donc au modèle préentraîné de détecter un chariot élévateur. C’est le résultat le plus courant lors d’un premier essai — le modèle couvre une partie des spécifications — et la bonne approche consiste à créer un prototype de la logique de décision avec les classes disponibles, tout en constituant le jeu de données pour les autres.

Ce qui change en production#

Un modèle déployé est confronté à des conditions qui n’ont jamais été échantillonnées dans son jeu de données : nouvelles caméras, saisons, produits, uniformes. Sans réentraînement, la précision se dégrade ; avec un réentraînement régulier à partir des données observées en production, elle remonte :

Deux graphiques de la précision d’un modèle au fil du temps : un modèle dont les performances se dégradent sans réentraînement et un modèle réentraîné régulièrement qui retrouve sa précision à chaque mise à jour

Chaque leçon de ce cours contribue à cette boucle : les spécifications définissent un échec, l’audit de couverture indique où chercher, le vérificateur d’annotations et les consignes rendent les nouvelles données utiles, et des séparations et métriques fiables permettent de vérifier si le modèle réentraîné est réellement meilleur. Deux habitudes permettent de faire fonctionner cette boucle dès le premier jour : consigne un échantillon d’entrées et de prédictions, y compris celles à faible confiance, et conserve le jeu de test figé afin que chaque modèle soit comparé sur les mêmes images. Le cours Observabilité et dérive aborde en détail la surveillance de la dérive des données.

Quelle est la suite ?#

CoursÀ suivre quand
Créer des jeux de données YOLO hautes performancesTes classes ne sont pas préentraînées ou tes scènes diffèrent de COCO
Entraîne ton premier modèle YOLOTu as un jeu de données annoté et tu souhaites effectuer un ajustement fin
Ultralytics YOLO en productionTu as un modèle et tu as besoin de l’exporter, d’effectuer du suivi et de le surveiller
Développe avec Ultralytics PlatformTu veux gérer les données, l’annotation, l’entraînement et le déploiement au même endroit

Tu préfères un flux de travail dans un navigateur ? Ultralytics Platform exécute la même boucle — importer, annoter, entraîner, déployer — sans installation locale :

Essayer

Modifie le script de solution : place les classes de tes spécifications dans spec_classes et les chemins de tes propres images dans sources, puis exécute le script et ouvre les résultats enregistrés. Crée un tableau — image, classes détectées, correspondance avec tes spécifications (oui ou non) — et termine par une phrase qui indique ta prochaine étape et le cours correspondant.

Valider
git add -A && git commit -m "docs(academy): completed Computer Vision Foundations"
Terminé lorsque
Tu as terminé la leçon lorsque tous les éléments suivants sont réunis.
  • Tu as exécuté YOLO26 sur au moins trois de tes propres images et ouvert les résultats enregistrés.

  • Tu sais quelles classes de tes spécifications sont préentraînées et lesquelles nécessitent tes propres données.

  • Tu as une phrase qui indique ta prochaine étape et le cours que tu suivras pour y parvenir.

Afficher la solution
from pathlib import Path

from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# 1. Which classes in your output line does the pretrained model already know?
spec_classes = {"person", "forklift"}
known = set(model.names.values())
print(f"pretrained: {sorted(spec_classes & known)}  needs your own data: {sorted(spec_classes - known)}")

# 2. What does it find on your images?
sources = [
    "https://ultralytics.com/images/bus.jpg",  # replace with your own images
    "https://ultralytics.com/images/zidane.jpg",
]
for source, result in zip(sources, model.predict(sources, conf=0.25, save=True, verbose=False)):
    names = [result.names[int(c)] for c in result.boxes.cls]
    print(f"{Path(source).name}: {len(names)} detections -> {sorted(set(names))}")
pretrained: ['person']  needs your own data: ['forklift']
bus.jpg: 5 detections -> ['bus', 'person']
zidane.jpg: 3 detections -> ['person', 'tie']

Pour les spécifications du chariot élévateur : person est couvert, forklift ne l’est pas. Prochaine étape : crée dès maintenant un prototype de la règle de zone sur les personnes avec le modèle préentraîné, et commence le cours Créer des jeux de données YOLO hautes performances pour collecter et annoter des chariots élévateurs filmés par les caméras de l’entrepôt.

Et ensuite ?

Cours terminé — passe le quiz final pour obtenir ton certificat, puis poursuis avec le cours Créer des jeux de données YOLO hautes performances pour transformer tes spécifications en un jeu de données prêt pour l’entraînement.