Link to this sectionОбучение моделей с помощью Ultralytics YOLO#
Link to this sectionВведение#
Обучение модели глубокого обучения предполагает подачу данных и настройку ее параметров для получения точных предсказаний. Режим Train в Ultralytics YOLO26 разработан для эффективного обучения моделей обнаружения объектов с полным использованием возможностей современного оборудования. Это руководство охватывает все детали, необходимые для начала обучения собственных моделей с помощью широкого набора функций YOLO26.
Watch: How to Train a YOLO model on Your Custom Dataset in Google Colab.
Link to this sectionПочему стоит выбрать Ultralytics YOLO для обучения?#
Вот несколько веских причин выбрать режим Train в YOLO26:
- Эффективность: Получи максимум от своего оборудования, будь то система с одним GPU или масштабируемое решение на базе нескольких GPU.
- Универсальность: Обучай на собственных наборах данных в дополнение к уже доступным, таким как COCO, VOC и ImageNet.
- Удобство для пользователя: Простые, но мощные интерфейсы CLI и Python для легкого процесса обучения.
- Гибкость гиперпараметров: Широкий спектр настраиваемых гиперпараметров для точной подстройки производительности модели. Для более глубокого контроля ты можешь настроить сам тренер.
- Облачное обучение: Обучай на облачных GPU через Ultralytics Platform с метриками в реальном времени и автоматическим сохранением контрольных точек.
Link to this sectionОсновные функции режима Train#
Ниже представлены некоторые примечательные функции режима Train в YOLO26:
- Автоматическая загрузка датасетов: Стандартные наборы данных, такие как COCO, VOC и ImageNet, загружаются автоматически при первом использовании.
- Поддержка нескольких GPU: Беспрепятственно масштабируй свои усилия по обучению на несколько GPU, чтобы ускорить процесс.
- Конфигурация гиперпараметров: Возможность изменять гиперпараметры через YAML-файлы конфигурации или аргументы CLI.
- Визуализация и мониторинг: Отслеживание метрик обучения в реальном времени и визуализация процесса для получения более глубоких данных.
- Датасеты YOLO26, такие как COCO, VOC, ImageNet и многие другие, автоматически загружаются при первом использовании, например:
yolo train data=coco.yaml
Link to this sectionПримеры использования#
Обучи 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)Link to this sectionОбучение на нескольких 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.pyLink to this sectionОбучение на простаивающем 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 с:
- Более низким текущим процентом использования
- Большим объемом доступной памяти (свободная VRAM)
- Более низкой температурой и энергопотреблением
Эта функция особенно ценна в общих вычислительных средах или при запуске нескольких задач обучения для разных моделей. Она автоматически адаптируется к изменяющимся условиям системы, обеспечивая оптимальное распределение ресурсов без ручного вмешательства.
Link to this sectionОбучение на 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.
Link to this sectionВозобновление прерванного обучения#
Возобновление обучения из ранее сохраненного состояния — критически важная функция при работе с моделями глубокого обучения. Это может пригодиться в различных сценариях: например, когда процесс обучения был неожиданно прерван или когда ты хочешь продолжить обучение модели на новых данных или в течение большего количества эпох.
При возобновлении обучения 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 эпоху, чтобы возобновить запуск обучения.
Link to this sectionНастройки обучения#
Настройки обучения для моделей YOLO включают в себя различные гиперпараметры и конфигурации, используемые в процессе обучения. Эти настройки влияют на производительность, скорость и точность модели. Ключевые настройки обучения включают размер пакета (batch size), скорость обучения, импульс (momentum) и затухание весов (weight decay). Кроме того, выбор оптимизатора, функции потерь и состав обучающего набора данных могут повлиять на процесс обучения. Тщательная настройка и эксперименты с этими параметрами имеют решающее значение для оптимизации производительности.
Link to this sectionОптимизатор 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 size) с тремя режимами: как целое число (например, 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). Улучшает скорость обучения за счет уменьшения операций ввода-вывода (I/O) диска ценой увеличенного использования оперативной памяти. |
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, разрешает перезапись существующей директории project/name. Полезно для итеративных экспериментов без необходимости вручную очищать предыдущие результаты. |
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 | Включает стратегию минимального заполнения — изображения в пакете минимально дополняются до общего размера, при этом самая длинная сторона равна imgsz. Может улучшить эффективность и скорость, но может повлиять на точность модели. |
multi_scale | float | 0.0 | Случайное изменение imgsz для каждого пакета на +/- multi_scale (например, 0.25 -> от 0.75x до 1.25x), с округлением до кратных значений шага модели; 0.0 отключает многомасштабное обучение. |
cos_lr | bool | False | Использует косинусный планировщик learning rate, корректируя скорость обучения по косинусоиде на протяжении эпох. Помогает управлять скоростью обучения для лучшей сходимости. |
close_mosaic | int | 10 | Отключает data augmentation типа mosaic в последние N эпох для стабилизации обучения перед завершением. Установка 0 отключает эту функцию. |
resume | bool | False | Возобновляет обучение с последней сохраненной контрольной точки. Автоматически загружает веса модели, состояние оптимизатора и счетчик эпох, продолжая обучение без сбоев. |
amp | bool | True | Включает обучение с автоматической Mixed Precision (AMP), уменьшая использование памяти и, возможно, ускоряя обучение при минимальном влиянии на точность. |
fraction | float | 1.0 | Указывает долю набора данных для использования при обучении. Позволяет обучать на подмножестве полного набора данных, что полезно для экспериментов или при ограниченных ресурсах. |
profile | bool | False | Включает профилирование скорости ONNX и TensorRT во время обучения, полезно для оптимизации развертывания модели. |
freeze | int или list | None | Замораживает первые N слоев модели или указанные слои по индексу, уменьшая количество обучаемых параметров. Полезно для донастройки или transfer learning. |
lr0 | float | 0.01 | Начальная скорость обучения (например, SGD=1E-2, Adam=1E-3). Настройка этого значения критически важна для процесса оптимизации, так как она влияет на то, насколько быстро обновляются веса модели. |
lrf | float | 0.01 | Конечная скорость обучения как доля от начальной = (lr0 * lrf), используется вместе с планировщиками для корректировки скорости обучения с течением времени. |
momentum | float | 0.937 | Коэффициент импульса для SGD или beta1 для Adam optimizers, влияющий на учет прошлых градиентов при текущем обновлении. |
weight_decay | float | 0.0005 | Член L2 regularization, штрафующий большие веса для предотвращения переобучения. |
warmup_epochs | float | 3.0 | Количество эпох для разогрева (warmup) скорости обучения, постепенно увеличивающее ее от малого значения до начального для ранней стабилизации обучения. |
warmup_momentum | float | 0.8 | Начальный импульс для фазы разогрева, постепенно корректирующийся до установленного значения в течение периода разогрева. |
warmup_bias_lr | float | 0.1 | Скорость обучения для параметров смещения (bias) во время фазы разогрева, помогающая стабилизировать обучение модели в начальные эпохи. |
box | float | 7.5 | Вес компонента функции потерь box в loss function, влияющий на акцент при точном прогнозировании координат bounding box. |
cls | float | 0.5 | Вес потерь классификации в общей функции потерь, влияющий на важность правильного предсказания класса по отношению к другим компонентам. |
cls_pw | float | 0.0 | Степень для весов классов для борьбы с их дисбалансом с использованием обратной частоты классов. 0.0 отключает взвешивание классов, 1.0 применяет полное обратное частотное взвешивание. Значения от 0 до 1 обеспечивают частичное взвешивание. |
dfl | float | 1.5 | Вес функции распределения 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 | Коэффициент уменьшения разрешения (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 с предупреждением. |
max_det | int | 300 | Указывает максимальное количество объектов, сохраняемых во время фазы валидации обучения. |
Аргумент batch можно настроить тремя способами:
- Фиксированный Batch Size: Установи целочисленное значение (например,
batch=16), напрямую указывая количество изображений в пакете. - Автоматический режим (60% памяти GPU): Используй
batch=-1для автоматической настройки размера пакета под примерно 60% использования памяти CUDA. - Автоматический режим с долей использования: Установи значение доли (например,
batch=0.70), чтобы настроить размер пакета на основе указанной части использования памяти GPU. - Автоматический повтор при нехватке памяти (OOM): Если в первой эпохе возникает ошибка CUDA out-of-memory, трейнер автоматически делит размер пакета пополам и повторяет попытку (до 3 раз). Это применимо только к обучению на одной GPU; обучение на нескольких GPU (DDP) вызовет ошибку немедленно.
Link to this sectionНастройки аугментации и гиперпараметры#
Методы аугментации необходимы для повышения устойчивости и производительности моделей YOLO путем внесения вариативности в training data, что помогает модели лучше обобщать данные на ранее не виденных примерах. В следующей таблице описаны цель и эффект каждого аргумента аугментации:
| Аргумент | Тип | По умолчанию | Поддерживаемые задачи | Диапазон | Описание |
|---|---|---|---|---|---|
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). Принимает список объектов преобразования для специализированных задач аугментации. |
Эти настройки можно адаптировать в соответствии с конкретными требованиями твоего набора данных и решаемой задачи. Эксперименты с различными значениями помогут тебе найти оптимальную стратегию аугментации, которая обеспечит наилучшую производительность модели.
Для получения дополнительной информации об операциях аугментации при обучении см. справочный раздел.
Link to this sectionЛогирование#
При обучении модели YOLO26 тебе может быть полезно отслеживать производительность модели с течением времени. Здесь на помощь приходит логирование. Ultralytics YOLO обеспечивает поддержку трех типов логгеров: Comet, ClearML и TensorBoard.
Чтобы воспользоваться логгером, выбери его в выпадающем меню в приведенном выше фрагменте кода и запусти его. Выбранный логгер будет установлен и инициализирован.
Link to this sectionComet#
Comet — это платформа, которая позволяет специалистам по данным и разработчикам отслеживать, сравнивать, объяснять и оптимизировать эксперименты и модели. Она предоставляет такие функциональные возможности, как метрики в реальном времени, сравнение кода и отслеживание гиперпараметров.
Чтобы использовать Comet:
# pip install comet_ml
import comet_ml
comet_ml.init()Не забудь войти в свою учетную запись Comet на их сайте и получить свой API ключ. Тебе нужно будет добавить его в переменные окружения или в свой скрипт для логирования экспериментов.
Link to this sectionClearML#
ClearML — это платформа с открытым исходным кодом, которая автоматизирует отслеживание экспериментов и помогает эффективно распределять ресурсы. Она создана для того, чтобы помочь командам более эффективно управлять, выполнять и воспроизводить свою работу в области ML.
Чтобы использовать ClearML:
# pip install clearml
import clearml
clearml.browser_login()После запуска этого скрипта тебе нужно будет войти в свою учетную запись ClearML в браузере и аутентифицировать свой сеанс.
Link to this sectionTensorBoard#
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 и направит его в директорию, где сохранены логи твоего обучения.
После настройки логгера ты можешь продолжить обучение своей модели. Все метрики обучения будут автоматически записываться на выбранную платформу, и ты сможешь получить доступ к этим логам, чтобы следить за производительностью модели с течением времени, сравнивать разные модели и определять области для улучшения.
Link to this sectionFAQ#
Link to this sectionМожно ли обучаться без локального GPU?#
Да. Ultralytics Platform поддерживает облачное обучение с бесплатными кредитами для начала работы. Загрузи свой набор данных, выбери модель и GPU и обучайся прямо из браузера. Подробности см. в руководстве по облачному обучению.
Link to this sectionКак обучить модель обнаружения объектов с помощью 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)Для получения более подробной информации обратись к разделу Настройки обучения.
Link to this sectionКаковы ключевые особенности режима обучения Ultralytics YOLO26?#
Ключевые особенности режима обучения Ultralytics YOLO26 включают:
- Автоматическая загрузка наборов данных: Автоматически загружает стандартные наборы данных, такие как COCO, VOC и ImageNet.
- Поддержка нескольких GPU: Масштабируй обучение на несколько GPU для более быстрой обработки.
- Конфигурация гиперпараметров: Настраивай гиперпараметры с помощью YAML-файлов или аргументов CLI.
- Визуализация и мониторинг: Отслеживание метрик обучения в реальном времени для более глубокого анализа.
Эти функции делают обучение эффективным и адаптируемым под твои нужды. Для получения более подробной информации см. раздел Ключевые особенности режима обучения.
Link to this sectionКак возобновить обучение после прерванного сеанса в 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)Ознакомься с разделом Возобновление прерванного обучения для получения дополнительной информации.
Link to this sectionКак обучить модель на несбалансированном наборе данных?#
Дисбаланс классов возникает, когда некоторые классы имеют значительно меньше примеров, чем другие в твоих обучающих данных. Это может привести к плохой работе модели на редких классах. 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, если редкие классы по-прежнему показывают плохие результаты. Ты можешь проверить вычисленные веса классов в логах обучения, чтобы убедиться в распределении весов.
Link to this sectionМожно ли обучать модели 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.
Link to this sectionКаковы распространенные настройки обучения и как мне их сконфигурировать?#
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 | Включает сохранение контрольных точек обучения и весов финальной модели. |
Для получения подробного руководства по настройкам обучения ознакомься с разделом Настройки обучения.