Entraînement de 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 faire des prédictions précises. Le mode Train dans Ultralytics YOLO26 est conçu pour un entraînement efficace et performant de modèles de détection d'objets, en exploitant pleinement les capacités matérielles modernes. Ce guide vise à couvrir tous les détails dont tu as besoin pour commencer à entraîner tes propres modèles en utilisant l'ensemble robuste de fonctionnalités de YOLO26.



Watch: How to Train a YOLO model on Your Custom Dataset in Google Colab.

Pourquoi choisir Ultralytics YOLO pour l'entraînement ?

Voici quelques raisons convaincantes d'opter pour le mode Train de YOLO26 :

  • Efficacité : Tire le meilleur parti de ton matériel, que tu sois sur une configuration à un seul GPU ou que tu passes à l'échelle sur plusieurs GPU.
  • Polyvalence : Entraîne-toi sur des jeux de données personnalisés en plus de ceux facilement disponibles comme COCO, VOC et ImageNet.
  • Convivialité : Interfaces CLI et Python simples mais puissantes pour une expérience d'entraînement directe.
  • Flexibilité des hyperparamètres : Une large gamme d'hyperparamètres personnalisables pour affiner les performances du modèle. Pour un contrôle plus approfondi, tu peux personnaliser le trainer lui-même.
  • Entraînement dans le cloud : Entraîne-toi sur des GPU dans le cloud via Ultralytics Platform avec des métriques en temps réel et une sauvegarde automatique des points de contrôle.

Fonctionnalités clés du mode Train

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

  • Téléchargement automatique des jeux de données : Les jeux de données standards comme COCO, VOC et ImageNet sont téléchargés automatiquement lors de la première utilisation.
  • Prise en charge multi-GPU : Fais évoluer tes efforts d'entraînement de manière transparente sur plusieurs GPU pour accélérer le processus.
  • Configuration des hyperparamètres : L'option de modifier les hyperparamètres via des fichiers de configuration YAML ou des arguments CLI.
  • Visualisation et surveillance : Suivi en temps réel des métriques d'entraînement et visualisation du processus d'apprentissage pour de meilleures analyses.
Astuce
  • Les jeux de données YOLO26 comme COCO, VOC, ImageNet et bien d'autres se téléchargent automatiquement lors de la première utilisation, c'est-à-dire yolo train data=coco.yaml

Exemples d'utilisation

Entraîne YOLO26n sur le jeu de données COCO8 pour 100 epochs avec une taille d'image de 640. Le périphérique d'entraînement peut être spécifié en utilisant l'argument device. Si aucun argument n'est transmis, le GPU device=0 sera utilisé s'il est disponible ; sinon device='cpu' sera utilisé. Consulte la section Arguments ci-dessous pour une liste complète des arguments d'entraînement.

Erreur de multi-traitement sur Windows

Sur Windows, tu peux recevoir une RuntimeError lors du lancement de l'entraînement en tant que script. Ajoute un bloc if __name__ == "__main__": avant ton code d'entraînement pour le résoudre.

Exemple d'entraînement sur GPU unique et CPU

Le périphérique est déterminé automatiquement. Si un GPU est disponible, il sera utilisé (périphérique CUDA par défaut 0) ; sinon, l'entraînement démarrera sur le CPU.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.yaml")  # build a new model from YAML
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n.yaml").load("yolo26n.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Entraînement multi-GPU

L'entraînement multi-GPU permet une utilisation plus efficace des ressources matérielles disponibles en distribuant la charge d'entraînement sur plusieurs GPU. Cette fonctionnalité est disponible à la fois via l'API Python et l'interface de ligne de commande. Pour activer l'entraînement multi-GPU, spécifie les identifiants des périphériques GPU que tu souhaites utiliser.

Exemple d'entraînement multi-GPU

Pour entraîner avec 2 GPU, les périphériques CUDA 0 et 1, utilise les commandes suivantes. Étends à des GPU supplémentaires si nécessaire.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model with 2 GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])

# Train the model with the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])
Entraînement multi-GPU avec du code personnalisé

Lorsque tu spécifies plusieurs périphériques (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 transparente pour une utilisation CLI standard et des 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és — ces objets ne peuvent pas être automatiquement sérialisés et transférés vers les sous-processus DDP. Dans ce cas, tu dois lancer ton script directement avec torch.distributed.run :

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

Entraînement sur GPU inactif

L'entraînement sur GPU inactif permet la sélection automatique des GPU les moins utilisés dans les systèmes multi-GPU, optimisant l'utilisation des ressources sans sélection manuelle du GPU. Cette fonctionnalité identifie les GPU disponibles en fonction des métriques d'utilisation et de la disponibilité de la VRAM.

Exemple d'entraînement sur GPU inactif

Pour sélectionner et utiliser automatiquement le ou les GPU les plus inactifs pour l'entraînement, utilise le paramètre de périphérique -1. Cela est particulièrement utile dans les environnements de calcul partagés ou sur les serveurs avec plusieurs utilisateurs.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train using the single most idle GPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=-1)

# Train using the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])

L'algorithme de sélection automatique donne la priorité aux GPU avec :

  1. Des pourcentages d'utilisation actuels plus faibles
  2. Une mémoire disponible plus élevée (VRAM libre)
  3. Une température et une consommation d'énergie plus faibles

Cette fonctionnalité est particulièrement précieuse dans les environnements de calcul partagés ou lors de l'exécution de plusieurs travaux d'entraînement sur différents modèles. Elle s'adapte automatiquement aux conditions changeantes du système, garantissant une allocation optimale des ressources sans intervention manuelle.

Entraînement MPS sur Apple Silicon

Avec la prise en charge des puces Apple silicon intégrée dans les modèles Ultralytics YOLO, il est désormais possible d'entraîner tes modèles sur des appareils utilisant le framework puissant Metal Performance Shaders (MPS). Le MPS offre un moyen haute performance d'exécuter des tâches de calcul et de traitement d'image sur le silicium personnalisé d'Apple.

Pour activer l'entraînement sur les puces Apple silicon, tu dois spécifier 'mps' comme périphérique lors du lancement du processus d'entraînement. Voici un exemple de comment tu peux le faire en Python et via la ligne de commande :

Exemple d'entraînement MPS
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model with MPS
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")

Tout en tirant parti de la puissance de calcul des puces Apple silicon, cela permet un traitement plus efficace des tâches d'entraînement. Pour des conseils plus détaillés et des options de configuration avancées, veuillez te référer à la documentation PyTorch MPS.

Reprise des entraînements interrompus

Reprendre l'entraînement à partir d'un état précédemment enregistré est une fonctionnalité cruciale lors du travail avec des modèles de deep learning. Cela peut être utile dans divers scénarios, comme lorsque le processus d'entraînement a été interrompu de manière inattendue, ou lorsque tu souhaites continuer à entraîner un modèle avec de nouvelles données ou pour plus d'epochs.

Lorsque l'entraînement est repris, Ultralytics YOLO charge les poids du dernier modèle enregistré et restaure également l'état de l'optimiseur, le planificateur de learning rate et le numéro d'epoch. Cela te permet de poursuivre le processus d'entraînement de manière transparente là où il a été interrompu.

Tu peux facilement reprendre l'entraînement dans Ultralytics YOLO en réglant l'argument resume sur True lors de l'appel à la méthode train, et en spécifiant le chemin vers le fichier .pt contenant les poids du modèle partiellement entraîné.

Voici un exemple de comment reprendre un entraînement interrompu en Python et via la ligne de commande :

Exemple de reprise d'entraînement
from ultralytics import YOLO

# Load a model
model = YOLO("path/to/last.pt")  # load a partially trained model

# Resume training
results = model.train(resume=True)

En réglant resume=True, la fonction train continuera l'entraînement là où il s'est arrêté, en utilisant l'état stocké dans le fichier 'path/to/last.pt'. Si l'argument resume est omis ou réglé sur False, la fonction train démarrera une nouvelle session d'entraînement.

N'oublie pas que les points de contrôle sont enregistrés à la fin de chaque epoch par défaut, ou à des intervalles fixes en utilisant l'argument save_period, tu dois donc terminer au moins 1 epoch pour reprendre une exécution d'entraînement.

Paramètres d'entraînement

Les paramètres d'entraînement pour les modèles YOLO englobent divers hyperparamètres et configurations utilisés pendant le processus d'entraînement. Ces paramètres influencent les performances, la vitesse et la précision du modèle. Les principaux paramètres d'entraînement incluent la taille de lot (batch size), le taux d'apprentissage (learning rate), le momentum et la décroissance du poids (weight decay). 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 impacter le processus. Un réglage minutieux et des expérimentations avec ces paramètres sont cruciaux pour optimiser les performances.

Optimiseur MuSGD

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

Il est recommandé pour les entraînements YOLO26 plus longs et les jeux de données plus volumineux, où les mises à jour Muon orthogonalisées peuvent aider à stabiliser l'optimisation.

Seuls les paramètres avec param.ndim >= 2 (tels que les poids convolutifs) reçoivent la mise à jour de style Muon avec SGD, tandis que les paramètres de dimension inférieure comme les couches de normalisation par lots (batch normalization) et les termes de biais restent sur SGD standard.

Lorsque optimizer=auto est utilisé, Ultralytics sélectionne automatiquement MuSGD pour les entraînements plus longs (généralement lorsque les itérations > 10000). Pour les entraînements plus courts, le trainer revient à AdamW.

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.

ArgumentTypeDéfautDescription
modelstrNoneSpécifie le fichier du modèle pour l'entraînement. Accepte un chemin vers un modèle pré-entraîné .pt ou un fichier de configuration .yaml. Essentiel pour définir la structure du modèle ou initialiser les poids.
datastrNoneChemin vers le fichier de configuration du jeu de données (par exemple, coco8.yaml). Ce fichier contient les paramètres spécifiques au jeu de données, y compris les chemins vers les données d'entraînement et de validation, les noms de classe et le nombre de classes.
epochsint100Nombre total d'époques d'entraînement. Chaque époque représente un passage complet sur l'ensemble du jeu de données. Ajuster cette valeur peut affecter la durée de l'entraînement et les performances du modèle.
timefloatNoneTemps d'entraînement maximal en heures. Si défini, cela remplace l'argument epochs, permettant à l'entraînement de s'arrêter automatiquement après la durée spécifiée. Utile pour les scénarios d'entraînement à durée limitée.
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 du batch, avec trois modes : défini en tant qu'entier (par ex. batch=16), mode automatique pour une utilisation de 60% de la mémoire GPU (batch=-1), ou mode automatique avec une fraction d'utilisation spécifiée (batch=0.70).
imgszint640Taille d'image cible pour l'entraînement. Les images sont redimensionnées en carrés avec des côtés égaux à la valeur spécifiée (si rect=False), préservant le rapport d'aspect pour les modèles YOLO mais pas pour RT-DETR. Affecte la précision du modèle et sa complexité computationnelle.
saveboolTrueActive la sauvegarde des points de contrôle d'entraînement et des poids finaux du modèle. Utile pour reprendre l'entraînement ou pour le déploiement du modèle.
save_periodint-1Fréquence de sauvegarde des points de contrôle du modèle, spécifiée en époques. Une valeur de -1 désactive cette fonctionnalité. Utile pour sauvegarder des modèles intermédiaires lors de longues sessions d'entraînement.
cacheboolFalseActive la mise en cache des images du jeu de données en mémoire (True/ram), sur le disque (disk), ou la désactive (False). Améliore la vitesse d'entraînement en réduisant les E/S disque au prix d'une utilisation mémoire accrue.
deviceint ou str ou listNoneSpécifie le(s) périphérique(s) de calcul pour l'entraînement : un seul GPU (device=0), plusieurs GPU (device=[0,1]), CPU (device=cpu), MPS pour Apple silicon (device=mps), Huawei Ascend NPU (device=npu ou device=npu:0), ou sélection automatique du GPU le plus libre (device=-1) ou plusieurs GPU libres (device=[-1,-1]).
workersint8Nombre de threads de travail pour le chargement des données (par RANK en cas d'entraînement Multi-GPU). Influence la vitesse de prétraitement des données et leur alimentation dans le modèle, particulièrement utile dans les configurations multi-GPU.
projectstrNoneNom du répertoire du projet où les sorties de l'entraînement sont sauvegardées. Permet un stockage organisé des différentes expériences.
namestrNoneNom de l'exécution d'entraînement. Utilisé pour créer un sous-répertoire dans le dossier du projet, où les journaux et les sorties de l'entraînement sont stockés.
exist_okboolFalseSi True, permet d'écraser un répertoire projet/nom existant. Utile pour l'expérimentation itérative sans avoir besoin de nettoyer manuellement les sorties précédentes.
pretrainedbool ou strTrueDétermine si l'entraînement commence à partir de poids pré-entraînés. Peut être une valeur booléenne ou un chemin vers des poids à charger. pretrained=False entraîne à partir de poids initialisés aléatoirement tout en conservant l'architecture du modèle.
optimizerstr'auto'Choix de l'optimiseur pour l'entraînement. Les options incluent SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp, ou auto pour une sélection automatique basée sur la configuration du modèle. Affecte la vitesse de convergence et la stabilité.
seedint0Définit la graine aléatoire pour l'entraînement, assurant la reproductibilité des résultats entre les exécutions avec les mêmes configurations.
deterministicboolTrueForce l'utilisation d'algorithmes déterministes, assurant la reproductibilité mais pouvant affecter les performances et la vitesse en raison de la restriction sur les algorithmes non déterministes.
verboseboolTrueActive une sortie détaillée pendant l'entraînement, affichant des barres de progression, des métriques par époque et des informations d'entraînement supplémentaires dans la console.
single_clsboolFalseTraite toutes les classes dans les jeux de données multi-classes comme une seule classe pendant l'entraînement. Utile pour les tâches de classification binaire ou lorsqu'on se concentre sur la présence d'objets plutôt que sur la classification.
classeslist[int]NoneSpécifie une liste d'ID de classes sur lesquelles s'entraîner. Utile pour filtrer et se concentrer uniquement sur certaines classes pendant l'entraînement.
rectboolFalseActive la stratégie de remplissage minimum—les images dans un batch sont minimalement remplies pour atteindre une taille commune, avec le côté le plus long égal à imgsz. Peut améliorer l'efficacité et la vitesse mais peut affecter la précision du modèle.
multi_scalefloat0.0Fait varier aléatoirement imgsz à chaque batch par +/- multi_scale (par exemple 0.25 -> 0.75x à 1.25x), en arrondissant aux multiples de foulée (stride) du modèle ; 0.0 désactive l'entraînement multi-échelle.
cos_lrboolFalseUtilise un planificateur de taux d'apprentissage cosinus, ajustant le taux d'apprentissage en suivant une courbe cosinus sur les époques. Aide à gérer le taux d'apprentissage pour une meilleure convergence.
close_mosaicint10Désactive la data augmentation mosaïque lors des N dernières époques pour stabiliser l'entraînement avant la fin. Définir sur 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 compteur d'époques, en poursuivant l'entraînement de manière fluide.
ampboolTrueActive l'entraînement en Mixed Precision automatique (AMP), ce qui réduit l'utilisation de la mémoire et accélère éventuellement l'entraînement avec un impact minimal sur la précision.
fractionfloat1.0Spécifie la fraction du jeu de données à utiliser pour l'entraînement. Permet de s'entraîner sur un sous-ensemble du jeu de données complet, utile pour des expériences ou lorsque les ressources sont limitées.
profileboolFalseActive le profilage des vitesses ONNX et TensorRT pendant l'entraînement, utile pour optimiser le déploiement du modèle.
freezeint ou listNoneGèle les N premières couches du modèle ou les couches spécifiées par index, réduisant le nombre de paramètres entraînables. Utile pour le réglage fin ou le transfer learning.
lr0float0.01Taux d'apprentissage initial (ex: SGD=1E-2, Adam=1E-3). Ajuster cette valeur est crucial pour le processus d'optimisation, car elle influence la rapidité avec laquelle les poids du modèle sont mis à jour.
lrffloat0.01Taux d'apprentissage final en tant que fraction du taux initial = (lr0 * lrf), utilisé conjointement avec des planificateurs pour ajuster le taux d'apprentissage au fil du temps.
momentumfloat0.937Facteur de momentum pour SGD ou beta1 pour les Adam optimizers, influençant l'intégration des gradients passés dans la mise à jour actuelle.
weight_decayfloat0.0005Terme de regularization L2, pénalisant les poids importants pour éviter le surapprentissage.
warmup_epochsfloat3.0Nombre d'époques pour le préchauffage du taux d'apprentissage, augmentant progressivement le taux d'apprentissage d'une valeur faible à la valeur initiale pour stabiliser l'entraînement dès le début.
warmup_momentumfloat0.8Momentum initial pour la phase de préchauffage, s'ajustant progressivement au momentum défini pendant la période de préchauffage.
warmup_bias_lrfloat0.1Taux d'apprentissage pour les paramètres de biais pendant la phase de préchauffage, aidant à stabiliser l'entraînement du modèle lors des premières époques.
boxfloat7.5Poids de la composante de perte de boîte dans la loss function, influençant l'importance accordée à la prédiction précise des coordonnées de bounding box.
clsfloat0.5Poids de la perte de classification dans la fonction de perte totale, affectant l'importance de la prédiction correcte de la classe par rapport aux autres composantes.
cls_pwfloat0.0Puissance pour la pondération des classes afin de gérer le déséquilibre des classes en utilisant la fréquence inverse des classes. 0.0 désactive la pondération des classes, 1.0 applique une pondération inverse complète. Les valeurs entre 0 et 1 fournissent une pondération partielle.
dflfloat1.5Poids de la distribution focal loss, utilisée dans certaines versions de YOLO pour une classification fine.
posefloat12.0Poids de la perte de pose dans les modèles entraînés pour l'estimation de pose, influençant l'accent mis sur la prédiction précise des points clés de pose.
kobjfloat1.0Poids de la perte d'objectness des points clés dans les modèles d'estimation de pose, équilibrant la confiance de détection avec 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, affectant la précision de la localisation des points clés.
anglefloat1.0Poids de la perte d'angle dans les modèles OBB, affectant la précision des prédictions d'angle de la boîte englobante orientée.
nbsint64Taille de lot nominale pour la normalisation de la perte.
overlap_maskboolTrueDétermine si les masques d'objet 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 plus petit est superposé au masque plus grand lors de la fusion.
mask_ratioint4Ratio de sous-échantillonnage pour les masques de segmentation, affectant la résolution des masques utilisés pendant l'entraînement.
dropoutfloat0.0Taux de dropout pour la régularisation dans les tâches de classification, empêchant le surapprentissage en omettant aléatoirement des unités pendant l'entraînement.
valboolTrueActive la validation pendant l'entraînement, permettant une évaluation périodique des performances du modèle sur un jeu de données distinct.
plotsboolTrueGénère et enregistre des tracés des métriques d'entraînement et de validation, ainsi que des exemples de prédiction, offrant des aperçus visuels sur les performances du modèle et la progression de l'apprentissage.
compilebool ou strFalseActive la compilation de graphe torch.compile de PyTorch 2.x avec backend='inductor'. Accepte True"default", False → désactive, ou un mode chaîne comme "default", "reduce-overhead", "max-autotune-no-cudagraphs". Revient au mode eager avec un avertissement si non pris en charge.
max_detint300Spécifie le nombre maximal d'objets conservés pendant la phase de validation de l'entraînement.
Note sur les paramètres de taille de lot

L'argument batch peut être configuré de trois manières :

  • Batch Size fixe : Définis une valeur entière (par exemple, batch=16), spécifiant directement le nombre d'images par lot.
  • Mode Auto (60 % de la mémoire GPU) : Utilise batch=-1 pour ajuster automatiquement la taille du lot pour environ 60 % de l'utilisation de la mémoire CUDA.
  • Mode Auto avec fraction d'utilisation : Définis une valeur de fraction (par exemple, batch=0.70) pour ajuster la taille du lot en fonction de la fraction spécifiée d'utilisation de la mémoire GPU.
  • Auto-réessai OOM (Out-of-Memory) : Si une erreur de manque de mémoire CUDA se produit pendant la première epoch, le trainer réduit automatiquement la taille du lot de moitié et réessaie (jusqu'à 3 fois). Cela ne s'applique qu'à l'entraînement sur GPU unique ; l'entraînement multi-GPU (DDP) générera l'erreur immédiatement.

Paramètres d'augmentation et hyperparamètres

Les techniques d'augmentation sont essentielles pour améliorer la robustesse et les performances des modèles YOLO en introduisant de la variabilité dans les données d'entraînement, aidant le modèle à mieux se généraliser aux données inconnues. Le tableau suivant décrit l'objectif et l'effet de chaque argument d'augmentation :

ArgumentTypeDéfautTâches prises en chargePlageDescription
hsv_hfloat0.015detect, segment, pose, obb, classify0.0 - 1.0Ajuste la teinte de l'image par une fraction de la roue chromatique, introduisant de la variabilité des couleurs. Aide le modèle à se généraliser dans différentes conditions d'éclairage.
hsv_sfloat0.7detect, segment, pose, obb, classify0.0 - 1.0Alterne la saturation de l'image par une fraction, affectant l'intensité des couleurs. Utile pour simuler différentes conditions environnementales.
hsv_vfloat0.4detect, segment, pose, obb, classify0.0 - 1.0Modifie la valeur (luminosité) de l'image par une fraction, aidant le modèle à bien fonctionner sous diverses conditions d'éclairage.
degreesfloat0detect, segment, 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 à diverses orientations.
translatefloat0.1detect, segment, pose, obb0.0 - 1.0Translate l'image horizontalement et verticalement par une fraction de la taille de l'image, aidant à apprendre à détecter des objets partiellement visibles.
scalefloat0.5detect, segment, pose, obb, classify0 - 1Met l'image à l'échelle par un facteur de gain, simulant des objets à différentes distances de la caméra.
shearfloat0detect, segment, pose, obb-180 - +180Cisailles l'image d'un degré spécifié, mimant l'effet d'objets vus sous différents angles.
perspectivefloat0detect, segment, pose, obb0.0 - 0.001Applique une transformation de perspective aléatoire à l'image, améliorant la capacité du modèle à comprendre les objets dans l'espace 3D.
flipudfloat0detect, segment, pose, obb, classify0.0 - 1.0Retourne l'image de haut en bas avec la probabilité spécifiée, augmentant la variabilité des données sans affecter les caractéristiques de l'objet.
fliplrfloat0.5detect, segment, pose, obb, classify0.0 - 1.0Retourne l'image de gauche à droite avec la probabilité spécifiée, utile pour apprendre des objets symétriques et augmenter la diversité du jeu de données.
bgrfloat0detect, segment, pose, obb0.0 - 1.0Inverse les canaux de l'image de RGB vers BGR avec la probabilité spécifiée, utile pour augmenter la robustesse face à un ordre de canaux incorrect.
mosaicfloat1detect, segment, 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 la compréhension de scènes complexes.
mixupfloat0detect, segment, pose, obb0.0 - 1.0Mélange deux images et leurs étiquettes pour créer une image composite. Améliore la capacité du modèle à généraliser en introduisant du bruit d'étiquette et de la variabilité visuelle.
cutmixfloat0detect, segment, pose, obb0.0 - 1.0Combine des portions de deux images, créant un mélange partiel tout en conservant des zones distinctes. Améliore la robustesse du modèle en créant des scénarios d'occlusion.
copy_pastefloat0segment0.0 - 1.0Copie et colle des objets à travers les images pour augmenter le nombre d'instances d'objets.
copy_paste_modestrflipsegment-Spécifie la stratégie copy-paste à utiliser. Les options incluent '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 via la diversité visuelle.
erasingfloat0.4classify0.0 - 1.0Efface aléatoirement des zones de l'image pendant l'entraînement pour encourager le modèle à se concentrer sur des caractéristiques moins évidentes.
augmentationslist``detect, segment, pose, obb-Transformations Albumentations personnalisées pour une augmentation de données avancée (API Python uniquement). Accepte une liste d'objets de transformation pour des besoins d'augmentation spécialisés.

Ces paramètres peuvent être ajustés pour répondre aux exigences spécifiques du jeu de données et de la tâche en cours. Expérimenter avec différentes valeurs peut aider à trouver la stratégie d'augmentation optimale menant aux meilleures performances du modèle.

Info

Pour plus d'informations sur les opérations d'augmentation durant l'entraînement, consulte la section de référence.

Journalisation

Lors de l'entraînement d'un modèle YOLO26, il peut être précieux de suivre les performances du modèle au fil du temps. C'est là que la journalisation intervient. Ultralytics YOLO prend en charge trois types d'enregistreurs - Comet, ClearML et TensorBoard.

Pour utiliser un enregistreur, sélectionne-le dans le menu déroulant du snippet de code ci-dessus et exécute-le. L'enregistreur choisi sera installé et initialisé.

Comet

Comet est une plateforme qui permet aux data scientists et aux développeurs de suivre, comparer, expliquer et optimiser des expériences et des modèles. Elle fournit des fonctionnalités telles que des métriques en temps réel, des différences de code et le suivi des hyperparamètres.

Pour utiliser Comet :

Exemple
# pip install comet_ml
import comet_ml

comet_ml.init()

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

ClearML

ClearML est une plateforme open-source qui automatise le suivi des expériences et aide à partager efficacement les ressources. Elle est conçue pour aider les équipes à gérer, exécuter et reproduire leur travail de 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 un kit d'outils de visualisation pour TensorFlow. Il te permet de visualiser ton graphe TensorFlow, de tracer des métriques quantitatives sur l'exécution de ton graphe et d'afficher des données supplémentaires comme les images qui y passent.

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 sur localhost:6006.

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

Cela chargera TensorBoard et le dirigera vers le répertoire où tes journaux d'entraînement sont enregistrés.

Après avoir configuré ton enregistreur, tu peux procéder à l'entraînement de ton modèle. Toutes les métriques d'entraînement seront automatiquement enregistrées sur la plateforme choisie, et tu pourras accéder à ces journaux pour surveiller les performances de ton modèle au fil du temps, comparer différents modèles et identifier les points à améliorer.

FAQ

Puis-je entraîner sans GPU local ?

Oui. Ultralytics Platform prend en charge l'entraînement dans le cloud avec des crédits gratuits pour démarrer. Télécharge ton jeu de données, sélectionne un modèle et un GPU, puis entraîne directement depuis le navigateur. Consulte le guide d'entraînement cloud pour plus de détails.

Comment entraîner un modèle de détection d'objets en utilisant Ultralytics YOLO26 ?

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 les deux :

Exemple d'entraînement sur GPU unique et CPU
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Pour plus de détails, réfère-toi à la section Paramètres d'entraînement.

Quelles sont les fonctionnalités clés du mode Entraînement d'Ultralytics YOLO26 ?

Les fonctionnalités clés du mode Entraînement d'Ultralytics YOLO26 incluent :

  • Téléchargement automatique de jeux de données : Télécharge automatiquement des jeux de données standards comme COCO, VOC et ImageNet.
  • Support multi-GPU : Échelle l'entraînement sur plusieurs GPU pour un traitement plus rapide.
  • Configuration des hyperparamètres : Personnalise les hyperparamètres via des fichiers YAML ou des arguments CLI.
  • Visualisation et surveillance : Suivi en temps réel des métriques d'entraînement pour de meilleures analyses.

Ces fonctionnalités rendent l'entraînement efficace et personnalisable selon tes besoins. Pour plus de détails, voir la section Fonctionnalités clés du mode Entraînement.

Comment reprendre l'entraînement après une session interrompue dans Ultralytics YOLO26 ?

Pour reprendre l'entraînement à partir d'une session interrompue, règle l'argument resume sur True et spécifie le chemin vers le dernier point de contrôle enregistré.

Exemple de reprise d'entraînement
from ultralytics import YOLO

# Load the partially trained model
model = YOLO("path/to/last.pt")

# Resume training
results = model.train(resume=True)

Consulte la section Reprise des entraînements interrompus pour plus d'informations.

Comment entraîner un modèle sur un jeu de données déséquilibré ?

Le déséquilibre des classes survient lorsque certaines classes ont significativement moins d'exemples que d'autres dans tes données d'entraînement. Cela peut amener le modèle à moins bien performer 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 la puissance de pondération des classes basée sur la fréquence inverse des classes :

  • cls_pw=0.0 (par défaut) : Désactive la pondération des classes
  • cls_pw=1.0 : Applique une pondération complète par fréquence inverse
  • Valeurs entre 0.0 et 1.0 : Fournissent une pondération partielle pour un déséquilibre modéré

Les poids des classes sont calculés comme (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

# Load a pretrained model
model = YOLO("yolo26n.pt")

# Train with full class weighting for severely imbalanced data
results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=1.0)

# Or use partial weighting (0.25) for moderate imbalance
results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=0.25)
Astuce

Commence avec cls_pw=0.25 pour des jeux de données modérément déséquilibrés et augmente jusqu'à 1.0 si les classes rares sous-performent toujours. Tu peux vérifier les poids des classes calculés dans les journaux d'entraînement pour valider la distribution des poids.

Puis-je entraîner des modèles YOLO26 sur des puces Apple Silicon ?

Oui, Ultralytics YOLO26 prend en charge l'entraînement sur des puces Apple Silicon en utilisant le framework Metal Performance Shaders (MPS). Spécifie 'mps' comme périphérique d'entraînement.

Exemple d'entraînement MPS
from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n.pt")

# Train the model on Apple silicon chip (M1/M2/M3/M4)
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")

Pour plus de détails, réfère-toi à la section Entraînement MPS Apple Silicon.

Quels sont les paramètres d'entraînement courants et comment les configurer ?

Ultralytics YOLO26 te permet de configurer divers paramètres d'entraînement tels que la taille de lot, le taux d'apprentissage, les époques, et plus, via des arguments. Voici un bref aperçu :

ArgumentDéfautDescription
modelNoneChemin vers le fichier de modèle pour l'entraînement.
dataNoneChemin vers le fichier de configuration du jeu de données (par ex., coco8.yaml).
epochs100Nombre total d'époques d'entraînement.
batch16Taille de lot, ajustable en 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 contrôle d'entraînement et des poids finaux du modèle.

Pour un guide approfondi sur les paramètres d'entraînement, consulte la section Paramètres d'entraînement.

Commentaires