Обучение моделей с помощью Ultralytics YOLO
Введение
Обучение глубокой нейросети предполагает подачу данных и настройку ее параметров для получения точных предсказаний. Режим обучения (Train mode) в Ultralytics YOLO26 разработан для эффективного и продуктивного обучения моделей обнаружения объектов с полным использованием возможностей современного оборудования. Это руководство охватывает все детали, необходимые для начала обучения собственных моделей с помощью широкого набора функций YOLO26.
Watch: How to Train a YOLO model on Your Custom Dataset in Google Colab.
Почему стоит выбрать Ultralytics YOLO для обучения?
Вот несколько убедительных причин выбрать режим обучения 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 позволяет более эффективно использовать доступные аппаратные ресурсы, распределяя нагрузку между ними. Эта функция доступна как через 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Обучение на простаивающих 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), скорость обучения, импульс (momentum) и коэффициент затухания весов (weight decay). Кроме того, выбор оптимизатора, функции потерь и состава обучающего набора данных могут влиять на процесс обучения. Тщательная настройка и эксперименты с этими параметрами критически важны для оптимизации производительности.
Оптимизатор MuSGD
В YOLO26 MuSGD — это гибридный оптимизатор, объединяющий стандартные обновления SGD с ортогональными обновлениями в стиле Muon.
Он рекомендуется для длительных сессий обучения YOLO26 и больших наборов данных, где ортогональные обновления Muon помогают стабилизировать процесс оптимизации.
Только параметры с param.ndim >= 2 (например, веса сверточных слоев) получают обновления в стиле Muon вместе с SGD, в то время как низкоразмерные параметры, такие как слои пакетной нормализации и коэффициенты смещения (bias), остаются на стандартном 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). Этот файл содержит специфические параметры набора данных, включая пути к обучающим и валидационным данным, имена классов и их количество. |
epochs | int | 100 | Общее количество эпох обучения. Каждая эпоха представляет собой полный проход по всему набору данных. Регулировка этого значения может повлиять на длительность обучения и производительность модели. |
time | float | None | Максимальное время обучения в часах. Если установлено, переопределяет аргумент epochs, позволяя автоматически остановить обучение по истечении указанного времени. Полезно для сценариев обучения с ограниченным временем. |
patience | int | 100 | Количество эпох, в течение которых метрики валидации не улучшаются, перед тем как остановить обучение (early stopping). Помогает предотвратить переобучение, останавливая обучение при достижении плато. |
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 или 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 | Использует косинусный планировщик скорости обучения, корректируя скорость обучения по косинусной кривой в течение эпох. Помогает управлять скоростью обучения для лучшей сходимости. |
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_momentum | float | 0.8 | Начальный импульс для фазы прогрева, постепенно подстраивающийся к заданному значению в течение периода прогрева. |
warmup_bias_lr | float | 0.1 | Скорость обучения для параметров смещения во время фазы прогрева, помогающая стабилизировать обучение модели в начальные эпохи. |
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), используемой в некоторых версиях 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, тренер автоматически уменьшает размер батча вдвое и повторяет попытку (до 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 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 и укажи путь к последней сохраненной контрольной точке (checkpoint).
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 | Размер пакета (batch size), настраиваемый как целое число или в автоматическом режиме. |
imgsz | 640 | Целевой размер изображения для обучения. |
device | None | Вычислительное устройство(а) для обучения, например cpu, 0, 0,1 или mps. |
save | True | Включает сохранение контрольных точек обучения и весов финальной модели. |
Для подробного руководства по настройкам обучения изучи раздел Настройки обучения.