Обучение моделей с помощью Ultralytics YOLO#
Введение#
Обучение модели deep learning заключается в подаче в нее данных и настройке ее параметров для получения точных предсказаний. Режим тренировки в Ultralytics YOLO26 разработан для эффективного и результативного обучения моделей обнаружения объектов с полным задействованием возможностей современного оборудования. Это руководство призвано охватить все детали, необходимые для начала обучения собственных моделей с использованием надежного набора функций YOLO26. Если ты еще не установил Ultralytics, начни с руководства по быстрому старту.
Watch: How to Train a YOLO model on Your Custom Dataset in Google Colab.
Почему стоит выбрать Ultralytics YOLO для обучения?#
Вот несколько веских причин выбрать режим Train в YOLO26:
- Эффективность: Получи максимум от своего оборудования, будь то система с одним GPU или масштабируемое решение на базе нескольких GPU.
- Универсальность: Обучай на собственных наборах данных в дополнение к уже доступным, таким как COCO, VOC и ImageNet.
- Удобство для пользователя: Простые, но мощные интерфейсы CLI и Python для легкого процесса обучения.
- Гибкость гиперпараметров: Широкий спектр настраиваемых гиперпараметров для точной настройки производительности модели. Для более глубокого контроля ты можешь настроить сам модуль обучения (trainer).
- Облачное обучение: Обучайся на облачных GPU с помощью платформы Ultralytics Platform с метриками в реальном времени и автоматическим сохранением чекпоинтов.
Основные функции режима Train#
Ниже представлены некоторые примечательные функции режима Train в YOLO26:
- Автоматическая загрузка датасетов: Конфигурации датасетов с источником загрузки скачиваются автоматически при первом использовании, например,
yolo train data=coco8.yaml. См. обзор датасетов для ознакомления с поддерживаемыми форматами и наборами данных. - Поддержка нескольких GPU: Беспрепятственно масштабируй свои усилия по обучению на несколько GPU, чтобы ускорить процесс.
- Конфигурация гиперпараметров: Возможность изменять гиперпараметры через YAML-файлы конфигурации или аргументы CLI.
- Визуализация и мониторинг: Отслеживание метрик обучения в реальном времени и визуализация процесса для получения более глубоких данных.
Примеры использования#
Обучи 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 позволяет более эффективно использовать доступные аппаратные ресурсы, распределяя нагрузку между ними. Эта функция доступна как через Python API, так и через командную строку. Чтобы включить обучение на нескольких GPU, укажи ID используемых устройств 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Обучение на AMD GPU использует сборку PyTorch ROCm со стандартным синтаксисом device=0 или device=cuda:0. См. руководство по интеграции с AMD для получения информации об установке и текущем статусе поддержки MIGraphX, DirectML и Ryzen AI NPU.
Обучение на Intel GPU использует device=xpu:0 или несколько идентификаторов XPU со сборкой PyTorch, предоставляющей XCCL.
Обучение на NPU Huawei Ascend#
Ultralytics поддерживает обучение и валидацию на Huawei Ascend NPU через torch_npu. Установи взаимосовместимые версии CANN, PyTorch и torch_npu, следуя руководству по установке расширения Ascend для PyTorch, а затем инициализируй окружение CANN перед запуском Ultralytics:
source /usr/local/Ascend/ascend-toolkit/set_env.shfrom ultralytics import YOLO
model = YOLO("yolo26n.pt")
# Train on one Ascend NPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0")
# Train across two Ascend NPUs with HCCL
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0,1")Стандартные функции обучения, включая AMP, валидацию, создание чекпоинтов и возобновление, используют активный NPU. AutoBatch доступен для обучения на одном NPU, в то время как несколько идентификаторов NPU запускают распределенное обучение через HCCL. См. руководство по интеграции с Huawei Ascend для экспорта модели и ее развертывания после обучения.
Обучение на простаивающем 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), моментум и затухание веса (weight decay). Кроме того, выбор оптимизатора, функции потерь и состава обучающего набора данных может повлиять на процесс обучения. Тщательная настройка и эксперименты с этими параметрами имеют решающее значение для оптимизации производительности.
Оптимизатор MuSGD#
В YOLO26 MuSGD — это гибридный оптимизатор, который объединяет стандартные обновления SGD с ортогонализированными обновлениями в стиле Muon.
Он рекомендуется для более длительных циклов обучения YOLO26 и больших наборов данных, где ортогонализированные обновления Muon помогают стабилизировать оптимизацию.
Только двумерные линейные веса и четырехмерные сверточные фильтры (приведенные к двумерному виду) получают обновление в стиле 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 | Путь к YAML-файлу датасета (например, coco8.yaml), который содержит пути к обучающим и данным валидации, имена классов и количество классов. Для классификации вместо этого указывается каталог датасета или встроенное имя датасета (например, imagenet10). |
epochs | int | 100 | Общее количество эпох обучения. Каждая эпоха представляет собой один полный проход по всему датасету. Изменение этого значения может повлиять на продолжительность обучения и производительность модели. |
time | float | None | Максимальное время обучения в часах. Если задано, этот аргумент переопределяет аргумент epochs, позволяя обучению автоматически остановиться по истечении указанного времени. Полезно для сценариев обучения с ограничениями по времени. |
patience | int | 100 | Количество эпох ожидания без улучшения метрик валидации перед ранней остановкой обучения. Помогает предотвратить переобучение, останавливая обучение при плато производительности. |
batch | int или float | 16 | Размер батча с тремя режимами: задается как целое число (например, batch=16), авторежим для использования 60% памяти GPU (batch=-1) или авторежим с указанной долей использования (batch=0.70). |
imgsz | int | 640 | Целевой размер изображения для обучения. Изображения изменяются до квадратов со сторонами, равными указанному значению (если rect=False), сохраняя соотношение сторон для моделей YOLO, но не для RT-DETR. Влияет на точность модели и вычислительную сложность. |
save | bool | True | Включает сохранение контрольных точек обучения и финальных весов модели. Полезно для возобновления обучения или развертывания модели. |
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:0 или device=npu:0,1), либо автоматический выбор простаивающего GPU (device=-1) или нескольких простаивающих GPU (device=[-1,-1]). |
workers | int | 8 | Количество потоков-воркеров для загрузки данных (на каждый RANK при обучении на нескольких GPU). Влияет на скорость предварительной обработки данных и подачи их в модель, что особенно полезно в конфигурациях с несколькими GPU. |
project | str | None | Имя директории проекта, куда сохраняются результаты обучения. Позволяет организованно хранить различные эксперименты. |
name | str | None | Имя запуска обучения. Используется для создания подпапки внутри папки проекта, где хранятся логи и результаты обучения. |
exist_ok | bool | False | Если True, разрешает перезапись существующей директории project/name. Полезно для итеративных экспериментов без необходимости вручную очищать предыдущие результаты. |
save_dir | str | None | Задает точную директорию для сохранения результатов запуска, переопределяя комбинацию project/name. Путь используется как есть без автоинкремента, поэтому последовательные запуски используют ту же директорию. |
pretrained | bool или str | True | Определяет, начинать ли обучение с предобученных весов. Может быть булевым значением или строковым путем к загружаемым весам. pretrained=False выполняет обучение со случайным образом инициализированными весами с сохранением архитектуры модели. |
cls_remap | bool | True | При дообучении на разных наборах данных копирует строки предобученной головы классификации в новую модель везде, где названия классов совпадают, поэтому пересекающиеся классы сохраняют свое изученное смещение, а также свои веса, если ширина головы не изменилась. Применяется независимо от того, отличаются ли количества классов или совпадают при другом порядке классов. |
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 | Использует планировщик скорости обучения на основе косинуса, регулируя скорость обучения по косинусному кривой в течение эпох. Помогает управлять скоростью обучения для лучшей сходимости. |
close_mosaic | int | 10 | Отключает мозаичную аугментацию данных в последние N эпох для стабилизации обучения перед завершением. Установка значения 0 отключает эту функцию. |
resume | bool | False | Возобновляет обучение с последней сохраненной контрольной точки. Автоматически загружает веса модели, состояние оптимизатора и счетчик эпох, продолжая обучение без сбоев. |
amp | bool | True | Включает обучение с автоматической смешанной точностью (AMP), снижая использование памяти и возможно ускоряя обучение с минимальным влиянием на точность. |
fraction | float | 1.0 | Указывает долю набора данных для использования при обучении. Позволяет обучать на подмножестве полного набора данных, что полезно для экспериментов или при ограниченных ресурсах. |
profile | bool | False | Включает профилирование скорости ONNX и TensorRT во время обучения, полезно для оптимизации развертывания модели. |
freeze | int или list | None | Замораживает первые N слоев модели или указанные слои по индексу, уменьшая количество обучаемых параметров. Полезно для дообучения или трансферного обучения. |
lr0 | float | 0.01 | Начальная скорость обучения (т.е. SGD=1E-2, Adam=1E-3). Регулировка этого значения имеет решающее значение для процесса оптимизации, влияя на то, как быстро обновляются веса модели. |
lrf | float | 0.01 | Финальная скорость обучения как доля от начальной скорости = (lr0 * lrf), используется в сочетании с планировщиками для изменения скорости обучения со временем. |
momentum | float | 0.937 | Коэффициент моментума для SGD или beta1 для оптимизаторов Adam, влияющий на учет прошлых градиентов при текущем обновлении. |
weight_decay | float | 0.0005 | Член L2-регуляризации, наказывающий за большие веса для предотвращения переобучения. |
warmup_epochs | float | 3.0 | Количество эпох для разогрева (warmup) скорости обучения, постепенно увеличивающее ее от малого значения до начального для ранней стабилизации обучения. |
warmup_momentum | float | 0.8 | Начальный импульс для фазы разогрева, постепенно корректирующийся до установленного значения в течение периода разогрева. |
warmup_bias_lr | float | 0.1 | Скорость обучения для параметров смещения (bias) во время фазы разогрева, помогающая стабилизировать обучение модели в начальные эпохи. |
distill_model | str | None | Путь к контрольной точке модели-учителя (например, yolo26x.pt) для дистилляции знаний. Если задано, модель-ученик обучается с дополнительной потерей дистилляции под руководством замороженного учителя. |
dis | float | 6.0 | Вес функции потерь дистилляции, добавляемой к стандартным потерям детекции. Более высокие значения увеличивают влияние направляющих признаков учителя. |
box | float | 7.5 | Вес компонента потерь рамок в функции потерь, влияющий на то, какое внимание уделяется точному прогнозированию координат ограничивающей рамки. |
cls | float | 0.5 | Вес потерь классификации в общей функции потерь, влияющий на важность правильного предсказания класса по отношению к другим компонентам. |
cls_pw | float | 0.0 | Степень взвешивания классов для борьбы с дисбалансом классов с использованием обратной частоты классов. 0.0 отключает взвешивание классов, 1.0 применяет полное взвешивание по обратной частоте. Значения от 0 до 1 обеспечивают частичное взвешивание. |
dfl | float | 1.5 | Вес функции потерь distribution focal loss (DFL) — компонента локализации bounding box, который регрессирует расстояния до границ рамки. |
pose | float | 12.0 | Вес потерь позы в моделях для оценки позы, влияющий на акцент при точном прогнозировании ключевых точек позы. |
kobj | float | 1.0 | Вес потерь объектности ключевых точек в моделях оценки позы, балансирующий уверенность обнаружения с точностью позы. |
rle | float | 1.0 | Вес потерь остаточной оценки логарифмического правдоподобия в моделях оценки позы, влияющий на точность локализации ключевых точек. |
angle | float | 1.0 | Вес потерь угла в моделях obb, влияющий на точность предсказаний угла ориентированного ограничивающего прямоугольника. |
dlog | float | 1.0 | Вес масштабно-инвариантной логарифмической (SILog) функции потерь в моделях оценки глубины, основной фактор, определяющий точность глубины. |
dgrad | float | 0.5 | Вес градиентных потерь в моделях оценки глубины, штрафующий за ошибки на границах глубин и стимулирующий более резкие границы поверхностей. |
dlam | float | 1.0 | Фактор фокусировки дисперсии потерь SILog в моделях оценки глубины. 1.0 делает потери полностью инвариантными к масштабу, в то время как 0.0 сводит их к обычному log-RMSE. |
nbs | int | 64 | Номинальный размер пакета для нормализации потерь. |
overlap_mask | bool | True | Определяет, должны ли маски объектов объединяться в одну общую маску для обучения или оставаться отдельными для каждого объекта. В случае перекрытия, меньшая маска накладывается поверх большей при объединении. |
mask_ratio | int | 4 | Коэффициент уменьшения разрешения (downsample) для масок сегментации, влияющий на разрешение масок, используемых при обучении. |
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) с предупреждением. |
channels_last | bool | False | Использует формат памяти channels_last (NHWC) для сверток во время обучения, ускоряя работу GPU с CUDA Tensor Core без изменения результатов. Автоматически игнорируется на CPU и MPS, где он не дает преимуществ. |
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, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Корректирует цветовой тон изображения на долю цветового круга, внося вариативность цветов. Помогает модели обобщать данные при различных условиях освещения. |
hsv_s | float | 0.7 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Изменяет насыщенность изображения на долю, влияя на интенсивность цветов. Полезно для симуляции различных условий окружающей среды. |
hsv_v | float | 0.4 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Модифицирует значение (яркость) изображения на долю, помогая модели хорошо работать при различных условиях освещения. |
degrees | float | 0 | detect, segment, semantic, depth, pose, obb | 0.0 - 180 | Случайно поворачивает изображение в заданном диапазоне градусов, улучшая способность модели распознавать объекты в различных ориентациях. |
translate | float | 0.1 | detect, segment, semantic, depth, pose, obb | 0.0 - 1.0 | Сдвигает изображение по горизонтали и вертикали на часть размера изображения, помогая учиться обнаруживать частично видимые объекты. |
scale | float | 0.5 | detect, segment, semantic, depth, classify, pose, obb | 0 - 1 | Масштабирует изображение с коэффициентом усиления, имитируя объекты на разном расстоянии от камеры. |
shear | float | 0 | detect, segment, semantic, depth, pose, obb | -180 - +180 | Наклоняет изображение на заданный градус, имитируя эффект просмотра объектов под разными углами. |
perspective | float | 0 | detect, segment, semantic, depth, pose, obb | 0.0 - 0.001 | Применяет случайное перспективное преобразование к изображению, улучшая способность модели понимать объекты в 3D-пространстве. |
flipud | float | 0 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Переворачивает изображение вверх ногами с заданной вероятностью, увеличивая вариативность данных, не затрагивая характеристики объекта. |
fliplr | float | 0.5 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Переворачивает изображение слева направо с заданной вероятностью, что полезно для изучения симметричных объектов и повышения разнообразия набора данных. |
bgr | float | 0 | detect, segment, semantic, depth, pose, obb | 0.0 - 1.0 | Меняет каналы изображения с RGB на BGR с заданной вероятностью, полезно для повышения устойчивости к неправильному порядку каналов. |
mosaic | float | 1 | detect, segment, semantic, pose, obb | 0.0 - 1.0 | Объединяет четыре изображения для обучения в одно, имитируя различные композиции сцен и взаимодействия объектов. Очень эффективно для понимания сложных сцен. |
mixup | float | 0 | detect, segment, semantic, 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 | None | detect, segment, semantic, 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 — это платформа с открытым исходным кодом, которая автоматизирует отслеживание экспериментов и помогает эффективно делиться ресурсами. Она создана для того, чтобы помочь командам более эффективно управлять своими задачами в области машинно обучения, выполнять их и воспроизводить.
Чтобы использовать 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 и направит его в директорию, где сохранены логи твоего обучения.
После настройки логгера ты можешь продолжить обучение своей модели. Все метрики обучения будут автоматически записываться на выбранную платформу, и ты сможешь получить доступ к этим логам, чтобы следить за производительностью модели с течением времени, сравнивать разные модели и определять области для улучшения.
Что дальше#
Проверь (выполни валидацию) свою обученную модель на отложенных данных, чтобы оценить ее точность в реальных условиях, а затем экспортируй ее в ONNX, TensorRT или другой формат развертывания. Обучаешься на собственных данных вместо COCO8? Сначала отформатируй их с помощью руководства по датасетам.
FAQ#
Можно ли обучаться без локального GPU?#
Да. Облачное обучение на платформе Ultralytics Platform включает бесплатные кредиты для начала работы. Загрузи свой датасет, выбери модель и 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 | Путь к YAML-файлу датасета (например, coco8.yaml) либо директория или имя датасета (например, imagenet10) для классификации. |
epochs | 100 | Общее количество эпох обучения. |
batch | 16 | Размер пакета (batch size), настраиваемый как целое число или в автоматическом режиме. |
imgsz | 640 | Целевой размер изображения для обучения. |
device | None | Вычислительное(-ые) устройство(-а) для обучения, такое как cpu, 0, 0,1 или mps. |
save | True | Включает сохранение контрольных точек обучения и весов финальной модели. |
Для получения подробного руководства по настройкам обучения ознакомьтесь с разделом Настройки обучения.