Перейти к содержимому

Тренировка модели с Ultralytics YOLO

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.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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])
# Start training from a pretrained *.pt model using GPUs 0 and 1
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640 device=0,1

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 Пример тренировки

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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")
# Start training from a pretrained *.pt model using MPS
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640 device=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 и через командную строку:

Пример подготовки резюме

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)
# Resume an interrupted training
yolo train resume model=path/to/last.pt

По настройке 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.

АргументПо умолчаниюОписание
modelNoneУказывает файл модели для обучения. Принимает путь либо к .pt предварительно обученная модель или .yaml файл конфигурации. Необходим для определения структуры модели или инициализации весов.
dataNoneПуть к файлу конфигурации набора данных (например, coco8.yaml). This file contains dataset-specific parameters, including paths to training and validation data, class names, and number of classes.
epochs100Total number of training epochs. Each epoch represents a full pass over the entire dataset. Adjusting this value can affect training duration and model performance.
timeNoneМаксимальное время тренировки в часах. Если установлено, то оно отменяет значение epochs аргумент, позволяющий автоматически прекратить тренировку по истечении указанной продолжительности. Полезно для сценариев тренировок с ограниченным временем.
patience100Number of epochs to wait without improvement in validation metrics before early stopping the training. Helps prevent overfitting by stopping training when performance plateaus.
batch16Batch size, with three modes: set as an integer (e.g., batch=16), авторежим для 60-процентного использования памяти GPU (batch=-1) или автоматический режим с заданной долей использования (batch=0.70).
imgsz640Target image size for training. All images are resized to this dimension before being fed into the model. Affects model accuracy and computational complexity.
saveTrueEnables saving of training checkpoints and final model weights. Useful for resuming training or model deployment.
save_period-1Частота сохранения контрольных точек модели, указывается в эпохах. Значение -1 отключает эту функцию. Полезно для сохранения промежуточных моделей во время длительных тренировок.
cacheFalseВключает кэширование изображений наборов данных в памяти (True/ram), на диске (disk), или отключить его (False). Повышает скорость тренировок за счет снижения дискового ввода-вывода ценой увеличения использования памяти.
deviceNoneУказывается вычислительное устройство (устройства) для тренировки: один GPU (device=0), несколько графических процессоров (device=0,1), CPU (device=cpu), или MPS для кремния Apple (device=mps).
workers8Количество рабочих потоков для загрузки данных (на RANK если тренировка мультиGPU ). Влияет на скорость предварительной обработки данных и подачи их в модель, особенно полезно в мультиGPU установках.
projectNoneИмя директории проекта, в которой сохраняются результаты тренировок. Позволяет организовать хранение различных экспериментов.
nameNoneНазвание тренировочного прогона. Используется для создания подкаталога в папке проекта, где будут храниться журналы тренировок и результаты.
exist_okFalseЕсли значение True, это позволяет перезаписать существующий каталог с проектом/именем. Полезно для итеративных экспериментов без необходимости вручную очищать предыдущие результаты.
pretrainedTrueОпределяет, начинать ли обучение с предварительно обученной модели. Может быть булевым значением или строковым путем к конкретной модели, из которой загружаются веса. Повышает эффективность обучения и производительность модели.
optimizer'auto'Выбери оптимизатор для тренировки. Варианты включают в себя SGD, Adam, AdamW, NAdam, RAdam, RMSProp и т.д., или auto для автоматического выбора на основе конфигурации модели. Влияет на скорость сходимости и стабильность.
verboseFalseВключает подробный вывод информации во время тренировки, предоставляя подробные журналы и обновления прогресса. Полезно для отладки и тщательного контроля процесса тренировки.
seed0Задает случайное зерно для тренировки, обеспечивая воспроизводимость результатов в прогонах с одинаковыми конфигурациями.
deterministicTrueПринуждает использовать детерминированные алгоритмы, что обеспечивает воспроизводимость, но может повлиять на производительность и скорость из-за ограничения на недетерминированные алгоритмы.
single_clsFalseВо время обучения все классы в многоклассовых наборах данных рассматриваются как один класс. Полезно для задач бинарной классификации или когда внимание сосредоточено на присутствии объекта, а не на классификации.
rectFalseВключает прямоугольную тренировку, оптимизируя состав партии для минимальной набивки. Это может повысить эффективность и скорость, но может повлиять на точность модели.
cos_lrFalseUtilizes a cosine learning rate scheduler, adjusting the learning rate following a cosine curve over epochs. Helps in managing learning rate for better convergence.
close_mosaic10Disables mosaic data augmentation in the last N epochs to stabilize training before completion. Setting to 0 disables this feature.
resumeFalseВозобнови тренировку с последней сохраненной контрольной точки. Автоматически загружает веса модели, состояние оптимизатора и количество эпох, продолжая тренировку без проблем.
ampTrueEnables Automatic Mixed Precision (AMP) training, reducing memory usage and possibly speeding up training with minimal impact on accuracy.
fraction1.0Указывает, какую часть набора данных использовать для обучения. Позволяет тренироваться на подмножестве полного набора данных, что полезно для экспериментов или при ограниченных ресурсах.
profileFalseПозволяет профилировать скорости ONNX и TensorRT во время тренировки, что полезно для оптимизации развертывания модели.
freezeNoneFreezes 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.
lr00.01Начальная скорость обучения (т.е. SGD=1E-2, Adam=1E-3) . Настройка этого значения имеет решающее значение для процесса оптимизации, влияя на то, как быстро обновляются веса моделей.
lrf0.01Конечная скорость обучения как доля от начальной скорости = (lr0 * lrf), используемые вместе с планировщиками для регулировки скорости обучения с течением времени.
momentum0.937Momentum factor for SGD or beta1 for Adam optimizers, influencing the incorporation of past gradients in the current update.
weight_decay0.0005L2 regularization term, penalizing large weights to prevent overfitting.
warmup_epochs3.0Количество эпох для разогрева скорости обучения, постепенно увеличивая скорость обучения от низкого значения до начальной скорости обучения, чтобы стабилизировать обучение на ранних этапах.
warmup_momentum0.8Начальный импульс для фазы разминки, постепенно подстраиваясь под заданный импульс в течение всего периода разминки.
warmup_bias_lr0.1Скорость обучения параметров смещения во время фазы разминки, помогающая стабилизировать обучение модели в начальных эпохах.
box7.5Weight of the box loss component in the loss function, influencing how much emphasis is placed on accurately predicting bounding box coordinates.
cls0.5Вес классификационных потерь в общей функции потерь, влияющий на важность правильного предсказания класса относительно других компонентов.
dfl1.5Вес фокусной потери распределения, используемый в некоторых версиях YOLO для более тонкой классификации.
pose12.0Вес потери позы в моделях, обученных для оценки позы, влияет на акцент на точное предсказание ключевых точек позы.
kobj2.0Вес потери объектности ключевой точки в моделях оценки позы, балансирующий между уверенностью в обнаружении и точностью позы.
label_smoothing0.0Применяет сглаживание меток, смягчая жесткие метки до смеси целевой метки и равномерного распределения по меткам, что может улучшить обобщение.
nbs64Номинальный размер партии для нормализации потерь.
overlap_maskTrueDetermines 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_ratio4Коэффициент понижения дискретизации для масок сегментации, влияющий на разрешение масок, используемых во время обучения.
dropout0.0Показатель отсева для регуляризации в задачах классификации, предотвращающий перебор с помощью случайного исключения единиц во время обучения.
valTrueВключает валидацию во время обучения, позволяя периодически оценивать производительность модели на отдельном наборе данных.
plotsFalseГенерирует и сохраняет графики метрик обучения и проверки, а также примеры предсказаний, обеспечивая визуальное представление о производительности модели и прогрессе обучения.

Примечание о параметрах размера пакета

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_hfloat0.0150.0 - 1.0Корректирует оттенок изображения на долю цветового круга, внося вариативность цвета. Помогает модели обобщать различные условия освещения.
hsv_sfloat0.70.0 - 1.0Изменяет насыщенность изображения на доли, влияя на интенсивность цветов. Полезно для имитации различных условий окружающей среды.
hsv_vfloat0.40.0 - 1.0Изменяет значение (яркость) изображения на долю, помогая модели хорошо проявить себя при различных условиях освещения.
degreesfloat0.0-180 - +180Произвольно поворачивает изображение в заданном диапазоне градусов, улучшая способность модели распознавать объекты с различной ориентацией.
translatefloat0.10.0 - 1.0Переводит изображение по горизонтали и вертикали на долю размера изображения, помогая научиться обнаруживать частично видимые объекты.
scalefloat0.5>=0.0Масштабируй изображение по коэффициенту усиления, имитируя объекты на разных расстояниях от камеры.
shearfloat0.0-180 - +180Обрезай изображение на заданный градус, имитируя эффект предметов, рассматриваемых под разными углами.
perspectivefloat0.00.0 - 0.001Применяет к изображению случайное преобразование перспективы, улучшая способность модели понимать объекты в трехмерном пространстве.
flipudfloat0.00.0 - 1.0Переворачивает изображение с заданной вероятностью, увеличивая вариативность данных без ущерба для характеристик объекта.
fliplrfloat0.50.0 - 1.0Переворачивай изображение слева направо с заданной вероятностью, что полезно для изучения симметричных объектов и увеличения разнообразия датасетов.
bgrfloat0.00.0 - 1.0Переворачивай каналы изображения из RGB в BGR с заданной вероятностью, что полезно для повышения устойчивости к неправильному упорядочиванию каналов.
mosaicfloat1.00.0 - 1.0Объединяет четыре тренировочных изображения в одно, имитируя различные композиции сцены и взаимодействие объектов. Высокоэффективно для понимания сложных сцен.
mixupfloat0.00.0 - 1.0Смешивай два изображения и их метки, создавая составное изображение. Усиливает способность модели к обобщению, вводя шум от меток и визуальную изменчивость.
copy_pastefloat0.00.0 - 1.0Копирует объекты с одного изображения и вставляет их на другое, что полезно для увеличения количества экземпляров объектов и изучения окклюзии объектов.
copy_paste_modestrflip-Copy-Paste augmentation method selection among the options of ("flip", "mixup").
auto_augmentstrrandaugment-Автоматическое применение предопределенной политики аугментации (randaugment, autoaugment, augmix), оптимизируя для задач классификации за счет разнообразия визуальных признаков.
erasingfloat0.40.0 - 0.9Случайно стирает часть изображения во время обучения классификации, побуждая модель сосредоточиться на менее очевидных признаках для распознавания.
crop_fractionfloat1.00.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:

Пример

# pip install comet_ml
import comet_ml

comet_ml.init()

Не забудь войти в свой аккаунт Comet на их сайте и получить свой API-ключ. Тебе нужно будет добавить его в переменные окружения или в свой скрипт для регистрации экспериментов.

ClearML

ClearML Это платформа с открытым исходным кодом, которая автоматизирует отслеживание экспериментов и помогает эффективно распределять ресурсы. Она призвана помочь командам более эффективно управлять, выполнять и воспроизводить свою работу в области ML.

Чтобы использовать ClearML:

Пример

# pip install clearml
import clearml

clearml.browser_login()

После запуска этого скрипта тебе нужно будет войти в свой аккаунт 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:

Пример

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

To use TensorBoard locally run the below command and view results at http://localhost:6006/.

Пример

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

Это загрузит 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 пример тренировки

from ultralytics import YOLO

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

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

Более подробную информацию ты найдешь в разделе " Настройки поезда ".

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 и укажи путь к последней сохраненной контрольной точке.

Пример подготовки резюме

from ultralytics import YOLO

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

# Resume training
results = model.train(resume=True)
yolo train resume model=path/to/last.pt

За дополнительной информацией обращайся к разделу " Возобновление прерванных тренировок ".

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 Пример тренировки

from ultralytics import YOLO

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

# Train the model on Apple silicon chip (M1/M2/M3/M4)
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640 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:

АргументПо умолчаниюОписание
modelNoneПуть к файлу с моделью для обучения.
dataNoneПуть к файлу конфигурации набора данных (например, coco8.yaml).
epochs100Общее количество тренировочных эпох.
batch16Размер партии, настраиваемый как в целочисленном, так и в автоматическом режиме.
imgsz640Целевой размер изображения для тренировки.
deviceNoneВычислительное устройство (устройства) для тренировок типа cpu, 0, 0,1, или mps.
saveTrueВключает сохранение контрольных точек тренировки и финальных весов модели.

Подробное руководство по настройкам тренировок ты найдешь в разделе " Настройки тренировок ".

📅 Created 11 months ago ✏️ Updated 0 days ago

Комментарии