Meet YOLO26: next-gen vision AI.

Link to this sectionEntraînement de modèle avec Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Link to this sectionIntroduction#

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 dans Ultralytics YOLO26 est conçu pour un entraînement efficace et performant des modèles de détection d'objets, en utilisant pleinement les capacités du matériel moderne. Ce guide a pour but de 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.

Link to this sectionPourquoi 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 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 sur des GPU cloud via Ultralytics Platform avec des métriques en temps réel et une sauvegarde automatique des points de contrôle.

Link to this sectionFonctionnalités clés du mode Train#

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

  • Téléchargement automatique du jeu de données : Les jeux de données standard 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 perspectives.
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, par ex. yolo train data=coco.yaml

Link to this sectionExemples d'utilisation#

Entraîne YOLO26n sur le jeu de données COCO8 pendant 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é lorsqu'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 sous Windows

Sous 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 un seul GPU 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 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)

Link to this sectionEntraînement multi-GPU#

L'entraînement multi-GPU permet une utilisation plus efficace des ressources matérielles disponibles en répartissant la charge d'entraînement sur plusieurs GPU. Cette fonctionnalité est disponible via l'API Python et l'interface en ligne de commande. Pour activer l'entraînement multi-GPU, spécifie les ID 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 ex. device=[0, 1]), Ultralytics génère 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

Link to this sectionEntraînement sur GPU inactif#

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

Exemple d'entraînement sur GPU inactif

Pour sélectionner et utiliser automatiquement le(s) GPU le(s) plus inactif(s) pour l'entraînement, utilise le paramètre de périphérique -1. Ceci est particulièrement utile dans les environnements informatiques 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 d'auto-sélection privilégie les 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 basses

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

Link to this sectionEntraî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 puissant framework 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 ton périphérique lors de l'initialisation du processus d'entraînement. Voici ci-dessous un exemple de la façon dont tu pourrais faire cela 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.

Link to this sectionReprise d'entraînements interrompus#

Reprendre l'entraînement à partir d'un état précédemment enregistré est une fonctionnalité cruciale lorsque tu travailles avec des modèles de deep learning. Cela peut s'avérer utile dans divers scénarios, comme lorsque le processus d'entraînement a été interrompu de manière inattendue, ou lorsque tu souhaites continuer l'entraînement d'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 s'est arrêté.

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

Voici ci-dessous un exemple de la façon de reprendre un entraînement interrompu en utilisant 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, donc tu dois compléter au moins 1 epoch pour reprendre une exécution d'entraînement.

Link to this sectionParamè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 l'accuracy du modèle. Les paramètres d'entraînement clés incluent la taille de batch, le taux d'apprentissage, le momentum et la décroissance du poids. De plus, le choix de l'optimiseur, de la loss function et de la composition du jeu de données d'entraînement peut impacter le processus d'entraînement. Un réglage minutieux et l'expérimentation avec ces paramètres sont cruciaux pour optimiser les performances.

Link to this sectionOptimiseur MuSGD#

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

Il est recommandé pour les exécutions d'entraînement YOLO26 plus longues et les jeux de données plus grands, où les mises à jour orthogonales Muon peuvent aider à stabiliser l'optimisation.

Seuls les paramètres avec param.ndim >= 2 (tels que les poids de convolution) reçoivent la mise à jour de style Muon avec SGD, tandis que les paramètres de dimension inférieure comme les couches de normalisation de batch 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 exécutions plus courtes, 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 d'auto-sélection de l'optimiseur dans BaseTrainer.build_optimizer.

ArgumentTypeDéfautDescription
modelstrNoneSpécifie le fichier de modèle pour l'entraînement. Accepte un chemin vers soit un modèle pré-entraîné .pt, soit 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 ex. coco8.yaml). Ce fichier contient des paramètres spécifiques au jeu de données, y compris les chemins vers les données d'entraînement et de validation data, les noms de classe et le nombre de classes.
epochsint100Nombre total d'epochs d'entraînement. Chaque epoch 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. S'il est 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 limités par le temps.
patienceint100Nombre d'epochs à attendre sans amélioration des métriques de validation avant d'arrêter prématurément l'entraînement. Aide à prévenir l'overfitting en arrêtant l'entraînement lorsque les performances stagnent.
batchint ou float16Batch size, avec trois modes : défini comme un entier (par ex. batch=16), mode automatique pour 60 % d'utilisation de la mémoire GPU (batch=-1), ou mode automatique avec une fraction d'utilisation spécifiée (batch=0.70).
imgszint640Taille de l'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 RT-DETR. Affecte l'accuracy et la complexité computationnelle du modèle.
saveboolTrueActive l'enregistrement des points de contrôle d'entraînement et des poids finaux du modèle. Utile pour reprendre l'entraînement ou pour le model deployment.
save_periodint-1Fréquence d'enregistrement des points de contrôle du modèle, spécifiée en epochs. Une valeur de -1 désactive cette fonctionnalité. Utile pour enregistrer des modèles intermédiaires pendant de longues sessions d'entraînement.
cacheboolFalseActive la mise en cache des images du jeu de données en mémoire (True/ram), sur 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 auto-sélection du GPU le plus 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). 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 de projet où les sorties d'entraînement sont enregistré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 d'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 d'effacer manuellement les sorties précédentes.
pretrainedbool ou strTrueDétermine s'il faut commencer l'entraînement à partir de poids pré-entraînés. Peut être une valeur booléenne ou un chemin de chaîne vers les 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 à travers les exécutions avec les mêmes configurations.
deterministicboolTrueForce l'utilisation d'algorithmes déterministes, assurant la reproductibilité mais peut 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 supplémentaires sur l'entraînement dans la console.
single_clsboolFalseTraite toutes les classes des jeux de données multi-classes comme une classe unique pendant l'entraînement. Utile pour les tâches de classification binaire ou lorsque l'accent est mis sur la présence d'objets plutôt que sur la classification.
classeslist[int]NoneSpécifie une liste d'identifiants de classe pour l'entraînement. Utile pour filtrer et se concentrer uniquement sur certaines classes pendant l'entraînement.
rectboolFalseActive une stratégie de remplissage minimal : les images d'un lot sont remplies au minimum 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 lot de +/- multi_scale (par exemple 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 learning rate cosinus, ajustant le taux d'apprentissage selon une courbe cosinus au fil des é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. Une valeur de 0 désactive cette fonctionnalité.
resumeboolFalseReprend l'entraînement depuis le dernier point de sauvegarde. Charge automatiquement les poids du modèle, l'état de l'optimiseur et le nombre d'époques, continuant l'entraînement sans interruption.
ampboolTrueActive l'entraînement en Mixed Precision (AMP) automatique, réduisant l'utilisation de la mémoire et accélérant potentiellement 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 (par exemple SGD=1E-2, Adam=1E-3). Ajuster cette valeur est crucial pour le processus d'optimisation, influençant 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'incorporation des gradients passés dans la mise à jour actuelle.
weight_decayfloat0.0005Terme de regularization L2, pénalisant les poids importants pour prévenir le surapprentissage.
warmup_epochsfloat3.0Nombre d'époques pour l'échauffement du taux d'apprentissage, augmentant progressivement le taux d'apprentissage d'une valeur faible vers le taux initial pour stabiliser l'entraînement dès le début.
warmup_momentumfloat0.8Momentum initial pour la phase d'échauffement, s'ajustant progressivement au momentum défini pendant la période d'échauffement.
warmup_bias_lrfloat0.1Taux d'apprentissage pour les paramètres de biais pendant la phase d'échauffement, 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'accent mis sur la prédiction précise des coordonnées des 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 plus 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 la pose.
kobjfloat1.0Poids de la perte de présence d'objet de point clé 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 des boîtes englobantes orientées.
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 plus petit masque est superposé au 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 graphiques des métriques d'entraînement et de validation, ainsi que des exemples de prédiction, fournissant 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 tel que "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 mémoire GPU) : Utilise batch=-1 pour ajuster automatiquement la taille du lot pour une utilisation d'environ 60 % 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 de l'utilisation de la mémoire GPU.
  • Réessai automatique OOM : Si une erreur de mémoire CUDA insuffisante se produit lors de la première époque, l'entraîneur divise automatiquement la taille du lot par deux et réessaie (jusqu'à 3 fois). Cela ne s'applique qu'à l'entraînement sur un seul GPU ; l'entraînement multi-GPU (DDP) soulèvera l'erreur immédiatement.

Link to this sectionParamè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 training data, aidant le modèle à mieux généraliser à des données non vues. 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 une variabilité des couleurs. Aide le modèle à 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 dans 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, ce qui améliore la capacité du modèle à reconnaître les objets selon diverses orientations.
translatefloat0.1detect, segment, pose, obb0.0 - 1.0Translate l'image horizontalement et verticalement d'une fraction de la taille de l'image, ce qui aide à apprendre à détecter des objets partiellement visibles.
scalefloat0.5detect, segment, pose, obb, classify0 - 1Met l'image à l'échelle selon un facteur de gain, simulant des objets à différentes distances de la caméra.
shearfloat0detect, segment, pose, obb-180 - +180Applique un cisaillement à l'image selon un degré spécifié, imitant 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 un 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 à 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, créant une image composite. Améliore la capacité du modèle à généraliser en introduisant du bruit dans les étiquettes 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 régions 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 de 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 grâce à la diversité visuelle.
erasingfloat0.4classify0.0 - 1.0Efface aléatoirement des régions 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 à accomplir. Expérimenter avec différentes valeurs peut aider à trouver la stratégie d'augmentation optimale menant à la meilleure performance 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.

Link to this sectionJournalisation#

Lors de l'entraînement d'un modèle YOLO26, tu pourrais trouver utile de suivre les performances du modèle au fil du temps. C'est là que la journalisation entre en jeu. Ultralytics YOLO prend en charge trois types d'outils de journalisation - Comet, ClearML et TensorBoard.

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

Link to this sectionComet#

Comet est une plateforme qui permet aux data scientists et aux développeurs de suivre, comparer, expliquer et optimiser leurs expériences et modèles. Elle fournit des fonctionnalités telles que des métriques en temps réel, des diffs 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 et de récupérer ta clé API. Tu devras l'ajouter à tes variables d'environnement ou à ton script pour journaliser tes expériences.

Link to this sectionClearML#

ClearML est une plateforme open-source qui automatise le suivi des expériences et aide au partage efficace des 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.

Link to this sectionTensorBoard#

TensorBoard est une boîte à outils de visualisation pour TensorFlow. Elle te permet de visualiser ton graphe TensorFlow, de tracer des métriques quantitatives sur l'exécution de ton graphe et de montrer 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 visualise 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 outil de journalisation, tu peux poursuivre l'entraînement de ton modèle. Toutes les métriques d'entraînement seront automatiquement journalisé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 axes d'amélioration.

Link to this sectionFAQ#

Link to this sectionPuis-je entraîner sans GPU local ?#

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

Link to this sectionComment 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 en utilisant Ultralytics YOLO26, tu peux utiliser soit l'API Python, soit la CLI. Voici un exemple pour les deux :

Exemple d'entraînement sur un seul GPU 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, consulte la section Paramètres d'entraînement.

Link to this sectionQuelles sont les fonctionnalités clés du mode Entraînement (Train) d'Ultralytics YOLO26 ?#

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

  • Téléchargement automatique du jeu de données : Télécharge automatiquement les jeux de données standard comme COCO, VOC et ImageNet.
  • Prise en charge multi-GPU : Échelonne 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 suivi : 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, consulte la section Fonctionnalités clés du mode Entraînement.

Link to this sectionComment reprendre un entraînement à partir d'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 sur la Reprise des entraînements interrompus pour plus d'informations.

Link to this sectionComment 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 entraîner une mauvaise performance 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 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 basée sur la fréquence inverse totale
  • 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 ont toujours de faibles performances. Tu peux vérifier les poids des classes calculés dans les journaux d'entraînement pour vérifier la distribution des poids.

Link to this sectionPuis-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, consulte la section Entraînement MPS Apple Silicon.

Link to this sectionQuels sont les paramètres d'entraînement courants et comment les configurer ?#

Ultralytics YOLO26 te permet de configurer une variété de paramètres d'entraînement tels que la taille de lot (batch size), le taux d'apprentissage (learning rate), les époques et plus encore via des arguments. Voici un bref aperçu :

ArgumentDéfautDescription
modelNoneChemin vers le fichier du 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 (batch size), ajustable en entier ou en mode automatique.
imgsz640Taille cible de l'image 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 détaillé sur les paramètres d'entraînement, consulte la section Paramètres d'entraînement.

Commentaires