Обучение моделей с помощью Ultralytics YOLO

Ultralytics YOLO ecosystem and integrations

Введение

Обучение глубокой нейросети предполагает подачу данных и настройку ее параметров для получения точных предсказаний. Режим обучения (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

В Windows при запуске обучения в качестве скрипта ты можешь получить RuntimeError. Добавь блок if __name__ == "__main__": перед своим кодом обучения, чтобы решить эту проблему.

Пример обучения на одном GPU и CPU

Устройство определяется автоматически. Если 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, которые хочешь использовать.

Пример обучения на нескольких 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])
Обучение на нескольких GPU с использованием пользовательского кода

Когда ты указываешь несколько устройств (например, 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

Чтобы автоматически выбирать и использовать наиболее свободные 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 с:

  1. Более низким текущим процентом использования
  2. Большим объемом доступной памяти (свободной VRAM)
  3. Более низкой температурой и энергопотреблением

Эта функция особенно полезна в общих вычислительных средах или при запуске нескольких задач обучения для разных моделей. Она автоматически адаптируется к меняющимся условиям системы, обеспечивая оптимальное распределение ресурсов без ручного вмешательства.

Обучение с использованием Apple Silicon MPS

Благодаря поддержке чипов Apple Silicon, интегрированной в модели Ultralytics YOLO, теперь можно обучать модели на устройствах с использованием мощного фреймворка Metal Performance Shaders (MPS). MPS предлагает высокопроизводительный способ выполнения вычислений и задач обработки изображений на собственных чипах Apple.

Чтобы включить обучение на чипах Apple Silicon, при инициализации процесса обучения укажи 'mps' в качестве устройства. Ниже приведен пример того, как это можно сделать в Python и через командную строку:

Пример обучения с использованием MPS
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.

АргументТипПо умолчаниюОписание
modelstrNoneУказывает файл модели для обучения. Принимает путь либо к предварительно обученной модели .pt, либо к конфигурационному файлу .yaml. Необходим для определения структуры модели или инициализации весов.
datastrNoneПуть к конфигурационному файлу набора данных (например, coco8.yaml). Этот файл содержит специфические параметры набора данных, включая пути к обучающим и валидационным данным, имена классов и их количество.
epochsint100Общее количество эпох обучения. Каждая эпоха представляет собой полный проход по всему набору данных. Регулировка этого значения может повлиять на длительность обучения и производительность модели.
timefloatNoneМаксимальное время обучения в часах. Если установлено, переопределяет аргумент epochs, позволяя автоматически остановить обучение по истечении указанного времени. Полезно для сценариев обучения с ограниченным временем.
patienceint100Количество эпох, в течение которых метрики валидации не улучшаются, перед тем как остановить обучение (early stopping). Помогает предотвратить переобучение, останавливая обучение при достижении плато.
batchint или float16Размер пакета с тремя режимами: целое число (например, batch=16), авторежим для 60% использования памяти GPU (batch=-1) или авторежим с указанной долей использования (batch=0.70).
imgszint640Целевой размер изображения для обучения. Изображения изменяются до квадратов со сторонами, равными указанному значению (если rect=False), сохраняя соотношение сторон для моделей YOLO, но не для RT-DETR. Влияет на точность модели и вычислительную сложность.
saveboolTrueВключает сохранение контрольных точек обучения и финальных весов модели. Полезно для возобновления обучения или развертывания модели.
save_periodint-1Частота сохранения контрольных точек модели, заданная в эпохах. Значение -1 отключает эту функцию. Полезно для сохранения промежуточных моделей во время длительного обучения.
cacheboolFalseВключает кэширование изображений набора данных в оперативной памяти (True/ram), на диске (disk) или отключает его (False). Увеличивает скорость обучения за счет сокращения операций ввода-вывода с диском, ценой повышенного потребления памяти.
deviceint или str или listNoneУказывает вычислительное устройство (или устройства) для обучения: один 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])
workersint8Количество потоков-воркеров для загрузки данных (на RANK в случае обучения на нескольких GPU). Влияет на скорость предварительной обработки данных и их подачи в модель, особенно полезно в конфигурациях с несколькими GPU.
projectstrNoneИмя директории проекта, куда сохраняются результаты обучения. Позволяет организованно хранить разные эксперименты.
namestrNoneИмя запуска обучения. Используется для создания подпапки внутри папки проекта, где хранятся логи обучения и результаты.
exist_okboolFalseЕсли True, разрешает перезапись существующей директории проекта/имени. Полезно для итеративного экспериментирования, не требуя ручной очистки предыдущих результатов.
pretrainedbool или strTrueОпределяет, начинать ли обучение с предварительно обученных весов. Может быть логическим значением или строковым путем к весам для загрузки. pretrained=False запускает обучение со случайными начальными весами, сохраняя архитектуру модели.
optimizerstr'auto'Выбор оптимизатора для обучения. Опции включают SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp или auto для автоматического выбора на основе конфигурации модели. Влияет на скорость сходимости и стабильность.
seedint0Устанавливает случайное начальное число (seed) для обучения, обеспечивая воспроизводимость результатов между запусками с одинаковыми конфигурациями.
deterministicboolTrueПринудительно использует детерминированные алгоритмы, обеспечивая воспроизводимость, но это может повлиять на производительность и скорость из-за ограничений на недетерминированные алгоритмы.
verboseboolTrueВключает подробный вывод во время обучения, отображая индикаторы выполнения, метрики по каждой эпохе и дополнительную информацию в консоли.
single_clsboolFalseРассматривает все классы в многоклассовых наборах данных как один класс во время обучения. Полезно для задач бинарной классификации или при фокусировке на присутствии объекта, а не на его классификации.
classeslist[int]NoneУказывает список ID классов для обучения. Полезно для фильтрации и фокусировки только на определенных классах во время процесса обучения.
rectboolFalseВключает стратегию минимального дополнения (padding)—изображения в пакете минимально дополняются до достижения общего размера, где самая длинная сторона равна imgsz. Может улучшить эффективность и скорость, но может повлиять на точность модели.
multi_scalefloat0.0Случайное изменение imgsz для каждого пакета на +/- multi_scale (например, 0.25 -> от 0.75x до 1.25x), с округлением до кратных значений шага модели; 0.0 отключает многомасштабное обучение.
cos_lrboolFalseИспользует косинусный планировщик скорости обучения, корректируя скорость обучения по косинусной кривой в течение эпох. Помогает управлять скоростью обучения для лучшей сходимости.
close_mosaicint10Отключает аугментацию данных методом мозаики в последние N эпох для стабилизации обучения перед его завершением. Установка значения 0 отключает эту функцию.
resumeboolFalseВозобновляет обучение с последней сохраненной контрольной точки. Автоматически загружает веса модели, состояние оптимизатора и счетчик эпох, позволяя беспрепятственно продолжать процесс.
ampboolTrueВключает обучение с автоматической смешанной точностью (AMP), что снижает потребление памяти и может ускорить обучение при минимальном влиянии на точность.
fractionfloat1.0Определяет долю набора данных для использования в обучении. Позволяет проводить обучение на подмножестве полных данных, что полезно для экспериментов или при ограниченных ресурсах.
profileboolFalseВключает профилирование скоростей ONNX и TensorRT во время обучения, что полезно для оптимизации развертывания модели.
freezeint или listNoneЗамораживает первые N слоев модели или указанные по индексу слои, сокращая количество обучаемых параметров. Полезно для тонкой настройки или обучения с переносом знаний.
lr0float0.01Начальная скорость обучения (т.е. SGD=1E-2, Adam=1E-3). Регулировка этого значения имеет решающее значение для процесса оптимизации, влияя на скорость обновления весов модели.
lrffloat0.01Конечная скорость обучения как доля от начальной = (lr0 * lrf), используется совместно с планировщиками для изменения скорости обучения со временем.
momentumfloat0.937Коэффициент импульса для SGD или beta1 для оптимизаторов Adam, влияющий на учет предыдущих градиентов при текущем обновлении.
weight_decayfloat0.0005Параметр L2 регуляризации, наказывающий за большие веса для предотвращения переобучения.
warmup_epochsfloat3.0Количество эпох для прогрева скорости обучения, постепенно увеличивающее её с низкого значения до начального для ранней стабилизации обучения.
warmup_momentumfloat0.8Начальный импульс для фазы прогрева, постепенно подстраивающийся к заданному значению в течение периода прогрева.
warmup_bias_lrfloat0.1Скорость обучения для параметров смещения во время фазы прогрева, помогающая стабилизировать обучение модели в начальные эпохи.
boxfloat7.5Вес компонента потерь ограничивающей рамки в функции потерь, влияющий на то, насколько важно точно предсказывать координаты ограничивающей рамки.
clsfloat0.5Вес функции потерь классификации в общей функции потерь, влияющий на важность правильного предсказания класса относительно других компонентов.
cls_pwfloat0.0Степень для взвешивания классов для обработки дисбаланса классов с использованием обратной частоты классов. 0.0 отключает взвешивание классов, 1.0 применяет полное взвешивание по обратной частоте. Значения от 0 до 1 обеспечивают частичное взвешивание.
dflfloat1.5Вес функции потерь распределения (distribution focal loss), используемой в некоторых версиях YOLO для мелкозернистой классификации.
posefloat12.0Вес потерь позы в моделях, обученных для оценки позы, влияющий на акцент при точном предсказании ключевых точек позы.
kobjfloat1.0Вес потерь на наличие объекта в ключевой точке в моделях оценки позы, балансирующий уверенность обнаружения с точностью позы.
rlefloat1.0Вес функции потерь оценки остаточного логарифмического правдоподобия в моделях оценки позы, влияющий на точность локализации ключевых точек.
anglefloat1.0Вес потерь по углу в моделях OBB, влияющий на точность предсказаний угла ориентированной ограничивающей рамки.
nbsint64Номинальный размер пакета для нормализации потерь.
overlap_maskboolTrueОпределяет, должны ли маски объектов объединяться в одну маску для обучения или оставаться отдельными для каждого объекта. В случае перекрытия при объединении меньшая маска накладывается поверх большей.
mask_ratioint4Коэффициент уменьшения разрешения для масок сегментации, влияющий на разрешение масок, используемых во время обучения.
dropoutfloat0.0Коэффициент выпадения (dropout) для регуляризации в задачах классификации, предотвращающий переобучение путем случайного исключения единиц во время обучения.
valboolTrueВключает валидацию во время обучения, позволяя периодически оценивать производительность модели на отдельном наборе данных.
plotsboolTrueГенерирует и сохраняет графики метрик обучения и валидации, а также примеры предсказаний, предоставляя наглядное представление о производительности модели и ходе обучения.
compilebool или strFalseВключает компиляцию графа PyTorch 2.x torch.compile с backend='inductor'. Принимает True"default", False → отключает, или строковый режим, такой как "default", "reduce-overhead", "max-autotune-no-cudagraphs". При отсутствии поддержки возвращается к режиму eager с предупреждением.
max_detint300Указывает максимальное количество объектов, сохраняемых во время фазы валидации обучения.
Примечание к настройкам размера пакета

Аргумент batch можно настроить тремя способами:

  • Фиксированный размер батча: Установи целое значение (например, batch=16), напрямую указывая количество изображений в батче.
  • Автоматический режим (60% памяти GPU): Используй batch=-1 для автоматической подстройки размера батча под примерно 60% загрузки памяти CUDA.
  • Автоматический режим с долей использования: Установи дробное значение (например, batch=0.70), чтобы настроить размер батча на основе указанной доли использования памяти GPU.
  • Автоматический повтор при нехватке памяти (OOM): Если во время первой эпохи происходит ошибка нехватки памяти CUDA, тренер автоматически уменьшает размер батча вдвое и повторяет попытку (до 3 раз). Это применимо только к обучению на одном GPU; обучение на нескольких GPU (DDP) вызовет ошибку немедленно.

Настройки аугментации и гиперпараметры

Методы аугментации важны для повышения устойчивости и производительности моделей YOLO путем внесения вариативности в обучающие данные, что помогает модели лучше обобщать на незнакомые данные. В следующей таблице описаны цель и эффект каждого аргумента аугментации:

АргументТипПо умолчаниюПоддерживаемые задачиДиапазонОписание
hsv_hfloat0.015detect, segment, pose, obb, classify0.0 - 1.0Регулирует оттенок изображения на часть цветового круга, внося вариативность цветов. Помогает модели обобщать при различных условиях освещения.
hsv_sfloat0.7detect, segment, pose, obb, classify0.0 - 1.0Изменяет насыщенность изображения на часть, влияя на интенсивность цветов. Полезно для симуляции различных условий окружающей среды.
hsv_vfloat0.4detect, segment, pose, obb, classify0.0 - 1.0Модифицирует значение (яркость) изображения на часть, помогая модели хорошо работать в различных условиях освещения.
degreesfloat0detect, segment, pose, obb0.0 - 180Поворачивает изображение случайным образом в заданном диапазоне градусов, улучшая способность модели распознавать объекты при различных ориентациях.
translatefloat0.1detect, segment, pose, obb0.0 - 1.0Перемещает изображение по горизонтали и вертикали на часть размера изображения, помогая учиться обнаруживать частично видимые объекты.
scalefloat0.5detect, segment, pose, obb, classify0 - 1Масштабирует изображение с коэффициентом усиления, симулируя объекты на разных расстояниях от камеры.
shearfloat0detect, segment, pose, obb-180 - +180Наклоняет изображение на заданный градус, имитируя эффект просмотра объектов под разными углами.
perspectivefloat0detect, segment, pose, obb0.0 - 0.001Применяет случайную перспективную трансформацию к изображению, улучшая способность модели понимать объекты в 3D-пространстве.
flipudfloat0detect, segment, pose, obb, classify0.0 - 1.0Переворачивает изображение вверх ногами с заданной вероятностью, увеличивая вариативность данных, не влияя на характеристики объектов.
fliplrfloat0.5detect, segment, pose, obb, classify0.0 - 1.0Отражает изображение слева направо с заданной вероятностью, что полезно для изучения симметричных объектов и повышения разнообразия датасета.
bgrfloat0detect, segment, pose, obb0.0 - 1.0Меняет каналы изображения с RGB на BGR с заданной вероятностью, что полезно для повышения устойчивости к неправильному порядку каналов.
mosaicfloat1detect, segment, pose, obb0.0 - 1.0Объединяет четыре обучающих изображения в одно, имитируя различные композиции сцен и взаимодействия объектов. Высокоэффективно для понимания сложных сцен.
mixupfloat0detect, segment, pose, obb0.0 - 1.0Смешивает два изображения и их метки, создавая композитное изображение. Улучшает способность модели к обобщению за счет введения шума в метках и визуальной вариативности.
cutmixfloat0detect, segment, pose, obb0.0 - 1.0Объединяет части двух изображений, создавая частичное смешение при сохранении четких областей. Повышает устойчивость модели за счет создания сценариев окклюзии.
copy_pastefloat0segment0.0 - 1.0Копирует и вставляет объекты между изображениями для увеличения числа экземпляров объектов.
copy_paste_modestrflipsegment-Указывает используемую стратегию copy-paste. Варианты включают 'flip' и 'mixup'.
auto_augmentstrrandaugmentclassify-Применяет предопределенную политику аугментации ('randaugment', 'autoaugment' или 'augmix') для повышения производительности модели за счет визуального разнообразия.
erasingfloat0.4classify0.0 - 1.0Случайным образом стирает области изображения во время обучения, чтобы побудить модель фокусироваться на менее очевидных признаках.
augmentationslist``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. Ниже приведен пример для обоих способов:

Пример обучения на одном GPU и CPU
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' в качестве устройства для обучения.

Пример обучения с использованием 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), эпохи и многое другое с помощью аргументов. Вот краткий обзор:

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

Для подробного руководства по настройкам обучения изучи раздел Настройки обучения.

Комментарии