Тренировка модели с Ultralytics YOLO
Введение
Обучение модели глубокого обучения заключается в подаче ей данных и настройке параметров таким образом, чтобы она могла делать точные прогнозы. Режим Train в Ultralytics YOLO11 разработан для эффективного и результативного обучения моделей обнаружения объектов, полностью использующих современные аппаратные возможности. Это руководство призвано рассказать обо всех деталях, необходимых тебе для того, чтобы начать обучение собственных моделей с помощью надежного набора функций YOLO11.
Смотри: Как обучить модель YOLO на твоем пользовательском наборе данных в Google Colab.
Почему ты выбираешь Ultralytics YOLO для обучения?
Вот несколько весомых причин, чтобы выбрать режим "Поезд" в YOLO11:
- Эффективность: Используй максимум возможностей своего оборудования, будь то установка с однимGPU или масштабирование на несколько GPU.
- Универсальность: Обучайся на пользовательских наборах данных, а также на легкодоступных, таких как COCO, VOC и ImageNet.
- Удобство для пользователя: простые, но мощные интерфейсы CLI и Python обеспечивают простоту обучения.
- Гибкость гиперпараметров: Широкий спектр настраиваемых гиперпараметров для тонкой настройки производительности модели.
Ключевые особенности режима поезда
Ниже перечислены некоторые примечательные особенности режима "Поезд" в YOLO11:
- Автоматическая загрузка данных: Стандартные наборы данных, такие как COCO, VOC и ImageNet, загружаются автоматически при первом использовании.
- Поддержка несколькихGPU : Масштабируй свои тренировочные усилия без проблем на нескольких GPU, чтобы ускорить процесс.
- Конфигурация гиперпараметров: Возможность изменять гиперпараметры через конфигурационные файлы YAML или аргументы CLI .
- Визуализация и мониторинг: Отслеживание показателей обучения в реальном времени и визуализация процесса обучения для более глубокого понимания.
Наконечник
- Такие наборы данных YOLO11, как COCO, VOC, ImageNet и многие другие, автоматически загружаются при первом использовании, то есть
yolo train data=coco.yaml
Примеры использования
Обучи YOLO11n на наборе данных COCO8 для 100 Эпохи при размере изображения 640. Тренировочное устройство можно указать с помощью 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
Благодаря поддержке кремниевых чипов Apple, интегрированных в модели Ultralytics YOLO , теперь можно обучать свои модели на устройствах, использующих мощный фреймворк Metal Performance Shaders (MPS). Фреймворк MPS предлагает высокопроизводительный способ выполнения задач по вычислениям и обработке изображений на пользовательском кремнии Apple.
Чтобы включить обучение на кремниевых чипах Apple, при запуске процесса обучения тебе следует указать в качестве устройства 'mps'. Ниже приведен пример того, как это можно сделать в Python и через командную строку:
MPS Пример тренировки
Используя вычислительную мощь кремниевых чипов Apple, это позволяет эффективнее обрабатывать учебные задачи. За более подробным руководством и расширенными возможностями настройки обращайся к документацииPyTorch MPS .
Возобновление прерванных тренировок
Возобновление обучения из ранее сохраненного состояния - важнейшая функция при работе с моделями глубокого обучения. Это может пригодиться в различных сценариях, например, когда процесс обучения был неожиданно прерван или когда ты хочешь продолжить обучение модели с новыми данными или в течение большего количества эпох.
Когда обучение возобновляется, Ultralytics YOLO загружает веса из последней сохраненной модели, а также восстанавливает состояние оптимизатора, планировщика скорости обучения и номер эпохи. Это позволяет тебе беспрепятственно продолжить процесс обучения с того места, где он был прерван.
Ты можешь легко возобновить тренировки в Ultralytics YOLO , установив resume
аргумент в пользу True
при вызове train
и укажи путь к .pt
файл, содержащий частично обученные веса модели.
Ниже приведен пример того, как возобновить прерванную тренировку с помощью Python и через командную строку:
Пример подготовки резюме
По настройке resume=True
, the train
Функция продолжит тренировку с того места, где она остановилась, используя состояние, сохраненное в файле 'path/to/last.pt'. Если в процессе тренировки не было достигнуто resume
аргумент опущен или установлен в значение False
, the train
Функция начнет новую тренировку.
Помни, что контрольные точки сохраняются в конце каждой эпохи по умолчанию или через фиксированные промежутки времени с помощью команды save_period
аргумент, поэтому для возобновления тренировочного забега ты должен завершить хотя бы 1 эпоху.
Настройки поезда
Настройки обучения для моделей YOLO включают в себя различные гиперпараметры и конфигурации, используемые в процессе обучения. Эти настройки влияют на производительность, скорость и точность модели. К ключевым настройкам обучения относятся размер партии, скорость обучения, импульс и затухание веса. Кроме того, выбор оптимизатора, функции потерь и состава тренировочного набора данных может повлиять на процесс обучения. Тщательная настройка и эксперименты с этими настройками очень важны для оптимизации производительности.
Аргумент | По умолчанию | Описание |
---|---|---|
model | None | Указывает файл модели для обучения. Принимает путь либо к .pt предварительно обученная модель или .yaml файл конфигурации. Необходим для определения структуры модели или инициализации весов. |
data | None | Путь к файлу конфигурации набора данных (например, coco8.yaml ). В этом файле содержатся специфические для набора данных параметры, включая пути к тренировочным и Данные проверки, названия классов и их количество. |
epochs | 100 | Общее количество тренировочных эпох. Каждая эпоха представляет собой полный проход по всему набору данных. Регулировка этого значения может повлиять на продолжительность тренировки и производительность модели. |
time | None | Максимальное время тренировки в часах. Если установлено, то оно отменяет значение epochs аргумент, позволяющий автоматически прекратить тренировку по истечении указанной продолжительности. Полезно для сценариев тренировок с ограниченным временем. |
patience | 100 | Количество эпох, которое нужно подождать, пока не улучшатся показатели валидации, чтобы досрочно прекратить обучение. Помогает предотвратить чрезмерную подгонку, останавливая обучение, когда производительность достигает плато. |
batch | 16 | Размер партии, с тремя режимами: установить как целое число (например, batch=16 ), авторежим для 60-процентного использования памяти GPU (batch=-1 ) или автоматический режим с заданной долей использования (batch=0.70 ). |
imgsz | 640 | Целевой размер изображения для обучения. Перед подачей в модель все изображения изменяются до этого размера. Влияет на точность модели и вычислительную сложность. |
save | True | Включает сохранение контрольных точек тренировки и финальных весов модели. Полезно для возобновления тренировки или развертывания модели. |
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 для автоматического выбора на основе конфигурации модели. Влияет на скорость сходимости и стабильность. |
seed | 0 | Задает случайное зерно для тренировки, обеспечивая воспроизводимость результатов в прогонах с одинаковыми конфигурациями. |
deterministic | True | Принуждает использовать детерминированные алгоритмы, что обеспечивает воспроизводимость, но может повлиять на производительность и скорость из-за ограничения на недетерминированные алгоритмы. |
single_cls | False | Во время обучения все классы в многоклассовых наборах данных рассматриваются как один класс. Полезно для задач бинарной классификации или когда внимание сосредоточено на присутствии объекта, а не на классификации. |
rect | False | Включает прямоугольную тренировку, оптимизируя состав партии для минимальной набивки. Это может повысить эффективность и скорость, но может повлиять на точность модели. |
cos_lr | False | Использует косинусный планировщик скорости обучения, настраивая скорость обучения по косинусной кривой в течение эпох. Помогает управлять скоростью обучения для лучшей сходимости. |
close_mosaic | 10 | Отключает увеличение мозаичных данных в последние N эпох, чтобы стабилизировать тренировку перед завершением. Установка значения 0 отключает эту функцию. |
resume | False | Возобнови тренировку с последней сохраненной контрольной точки. Автоматически загружает веса модели, состояние оптимизатора и количество эпох, продолжая тренировку без проблем. |
amp | True | Включает автоматическое обучение со смешанной точностью (AMP), уменьшая расход памяти и, возможно, ускоряя обучение с минимальным влиянием на точность. |
fraction | 1.0 | Указывает, какую часть набора данных использовать для обучения. Позволяет тренироваться на подмножестве полного набора данных, что полезно для экспериментов или при ограниченных ресурсах. |
profile | False | Позволяет профилировать скорости ONNX и TensorRT во время тренировки, что полезно для оптимизации развертывания модели. |
freeze | None | Замораживай первые N слоев модели или указанные слои по индексу, уменьшая количество обучаемых параметров. Полезно для тонкой настройки или трансферного обучения. |
lr0 | 0.01 | Начальная скорость обучения (т.е. SGD=1E-2 , Adam=1E-3 ) . Настройка этого значения имеет решающее значение для процесса оптимизации, влияя на то, как быстро обновляются веса моделей. |
lrf | 0.01 | Конечная скорость обучения как доля от начальной скорости = (lr0 * lrf ), используемые вместе с планировщиками для регулировки скорости обучения с течением времени. |
momentum | 0.937 | Момент-фактор для SGD или beta1 для оптимизаторов Адама, влияющий на включение прошлых градиентов в текущее обновление. |
weight_decay | 0.0005 | Член регуляризации L2, штрафующий большие веса, чтобы предотвратить перебор. |
warmup_epochs | 3.0 | Количество эпох для разогрева скорости обучения, постепенно увеличивая скорость обучения от низкого значения до начальной скорости обучения, чтобы стабилизировать обучение на ранних этапах. |
warmup_momentum | 0.8 | Начальный импульс для фазы разминки, постепенно подстраиваясь под заданный импульс в течение всего периода разминки. |
warmup_bias_lr | 0.1 | Скорость обучения параметров смещения во время фазы разминки, помогающая стабилизировать обучение модели в начальных эпохах. |
box | 7.5 | Вес компонента box loss в функции потерь, влияющий на то, насколько большое внимание уделяется точному предсказанию координат bounding box. |
cls | 0.5 | Вес классификационных потерь в общей функции потерь, влияющий на важность правильного предсказания класса относительно других компонентов. |
dfl | 1.5 | Вес фокусной потери распределения, используемый в некоторых версиях YOLO для более тонкой классификации. |
pose | 12.0 | Вес потери позы в моделях, обученных для оценки позы, влияет на акцент на точное предсказание ключевых точек позы. |
kobj | 2.0 | Вес потери объектности ключевой точки в моделях оценки позы, балансирующий между уверенностью в обнаружении и точностью позы. |
label_smoothing | 0.0 | Применяет сглаживание меток, смягчая жесткие метки до смеси целевой метки и равномерного распределения по меткам, что может улучшить обобщение. |
nbs | 64 | Номинальный размер партии для нормализации потерь. |
overlap_mask | True | Определяет, нужно ли объединять маски объектов в одну маску для тренировки, или же держать их отдельно для каждого объекта. В случае перекрытия меньшая маска накладывается поверх большей во время слияния. |
mask_ratio | 4 | Коэффициент понижения дискретизации для масок сегментации, влияющий на разрешение масок, используемых во время обучения. |
dropout | 0.0 | Показатель отсева для регуляризации в задачах классификации, предотвращающий перебор с помощью случайного исключения единиц во время обучения. |
val | True | Включает валидацию во время обучения, позволяя периодически оценивать производительность модели на отдельном наборе данных. |
plots | False | Генерирует и сохраняет графики метрик обучения и проверки, а также примеры предсказаний, обеспечивая визуальное представление о производительности модели и прогрессе обучения. |
Примечание о параметрах размера пакета
The batch
аргумент может быть настроен тремя способами:
- Фиксированный размер партии: Задайте целочисленное значение (например,
batch=16
), указывая непосредственно количество изображений в пакете. - Автоматический режим (60% GPU Memory):Использование
batch=-1
чтобы автоматически настроить размер партии для использования памяти примерно на 60% CUDA . - Автоматический режим с долей использования: Задайте значение дроби (например,
batch=0.70
), чтобы отрегулировать размер партии в зависимости от указанной доли используемой памяти GPU .
Настройки дополнения и гиперпараметры
Методы дополнения необходимы для повышения робастности и производительности моделей YOLO за счет внесения изменчивости в обучающие данные, что помогает модели лучше обобщаться на невидимые данные. В следующей таблице описаны цель и эффект каждого аргумента аугментации:
Аргумент | Тип | По умолчанию | Диапазон | Описание |
---|---|---|---|---|
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 среди вариантов ("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 | Обрезает классификационное изображение до меньшего размера, чтобы подчеркнуть центральные особенности и адаптироваться к масштабам объектов, уменьшая фоновые отвлекающие факторы. |
Эти параметры могут быть изменены в соответствии с конкретными требованиями набора данных и поставленной задачи. Экспериментирование с различными значениями поможет найти оптимальную стратегию дополнения, которая приведет к наилучшей производительности модели.
Информация
Подробнее о тренировочных операциях с аугментацией читай в справочном разделе.
Запись в журнале
При обучении модели YOLO11 тебе может показаться полезным отслеживать ее работу с течением времени. Вот тут-то и вступает в игру логирование. Ultralytics' YOLO обеспечивает поддержку трех типов логгеров - Comet, ClearML и TensorBoard.
Чтобы использовать логгер, выбери его из выпадающего меню в фрагменте кода выше и запусти его. Выбранный логгер будет установлен и инициализирован.
Comet
Comet Это платформа, которая позволяет ученым, изучающим данные, и разработчикам отслеживать, сравнивать, объяснять и оптимизировать эксперименты и модели. Она предоставляет такие функциональные возможности, как метрики в реальном времени, различия в коде и отслеживание гиперпараметров.
Чтобы использовать Comet:
Не забудь войти в свой аккаунт Comet на их сайте и получить свой API-ключ. Тебе нужно будет добавить его в переменные окружения или в свой скрипт для регистрации экспериментов.
ClearML
ClearML Это платформа с открытым исходным кодом, которая автоматизирует отслеживание экспериментов и помогает эффективно распределять ресурсы. Она призвана помочь командам более эффективно управлять, выполнять и воспроизводить свою работу в области ML.
Чтобы использовать ClearML:
После запуска этого скрипта тебе нужно будет войти в свой аккаунт ClearML в браузере и аутентифицировать свою сессию.
TensorBoard
TensorBoard - это набор инструментов визуализации для TensorFlow. Он позволяет визуализировать твой график TensorFlow , строить количественные метрики о выполнении твоего графика и показывать дополнительные данные вроде изображений, которые проходят через него.
Чтобы использовать TensorBoard в Google Colab:
Чтобы использовать TensorBoard локально, выполни приведенную ниже команду и просмотри результаты на сайте http://localhost:6006/.
Это загрузит TensorBoard и направит его в директорию, где сохранены твои журналы тренировок.
После настройки логгера ты можешь приступать к тренировке модели. Все показатели тренировки будут автоматически регистрироваться в выбранной тобой платформе, и ты сможешь обращаться к этим логам, чтобы отслеживать эффективность своей модели с течением времени, сравнивать разные модели и выявлять области для улучшения.
ВОПРОСЫ И ОТВЕТЫ
Как обучить модель обнаружения объектов с помощью Ultralytics YOLO11?
Чтобы обучить модель обнаружения объектов с помощью Ultralytics YOLO11, ты можешь использовать либо Python API, либо CLI. Ниже приведен пример для обоих вариантов:
ОдиночныйGPU и CPU пример тренировки
Более подробную информацию ты найдешь в разделе " Настройки поезда ".
Каковы ключевые особенности режима "Поезд" Ultralytics YOLO11?
Основные особенности режима "Поезд" Ultralytics YOLO11 включают в себя:
- Автоматическая загрузка наборов данных: Автоматически загружай стандартные наборы данных, такие как COCO, VOC и ImageNet.
- Поддержка несколькихGPU : Масштабируй обучение на нескольких GPU для более быстрой обработки.
- Конфигурация гиперпараметров: Настраивай гиперпараметры через YAML-файлы или аргументы CLI .
- Визуализация и мониторинг: Отслеживай показатели тренировок в реальном времени, чтобы лучше понять суть происходящего.
Эти функции делают тренировку эффективной и настраиваемой под твои нужды. Подробнее об этом читай в разделе " Ключевые особенности режима тренировки ".
Как возобновить тренировку после прерванного занятия в Ultralytics YOLO11?
Чтобы возобновить тренировку после прерванного занятия, установи resume
аргумент в пользу True
и укажи путь к последней сохраненной контрольной точке.
Пример подготовки резюме
За дополнительной информацией обращайся к разделу " Возобновление прерванных тренировок ".
Можно ли тренировать модели YOLO11 на кремниевых чипах Apple?
Да, Ultralytics YOLO11 поддерживает обучение на кремниевых чипах Apple, использующих фреймворк Metal Performance Shaders (MPS). Укажи 'mps' в качестве устройства для обучения.
MPS Пример тренировки
Более подробную информацию ты найдешь в разделе " Обучение Apple Silicon MPS ".
Каковы общие параметры тренировок и как их настроить?
Ultralytics YOLO11 позволяет тебе настроить множество параметров обучения, таких как размер партии, скорость обучения, эпохи и многое другое с помощью аргументов. Вот краткий обзор:
Аргумент | По умолчанию | Описание |
---|---|---|
model | None | Путь к файлу с моделью для обучения. |
data | None | Путь к файлу конфигурации набора данных (например, coco8.yaml ). |
epochs | 100 | Общее количество тренировочных эпох. |
batch | 16 | Размер партии, настраиваемый как в целочисленном, так и в автоматическом режиме. |
imgsz | 640 | Целевой размер изображения для тренировки. |
device | None | Вычислительное устройство (устройства) для тренировок типа cpu , 0 , 0,1 , или mps . |
save | True | Включает сохранение контрольных точек тренировки и финальных весов модели. |
Подробное руководство по настройкам тренировок ты найдешь в разделе " Настройки тренировок ".