Обучение моделей с помощью Ultralytics YOLO
Введение
Обучение модели глубинного обучения включает в себя подачу данных и настройку параметров, чтобы она могла делать точные прогнозы. Режим обучения (Train mode) в Ultralytics YOLO26 создан для эффективного и результативного обучения моделей обнаружения объектов с полным использованием возможностей современного оборудования. Это руководство охватывает все детали, необходимые для того, чтобы начать обучать собственные модели с помощью надежного набора функций YOLO26.
Watch: How to Train a YOLO model on Your Custom Dataset in Google Colab.
Почему стоит выбрать Ultralytics YOLO для обучения?
Вот несколько веских причин выбрать режим обучения (Train mode) в YOLO26:
- Эффективность: Получи максимум от своего оборудования, работаешь ли ты на системе с одним GPU или масштабируешься на несколько GPU.
- Универсальность: Обучай на собственных наборах данных в дополнение к доступным, таким как COCO, VOC и ImageNet.
- Удобство использования: Простые, но мощные интерфейсы CLI и Python для понятного процесса обучения.
- Гибкость гиперпараметров: Широкий спектр настраиваемых гиперпараметров для тонкой настройки производительности модели. Для более глубокого контроля ты можешь настроить сам трейнер.
- Облачное обучение: Обучай на облачных GPU через Ultralytics Platform с метриками в реальном времени и автоматическими контрольными точками.
Ключевые особенности режима обучения
Ниже приведены некоторые примечательные особенности режима обучения (Train mode) в YOLO26:
- Автоматическая загрузка наборов данных: Стандартные наборы данных, такие как COCO, VOC и ImageNet, загружаются автоматически при первом использовании.
- Поддержка нескольких GPU: Беспрепятственно масштабируй свои усилия по обучению на несколько GPU для ускорения процесса.
- Конфигурация гиперпараметров: Возможность изменять гиперпараметры через YAML-файлы конфигурации или аргументы CLI.
- Визуализация и мониторинг: Отслеживание метрик обучения в реальном времени и визуализация процесса обучения для более глубокого анализа.
- Наборы данных YOLO26, такие как COCO, VOC, ImageNet и многие другие, автоматически загружаются при первом использовании, т.е.
yolo train data=coco.yaml
Примеры использования
Обучи YOLO26n на наборе данных COCO8 в течение 100 эпох при размере изображения 640. Устройство для обучения можно указать с помощью аргумента device. Если аргумент не передан, будет использован GPU device=0, если он доступен; в противном случае будет использован device='cpu'. См. раздел Аргументы ниже для получения полного списка аргументов обучения.
В Windows ты можешь получить RuntimeError при запуске обучения в виде скрипта. Добавь блок if __name__ == "__main__": перед своим кодом обучения, чтобы решить эту проблему.
Устройство определяется автоматически. Если доступен GPU, он будет использован (по умолчанию CUDA устройство 0); в противном случае обучение начнется на 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)Обучение на нескольких GPU
Обучение на нескольких GPU позволяет более эффективно использовать доступные аппаратные ресурсы, распределяя нагрузку обучения между несколькими GPU. Эта функция доступна как через Python API, так и через интерфейс командной строки. Чтобы включить обучение на нескольких GPU, укажи идентификаторы GPU, которые хочешь использовать.
Для обучения с 2 GPU, CUDA устройства 0 и 1, используй следующие команды. При необходимости расширь до большего количества GPU.
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])Когда ты указываешь несколько устройств (например, device=[0, 1]), Ultralytics внутренне запускает новый экземпляр трейнера и выполняет torch.distributed.run в фоновом режиме. Это беспрепятственно работает для стандартного использования CLI и неизмененных Python-скриптов.
Однако, если твой скрипт содержит пользовательские компоненты, такие как собственный трейнер, валидатор, набор данных или конвейер аугментации, эти объекты не могут быть автоматически сериализованы и переданы в подпроцессы DDP. В этом случае ты должен запустить свой скрипт напрямую с помощью torch.distributed.run:
python -m torch.distributed.run --nproc_per_node 2 your_training_script.pyОбучение на простаивающих GPU
Обучение на простаивающих GPU позволяет автоматически выбирать наименее используемые GPU в системах с несколькими GPU, оптимизируя использование ресурсов без ручного выбора GPU. Эта функция определяет доступные GPU на основе метрик использования и доступности VRAM.
Чтобы автоматически выбирать и использовать самый простаивающий GPU(ы) для обучения, используй параметр устройства -1. Это особенно полезно в общих вычислительных средах или на серверах с несколькими пользователями.
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])Алгоритм автоматического выбора отдает приоритет GPU с:
- Более низким текущим процентом использования
- Более высоким объемом доступной памяти (свободная VRAM)
- Более низкой температурой и энергопотреблением
Эта функция особенно ценна в общих вычислительных средах или при выполнении нескольких задач обучения для разных моделей. Она автоматически адаптируется к изменяющимся условиям системы, обеспечивая оптимальное распределение ресурсов без ручного вмешательства.
Обучение на Apple Silicon MPS
Благодаря поддержке чипов Apple silicon, интегрированной в модели Ultralytics YOLO, теперь можно обучать свои модели на устройствах, использующих мощный фреймворк Metal Performance Shaders (MPS). MPS предлагает высокопроизводительный способ выполнения вычислений и задач обработки изображений на собственных чипах Apple.
Чтобы включить обучение на чипах Apple silicon, тебе следует указать 'mps' в качестве устройства при инициализации процесса обучения. Ниже приведен пример того, как ты можешь это сделать в Python и через командную строку:
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")Использование вычислительной мощности чипов Apple silicon обеспечивает более эффективную обработку задач обучения. Для получения более подробных инструкций и расширенных параметров конфигурации, пожалуйста, обратись к документации PyTorch MPS.
Возобновление прерванного обучения
Возобновление обучения из ранее сохраненного состояния — важная функция при работе с моделями глубинного обучения. Это может пригодиться в различных сценариях, например, когда процесс обучения был неожиданно прерван, или когда ты хочешь продолжить обучение модели с новыми данными или на большее количество эпох.
При возобновлении обучения Ultralytics YOLO загружает веса из последней сохраненной модели, а также восстанавливает состояние оптимизатора, планировщик скорости обучения и номер эпохи. Это позволяет тебе беспрепятственно продолжить процесс обучения с того места, где он был остановлен.
Ты можешь легко возобновить обучение в 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=True, функция train продолжит обучение с того места, где оно остановилось, используя состояние, сохраненное в файле 'path/to/last.pt'. Если аргумент resume пропущен или установлен в False, функция train начнет новый сеанс обучения.
Помни, что контрольные точки сохраняются в конце каждой эпохи по умолчанию или через фиксированные интервалы с помощью аргумента save_period, поэтому ты должен завершить как минимум 1 эпоху, чтобы возобновить обучение.
Настройки обучения
Настройки обучения для моделей YOLO включают различные гиперпараметры и конфигурации, используемые в процессе обучения. Эти настройки влияют на производительность, скорость и точность модели. Ключевые настройки обучения включают размер пакета (batch size), скорость обучения (learning rate), импульс (momentum) и затухание веса (weight decay). Кроме того, выбор оптимизатора, функции потерь и состав набора данных для обучения могут повлиять на процесс обучения. Тщательная настройка и эксперименты с этими параметрами имеют решающее значение для оптимизации производительности.
Оптимизатор MuSGD
В YOLO26 MuSGD — это гибридный оптимизатор, который сочетает стандартные обновления SGD с ортогонализированными обновлениями в стиле Muon.
Он рекомендуется для более длительных прогонов обучения YOLO26 и больших наборов данных, где ортогонализированные обновления Muon могут помочь стабилизировать оптимизацию.
Только параметры с param.ndim >= 2 (например, сверточные веса) получают обновление в стиле Muon вместе с SGD, в то время как параметры с меньшей размерностью, такие как слои пакетной нормализации и члены смещения, остаются на стандартном SGD.
Когда используется optimizer=auto, Ultralytics автоматически выбирает MuSGD для более длительных прогонов обучения (обычно когда итераций > 10000). Для более коротких прогонов трейнер возвращается к AdamW.
Пример использования:
yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGDСм. реализацию в ultralytics/optim/muon.py и логику автоматического выбора оптимизатора в BaseTrainer.build_optimizer.
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
model | str | None | Указывает файл модели для обучения. Принимает путь либо к предобученной модели .pt, либо к файлу конфигурации .yaml. Необходимо для определения структуры модели или инициализации весов. |
data | str | None | Путь к файлу конфигурации набора данных (например, coco8.yaml). Этот файл содержит специфические для набора данных параметры, включая пути к обучающим и validation data, названия классов и количество классов. |
epochs | int | 100 | Общее количество эпох обучения. Каждая epoch представляет собой полный проход по всему набору данных. Настройка этого значения может повлиять на продолжительность обучения и производительность модели. |
time | float | None | Максимальное время обучения в часах. Если задано, этот параметр переопределяет аргумент epochs, позволяя обучению автоматически остановиться по истечении указанного времени. Полезно для сценариев обучения с ограничением по времени. |
patience | int | 100 | Количество эпох, которое нужно подождать без улучшения метрик валидации перед тем, как досрочно остановить обучение. Помогает предотвратить overfitting, останавливая обучение, когда производительность перестает расти. |
batch | int или float | 16 | Batch size с тремя режимами: целое число (например, batch=16), автоматический режим для использования 60% памяти GPU (batch=-1) или автоматический режим с указанной долей использования (batch=0.70). |
imgsz | int | 640 | Целевой размер изображения для обучения. Изображения изменяются до квадратных сторон, равных указанному значению (если rect=False), сохраняя соотношение сторон для моделей YOLO, но не для RT-DETR. Влияет на точность модели и вычислительную сложность. |
save | bool | True | Включает сохранение чекпоинтов обучения и финальных весов модели. Полезно для возобновления обучения или model deployment. |
save_period | int | -1 | Частота сохранения чекпоинтов модели в эпохах. Значение -1 отключает эту функцию. Полезно для сохранения промежуточных моделей во время длительных сеансов обучения. |
cache | bool | False | Включает кэширование изображений набора данных в памяти (True/ram), на диске (disk) или отключает его (False). Улучшает скорость обучения за счет уменьшения операций ввода-вывода на диске ценой повышенного использования памяти. |
device | int или str или list | None | Указывает вычислительное устройство (или устройства) для обучения: один GPU (device=0), несколько GPU (device=[0,1]), CPU (device=cpu), MPS для Apple silicon (device=mps), Huawei Ascend NPU (device=npu или device=npu:0), или автовыбор наиболее свободного GPU (device=-1) или нескольких свободных GPU (device=[-1,-1]). |
workers | int | 8 | Количество потоков-воркеров для загрузки данных (на RANK в случае обучения на нескольких GPU). Влияет на скорость предварительной обработки данных и подачи их в модель, особенно полезно в конфигурациях с несколькими GPU. |
project | str | None | Название директории проекта, куда сохраняются результаты обучения. Позволяет организованно хранить разные эксперименты. |
name | str | None | Название запуска обучения. Используется для создания поддиректории внутри папки проекта, где хранятся логи и результаты обучения. |
exist_ok | bool | False | Если True, позволяет перезаписывать существующую директорию проекта/имени. Полезно для итеративных экспериментов без необходимости вручную очищать предыдущие результаты. |
pretrained | bool или str | True | Определяет, начинать ли обучение с предобученных весов. Может быть логическим значением или строковым путем к весам для загрузки. pretrained=False запускает обучение со случайной инициализацией весов при сохранении архитектуры модели. |
optimizer | str | 'auto' | Выбор оптимизатора для обучения. Опции включают SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp или auto для автоматического выбора на основе конфигурации модели. Влияет на скорость сходимости и стабильность. |
seed | int | 0 | Устанавливает случайное зерно (seed) для обучения, обеспечивая воспроизводимость результатов при повторных запусках с теми же конфигурациями. |
deterministic | bool | True | Принудительно использует детерминированный алгоритм, обеспечивая воспроизводимость, но может повлиять на производительность и скорость из-за ограничения на использование недетерминированных алгоритмов. |
verbose | bool | True | Включает подробный вывод во время обучения, отображая прогресс-бары, метрики за эпоху и дополнительную информацию об обучении в консоли. |
single_cls | bool | False | Рассматривает все классы в многоклассовых наборах данных как один класс во время обучения. Полезно для задач бинарной классификации или когда основное внимание уделяется наличию объекта, а не его классификации. |
classes | list[int] | None | Указывает список ID классов для обучения. Полезно для фильтрации и концентрации внимания только на определенных классах во время обучения. |
rect | bool | False | Включает стратегию минимального дополнения (padding)—изображения в батче минимально дополняются до общего размера, при этом самая длинная сторона равна imgsz. Может повысить эффективность и скорость, но может повлиять на точность модели. |
multi_scale | float | 0.0 | Случайное изменение imgsz в каждом батче на +/- multi_scale (например, 0.25 -> от 0.75x до 1.25x) с округлением до кратных значений шага модели; 0.0 отключает многомасштабное обучение. |
cos_lr | bool | False | Использует косинусный планировщик learning rate, корректируя скорость обучения по косинусной кривой на протяжении эпох. Помогает управлять скоростью обучения для лучшей сходимости. |
close_mosaic | int | 10 | Отключает мозаичную data augmentation в последних N эпохах для стабилизации обучения перед завершением. Установка значения 0 отключает эту функцию. |
resume | bool | False | Возобновляет обучение с последнего сохраненного чекпоинта. Автоматически загружает веса модели, состояние оптимизатора и счетчик эпох, продолжая обучение без сбоев. |
amp | bool | True | Включает обучение с автоматической Mixed Precision (AMP), уменьшая использование памяти и, возможно, ускоряя обучение с минимальным влиянием на точность. |
fraction | float | 1.0 | Указывает долю набора данных для обучения. Позволяет обучать модель на подмножестве полного набора данных, что полезно для экспериментов или при ограниченных ресурсах. |
profile | bool | False | Включает профилирование скорости ONNX и TensorRT во время обучения, что полезно для оптимизации развертывания модели. |
freeze | int или list | None | Замораживает первые N слоев модели или указанные слои по индексу, уменьшая количество обучаемых параметров. Полезно для дообучения или transfer learning. |
lr0 | float | 0.01 | Начальная скорость обучения (т.е. SGD=1E-2, Adam=1E-3). Корректировка этого значения критически важна для процесса оптимизации, так как она влияет на скорость обновления весов модели. |
lrf | float | 0.01 | Конечная скорость обучения как доля от начальной = (lr0 * lrf), используется совместно с планировщиками для коррекции скорости обучения с течением времени. |
momentum | float | 0.937 | Коэффициент импульса (momentum) для SGD или beta1 для Adam optimizers, влияющий на учет прошлых градиентов при текущем обновлении. |
weight_decay | float | 0.0005 | L2 regularization член, штрафующий большие веса для предотвращения переобучения. |
warmup_epochs | float | 3.0 | Количество эпох для «разогрева» скорости обучения, постепенно увеличивающее её от малого значения до начальной скорости для стабилизации обучения на раннем этапе. |
warmup_momentum | float | 0.8 | Начальный импульс для фазы разогрева, постепенно подстраивающийся до установленного значения в течение периода разогрева. |
warmup_bias_lr | float | 0.1 | Скорость обучения для параметров смещения (bias) во время фазы разогрева, помогающая стабилизировать обучение модели в начальные эпохи. |
box | float | 7.5 | Вес компонента потерь bbox в loss function, влияющий на то, насколько сильно учитывается точность предсказания координат bounding box. |
cls | float | 0.5 | Вес функции потерь классификации в общей функции потерь, влияющий на важность правильного предсказания класса относительно других компонентов. |
cls_pw | float | 0.0 | Степень для взвешивания классов, чтобы справиться с дисбалансом классов с помощью обратной частоты классов. 0.0 отключает взвешивание классов, 1.0 применяет полное обратное частотное взвешивание. Значения от 0 до 1 обеспечивают частичное взвешивание. |
dfl | float | 1.5 | Вес Distribution Focal Loss, используемый в некоторых версиях YOLO для более тонкой классификации. |
pose | float | 12.0 | Вес функции потерь позы в моделях, обученных для оценки позы, влияющий на акцент при точном предсказании ключевых точек позы. |
kobj | float | 1.0 | Вес функции потерь объектности ключевых точек в моделях оценки позы, балансирующий уверенность обнаружения и точность позы. |
rle | float | 1.0 | Вес функции потерь оценки остаточного логарифмического правдоподобия в моделях оценки позы, влияющий на точность локализации ключевых точек. |
angle | float | 1.0 | Вес функции потерь угла в моделях obb, влияющий на точность предсказания угла ориентированного ограничивающего прямоугольника. |
nbs | int | 64 | Номинальный размер батча для нормализации потерь. |
overlap_mask | bool | True | Определяет, должны ли маски объектов объединяться в одну маску для обучения или оставаться отдельными для каждого объекта. В случае перекрытия при объединении меньшая маска накладывается поверх большей. |
mask_ratio | int | 4 | Коэффициент даунсэмплинга (уменьшения разрешения) для сегментационных масок, влияющий на разрешение масок, используемых во время обучения. |
dropout | float | 0.0 | Коэффициент dropout для регуляризации в задачах классификации, предотвращающий переобучение путем случайного исключения нейронов во время обучения. |
val | bool | True | Включает валидацию во время обучения, позволяя периодически оценивать производительность модели на отдельном наборе данных. |
plots | bool | True | Создает и сохраняет графики метрик обучения и валидации, а также примеры предсказаний, предоставляя визуальное представление о производительности модели и прогрессе обучения. |
compile | bool или str | False | Включает компиляцию графа PyTorch 2.x torch.compile с использованием backend='inductor'. Принимает True → "default", False → отключает, или строковый режим, например "default", "reduce-overhead", "max-autotune-no-cudagraphs". При поддержке возвращается к eager-режиму с предупреждением. |
max_det | int | 300 | Указывает максимальное количество объектов, сохраняемых во время фазы валидации обучения. |
Аргумент batch может быть настроен тремя способами:
- Фиксированный размер пакета: Установи целое значение (например,
batch=16), напрямую указывающее количество изображений в пакете. - Автоматический режим (60% памяти GPU): Используй
batch=-1для автоматической настройки размера пакета для достижения примерно 60% использования памяти CUDA. - Автоматический режим с долей использования: Установи дробное значение (например,
batch=0.70) для настройки размера пакета на основе указанной доли использования памяти GPU. - Автоматический повтор при OOM: Если во время первой эпохи происходит ошибка CUDA out-of-memory, трейнер автоматически уменьшает размер пакета вдвое и повторяет попытку (до 3 раз). Это применимо только к обучению на одном GPU; обучение на нескольких GPU (DDP) вызовет ошибку немедленно.
Настройки аугментации и гиперпараметры
Методы аугментации необходимы для улучшения надежности и производительности моделей YOLO путем внесения вариативности в обучающие данные, помогая модели лучше обобщать новые данные. В следующей таблице указаны цель и эффект каждого аргумента аугментации:
| Аргумент | Тип | По умолчанию | Поддерживаемые задачи | Диапазон | Описание |
|---|---|---|---|---|---|
hsv_h | float | 0.015 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Регулирует оттенок изображения на долю цветового круга, внося вариативность цвета. Помогает модели обобщать данные при различных условиях освещения. |
hsv_s | float | 0.7 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Изменяет насыщенность изображения на дробную величину, влияя на интенсивность цветов. Полезно для симуляции различных условий окружающей среды. |
hsv_v | float | 0.4 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Изменяет значение (яркость) изображения на дробную величину, помогая модели хорошо работать при различных условиях освещения. |
degrees | float | 0 | detect, segment, pose, obb | 0.0 - 180 | Случайно поворачивает изображение в указанном диапазоне градусов, улучшая способность модели распознавать объекты при различных ориентациях. |
translate | float | 0.1 | detect, segment, pose, obb | 0.0 - 1.0 | Перемещает изображение по горизонтали и вертикали на долю размера изображения, помогая учиться обнаруживать частично видимые объекты. |
scale | float | 0.5 | detect, segment, pose, obb, classify | 0 - 1 | Масштабирует изображение с коэффициентом усиления, имитируя объекты на разных расстояниях от камеры. |
shear | float | 0 | detect, segment, pose, obb | -180 - +180 | Наклоняет изображение на указанный угол, имитируя эффект просмотра объектов под разными углами. |
perspective | float | 0 | detect, segment, pose, obb | 0.0 - 0.001 | Применяет случайную перспективную трансформацию к изображению, улучшая способность модели понимать объекты в 3D-пространстве. |
flipud | float | 0 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Переворачивает изображение вверх ногами с указанной вероятностью, увеличивая вариативность данных, не влияя на характеристики объекта. |
fliplr | float | 0.5 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Переворачивает изображение слева направо с указанной вероятностью, полезно для изучения симметричных объектов и увеличения разнообразия набора данных. |
bgr | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | Переключает каналы изображения с RGB на BGR с указанной вероятностью, полезно для повышения устойчивости к неправильному порядку каналов. |
mosaic | float | 1 | detect, segment, pose, obb | 0.0 - 1.0 | Объединяет четыре тренировочных изображения в одно, симулируя различные композиции сцен и взаимодействия объектов. Высокоэффективно для понимания сложных сцен. |
mixup | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | Смешивает два изображения и их метки, создавая составное изображение. Улучшает способность модели к обобщению за счет внесения шума меток и визуальной вариативности. |
cutmix | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | Комбинирует части двух изображений, создавая частичное смешение при сохранении четких областей. Повышает устойчивость модели путем создания сценариев окклюзии. |
copy_paste | float | 0 | segment | 0.0 - 1.0 | Копирует и вставляет объекты между изображениями для увеличения количества экземпляров объектов. |
copy_paste_mode | str | flip | segment | - | Определяет используемую стратегию copy-paste. Варианты включают 'flip' и 'mixup'. |
auto_augment | str | randaugment | classify | - | Применяет предопределенную политику аугментации ('randaugment', 'autoaugment' или 'augmix') для повышения производительности модели за счет визуального разнообразия. |
erasing | float | 0.4 | classify | 0.0 - 1.0 | Случайным образом стирает области изображения во время обучения, чтобы побудить модель фокусироваться на менее очевидных признаках. |
augmentations | list | `` | detect, segment, pose, obb | - | Пользовательские трансформации Albumentations для продвинутой аугментации данных (только через Python API). Принимает список объектов трансформации для специализированных задач аугментации. |
Эти настройки можно регулировать в соответствии с конкретными требованиями набора данных и выполняемой задачи. Эксперименты с различными значениями помогут найти оптимальную стратегию аугментации, которая обеспечит наилучшую производительность модели.
Для получения дополнительной информации об операциях аугментации при обучении см. справочный раздел.
Логирование
При обучении модели YOLO26 тебе может быть полезно отслеживать производительность модели во времени. Именно здесь на помощь приходит логирование. Ultralytics YOLO поддерживает три типа логгеров - Comet, ClearML и TensorBoard.
Чтобы использовать логгер, выбери его из выпадающего меню в приведенном выше фрагменте кода и запусти его. Выбранный логгер будет установлен и инициализирован.
Comet
Comet — это платформа, которая позволяет специалистам по данным и разработчикам отслеживать, сравнивать, объяснять и оптимизировать эксперименты и модели. Она предоставляет такие функции, как метрики в реальном времени, сравнение кода (diffs) и отслеживание гиперпараметров.
Чтобы использовать 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 — это набор инструментов визуализации для TensorFlow. Он позволяет визуализировать твой граф TensorFlow, строить количественные метрики выполнения графа и отображать дополнительные данные, такие как изображения, которые через него проходят.
Чтобы использовать TensorBoard в Google Colab:
load_ext tensorboard
tensorboard --logdir ultralytics/runs # replace with 'runs' directoryЧтобы использовать TensorBoard локально, выполни приведенную ниже команду и просмотри результаты на localhost:6006.
tensorboard --logdir ultralytics/runs # replace with 'runs' directoryЭто загрузит TensorBoard и направит его в директорию, где сохранены твои логи обучения.
После настройки логгера ты можешь приступать к обучению модели. Все метрики обучения будут автоматически логироваться на выбранной тобой платформе, и ты сможешь получить доступ к этим логам, чтобы отслеживать производительность своей модели во времени, сравнивать разные модели и определять области для улучшения.
Часто задаваемые вопросы (FAQ)
Могу ли я тренироваться без локального GPU?
Да. Платформа Ultralytics поддерживает облачное обучение с бесплатными кредитами для начала работы. Загрузи свой набор данных, выбери модель и GPU и тренируйся прямо из браузера. Подробности см. в руководстве по облачному обучению.
Как обучить модель обнаружения объектов с помощью Ultralytics YOLO26?
Чтобы обучить модель обнаружения объектов с помощью Ultralytics YOLO26, ты можешь использовать либо Python API, либо CLI. Ниже приведен пример для обоих вариантов:
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)Для получения более подробной информации обратись к разделу Настройки обучения.
Каковы основные особенности режима обучения Ultralytics YOLO26?
К основным особенностям режима обучения Ultralytics YOLO26 относятся:
- Автоматическая загрузка наборов данных: Автоматически скачивает стандартные наборы данных, такие как COCO, VOC и ImageNet.
- Поддержка нескольких GPU: Масштабируй обучение на несколько GPU для ускорения процесса.
- Конфигурация гиперпараметров: Настраивай гиперпараметры через YAML-файлы или аргументы CLI.
- Визуализация и мониторинг: Отслеживание метрик обучения в реальном времени для получения более глубоких данных.
Эти функции делают обучение эффективным и адаптируемым к твоим потребностям. Более подробную информацию см. в разделе Ключевые особенности режима обучения.
Как возобновить обучение после прерванного сеанса в Ultralytics YOLO26?
Чтобы возобновить обучение после прерванного сеанса, установи аргумент resume в значение True и укажи путь к последнему сохраненному чекпоинту.
from ultralytics import YOLO
# Load the partially trained model
model = YOLO("path/to/last.pt")
# Resume training
results = model.train(resume=True)Для получения дополнительной информации ознакомься с разделом Возобновление прерванного обучения.
Как обучить модель на несбалансированном наборе данных?
Дисбаланс классов возникает, когда в твоих тренировочных данных для некоторых классов значительно меньше примеров, чем для других. Это может привести к тому, что модель будет плохо работать на редких классах. Ultralytics YOLO поддерживает взвешивание классов через аргумент cls_pw для решения этой проблемы.
Аргумент cls_pw управляет силой взвешивания классов на основе обратной частоты классов:
cls_pw=0.0(по умолчанию): отключает взвешивание классовcls_pw=1.0: применяет полное взвешивание по обратной частоте- Значения от
0.0до1.0: обеспечивают частичное взвешивание для умеренного дисбаланса
Веса классов вычисляются как (1.0 / class_counts) ^ cls_pw и нормализуются так, чтобы их среднее значение было равно 1.0.
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)Начни с cls_pw=0.25 для умеренно несбалансированных наборов данных и увеличь до 1.0, если редкие классы по-прежнему показывают низкие результаты. Ты можешь проверить вычисленные веса классов в логах обучения, чтобы убедиться в правильности распределения весов.
Могу ли я тренировать модели YOLO26 на чипах Apple silicon?
Да, Ultralytics YOLO26 поддерживает обучение на чипах Apple silicon с использованием фреймворка Metal Performance Shaders (MPS). Укажи '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")Для получения более подробной информации обратись к разделу Обучение на Apple Silicon через MPS.
Какие существуют общие настройки обучения и как их сконфигурировать?
Ultralytics YOLO26 позволяет конфигурировать множество параметров обучения, таких как размер батча (batch size), скорость обучения (learning rate), эпохи и многое другое с помощью аргументов. Вот краткий обзор:
| Аргумент | По умолчанию | Описание |
|---|---|---|
model | None | Путь к файлу модели для обучения. |
data | None | Путь к файлу конфигурации набора данных (например, coco8.yaml). |
epochs | 100 | Общее количество эпох обучения. |
batch | 16 | Размер батча, настраивается как целое число или в автоматическом режиме. |
imgsz | 640 | Целевой размер изображения для обучения. |
device | None | Вычислительное устройство (устройства) для обучения, например cpu, 0, 0,1 или mps. |
save | True | Включает сохранение чекпоинтов обучения и финальных весов модели. |
Для получения подробного руководства по настройкам обучения изучи раздел Настройки обучения.