Ultralytics YOLO27 :
Get Started

Entraîner un modèle avec Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Introduction#

L’entraînement d’un modèle de deep learning consiste à lui fournir des données et à ajuster ses paramètres afin qu’il puisse effectuer des prédictions précises. Le mode train d’Ultralytics YOLO26 est conçu pour entraîner efficacement des modèles de détection d’objets en tirant pleinement parti des capacités du matériel moderne. Ce guide a pour objectif de couvrir tout ce dont tu as besoin pour commencer à entraîner tes propres modèles avec les nombreuses fonctionnalités de YOLO26. Si tu n’as pas encore installé Ultralytics, commence par le guide de démarrage rapide.

Consulte l’aperçu de YOLO27 non encore publié pour découvrir les exemples d’entraînement prévus.



Regarder : Comment entraîner un modèle YOLO sur ton jeu de données personnalisé dans Google Colab.

Pourquoi choisir Ultralytics YOLO pour l’entraînement ?#

Voici quelques bonnes raisons de choisir le mode Train de YOLO26 :

  • Efficacité : tire le meilleur parti de ton matériel, que tu utilises une configuration avec un seul GPU ou que tu répartisses la charge sur plusieurs GPU.
  • Polyvalence : entraîne tes modèles sur des jeux de données personnalisés, mais aussi sur des jeux de données facilement accessibles tels que COCO, VOC et ImageNet.
  • Facilité d’utilisation : des interfaces CLI et Python simples, mais puissantes, pour une expérience d’entraînement fluide.
  • Flexibilité des hyperparamètres : un large éventail d’hyperparamètres personnalisables pour affiner les performances du modèle. Pour un contrôle plus poussé, tu peux aussi personnaliser le trainer lui-même.
  • Entraînement dans le cloud : entraîne tes modèles sur des GPU cloud via l’Ultralytics Platform, avec des métriques en temps réel et une sauvegarde automatique des points de contrôle.

Principales fonctionnalités du mode Train#

Voici quelques fonctionnalités notables du mode Train de YOLO26 :

  • Téléchargement automatique des jeux de données : les configurations de jeux de données qui définissent une source de téléchargement sont téléchargées automatiquement lors de leur première utilisation, par exemple yolo train data=coco8.yaml. Consulte la présentation des jeux de données pour connaître les formats et les jeux de données pris en charge.
  • Prise en charge de plusieurs GPU : répartis facilement l’entraînement sur plusieurs GPU pour accélérer le processus.
  • Configuration des hyperparamètres : modifie les hyperparamètres à l’aide de fichiers de configuration YAML ou d’arguments CLI.
  • Visualisation et suivi : suis les métriques d’entraînement en temps réel et visualise le processus d’apprentissage pour mieux comprendre son déroulement.

Exemples d'utilisation#

Entraîne YOLO26n sur le jeu de données COCO8 pendant 100 époques, avec une taille d’image de 640. Tu peux spécifier l’appareil d’entraînement à l’aide de l’argument device. Si aucun argument n’est fourni, le GPU device=0 sera utilisé s’il est disponible ; sinon, device='cpu' sera utilisé. Consulte la section Arguments ci-dessous pour obtenir la liste complète des arguments d’entraînement.

Erreur de traitement multiprocessus sous Windows

Sous Windows, tu peux rencontrer une erreur RuntimeError lors du lancement de l’entraînement sous forme de script. Ajoute un bloc if __name__ == "__main__": avant ton code d’entraînement pour résoudre le problème.

Exemple d’entraînement sur un seul GPU et sur CPU

L’appareil est déterminé automatiquement. Si un GPU est disponible, il sera utilisé (appareil CUDA 0 par défaut) ; sinon, l’entraînement démarrera sur CPU.

from ultralytics import YOLO

# Charger un modèle
model = YOLO("yolo26n.yaml")  # créer un nouveau modèle à partir du fichier YAML
model = YOLO("yolo26n.pt")  # charger un modèle préentraîné (recommandé pour l’entraînement)
model = YOLO("yolo26n.yaml").load("yolo26n.pt")  # créer à partir du fichier YAML et transférer les poids

# Entraîner le modèle
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Entraînement sur plusieurs GPU#

L’entraînement sur plusieurs GPU permet d’utiliser plus efficacement les ressources matérielles disponibles en répartissant la charge d’entraînement entre plusieurs GPU. Cette fonctionnalité est accessible via l’API Python et l’interface en ligne de commande. Pour activer l’entraînement sur plusieurs GPU, indique les ID des GPU que tu souhaites utiliser.

Exemple d’entraînement sur plusieurs GPU

Pour entraîner le modèle sur 2 GPU, les appareils CUDA 0 et 1, utilise les commandes suivantes. Tu peux les adapter pour utiliser davantage de GPU, selon tes besoins.

from ultralytics import YOLO

# Charger un modèle
model = YOLO("yolo26n.pt")  # charger un modèle préentraîné (recommandé pour l’entraînement)

# Entraîner le modèle sur 2 GPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])

# Entraîner le modèle sur les deux GPU les moins sollicités
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])
Prise en charge de plusieurs GPU sous Windows

L’entraînement sur plusieurs GPU ne fonctionne pas sous Windows avec les roues PyTorch officielles pour torch>=2.4. Ultralytics lance DDP via torch.distributed.run, dont l’étape de rendez-vous construit un TCPStore qui utilise le backend libuv par défaut depuis PyTorch 2.4 ; or, les roues Windows officielles sont compilées sans libuv. L’entraînement s’arrête immédiatement avec :

RuntimeError: use_libuv was requested but PyTorch was built without libuv support

Définir USE_LIBUV=0 ne résout pas le problème, car le rendez-vous construit directement TCPStore et ce chemin d’exécution ne lit jamais cette variable. Entraîne ton modèle sous Linux ou WSL2 pour utiliser plusieurs GPU, ou utilise un seul GPU avec device=0 sous Windows.

Entraînement sur plusieurs GPU avec du code personnalisé

Lorsque tu spécifies plusieurs appareils (par exemple, device=[0, 1]), Ultralytics lance en interne une nouvelle instance de trainer et exécute torch.distributed.run en arrière-plan. Cela fonctionne de manière fluide avec l’utilisation standard de la CLI et les scripts Python non modifiés.

Cependant, si ton script contient des composants personnalisés — tels qu’un trainer, un validateur, un jeu de données ou un pipeline d’augmentation personnalisé — ces objets ne peuvent pas être sérialisés et transférés automatiquement aux sous-processus DDP. Dans ce cas, tu dois lancer directement ton script avec torch.distributed.run :

python -m torch.distributed.run --nproc_per_node 2 your_training_script.py

L’entraînement sur GPU AMD utilise une version de PyTorch compilée avec ROCm et la syntaxe standard device=0 ou device=cuda:0. Consulte le guide d’intégration AMD pour l’installation de ROCm, l’entraînement sur plusieurs GPU, les notes sur AMP et l’inférence MIGraphX des modèles exportés.

L’entraînement sur GPU Intel utilise device=xpu:0, ou plusieurs ID XPU avec une version de PyTorch qui fournit XCCL.

Entraînement sur NPU Huawei Ascend#

Ultralytics prend en charge l’entraînement et la validation sur les NPU Huawei Ascend via torch_npu. Installe des versions compatibles entre elles de CANN, PyTorch et torch_npu en suivant le guide d’installation de l’extension Ascend pour PyTorch, puis charge l’environnement CANN avant de lancer Ultralytics :

source /usr/local/Ascend/ascend-toolkit/set_env.sh
Exemple d’entraînement sur NPU Ascend
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# Entraîner sur un NPU Ascend
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0")

# Entraîner sur deux NPU Ascend avec HCCL
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0,1")

Les fonctionnalités d’entraînement standard, notamment AMP, la validation, la sauvegarde des points de contrôle et la reprise, utilisent le NPU actif. AutoBatch est disponible pour l’entraînement sur un seul NPU, tandis que plusieurs ID NPU lancent un entraînement distribué via HCCL. Consulte le guide d’intégration Huawei Ascend pour exporter et déployer le modèle après l’entraînement.

Entraînement sur les GPU les moins sollicités#

L’entraînement sur les GPU les moins sollicités sélectionne automatiquement les GPU les moins utilisés sur les systèmes qui en possèdent plusieurs, afin d’optimiser l’utilisation des ressources sans sélection manuelle. Cette fonctionnalité repère les GPU disponibles en fonction de leur taux d’utilisation et de la mémoire VRAM disponible.

Exemple d’entraînement sur les GPU les moins sollicités

Pour sélectionner et utiliser automatiquement le ou les GPU les moins sollicités pour l’entraînement, utilise le paramètre d’appareil -1. Cette fonctionnalité est particulièrement utile dans les environnements informatiques partagés ou sur les serveurs utilisés par plusieurs personnes.

from ultralytics import YOLO

# Charger un modèle
model = YOLO("yolo26n.pt")  # charger un modèle préentraîné (recommandé pour l’entraînement)

# Entraîner le modèle sur le GPU le moins sollicité
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=-1)

# Entraîner le modèle sur les deux GPU les moins sollicités
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])

L’algorithme de sélection automatique privilégie les GPU qui présentent :

  1. Un taux d’utilisation actuel plus faible
  2. Une plus grande quantité de mémoire disponible (VRAM libre)

Cette fonctionnalité est particulièrement utile dans les environnements informatiques partagés ou lorsque plusieurs tâches d’entraînement sont exécutées sur différents modèles. Elle s’adapte automatiquement à l’évolution des conditions du système et garantit une allocation optimale des ressources sans intervention manuelle.

Entraînement MPS sur Apple Silicon#

Grâce à la prise en charge intégrée des puces Apple Silicon dans les modèles Ultralytics YOLO, tu peux désormais entraîner tes modèles sur des appareils utilisant le puissant framework Metal Performance Shaders (MPS). MPS offre une méthode performante pour exécuter des tâches de calcul et de traitement d’images sur les puces conçues par Apple.

Pour activer l’entraînement sur les puces Apple Silicon, indique 'mps' comme appareil au démarrage de l’entraînement. Voici un exemple d’utilisation en Python et en ligne de commande :

Exemple d’entraînement MPS
from ultralytics import YOLO

# Charger un modèle
model = YOLO("yolo26n.pt")  # charger un modèle préentraîné (recommandé pour l’entraînement)

# Entraîner le modèle avec MPS
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")

En tirant parti de la puissance de calcul des puces Apple Silicon, cette fonctionnalité améliore l’efficacité du traitement des tâches d’entraînement. Pour obtenir des conseils plus détaillés et découvrir les options de configuration avancées, consulte la documentation PyTorch MPS.

Reprendre un entraînement interrompu#

La reprise de l’entraînement à partir d’un état précédemment enregistré est une fonctionnalité essentielle lorsqu’on travaille avec des modèles d’apprentissage profond. Elle peut s’avérer utile dans diverses situations, par exemple lorsque le processus d’entraînement a été interrompu de manière inattendue, ou lorsque tu souhaites poursuivre l’entraînement d’un modèle avec de nouvelles données ou pendant davantage d’époques.

Lors de la reprise de l’entraînement, Ultralytics YOLO charge les poids du dernier modèle enregistré et restaure également l’état de l’optimiseur, le planificateur de taux d’apprentissage, le numéro de l’époque et le jeu de données. Cela te permet de reprendre le processus d’entraînement sans interruption là où il s’était arrêté. Transmets explicitement data= avec resume pour poursuivre l’entraînement sur un autre jeu de données au lieu de celui du point de reprise.

Tu peux facilement reprendre l’entraînement dans Ultralytics YOLO en définissant l’argument resume sur True lors de l’appel de la méthode train, et en indiquant le chemin du fichier .pt contenant les poids du modèle partiellement entraîné.

Voici un exemple de reprise d’un entraînement interrompu avec Python et depuis la ligne de commande :

Exemple de reprise de l’entraînement
from ultralytics import YOLO

# Charger un modèle
model = YOLO("path/to/last.pt")  # charger un modèle partiellement entraîné

# Reprendre l’entraînement
results = model.train(resume=True)

En définissant resume=True, la fonction train poursuivra l’entraînement là où il s’était arrêté, à partir de l’état enregistré dans le fichier 'path/to/last.pt'. Si l’argument resume est omis ou défini sur False, la fonction train démarrera une nouvelle session d’entraînement.

N’oublie pas que les points de reprise sont enregistrés par défaut à la fin de chaque époque, ou à intervalles fixes à l’aide de l’argument save_period ; tu dois donc terminer au moins 1 époque pour reprendre un entraînement.

Paramètres d’entraînement#

Les paramètres d’entraînement des modèles YOLO comprennent différents hyperparamètres et réglages utilisés pendant le processus d’entraînement. Ces paramètres influent sur les performances, la vitesse et la précision du modèle. Les principaux paramètres d’entraînement comprennent la taille de lot, le taux d’apprentissage, le momentum et la décroissance des poids. De plus, le choix de l’optimiseur, de la fonction de perte et de la composition du jeu de données d’entraînement peut influer sur le processus d’entraînement. Il est essentiel de régler ces paramètres avec soin et d’expérimenter afin d’optimiser les performances.

Optimiseur MuSGD#

Dans YOLO26, MuSGD est un optimiseur hybride qui combine les mises à jour standard de SGD avec les mises à jour orthogonalisées de type Muon.

Il est recommandé pour les entraînements YOLO26 de longue durée et les jeux de données plus volumineux, où les mises à jour Muon orthogonalisées peuvent contribuer à stabiliser l’optimisation.

Seuls les poids linéaires 2D et les filtres de convolution 4D (redimensionnés en 2D) reçoivent la mise à jour de type Muon avec SGD, tandis que tous les autres paramètres, comme les poids de normalisation par lot et les termes de biais, restent soumis au SGD standard.

Lorsque optimizer=auto est utilisé, Ultralytics sélectionne automatiquement MuSGD pour les entraînements de longue durée (généralement lorsque le nombre d’itérations > 10000). Pour les entraînements plus courts, l’entraîneur utilise AdamW. En mode auto, l’entraîneur sélectionne également le taux d’apprentissage ; tout lr0 fourni par l’utilisateur est donc ignoré. Pour contrôler ces paramètres manuellement, sélectionne explicitement un optimiseur, par exemple optimizer=AdamW lr0=0.001.

Exemple d’utilisation :

yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGD

Consulte l’implémentation dans ultralytics/optim/muon.py et la logique de sélection automatique de l’optimiseur dans BaseTrainer.build_optimizer.

ArgumentTypeValeur par défautDescription
modelstrNoneSpécifie le fichier du modèle utilisé pour l’entraînement. Accepte le chemin d’accès à un modèle préentraîné .pt ou à un fichier de configuration .yaml. Indispensable pour définir la structure du modèle ou initialiser les poids.
datastrNoneChemin d’accès au fichier YAML du jeu de données (p. ex. coco8.yaml), qui contient les chemins vers les données de validation et d’entraînement, les noms des classes et le nombre de classes. Pour la classification, tu peux plutôt indiquer un répertoire de jeu de données ou le nom d’un jeu de données intégré (p. ex. imagenet10).
epochsint100Nombre total d’époques d’entraînement. Chaque époque correspond à un passage complet sur l’ensemble du jeu de données. Modifier cette valeur peut influer sur la durée de l’entraînement et les performances du modèle.
timefloatNoneDurée maximale d’entraînement, en heures. Si cette valeur est définie, elle remplace l’argument epochs et permet à l’entraînement de s’arrêter automatiquement après la durée indiquée. Pratique lorsque le temps d’entraînement est limité.
patienceint100Nombre d’époques à attendre sans amélioration des métriques de validation avant d’arrêter prématurément l’entraînement. Aide à prévenir le surapprentissage en interrompant l’entraînement lorsque les performances stagnent.
batchint ou float16Taille de lot, avec trois modes : définir un entier (p. ex. batch=16), utiliser le mode automatique avec 60 % de la mémoire GPU (batch=-1) ou le mode automatique avec une fraction d’utilisation spécifiée (batch=0.70).
imgszint640Taille cible des images pour l’entraînement. Les images sont redimensionnées en carrés dont les côtés correspondent à la valeur spécifiée (si rect=False), en préservant le rapport hauteur/largeur pour les modèles YOLO, mais pas pour RT-DETR. Influe sur la précision du modèle et la complexité des calculs.
saveboolTrueActive l’enregistrement des points de contrôle d’entraînement et des poids finaux du modèle. Pratique pour reprendre l’entraînement ou procéder au déploiement du modèle.
save_periodint-1Fréquence d’enregistrement des points de contrôle du modèle, exprimée en époques. La valeur -1 désactive cette fonctionnalité. Pratique pour enregistrer des modèles intermédiaires au cours de longues sessions d’entraînement.
cachebool ou strFalseActive la mise en cache des images du jeu de données en mémoire (True/ram), sur disque (disk) ou la désactive (False). Accélère l’entraînement en réduisant les entrées-sorties disque, au prix d’une utilisation accrue de la mémoire.
deviceint ou str ou listNoneSpécifie le ou les périphériques de calcul pour l’entraînement : un seul GPU (device=0), plusieurs GPU (device=[0,1]), un CPU (device=cpu), MPS pour les puces Apple (device=mps), un NPU Huawei Ascend (device=npu:0 ou device=npu:0,1), un Intel XPU (device=xpu:0), ou la sélection automatique d’un GPU inactif (device=-1) ou de plusieurs GPU inactifs (device=[-1,-1]).
workersint8Nombre de threads de travail pour le chargement des données (par RANK en cas d’entraînement multi-GPU). Influe sur la vitesse du prétraitement et de l’envoi des données au modèle, ce qui est particulièrement utile dans les configurations multi-GPU.
projectstrNoneNom du répertoire du projet dans lequel les résultats de l’entraînement sont enregistrés. Permet d’organiser le stockage de différentes expériences.
namestrNoneNom de la session d’entraînement. Sert à créer un sous-répertoire dans le dossier du projet, où sont stockés les journaux et les résultats de l’entraînement.
exist_okboolFalseSi True, autorise l’écrasement d’un répertoire projet/nom existant. Pratique pour les expérimentations itératives sans devoir supprimer manuellement les résultats précédents.
save_dirstrNoneSpécifie le répertoire exact dans lequel les résultats de la session sont enregistrés, en remplaçant la combinaison project/name. Le chemin est utilisé tel quel, sans incrémentation automatique ; les exécutions successives réutilisent donc le même répertoire.
pretrainedbool ou strTrueDétermine si l’entraînement commence à partir de poids préentraînés. La valeur peut être un booléen ou le chemin d’accès aux poids à charger. pretrained=False entraîne le modèle à partir de poids initialisés aléatoirement tout en conservant son architecture.
cls_remapboolTrueLors d’un ajustement fin sur plusieurs jeux de données, copie dans le nouveau modèle les lignes de la tête de classification préentraînée correspondant aux classes dont les noms correspondent. Les classes communes conservent ainsi le biais appris et, si la largeur de la tête reste inchangée, leurs poids. Cette option s’applique que le nombre de classes soit différent ou identique avec un ordre différent.
optimizerstr'auto'Choix de l’optimiseur pour l’entraînement. Les options incluent SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp ou auto, pour choisir AdamW ou MuSGD en fonction du nombre d’itérations d’entraînement. Influe sur la vitesse et la stabilité de la convergence.
seedint0Définit la graine aléatoire de l’entraînement pour garantir la reproductibilité des résultats d’une exécution à l’autre avec les mêmes configurations.
deterministicboolTrueForce l’utilisation d’algorithmes déterministes pour garantir la reproductibilité, mais peut influer sur les performances et la vitesse en raison de l’exclusion des algorithmes non déterministes.
verboseboolTrueActive l’affichage détaillé pendant l’entraînement : barres de progression, métriques par époque et informations supplémentaires dans la console.
single_clsboolFalseTraite toutes les classes des jeux de données multi-classes comme une seule classe pendant l’entraînement. Pratique pour les tâches de classification binaire ou lorsqu’on s’intéresse à la présence d’objets plutôt qu’à leur classification.
classeslist[int]NoneSpécifie une liste d’identifiants de classes à utiliser pour l’entraînement. Pratique pour filtrer les classes et se concentrer uniquement sur certaines d’entre elles.
rectboolFalseActive la stratégie de padding minimal : les images d'un lot sont rembourrées au minimum pour atteindre une taille commune, le côté le plus long étant égal à imgsz. Cela peut améliorer l'efficacité et la vitesse, mais affecter la précision du modèle. Le trainer YOLO standard utilise rect=True pour la validation de la détection, de la segmentation, de la pose et des OBB, quel que soit ce paramètre.
multi_scalefloat0.0Fait varier aléatoirement imgsz de +/- multi_scale à chaque lot (p. ex. 0.25 -> 0.75x à 1.25x), en arrondissant aux multiples du pas du modèle ; 0.0 désactive l’entraînement multi-échelle.
cos_lrboolFalseUtilise un planificateur de taux d’apprentissage cosinus, qui ajuste ce taux selon une courbe cosinus au fil des époques. Aide à gérer le taux d’apprentissage pour améliorer la convergence.
close_mosaicint10Désactive la mosaïque de l’augmentation des données pendant les N dernières époques afin de stabiliser l’entraînement avant son terme. La valeur 0 désactive cette fonctionnalité.
resumeboolFalseReprend l’entraînement à partir du dernier point de contrôle enregistré. Charge automatiquement les poids du modèle, l’état de l’optimiseur et le numéro de l’époque pour poursuivre l’entraînement sans interruption.
ampbool ou strTrueDéfinit la précision de l’entraînement : True ou "fp16" utilise FP16, "bf16" utilise BF16 sur les périphériques CUDA compatibles, et False ou "fp32" utilise FP32.
quantizeint ou strNoneDéfinis 8 (ou "int8") pour l’entraînement tenant compte de la quantification INT8 (QAT), qui affine le modèle avec une fausse quantification intégrée afin que les poids soient compatibles avec l’export INT8. Consulte l’entraînement tenant compte de la quantification.
fractionfloat, int ou list1.0Sous-ensemble du jeu de données, exprimé sous forme de ratio, de nombre ou de liste [train, val, test]. 1 désigne l’ensemble de la partition ; les entiers supérieurs à 1 correspondent à un nombre d’images, et seule l’entrée de test facultative accepte 0/0.0 pour signifier « aucun ». Les listes de deux éléments conservent l’ensemble de la partition de test.
profileboolFalseActive le profilage des vitesses ONNX et TensorRT pendant l’entraînement, ce qui est utile pour optimiser le déploiement du modèle.
freezeint ou listNoneGèle les N premières couches du modèle, ou certaines couches selon leur indice ou le nom du module (23.cv2, sans le model. initial), ce qui réduit le nombre de paramètres entraînables. Pratique pour l’ajustement fin ou l’apprentissage par transfert.
lr0float0.01Taux d’apprentissage initial (c.-à-d. SGD=1E-2, Adam=1E-3). Ignoré avec l’option par défaut optimizer='auto' ; nomme explicitement un optimiseur pour l’utiliser.
lrffloat0.01Taux d’apprentissage final exprimé en fraction du taux initial = (lr0 * lrf), utilisé avec les planificateurs pour ajuster le taux d’apprentissage au fil du temps.
momentumfloat0.937Facteur de momentum pour SGD ou bêta 1 pour les optimiseurs Adam, qui influe sur la prise en compte des gradients passés dans la mise à jour actuelle.
weight_decayfloat0.0005Terme de régularisation L2, qui pénalise les poids élevés pour prévenir le surapprentissage.
warmup_epochsfloat3.0Nombre d’époques de montée en chauffe du taux d’apprentissage, qui augmente progressivement d’une valeur faible jusqu’au taux initial afin de stabiliser le début de l’entraînement.
warmup_momentumfloat0.8Momentum initial pendant la phase de montée en chauffe, ajusté progressivement jusqu’à la valeur de momentum définie au cours de cette période.
warmup_bias_lrfloat0.1Taux d’apprentissage des paramètres de biais pendant la phase de montée en chauffe, qui aide à stabiliser l’entraînement du modèle lors des premières époques. Défini automatiquement sur 0.0 avec l’option par défaut optimizer='auto' ; nomme explicitement un optimiseur pour l’utiliser.
distill_modelstrNoneChemin d’accès à un point de contrôle du modèle enseignant (p. ex. yolo26x.pt) pour la distillation des connaissances. Une fois défini, le modèle étudiant est entraîné avec une perte de distillation supplémentaire guidée par le modèle enseignant figé.
disfloat6.0Poids de la perte de distillation ajoutée aux pertes de détection standard. Une valeur plus élevée accroît l’influence des caractéristiques fournies par le modèle enseignant.
boxfloat7.5Poids de la composante de perte de boîte dans la fonction de perte, qui détermine l’importance accordée à la prédiction précise des coordonnées de la boîte englobante.
clsfloat0.5Poids de la perte de classification dans la fonction de perte totale, qui influe sur l’importance accordée à la prédiction correcte de la classe par rapport aux autres composantes.
cls_pwfloat0.0Exposant de pondération des classes permettant de gérer le déséquilibre des classes en fonction de leur fréquence inverse. 0.0 désactive la pondération des classes ; 1.0 applique une pondération complète par fréquence inverse. Les valeurs entre 0 et 1 appliquent une pondération partielle.
dflfloat1.5Poids du terme de régression de distance des boîtes : perte focale de distribution (DFL) lorsque la tête de détection utilise reg_max > 1, ou perte L1 sur les distances normalisées des boîtes avec YOLO26 sans DFL (reg_max: 1).
posefloat12.0Poids de la perte de pose dans les modèles entraînés pour l’estimation de pose, qui influe sur l’importance accordée à la prédiction précise des points clés de la pose.
kobjfloat1.0Poids de la perte d’objectivité des points clés dans les modèles d’estimation de pose, qui équilibre la confiance de détection et la précision de la pose.
rlefloat1.0Poids de la perte d’estimation de log-vraisemblance résiduelle dans les modèles d’estimation de pose, qui influe sur la précision de la localisation des points clés.
anglefloat1.0Poids de la perte angulaire dans les modèles OBB, qui influe sur la précision des prédictions d’angle des boîtes englobantes orientées.
dlogfloat1.0Poids de la perte logarithmique invariante à l’échelle (SILog) dans les modèles d’estimation de profondeur, terme principal qui détermine la précision de la profondeur.
dgradfloat0.5Poids de la perte de gradient dans les modèles d’estimation de profondeur, qui pénalise les erreurs sur les contours de profondeur et favorise des limites de surface plus nettes.
dlamfloat1.0Facteur de pondération de la variance de la perte SILog dans les modèles d’estimation de profondeur. 1.0 rend la perte entièrement invariante à l’échelle, tandis que 0.0 la réduit à une simple erreur quadratique moyenne logarithmique (log-RMSE).
nbsint64Taille de lot nominale pour la normalisation de la perte.
overlap_maskboolTrueDétermine si les masques d’objets doivent être fusionnés en un seul masque pour l’entraînement ou conservés séparément pour chaque objet. En cas de chevauchement, le masque le plus petit est superposé au plus grand lors de la fusion.
mask_ratioint4Facteur de sous-échantillonnage des masques de segmentation, qui influe sur la résolution des masques utilisés pendant l’entraînement. Ne modifie pas la résolution des masques prédits.
dropoutfloat0.0Taux de dropout pour la régularisation des tâches de classification, qui prévient le surapprentissage en omettant aléatoirement des unités pendant l’entraînement.
valboolTrueActive la validation pendant l’entraînement afin d’évaluer périodiquement les performances du modèle sur un jeu de données distinct.
nmsbool, facultatifNoneSélectionne la tête d’inférence utilisée pour la validation des époques, la sélection des points de contrôle et l’arrêt anticipé. None ou True utilise la stratégie un-vers-plusieurs avec NMS ; False utilise la tête sans NMS lorsqu’elle est disponible. Les deux têtes conservent leurs pertes d’entraînement.
plotsboolTrueGénère et enregistre des graphiques des métriques d’entraînement et de validation, ainsi que des exemples de prédictions, afin de fournir un aperçu visuel des performances du modèle et de la progression de l’apprentissage.
compilebool ou strFalseActive la compilation de graphes torch.compile de PyTorch 2.x avec backend='inductor'. Accepte True → "default", False → désactivation, ou un mode sous forme de chaîne tel que "default", "reduce-overhead", "max-autotune-no-cudagraphs". En cas d’incompatibilité, revient au mode eager avec un avertissement.
channels_lastboolNoneUtilise le format mémoire channels_last (NHWC) pour les convolutions pendant l’entraînement. None l’active automatiquement sur CUDA avec PyTorch 1.11 ou ultérieur, sauf sous Windows, où les mesures ont montré un ralentissement. False le désactive et True l’active explicitement. L’entraînement sur CPU ou MPS utilise toujours NCHW (True est ignoré avec un avertissement).
max_detint300Nombre maximal de détections par image lors de la validation de l’entraînement. Pour detect, segment, pose et OBB, la valeur par défaut de 300 augmente jusqu’au nombre maximal d’objets annotés dans les partitions train/val, uniquement si ce nombre dépasse 300. Les autres valeurs restent fixes ; le dépassement de la limite déclenche un avertissement.
Remarque sur les paramètres de taille de lot

L’argument batch peut être configuré de trois façons :

  • Taille de lot fixe : définis une valeur entière (par exemple, batch=16) pour indiquer directement le nombre d’images par lot.
  • Mode automatique (60 % de mémoire GPU) : utilise batch=-1 pour ajuster automatiquement la taille de lot afin d’utiliser environ 60 % de la mémoire CUDA.
  • Mode automatique avec fraction d’utilisation : définis une valeur fractionnaire (par exemple, batch=0.70) pour ajuster la taille de lot selon la fraction spécifiée de mémoire GPU utilisée.
  • Nouvelle tentative automatique en cas de mémoire insuffisante : si une erreur de mémoire CUDA insuffisante survient pendant la première époque, l’entraîneur réduit automatiquement de moitié la taille de lot et réessaie (jusqu’à 3 fois). Cette option s’applique uniquement à l’entraînement sur un seul GPU ; l’entraînement multi-GPU (DDP) déclenche immédiatement l’erreur.
  • Aucune taille adaptée trouvée : si aucune taille de lot candidate ne produit un profil exploitable, AutoBatch renvoie une erreur RuntimeError explicite au lieu de revenir silencieusement à une valeur par défaut sans rapport.

Paramètres et hyperparamètres d’augmentation#

Les techniques d’augmentation sont essentielles pour améliorer la robustesse et les performances des modèles YOLO, car elles introduisent de la variabilité dans les données d’entraînement, ce qui aide le modèle à mieux généraliser à des données inédites. Le tableau suivant présente l’objectif et l’effet de chaque argument d’augmentation :

ArgumentTypeValeur par défautTâches prises en chargePlageDescription
hsv_hfloat0.015detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Ajuste la teinte de l’image d’une fraction de la roue chromatique, en introduisant une variabilité des couleurs. Aide le modèle à généraliser dans différentes conditions d’éclairage. Pour classify, cette option s’applique uniquement lorsque auto_augment=None.
hsv_sfloat0.7detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Modifie la saturation de l’image d’une fraction, ce qui influe sur l’intensité des couleurs. Utile pour simuler différentes conditions environnementales. Pour classify, cette option s’applique uniquement lorsque auto_augment=None.
hsv_vfloat0.4detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Modifie la valeur (luminosité) de l’image d’une fraction, ce qui aide le modèle à fonctionner correctement dans diverses conditions d’éclairage. Pour classify, cette option s’applique uniquement lorsque auto_augment=None.
degreesfloat0detect, segment, semantic, depth, pose, obb0.0 - 180Fait pivoter l’image de manière aléatoire dans la plage de degrés spécifiée, améliorant la capacité du modèle à reconnaître des objets selon différentes orientations.
translatefloat0.1detect, segment, semantic, depth, pose, obb0.0 - 1.0Déplace l’image horizontalement et verticalement d’une fraction de sa taille, ce qui aide le modèle à apprendre à détecter les objets partiellement visibles.
scalefloat | tuple0.5detect, segment, semantic, depth, classify, pose, obb0 - 1, ou un tuple (min, max) explicite (pas pour classify)Met l’image à l’échelle selon un facteur de gain, simulant des objets situés à différentes distances de la caméra.
shearfloat0detect, segment, semantic, depth, pose, obb-180 - +180Cisaille l’image selon un degré spécifié, imitant l’effet d’objets observés sous différents angles.
perspectivefloat0detect, segment, semantic, depth, pose, obb0.0 - 0.001Applique une transformation de perspective aléatoire à l’image, améliorant la capacité du modèle à comprendre les objets dans un espace 3D.
flipudfloat0detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Retourne l’image de haut en bas avec la probabilité spécifiée, augmentant la variabilité des données sans modifier les caractéristiques de l’objet.
fliplrfloat0.5detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Retourne l’image de gauche à droite avec la probabilité spécifiée, ce qui est utile pour apprendre à reconnaître les objets symétriques et accroître la diversité du jeu de données.
bgrfloat0detect, segment, semantic, depth, pose, obb0.0 - 1.0Inverse les canaux de l’image de RGB à BGR avec la probabilité spécifiée, ce qui est utile pour améliorer la robustesse face à un ordre de canaux incorrect.
mosaicfloat1detect, segment, semantic, pose, obb0.0 - 1.0Combine quatre images d’entraînement en une seule, simulant différentes compositions de scènes et interactions entre objets. Très efficace pour comprendre des scènes complexes.
mixupfloat0detect, segment, semantic, pose, obb0.0 - 1.0Mélange deux images et leurs étiquettes pour créer une image composite. Améliore la capacité de généralisation du modèle en introduisant du bruit dans les étiquettes et une variabilité visuelle.
cutmixfloat0detect, segment, semantic, pose, obb0.0 - 1.0Combine des portions de deux images pour créer un mélange partiel tout en conservant des régions distinctes. Améliore la robustesse du modèle en créant des situations d’occlusion.
copy_pastefloat0segment, semantic, obb0.0 - 1.0Fraction des objets admissibles qui sont copiés-collés ; flip les met en miroir dans l’image, tandis que mixup utilise aussi cette valeur comme probabilité d’application entre images.
copy_paste_modestrflipsegment, semantic, obb-Indique la stratégie copy-paste à utiliser. Les options comprennent 'flip' et 'mixup'.
auto_augmentstrrandaugmentclassify-Applique une politique d’augmentation prédéfinie ('randaugment', 'autoaugment' ou 'augmix') pour améliorer les performances du modèle grâce à la diversité visuelle.
erasingfloat0.4classify0.0 - 1.0Efface aléatoirement des régions de l’image pendant l’entraînement afin d’inciter le modèle à se concentrer sur des caractéristiques moins évidentes.
augmentationslistNonedetect, segment, semantic, depth, pose, obb-Transformations Albumentations personnalisées pour l’augmentation avancée des données (API Python uniquement). Accepte une liste d’objets de transformation pour des besoins d’augmentation spécifiques.

Tu peux ajuster ces paramètres pour répondre aux exigences spécifiques du jeu de données et de la tâche. L’expérimentation avec différentes valeurs peut aider à trouver la stratégie d’augmentation optimale pour obtenir les meilleures performances du modèle.

Info

Pour en savoir plus sur les opérations d’augmentation de l’entraînement, consulte la section de référence.

Journalisation#

Les métriques d’entraînement, les graphiques et les points de reprise sont toujours écrits dans le répertoire d’exécution. Ultralytics les transmet également à tout outil de suivi d’expériences que tu as installé et activé : Comet, ClearML, TensorBoard, MLflow, Weights & Biases et DVCLive. Chaque outil de journalisation s’active via les paramètres Ultralytics, par exemple yolo settings tensorboard=True. Les trois configurations les plus courantes sont présentées ci-dessous.

Comet#

Comet est une plateforme qui permet aux spécialistes des données et aux développeurs de suivre, comparer, expliquer et optimiser des expériences et des modèles. Elle propose notamment des métriques en temps réel, la comparaison des différences de code et le suivi des hyperparamètres.

Pour utiliser Comet :

Exemple
# pip install comet_ml
import comet_ml

comet_ml.login()

N’oublie pas de te connecter à ton compte Comet sur leur site Web et d’obtenir ta clé API. Tu devras l’ajouter à tes variables d’environnement ou à ton script pour journaliser tes expériences.

ClearML#

ClearML est une plateforme open source qui automatise le suivi des expériences et facilite le partage efficace des ressources. Elle est conçue pour aider les équipes à gérer, exécuter et reproduire leur travail en ML plus efficacement.

Pour utiliser ClearML :

Exemple
# pip install clearml
import clearml

clearml.browser_login()

Après avoir exécuté ce script, tu devras te connecter à ton compte ClearML dans le navigateur et authentifier ta session.

TensorBoard#

TensorBoard est une boîte à outils de visualisation pour TensorFlow. Elle te permet de visualiser le graphe TensorFlow, de tracer des métriques quantitatives sur l’exécution du graphe et d’afficher des données supplémentaires, comme les images qui le traversent.

Pour utiliser TensorBoard dans Google Colab :

Exemple
%load_ext tensorboard
tensorboard --logdir ultralytics/runs # replace with 'runs' directory

Pour utiliser TensorBoard localement, exécute la commande ci-dessous et consulte les résultats à l’emplacement localhost:6006.

Exemple
tensorboard --logdir ultralytics/runs # replace with 'runs' directory

Cette commande chargera TensorBoard et l’orientera vers le répertoire où sont enregistrés tes journaux d’entraînement.

Après avoir configuré ton outil de journalisation, tu peux lancer l’entraînement de ton modèle. Toutes les métriques d’entraînement seront automatiquement journalisées sur la plateforme de ton choix. Tu pourras consulter ces journaux pour suivre les performances de ton modèle au fil du temps, comparer différents modèles et repérer les points à améliorer.

Et ensuite ?#

Évalue ton modèle entraîné sur des données mises de côté pour vérifier sa précision en conditions réelles, puis exporte-le au format ONNX, TensorRT ou dans un autre format de déploiement. Tu entraînes ton modèle sur tes propres données plutôt que sur COCO8 ? Commence par les formater à l’aide du guide des jeux de données.

FAQ#

  • Oui. L’entraînement dans le cloud Ultralytics Platform inclut des crédits gratuits pour commencer. Charge ton jeu de données, sélectionne un modèle et un GPU, puis entraîne directement depuis le navigateur.

  • Pour entraîner un modèle de détection d’objets avec Ultralytics YOLO26, tu peux utiliser l’API Python ou la CLI. Voici un exemple pour chacune des méthodes :

    Exemple d’entraînement sur un seul GPU et sur CPU
    from ultralytics import YOLO
    
    # Charger un modèle
    model = YOLO("yolo26n.pt")  # charger un modèle préentraîné (recommandé pour l’entraînement)
    
    # Entraîner le modèle
    results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

    Pour plus de détails, consulte la section Paramètres d’entraînement.

  • Les principales fonctionnalités du mode Train d’Ultralytics YOLO26 comprennent :

    • Téléchargement automatique des jeux de données : télécharge automatiquement des jeux de données standard comme COCO, VOC et ImageNet.
    • Prise en charge multi-GPU : répartis l’entraînement sur plusieurs GPU pour accélérer le traitement.
    • Configuration des hyperparamètres : personnalise les hyperparamètres à l’aide de fichiers YAML ou d’arguments CLI.
    • Visualisation et suivi : suis les métriques d’entraînement en temps réel pour obtenir de meilleures informations.

    Ces fonctionnalités rendent l’entraînement efficace et adaptable à tes besoins. Pour plus de détails, consulte la section Principales fonctionnalités du mode Train.

  • Pour reprendre l’entraînement après une interruption de session, définis l’argument resume sur True et indique le chemin du dernier point de reprise enregistré.

    Exemple de reprise de l’entraînement
    from ultralytics import YOLO
    
    # Charger le modèle partiellement entraîné
    model = YOLO("path/to/last.pt")
    
    # Reprendre l’entraînement
    results = model.train(resume=True)

    Consulte la section sur la reprise des entraînements interrompus pour en savoir plus.

  • Un déséquilibre des classes se produit lorsque certaines classes comportent beaucoup moins d’exemples que d’autres dans tes données d’entraînement. Cela peut nuire aux performances du modèle sur les classes rares. Ultralytics YOLO prend en charge la pondération des classes via l’argument cls_pw pour résoudre ce problème.

    L’argument cls_pw contrôle le degré de pondération des classes en fonction de l’inverse de leur fréquence :

    • cls_pw=0.0 (par défaut) : désactive la pondération des classes
    • cls_pw=1.0 : applique une pondération complète selon l’inverse de la fréquence
    • Les valeurs entre 0.0 et 1.0 : appliquent une pondération partielle en cas de déséquilibre modéré

    Les poids des classes sont calculés selon (1.0 / class_counts) ^ cls_pw et normalisés pour que leur moyenne soit égale à 1.0.

    Entraînement sur un jeu de données déséquilibré
    from ultralytics import YOLO
    
    # Charger un modèle préentraîné
    model = YOLO("yolo26n.pt")
    
    # Entraîner avec une pondération complète des classes pour des données fortement déséquilibrées
    results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=1.0)
    
    # Ou utiliser une pondération partielle (0.25) en cas de déséquilibre modéré
    results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=0.25)
    Conseil

    Commence avec cls_pw=0.25 pour les jeux de données modérément déséquilibrés et augmente cette valeur à 1.0 si les performances des classes rares restent insuffisantes. Tu peux vérifier les poids des classes calculés dans les journaux d’entraînement pour contrôler leur distribution.

  • Oui, Ultralytics YOLO26 prend en charge l’entraînement sur les puces Apple silicon grâce à l’infrastructure Metal Performance Shaders (MPS). Spécifie 'mps' comme périphérique d’entraînement.

    Exemple d’entraînement MPS
    from ultralytics import YOLO
    
    # Charger un modèle préentraîné
    model = YOLO("yolo26n.pt")
    
    # Entraîner le modèle sur une puce Apple silicon (M1/M2/M3/M4)
    results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")

    Pour plus de détails, consulte la section Entraînement MPS sur Apple silicon.

  • Ultralytics YOLO26 te permet de configurer différents paramètres d’entraînement, comme la taille de lot, le taux d’apprentissage, le nombre d’époques et bien d’autres, à l’aide d’arguments. Voici un bref aperçu :

    ArgumentValeur par défautDescription
    modelNoneChemin du fichier du modèle à entraîner.
    dataNoneChemin du fichier YAML du jeu de données (par exemple, coco8.yaml), ou répertoire ou nom de jeu de données (par exemple, imagenet10) pour la classification.
    epochs100Nombre total d’époques d’entraînement.
    batch16Taille de lot, réglable sous forme d’entier ou en mode automatique.
    imgsz640Taille d’image cible pour l’entraînement.
    deviceNonePériphérique(s) de calcul pour l’entraînement, comme cpu, 0, 0,1 ou mps.
    saveTrueActive l’enregistrement des points de reprise de l’entraînement et des poids finaux du modèle.

    Pour un guide détaillé sur les paramètres d’entraînement, consulte la section Paramètres d’entraînement.

Commentaires