Тренировка модели с Ultralytics YOLO
Введение
Training a deep learning model involves feeding it data and adjusting its parameters so that it can make accurate predictions. Train mode in Ultralytics YOLO11 is engineered for effective and efficient training of object detection models, fully utilizing modern hardware capabilities. This guide aims to cover all the details you need to get started with training your own models using YOLO11's robust set of features.
Смотри: How to Train a YOLO model on Your Custom Dataset in Google Colab.
Почему ты выбираешь Ultralytics YOLO для обучения?
Here are some compelling reasons to opt for YOLO11's Train mode:
- Эффективность: Используй максимум возможностей своего оборудования, будь то установка с однимGPU или масштабирование на несколько GPU.
- Универсальность: Обучайся на пользовательских наборах данных, а также на легкодоступных, таких как COCO, VOC и ImageNet.
- Удобство для пользователя: простые, но мощные интерфейсы CLI и Python обеспечивают простоту обучения.
- Гибкость гиперпараметров: Широкий спектр настраиваемых гиперпараметров для тонкой настройки производительности модели.
Ключевые особенности режима поезда
The following are some notable features of YOLO11's Train mode:
- Автоматическая загрузка данных: Стандартные наборы данных, такие как COCO, VOC и ImageNet, загружаются автоматически при первом использовании.
- Поддержка несколькихGPU : Масштабируй свои тренировочные усилия без проблем на нескольких GPU, чтобы ускорить процесс.
- Конфигурация гиперпараметров: Возможность изменять гиперпараметры через конфигурационные файлы YAML или аргументы CLI .
- Визуализация и мониторинг: Отслеживание показателей обучения в реальном времени и визуализация процесса обучения для более глубокого понимания.
Наконечник
- YOLO11 datasets like COCO, VOC, ImageNet and many others automatically download on first use, i.e.
yolo train data=coco.yaml
Примеры использования
Train YOLO11n on the COCO8 dataset for 100 epochs at image size 640. The training device can be specified using the device
аргумент. Если аргумент не передан GPU device=0
будет использоваться, если он доступен, в противном случае device='cpu'
будет использоваться. Полный список аргументов для тренировки смотри в разделе "Аргументы" ниже.
ОдиночныйGPU и CPU пример тренировки
Устройство определяется автоматически. Если доступен GPU , то он будет использован, в противном случае тренировка начнется на CPU.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.yaml") # build a new model from YAML
model = YOLO("yolo11n.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo11n.yaml").load("yolo11n.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Build a new model from YAML and start training from scratch
yolo detect train data=coco8.yaml model=yolo11n.yaml epochs=100 imgsz=640
# Start training from a pretrained *.pt model
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640
# Build a new model from YAML, transfer pretrained weights to it and start training
yolo detect train data=coco8.yaml model=yolo11n.yaml pretrained=yolo11n.pt epochs=100 imgsz=640
МультиGPU тренировка
Обучение с использованием несколькихGPU позволяет более эффективно использовать доступные аппаратные ресурсы, распределяя обучающую нагрузку между несколькими GPU. Эта функция доступна как через Python API, так и через интерфейс командной строки. Чтобы включить мультиGPU обучение, укажи идентификаторы устройств GPU , которые ты хочешь использовать.
Пример тренировки с несколькимиGPU
Чтобы тренироваться с 2 GPU, CUDA устройствами 0 и 1, используй следующие команды. По мере необходимости расширяйся на дополнительные GPU.
Apple Silicon MPS Training
With the support for Apple silicon chips integrated in the Ultralytics YOLO models, it's now possible to train your models on devices utilizing the powerful Metal Performance Shaders (MPS) framework. The MPS offers a high-performance way of executing computation and image processing tasks on Apple's custom silicon.
To enable training on Apple silicon chips, you should specify 'mps' as your device when initiating the training process. Below is an example of how you could do this in Python and via the command line:
MPS Пример тренировки
While leveraging the computational power of the Apple silicon chips, this enables more efficient processing of the training tasks. For more detailed guidance and advanced configuration options, please refer to the PyTorch MPS documentation.
Возобновление прерванных тренировок
Возобновление обучения из ранее сохраненного состояния - важнейшая функция при работе с моделями глубокого обучения. Это может пригодиться в различных сценариях, например, когда процесс обучения был неожиданно прерван или когда ты хочешь продолжить обучение модели с новыми данными или в течение большего количества эпох.
When training is resumed, Ultralytics YOLO loads the weights from the last saved model and also restores the optimizer state, learning rate scheduler, and the epoch number. This allows you to continue the training process seamlessly from where it was left off.
Ты можешь легко возобновить тренировки в Ultralytics YOLO , установив resume
аргумент в пользу True
при вызове train
и укажи путь к .pt
файл, содержащий частично обученные веса модели.
Ниже приведен пример того, как возобновить прерванную тренировку с помощью Python и через командную строку:
Пример подготовки резюме
По настройке resume=True
, the train
Функция продолжит тренировку с того места, где она остановилась, используя состояние, сохраненное в файле 'path/to/last.pt'. Если в процессе тренировки не было достигнуто resume
аргумент опущен или установлен в значение False
, the train
Функция начнет новую тренировку.
Remember that checkpoints are saved at the end of every epoch by default, or at fixed intervals using the save_period
аргумент, поэтому для возобновления тренировочного забега ты должен завершить хотя бы 1 эпоху.
Настройки поезда
The training settings for YOLO models encompass various hyperparameters and configurations used during the training process. These settings influence the model's performance, speed, and accuracy. Key training settings include batch size, learning rate, momentum, and weight decay. Additionally, the choice of optimizer, loss function, and training dataset composition can impact the training process. Careful tuning and experimentation with these settings are crucial for optimizing performance.
Аргумент | По умолчанию | Описание |
---|---|---|
model | None | Указывает файл модели для обучения. Принимает путь либо к .pt предварительно обученная модель или .yaml файл конфигурации. Необходим для определения структуры модели или инициализации весов. |
data | None | Путь к файлу конфигурации набора данных (например, coco8.yaml ). This file contains dataset-specific parameters, including paths to training and validation data, class names, and number of classes. |
epochs | 100 | Total number of training epochs. Each epoch represents a full pass over the entire dataset. Adjusting this value can affect training duration and model performance. |
time | None | Максимальное время тренировки в часах. Если установлено, то оно отменяет значение epochs аргумент, позволяющий автоматически прекратить тренировку по истечении указанной продолжительности. Полезно для сценариев тренировок с ограниченным временем. |
patience | 100 | Number of epochs to wait without improvement in validation metrics before early stopping the training. Helps prevent overfitting by stopping training when performance plateaus. |
batch | 16 | Batch size, with three modes: set as an integer (e.g., batch=16 ), авторежим для 60-процентного использования памяти GPU (batch=-1 ) или автоматический режим с заданной долей использования (batch=0.70 ). |
imgsz | 640 | Target image size for training. All images are resized to this dimension before being fed into the model. Affects model accuracy and computational complexity. |
save | True | Enables saving of training checkpoints and final model weights. Useful for resuming training or model deployment. |
save_period | -1 | Частота сохранения контрольных точек модели, указывается в эпохах. Значение -1 отключает эту функцию. Полезно для сохранения промежуточных моделей во время длительных тренировок. |
cache | False | Включает кэширование изображений наборов данных в памяти (True /ram ), на диске (disk ), или отключить его (False ). Повышает скорость тренировок за счет снижения дискового ввода-вывода ценой увеличения использования памяти. |
device | None | Указывается вычислительное устройство (устройства) для тренировки: один GPU (device=0 ), несколько графических процессоров (device=0,1 ), CPU (device=cpu ), или MPS для кремния Apple (device=mps ). |
workers | 8 | Количество рабочих потоков для загрузки данных (на RANK если тренировка мультиGPU ). Влияет на скорость предварительной обработки данных и подачи их в модель, особенно полезно в мультиGPU установках. |
project | None | Имя директории проекта, в которой сохраняются результаты тренировок. Позволяет организовать хранение различных экспериментов. |
name | None | Название тренировочного прогона. Используется для создания подкаталога в папке проекта, где будут храниться журналы тренировок и результаты. |
exist_ok | False | Если значение True, это позволяет перезаписать существующий каталог с проектом/именем. Полезно для итеративных экспериментов без необходимости вручную очищать предыдущие результаты. |
pretrained | True | Определяет, начинать ли обучение с предварительно обученной модели. Может быть булевым значением или строковым путем к конкретной модели, из которой загружаются веса. Повышает эффективность обучения и производительность модели. |
optimizer | 'auto' | Выбери оптимизатор для тренировки. Варианты включают в себя SGD , Adam , AdamW , NAdam , RAdam , RMSProp и т.д., или auto для автоматического выбора на основе конфигурации модели. Влияет на скорость сходимости и стабильность. |
verbose | False | Включает подробный вывод информации во время тренировки, предоставляя подробные журналы и обновления прогресса. Полезно для отладки и тщательного контроля процесса тренировки. |
seed | 0 | Задает случайное зерно для тренировки, обеспечивая воспроизводимость результатов в прогонах с одинаковыми конфигурациями. |
deterministic | True | Принуждает использовать детерминированные алгоритмы, что обеспечивает воспроизводимость, но может повлиять на производительность и скорость из-за ограничения на недетерминированные алгоритмы. |
single_cls | False | Во время обучения все классы в многоклассовых наборах данных рассматриваются как один класс. Полезно для задач бинарной классификации или когда внимание сосредоточено на присутствии объекта, а не на классификации. |
rect | False | Включает прямоугольную тренировку, оптимизируя состав партии для минимальной набивки. Это может повысить эффективность и скорость, но может повлиять на точность модели. |
cos_lr | False | Utilizes a cosine learning rate scheduler, adjusting the learning rate following a cosine curve over epochs. Helps in managing learning rate for better convergence. |
close_mosaic | 10 | Disables mosaic data augmentation in the last N epochs to stabilize training before completion. Setting to 0 disables this feature. |
resume | False | Возобнови тренировку с последней сохраненной контрольной точки. Автоматически загружает веса модели, состояние оптимизатора и количество эпох, продолжая тренировку без проблем. |
amp | True | Enables Automatic Mixed Precision (AMP) training, reducing memory usage and possibly speeding up training with minimal impact on accuracy. |
fraction | 1.0 | Указывает, какую часть набора данных использовать для обучения. Позволяет тренироваться на подмножестве полного набора данных, что полезно для экспериментов или при ограниченных ресурсах. |
profile | False | Позволяет профилировать скорости ONNX и TensorRT во время тренировки, что полезно для оптимизации развертывания модели. |
freeze | None | Freezes the first N layers of the model or specified layers by index, reducing the number of trainable parameters. Useful for fine-tuning or transfer learning. |
lr0 | 0.01 | Начальная скорость обучения (т.е. SGD=1E-2 , Adam=1E-3 ) . Настройка этого значения имеет решающее значение для процесса оптимизации, влияя на то, как быстро обновляются веса моделей. |
lrf | 0.01 | Конечная скорость обучения как доля от начальной скорости = (lr0 * lrf ), используемые вместе с планировщиками для регулировки скорости обучения с течением времени. |
momentum | 0.937 | Momentum factor for SGD or beta1 for Adam optimizers, influencing the incorporation of past gradients in the current update. |
weight_decay | 0.0005 | L2 regularization term, penalizing large weights to prevent overfitting. |
warmup_epochs | 3.0 | Количество эпох для разогрева скорости обучения, постепенно увеличивая скорость обучения от низкого значения до начальной скорости обучения, чтобы стабилизировать обучение на ранних этапах. |
warmup_momentum | 0.8 | Начальный импульс для фазы разминки, постепенно подстраиваясь под заданный импульс в течение всего периода разминки. |
warmup_bias_lr | 0.1 | Скорость обучения параметров смещения во время фазы разминки, помогающая стабилизировать обучение модели в начальных эпохах. |
box | 7.5 | Weight of the box loss component in the loss function, influencing how much emphasis is placed on accurately predicting bounding box coordinates. |
cls | 0.5 | Вес классификационных потерь в общей функции потерь, влияющий на важность правильного предсказания класса относительно других компонентов. |
dfl | 1.5 | Вес фокусной потери распределения, используемый в некоторых версиях YOLO для более тонкой классификации. |
pose | 12.0 | Вес потери позы в моделях, обученных для оценки позы, влияет на акцент на точное предсказание ключевых точек позы. |
kobj | 2.0 | Вес потери объектности ключевой точки в моделях оценки позы, балансирующий между уверенностью в обнаружении и точностью позы. |
label_smoothing | 0.0 | Применяет сглаживание меток, смягчая жесткие метки до смеси целевой метки и равномерного распределения по меткам, что может улучшить обобщение. |
nbs | 64 | Номинальный размер партии для нормализации потерь. |
overlap_mask | True | Determines whether object masks should be merged into a single mask for training, or kept separate for each object. In case of overlap, the smaller mask is overlayed on top of the larger mask during merge. |
mask_ratio | 4 | Коэффициент понижения дискретизации для масок сегментации, влияющий на разрешение масок, используемых во время обучения. |
dropout | 0.0 | Показатель отсева для регуляризации в задачах классификации, предотвращающий перебор с помощью случайного исключения единиц во время обучения. |
val | True | Включает валидацию во время обучения, позволяя периодически оценивать производительность модели на отдельном наборе данных. |
plots | False | Генерирует и сохраняет графики метрик обучения и проверки, а также примеры предсказаний, обеспечивая визуальное представление о производительности модели и прогрессе обучения. |
Примечание о параметрах размера пакета
The batch
аргумент может быть настроен тремя способами:
- Fixed Batch Size: Задайте целочисленное значение (например,
batch=16
), указывая непосредственно количество изображений в пакете. - Автоматический режим (60% GPU Memory):Использование
batch=-1
чтобы автоматически настроить размер партии для использования памяти примерно на 60% CUDA . - Автоматический режим с долей использования: Задайте значение дроби (например,
batch=0.70
), чтобы отрегулировать размер партии в зависимости от указанной доли используемой памяти GPU .
Настройки дополнения и гиперпараметры
Augmentation techniques are essential for improving the robustness and performance of YOLO models by introducing variability into the training data, helping the model generalize better to unseen data. The following table outlines the purpose and effect of each augmentation argument:
Аргумент | Тип | По умолчанию | Диапазон | Описание |
---|---|---|---|---|
hsv_h | float | 0.015 | 0.0 - 1.0 | Корректирует оттенок изображения на долю цветового круга, внося вариативность цвета. Помогает модели обобщать различные условия освещения. |
hsv_s | float | 0.7 | 0.0 - 1.0 | Изменяет насыщенность изображения на доли, влияя на интенсивность цветов. Полезно для имитации различных условий окружающей среды. |
hsv_v | float | 0.4 | 0.0 - 1.0 | Изменяет значение (яркость) изображения на долю, помогая модели хорошо проявить себя при различных условиях освещения. |
degrees | float | 0.0 | -180 - +180 | Произвольно поворачивает изображение в заданном диапазоне градусов, улучшая способность модели распознавать объекты с различной ориентацией. |
translate | float | 0.1 | 0.0 - 1.0 | Переводит изображение по горизонтали и вертикали на долю размера изображения, помогая научиться обнаруживать частично видимые объекты. |
scale | float | 0.5 | >=0.0 | Масштабируй изображение по коэффициенту усиления, имитируя объекты на разных расстояниях от камеры. |
shear | float | 0.0 | -180 - +180 | Обрезай изображение на заданный градус, имитируя эффект предметов, рассматриваемых под разными углами. |
perspective | float | 0.0 | 0.0 - 0.001 | Применяет к изображению случайное преобразование перспективы, улучшая способность модели понимать объекты в трехмерном пространстве. |
flipud | float | 0.0 | 0.0 - 1.0 | Переворачивает изображение с заданной вероятностью, увеличивая вариативность данных без ущерба для характеристик объекта. |
fliplr | float | 0.5 | 0.0 - 1.0 | Переворачивай изображение слева направо с заданной вероятностью, что полезно для изучения симметричных объектов и увеличения разнообразия датасетов. |
bgr | float | 0.0 | 0.0 - 1.0 | Переворачивай каналы изображения из RGB в BGR с заданной вероятностью, что полезно для повышения устойчивости к неправильному упорядочиванию каналов. |
mosaic | float | 1.0 | 0.0 - 1.0 | Объединяет четыре тренировочных изображения в одно, имитируя различные композиции сцены и взаимодействие объектов. Высокоэффективно для понимания сложных сцен. |
mixup | float | 0.0 | 0.0 - 1.0 | Смешивай два изображения и их метки, создавая составное изображение. Усиливает способность модели к обобщению, вводя шум от меток и визуальную изменчивость. |
copy_paste | float | 0.0 | 0.0 - 1.0 | Копирует объекты с одного изображения и вставляет их на другое, что полезно для увеличения количества экземпляров объектов и изучения окклюзии объектов. |
copy_paste_mode | str | flip | - | Copy-Paste augmentation method selection among the options of ("flip" , "mixup" ). |
auto_augment | str | randaugment | - | Автоматическое применение предопределенной политики аугментации (randaugment , autoaugment , augmix ), оптимизируя для задач классификации за счет разнообразия визуальных признаков. |
erasing | float | 0.4 | 0.0 - 0.9 | Случайно стирает часть изображения во время обучения классификации, побуждая модель сосредоточиться на менее очевидных признаках для распознавания. |
crop_fraction | float | 1.0 | 0.1 - 1.0 | Обрезает классификационное изображение до меньшего размера, чтобы подчеркнуть центральные особенности и адаптироваться к масштабам объектов, уменьшая фоновые отвлекающие факторы. |
Эти параметры могут быть изменены в соответствии с конкретными требованиями набора данных и поставленной задачи. Экспериментирование с различными значениями поможет найти оптимальную стратегию дополнения, которая приведет к наилучшей производительности модели.
Информация
Подробнее о тренировочных операциях с аугментацией читай в справочном разделе.
Запись в журнале
In training a YOLO11 model, you might find it valuable to keep track of the model's performance over time. This is where logging comes into play. Ultralytics' YOLO provides support for three types of loggers - Comet, ClearML, and TensorBoard.
Чтобы использовать логгер, выбери его из выпадающего меню в фрагменте кода выше и запусти его. Выбранный логгер будет установлен и инициализирован.
Comet
Comet Это платформа, которая позволяет ученым, изучающим данные, и разработчикам отслеживать, сравнивать, объяснять и оптимизировать эксперименты и модели. Она предоставляет такие функциональные возможности, как метрики в реальном времени, различия в коде и отслеживание гиперпараметров.
Чтобы использовать Comet:
Не забудь войти в свой аккаунт Comet на их сайте и получить свой API-ключ. Тебе нужно будет добавить его в переменные окружения или в свой скрипт для регистрации экспериментов.
ClearML
ClearML Это платформа с открытым исходным кодом, которая автоматизирует отслеживание экспериментов и помогает эффективно распределять ресурсы. Она призвана помочь командам более эффективно управлять, выполнять и воспроизводить свою работу в области ML.
Чтобы использовать ClearML:
После запуска этого скрипта тебе нужно будет войти в свой аккаунт ClearML в браузере и аутентифицировать свою сессию.
TensorBoard
TensorBoard is a visualization toolkit for TensorFlow. It allows you to visualize your TensorFlow graph, plot quantitative metrics about the execution of your graph, and show additional data like images that pass through it.
Чтобы использовать TensorBoard в Google Colab:
To use TensorBoard locally run the below command and view results at http://localhost:6006/.
Это загрузит TensorBoard и направит его в директорию, где сохранены твои журналы тренировок.
После настройки логгера ты можешь приступать к тренировке модели. Все показатели тренировки будут автоматически регистрироваться в выбранной тобой платформе, и ты сможешь обращаться к этим логам, чтобы отслеживать эффективность своей модели с течением времени, сравнивать разные модели и выявлять области для улучшения.
ВОПРОСЫ И ОТВЕТЫ
How do I train an object detection model using Ultralytics YOLO11?
To train an object detection model using Ultralytics YOLO11, you can either use the Python API or the CLI. Below is an example for both:
ОдиночныйGPU и CPU пример тренировки
Более подробную информацию ты найдешь в разделе " Настройки поезда ".
What are the key features of Ultralytics YOLO11's Train mode?
The key features of Ultralytics YOLO11's Train mode include:
- Автоматическая загрузка наборов данных: Автоматически загружай стандартные наборы данных, такие как COCO, VOC и ImageNet.
- Поддержка несколькихGPU : Масштабируй обучение на нескольких GPU для более быстрой обработки.
- Конфигурация гиперпараметров: Настраивай гиперпараметры через YAML-файлы или аргументы CLI .
- Визуализация и мониторинг: Отслеживай показатели тренировок в реальном времени, чтобы лучше понять суть происходящего.
Эти функции делают тренировку эффективной и настраиваемой под твои нужды. Подробнее об этом читай в разделе " Ключевые особенности режима тренировки ".
How do I resume training from an interrupted session in Ultralytics YOLO11?
Чтобы возобновить тренировку после прерванного занятия, установи resume
аргумент в пользу True
и укажи путь к последней сохраненной контрольной точке.
Пример подготовки резюме
За дополнительной информацией обращайся к разделу " Возобновление прерванных тренировок ".
Can I train YOLO11 models on Apple silicon chips?
Yes, Ultralytics YOLO11 supports training on Apple silicon chips utilizing the Metal Performance Shaders (MPS) framework. Specify 'mps' as your training device.
MPS Пример тренировки
For more details, refer to the Apple Silicon MPS Training section.
Каковы общие параметры тренировок и как их настроить?
Ultralytics YOLO11 allows you to configure a variety of training settings such as batch size, learning rate, epochs, and more through arguments. Here's a brief overview:
Аргумент | По умолчанию | Описание |
---|---|---|
model | None | Путь к файлу с моделью для обучения. |
data | None | Путь к файлу конфигурации набора данных (например, coco8.yaml ). |
epochs | 100 | Общее количество тренировочных эпох. |
batch | 16 | Размер партии, настраиваемый как в целочисленном, так и в автоматическом режиме. |
imgsz | 640 | Целевой размер изображения для тренировки. |
device | None | Вычислительное устройство (устройства) для тренировок типа cpu , 0 , 0,1 , или mps . |
save | True | Включает сохранение контрольных точек тренировки и финальных весов модели. |
Подробное руководство по настройкам тренировок ты найдешь в разделе " Настройки тренировок ".