YOLO Vision 2026:

Конфигурация#

Настройки и гиперпараметры YOLO играют критически важную роль в производительности, скорости и точности модели. Эти параметры могут влиять на поведение модели на различных этапах, включая обучение, валидацию и предсказание.



Watch: Mastering Ultralytics YOLO: Configuration

Команды Ultralytics используют следующий синтаксис:

Пример
yolo TASK MODE ARGS

Где:

  • TASK (необязательно) — одно из (detect, segment, semantic, depth, classify, pose, obb)
  • MODE (обязательно) — одно из (train, val, predict, export, track, benchmark)
  • ARGS (необязательно) — это пары arg=value, такие как imgsz=640, которые переопределяют значения по умолчанию.

Значения по умолчанию для ARG определяются на этой странице и берутся из файла cfg/default.yaml.

Задачи#

Модели Ultralytics YOLO могут выполнять различные задачи компьютерного зрения, включая:

АргументПо умолчаниюОписание
task'detect'Задает задачу YOLO: detect для обнаружения объектов, segment для сегментации экземпляров, semantic для семантической сегментации, depth для монокулярного оценивания глубины, classify для классификации, pose для оценки позы и obb для ориентированных ограничивающих рамок. Каждая задача адаптирована под конкретные результаты и проблемы при анализе изображений и видео.

Руководство по задачам

Режимы#

Модели Ultralytics YOLO работают в различных режимах, каждый из которых предназначен для определенного этапа жизненного цикла модели:

  • Train: Обучение модели YOLO на пользовательском наборе данных.
  • Val: Валидация обученной модели YOLO.
  • Predict: Использование обученной модели YOLO для создания предсказаний на новых изображениях или видео.
  • Export: Экспорт модели YOLO для развертывания.
  • Track: Отслеживание объектов в режиме реального времени с помощью модели YOLO.
  • Benchmark: Тестирование скорости и точности экспортированных моделей YOLO (ONNX, TensorRT и др.).
АргументПо умолчаниюОписание
mode'train'Задает режим работы модели YOLO: train для обучения модели, val для валидации, predict для инференса, export для конвертации в форматы развертывания, track для трекинга объектов и benchmark для оценки производительности. Каждый режим поддерживает различные этапы — от разработки до развертывания.

Руководство по режимам

Настройки обучения#

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

АргументТипПо умолчаниюОписание
modelstrNoneЗадает файл модели для обучения. Принимает путь либо к предобученной модели .pt, либо к файлу конфигурации .yaml. Это необходимо для определения структуры модели или инициализации весов.
datastrNoneПуть к файлу конфигурации датасета (например, coco8.yaml). Этот файл содержит параметры, специфичные для датасета, включая пути к обучающим и валидационным данным, имена классов и количество классов.
epochsint100Общее количество эпох обучения. Каждая эпоха представляет собой один полный проход по всему датасету. Изменение этого значения может повлиять на продолжительность обучения и производительность модели.
timefloatNoneМаксимальное время обучения в часах. Если задано, этот аргумент переопределяет аргумент epochs, позволяя обучению автоматически остановиться по истечении указанного времени. Полезно для сценариев обучения с ограничениями по времени.
patienceint100Количество эпох ожидания без улучшения метрик валидации перед ранней остановкой обучения. Помогает предотвратить переобучение, останавливая обучение при плато производительности.
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:0 или device=npu:0,1), либо автоматический выбор простаивающего GPU (device=-1) или нескольких простаивающих GPU (device=[-1,-1]).
workersint8Количество потоков-воркеров для загрузки данных (на каждый RANK при обучении на нескольких GPU). Влияет на скорость предварительной обработки данных и подачи их в модель, что особенно полезно в конфигурациях с несколькими GPU.
projectstrNoneИмя директории проекта, куда сохраняются результаты обучения. Позволяет организованно хранить различные эксперименты.
namestrNoneИмя запуска обучения. Используется для создания подпапки внутри папки проекта, где хранятся логи и результаты обучения.
exist_okboolFalseЕсли True, разрешает перезапись существующей директории project/name. Полезно для итеративных экспериментов без необходимости вручную очищать предыдущие результаты.
save_dirstrNoneЗадает точную директорию для сохранения результатов запуска, переопределяя комбинацию project/name. Путь используется как есть без автоинкремента, поэтому последовательные запуски используют ту же директорию.
pretrainedbool или strTrueОпределяет, начинать ли обучение с предобученных весов. Может быть булевым значением или строковым путем к загружаемым весам. pretrained=False выполняет обучение со случайным образом инициализированными весами с сохранением архитектуры модели.
cls_remapboolTrueПри дообучении на разных наборах данных копирует строки предобученной головы классификации в новую модель везде, где названия классов совпадают, поэтому пересекающиеся классы сохраняют свое изученное смещение, а также свои веса, если ширина головы не изменилась. Применяется независимо от того, отличаются ли количества классов или совпадают при другом порядке классов.
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) скорости обучения, постепенно увеличивающее ее от малого значения до начального для ранней стабилизации обучения.
warmup_momentumfloat0.8Начальный импульс для фазы разогрева, постепенно корректирующийся до установленного значения в течение периода разогрева.
warmup_bias_lrfloat0.1Скорость обучения для параметров смещения (bias) во время фазы разогрева, помогающая стабилизировать обучение модели в начальные эпохи.
distill_modelstrNoneПуть к контрольной точке модели-учителя (например, yolo26x.pt) для дистилляции знаний. Если задано, модель-ученик обучается с дополнительной потерей дистилляции под руководством замороженного учителя.
disfloat6.0Вес функции потерь дистилляции, добавляемой к стандартным потерям детекции. Более высокие значения увеличивают влияние направляющих признаков учителя.
boxfloat7.5Вес компонента потерь рамок в функции потерь, влияющий на то, какое внимание уделяется точному прогнозированию координат ограничивающей рамки.
clsfloat0.5Вес потерь классификации в общей функции потерь, влияющий на важность правильного предсказания класса по отношению к другим компонентам.
cls_pwfloat0.0Степень взвешивания классов для борьбы с дисбалансом классов с использованием обратной частоты классов. 0.0 отключает взвешивание классов, 1.0 применяет полное взвешивание по обратной частоте. Значения от 0 до 1 обеспечивают частичное взвешивание.
dflfloat1.5Вес функции потерь distribution focal loss (DFL) — компонента локализации bounding box, который регрессирует расстояния до границ рамки.
posefloat12.0Вес потерь позы в моделях для оценки позы, влияющий на акцент при точном прогнозировании ключевых точек позы.
kobjfloat1.0Вес потерь объектности ключевых точек в моделях оценки позы, балансирующий уверенность обнаружения с точностью позы.
rlefloat1.0Вес потерь остаточной оценки логарифмического правдоподобия в моделях оценки позы, влияющий на точность локализации ключевых точек.
anglefloat1.0Вес потерь угла в моделях obb, влияющий на точность предсказаний угла ориентированного ограничивающего прямоугольника.
dlogfloat1.0Вес масштабно-инвариантной логарифмической (SILog) функции потерь в моделях оценки глубины, основной фактор, определяющий точность глубины.
dgradfloat0.5Вес градиентных потерь в моделях оценки глубины, штрафующий за ошибки на границах глубин и стимулирующий более резкие границы поверхностей.
dlamfloat1.0Фактор фокусировки дисперсии потерь SILog в моделях оценки глубины. 1.0 делает потери полностью инвариантными к масштабу, в то время как 0.0 сводит их к обычному log-RMSE.
nbsint64Номинальный размер пакета для нормализации потерь.
overlap_maskboolTrueОпределяет, должны ли маски объектов объединяться в одну общую маску для обучения или оставаться отдельными для каждого объекта. В случае перекрытия, меньшая маска накладывается поверх большей при объединении.
mask_ratioint4Коэффициент уменьшения разрешения (downsample) для масок сегментации, влияющий на разрешение масок, используемых при обучении.
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) с предупреждением.
channels_lastboolFalseИспользует формат памяти channels_last (NHWC) для сверток во время обучения, ускоряя работу GPU с CUDA Tensor Core без изменения результатов. Автоматически игнорируется на CPU и MPS, где он не дает преимуществ.
max_detint300Указывает максимальное количество объектов, сохраняемых во время фазы валидации обучения.
Примечание по настройкам размера пакета (Batch-size)

Аргумент batch предлагает три варианта конфигурации:

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

Руководство по обучению

Настройки предсказания#

Настройки предсказания для моделей YOLO включают гиперпараметры и конфигурации, влияющие на производительность, скорость и точность во время инференса. К ключевым настройкам относятся порог уверенности, порог немаксимального подавления (NMS) и количество классов. Размер входных данных, формат и дополнительные функции, такие как маски, также влияют на предсказания. Настройка этих параметров важна для оптимальной производительности.

Аргументы инференса:

АргументТипПо умолчаниюОписание
sourcestr, int или NoneNoneЗадает источник данных для инференса. Может быть путем к изображению, видеофайлу, директорией, URL-адресом или ID устройства для прямых трансляций. Если опущено, записывается предупреждение, и модель переключается на встроенные демо-ресурсы (ultralytics/assets или демо-URL для OBB). Поддерживает широкий спектр форматов и источников, обеспечивая гибкое применение для различных типов входных данных.
conffloat0.25Устанавливает минимальный порог уверенности для обнаружений. Объекты, обнаруженные с уверенностью ниже этого порога, будут игнорироваться. Настройка этого значения может помочь снизить количество ложноположительных результатов.
ioufloat0.7Порог пересечения над объединением (IoU) для немаксимального подавления (NMS). Меньшие значения приводят к меньшему количеству детектирований за счет устранения перекрывающихся рамок, что полезно для сокращения дубликатов.
imgszint или tuple640Цель letterbox. Целое число дает квадратный N×N; кортеж дает (height, width). При rect=True фактический тензор может быть меньше этой цели из-за отступов минимального прямоугольника. Используйте rect=False для фиксированного размера. См. Фиксированная форма против минимального прямоугольника.
rectboolTrueЕсли True, используйте отступы минимального прямоугольника, когда это возможно (батч одинаковой формы и поддерживаемый бэкенд). Если False, всегда дополняйте до полного imgsz. См. Фиксированная форма против минимального прямоугольника.
quantizeint или strNoneТочность инференса: 16/"fp16" включает инференс FP16 на поддерживаемых GPU; 32/"fp32"/не задано — это FP32. Квантование INT8/PTQ настраивается при экспорте, а затем используется путем загрузки экспортированной модели. Заменяет устаревший флаг half.
devicestrNoneЗадает устройство для инференса (например, cpu, cuda:0, 0, npu или npu:0). Позволяет пользователям выбирать между CPU, конкретным GPU, Huawei Ascend NPU или другими вычислительными устройствами для выполнения модели.
batchint1Задает размер батча для инференса (работает только тогда, когда источником является директория, видеофайл или файл .txt). Больший размер батча может обеспечить более высокую пропускную способность, сокращая общее время, необходимое для инференса.
max_detint300Максимальное количество разрешенных обнаружений на изображение. Ограничивает общее количество объектов, которые модель может обнаружить за один инференс, предотвращая чрезмерные выходы в плотных сценах.
vid_strideint1Шаг кадров для видеовходов. Позволяет пропускать кадры в видео для ускорения обработки за счет временного разрешения. Значение 1 обрабатывает каждый кадр, большие значения пропускают кадры.
stream_bufferboolFalseОпределяет, ставить ли входящие кадры в очередь для видеопотоков. Если False, старые кадры отбрасываются в пользу новых (оптимизировано для приложений реального времени). Если True, новые кадры помещаются в буфер, гарантируя отсутствие пропущенных кадров, но вызывая задержку, если FPS инференса ниже FPS потока.
visualizeboolFalseСохраняет карту активации классов рядом с каждым предсказанием, показывая, какие пиксели повысили оценки предсказанного класса. Учитывает conf и classes, поэтому classes=[0] сопоставляет только этот класс. Доступно только для моделей PyTorch.
augmentboolFalseВключает аугментацию во время тестирования (TTA) для предсказаний, что потенциально повышает надежность обнаружения за счет скорости инференса.
agnostic_nmsboolFalseВключает классово-агностическое немаксимальное подавление (NMS), которое объединяет перекрывающиеся рамки разных классов. Полезно в сценариях многоклассового обнаружения, где часто встречается пересечение классов. Для end-to-end моделей (YOLO26, YOLOv10) это предотвращает появление одного и того же обнаружения с несколькими метками классов (дубликаты IoU=1.0) и не выполняет подавление на основе порога IoU между отдельными рамками.
classeslist[int]NoneФильтрует предсказания по набору ID классов. Будут возвращены только обнаружения, принадлежащие указанным классам. Полезно для фокусировки на релевантных объектах в задачах многоклассового обнаружения.
retina_masksboolFalseВозвращает маски сегментации высокого разрешения. Возвращаемые маски (masks.data) будут соответствовать исходному размеру изображения, если эта функция включена. Если отключена, они будут иметь размер изображения, использовавшийся при инференсе.
embedlist[int]NoneЗадает слои, из которых извлекаются векторы признаков или эмбеддинги. Используйте model.embed(source) для эмбеддингов предпоследнего слоя или model.predict(source, embed=[layer]) для выбора конкретных слоев. Полезно для последующих задач, таких как кластеризация или поиск сходства.
projectstrNoneИмя директории проекта, в которой сохраняются результаты предсказаний, если включен параметр save.
namestrNoneИмя запуска предсказания. Используется для создания поддиректории внутри папки проекта, где хранятся результаты предсказаний, если включен параметр save.
streamboolFalseВключает эффективную с точки зрения памяти обработку для длинных видео или многочисленных изображений, возвращая генератор объектов Results вместо загрузки всех кадров в память одновременно.
verboseboolTrueКонтролирует отображение подробных логов инференса в терминале, предоставляя обратную связь о процессе предсказания в режиме реального времени.
compilebool или strFalseВключает компиляцию графа PyTorch 2.x torch.compile с помощью backend='inductor'. Принимает True"default", False → отключает или строковый режим, такой как "default", "reduce-overhead", "max-autotune-no-cudagraphs". При неподдерживаемости возвращается к жадному режиму (eager) с предупреждением.
channels_lastboolFalseИспользует формат памяти channels_last (NHWC) для сверток во время инференса, ускоряя работу GPU с CUDA Tensor Core без изменения результатов. Применяется только к нативным моделям PyTorch; игнорируется для CPU, MPS и экспортированных форматов, таких как TensorRT и ONNX.
end2endboolNoneПереопределяет сквозной (end-to-end) режим в моделях YOLO, поддерживающих инференс без NMS (YOLO26, YOLOv10). Установка значения False позволяет запускать предсказание с использованием традиционного пайплайна NMS, а также дополнительно дает возможность использовать аргумент iou. Подробности см. в руководстве по сквозному обнаружению.

Аргументы визуализации:

АргументТипПо умолчаниюОписание
showboolFalseЕсли True, отображает аннотированные изображения или видео в окне. Полезно для немедленной визуальной обратной связи во время разработки или тестирования.
saveboolFalse or TrueВключает сохранение аннотированных изображений или видео в файлы. Полезно для документации, дальнейшего анализа или обмена результатами. По умолчанию True при использовании CLI и False при использовании в Python.
save_framesboolFalseПри обработке видео сохраняет отдельные кадры как изображения. Полезно для извлечения конкретных кадров или детального анализа по кадрам.
save_txtboolFalseСохраняет результаты обнаружения в текстовом файле в формате [class] [x_center] [y_center] [width] [height] [confidence]. Полезно для интеграции с другими инструментами анализа.
save_confboolFalseВключает оценки уверенности в сохраненных текстовых файлах. Увеличивает детализацию, доступную для постобработки и анализа.
save_cropboolFalseСохраняет обрезанные изображения обнаружений. Полезно для аугментации данных, анализа или создания сфокусированных наборов данных для конкретных объектов.
show_labelsboolTrueОтображает метки для каждого обнаружения в визуальном выводе. Обеспечивает быстрое понимание того, какие объекты были обнаружены.
show_confboolTrueОтображает показатель уверенности для каждого обнаружения рядом с меткой. Дает представление об уверенности модели в каждом обнаружении.
show_boxesboolTrueРисует ограничивающие рамки вокруг обнаруженных объектов. Необходимо для визуальной идентификации и определения местоположения объектов на изображениях или кадрах видео.
line_widthint or NoneNoneЗадает толщину линий ограничивающих рамок. Если None, толщина линий автоматически регулируется в зависимости от размера изображения. Обеспечивает визуальную настройку для ясности.

Руководство по предсказанию

Настройки валидации#

Настройки валидации для моделей YOLO включают гиперпараметры и конфигурации для оценки производительности на датасете валидации. Эти настройки влияют на производительность, скорость и точность. Распространенные настройки включают размер батча, частоту валидации и метрики производительности. Размер и состав датасета валидации, а также конкретная задача также влияют на процесс.

АргументТипПо умолчаниюОписание
datastrNoneЗадает путь к файлу конфигурации датасета (например, coco8.yaml). Этот файл должен содержать путь к данным валидации.
imgszint640Определяет размер входных изображений. Все изображения изменяются до этого размера перед обработкой. Большие размеры могут улучшить точность для маленьких объектов, но увеличивают время вычислений.
batchint16Устанавливает количество изображений на пакет. Более высокие значения более эффективно используют память GPU, но требуют больше VRAM. Регулируй в зависимости от имеющихся аппаратных ресурсов.
save_jsonboolFalseЕсли True, сохраняет результаты в файл JSON для дальнейшего анализа, интеграции с другими инструментами или отправки на сервера оценки, такие как COCO.
conffloat0.001Устанавливает минимальный порог уверенности для обнаружений. Меньшие значения увеличивают полноту (recall), но могут приводить к большему количеству ложноположительных результатов. Используется во время валидации для вычисления кривых точности-полноты (precision-recall). По умолчанию равен 0.01 для валидации OBB в целях снижения потребления памяти.
ioufloat0.7Устанавливает порог пересечения над объединением для немаксимального подавления. Управляет устранением дубликатов обнаружения.
max_detint300Ограничивает максимальное количество обнаружений на изображение. Полезно в плотных сценах для предотвращения чрезмерного количества обнаружений и управления вычислительными ресурсами.
quantizeint или strNoneТочность валидации: 16/"fp16" включает валидацию FP16 на поддерживаемых GPU; 32/"fp32"/не задано — это FP32. Квантование INT8/PTQ настраивается при экспорте, а затем используется путем валидации экспортированной модели. Заменяет устаревший флаг half.
devicestrNoneЗадает устройство для валидации (cpu, cuda:0, npu, npu:0 и т.д.). Когда None, автоматически выбирает лучшее из доступных устройств. Несколько устройств CUDA можно указать через запятую.
dnnboolFalseЕсли True, использует модуль DNN OpenCV для инференса моделей ONNX, предлагая альтернативу методам инференса PyTorch.
plotsboolTrueЕсли установлено значение True, генерирует и сохраняет графики предсказаний по сравнению с истинными данными (ground truth), матрицы ошибок и PR-кривые для визуальной оценки производительности модели.
classeslist[int]NoneУказывает список ID классов для оценки. Полезно для фильтрации и концентрации внимания только на определенных классах во время оценки.
rectboolTrueЕсли True, то используется прямоугольный вывод для батчинга, что уменьшает заполнение и потенциально повышает скорость и эффективность за счет обработки изображений в их исходном соотношении сторон. Игнорируется для валидации depth, которая растягивает каждое изображение до фиксированного квадрата imgsz вместо заполнения.
splitstr'val'Определяет сплит датасета для использования при валидации (val, test или train). Обеспечивает гибкость в выборе сегмента данных для оценки производительности.
projectstrNoneИмя директории проекта, куда сохраняются результаты валидации. Помогает упорядочить результаты разных экспериментов или моделей.
namestrNoneИмя прогона валидации. Используется для создания подпапки внутри папки проекта, где хранятся логи и результаты валидации.
verboseboolTrueЕсли True, отображает подробную информацию в процессе валидации, включая метрики по классам, прогресс батча и дополнительную отладочную информацию.
save_txtboolFalseЕсли True, сохраняет результаты обнаружения в текстовых файлах (по одному файлу на изображение), что полезно для дальнейшего анализа, пользовательской постобработки или интеграции с другими системами.
save_confboolFalseЕсли True, включает значения уверенности в сохраняемые текстовые файлы при включенном save_txt, обеспечивая более подробный вывод для анализа и фильтрации.
workersint8Количество рабочих потоков для загрузки данных. Более высокие значения могут ускорить предварительную обработку данных, но могут увеличить нагрузку на CPU. Установка значения 0 использует основной поток, что в некоторых средах может быть стабильнее.
augmentboolFalseВключает аугментацию во время тестирования (TTA) в процессе валидации, потенциально улучшая точность детекции ценой скорости вывода за счет запуска модели на трансформированных версиях входных данных.
agnostic_nmsboolFalseВключает классово-агностическое немаксимальное подавление, которое объединяет перекрывающиеся рамки независимо от их предсказанного класса. Полезно для приложений, ориентированных на экземпляры. Для сквозных моделей (YOLO26, YOLOv10) это предотвращает появление одного и того же обнаружения только с несколькими метками классов (дубликаты с IoU=1.0) и не выполняет подавление на основе порога IoU между разными рамками.
single_clsboolFalseВо время валидации рассматривает все классы как один единственный класс. Полезно для оценки производительности модели на задачах бинарной детекции или когда различия между классами не важны.
visualizeboolFalseВизуализирует ground truths, true positives, false positives и false negatives для каждого изображения. Полезно для отладки и интерпретации модели.
show_labelsboolTrueОтображает метки классов в визуализациях валидации при visualize=True. Установите False для более чистого просмотра совпадений и ошибок.
show_confboolTrueОтображает оценки уверенности в визуализациях валидации при visualize=True. Установите False для более чистого просмотра совпадений и ошибок.
compilebool или strFalseВключает компиляцию графа PyTorch 2.x torch.compile с помощью backend='inductor'. Принимает True"default", False → отключает или строковый режим, такой как "default", "reduce-overhead", "max-autotune-no-cudagraphs". При неподдерживаемости возвращается к жадному режиму (eager) с предупреждением.
channels_lastboolFalseИспользует формат памяти channels_last (NHWC) для свёрток во время валидации, ускоряя работу GPU с CUDA Tensor Core без изменения результатов. Применяется только к нативным моделям PyTorch; игнорируется для CPU, MPS и экспортированных форматов, таких как TensorRT и ONNX.
end2endboolNoneПереопределяет сквозной (end-to-end) режим в моделях YOLO, поддерживающих инференс без NMS (YOLO26, YOLOv10). Установка значения False позволяет запускать валидацию с использованием традиционного пайплайна NMS, а также дополнительно дает возможность использовать аргумент iou.

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

Руководство по валидации

Настройки экспорта#

Настройки экспорта для моделей YOLO включают конфигурации для сохранения или экспорта модели для использования в различных средах. Эти параметры влияют на производительность, размер и совместимость. Ключевые настройки включают формат выходного файла (например, ONNX, TensorFlow SavedModel), целевое устройство (например, CPU, GPU) и функции, такие как маски. Задача модели и ограничения целевой среды также влияют на процесс экспорта.

АргументТипПо умолчаниюОписание
formatstr'torchscript'Целевой формат для экспортированной модели, такой как 'onnx', 'torchscript', 'engine' (TensorRT) или другие. Каждый формат обеспечивает совместимость с различными средами развертывания.
imgszint или tuple640Желаемый размер изображения для входа модели. Может быть целым числом для квадратных изображений (например, 640 для 640×640) или кортежем (height, width) для конкретных размеров.
kerasboolFalseВключает экспорт в формат Keras для SavedModel TensorFlow, обеспечивая совместимость с сервировкой и API TensorFlow.
optimizeboolFalseВключает более высокую оптимизацию компилятора для DEEPX, сокращая задержку вывода при увеличении времени компиляции.
quantizeint или strNoneТочность квантования: 16 (FP16, уменьшает размер модели и может ускорить инференс на поддерживаемом оборудовании) или 8 (INT8/PTQ, дополнительно сжимает модель с минимальной потерь точности, в основном для периферийных устройств; требуется калибровка data/fraction); 32/не задано — это FP32. Форматы экспорта, поддерживающие смешанную точность весов и активаций, также принимают нотацию 'w8a8'/'w16a16'/'w8a16'/'w8a32'. Заменяет устаревшие флаги half/int8 (half=True16, int8=True8, все еще принимаются с предупреждением об устаревании). Допускаются только те точности, которые поддерживаются целевым форматом (см. ниже).
dynamicboolFalseРазрешает использование динамических размеров входных данных для экспорта в TorchScript, ONNX, OpenVINO, TensorRT и CoreML, повышая гибкость при обработке изображений разных размеров.
simplifyboolTrueУпрощает промежуточный граф ONNX с помощью onnxslim для тех экспортов, которые его строят (см. Форматы экспорта), потенциально повышая производительность и совместимость с движками инференса.
opsetintNoneЗадает версию опсета (opset) ONNX для экспортов, которые строят граф ONNX (см. Форматы экспорта), для совместимости с различными парсерами и рантаймами ONNX. Если не задано, используется последняя поддерживаемая версия.
workspacefloat или NoneNoneУстанавливает максимальный размер рабочего пространства в ГиБ для оптимизаций TensorRT, балансируя использование памяти и производительность. Используйте None для автоматического выделения ресурсов TensorRT вплоть до максимума устройства.
nmsboolFalseДобавляет немаксимальное подавление (NMS) к экспортированной модели, если это поддерживается (см. Форматы экспорта), повышая эффективность постобработки обнаружений. Недоступно для сквозных (end2end) моделей. Для CoreML поддерживается только для моделей обнаружения.
conffloatNoneПорог уверенности, используемый везде, где генерируется NMS во время экспорта: экспорты nms=True; несквозные экспорты детекции Hailo; а также экспорты детекции, позы и сегментации IMX, которые принудительно задают nms=True внутри. По умолчанию равен 0.25, если не задан, за исключением экспортов IMX, для которых по умолчанию используется 0.001.
ioufloat0.7Порог IoU, используемый везде, где генерируется NMS во время экспорта: экспорты nms=True; несквозные экспорты детекции Hailo; а также экспорты детекции, позы и сегментации IMX, которые принудительно задают nms=True внутри.
max_detint300Максимальное количество детектирований, сохраняемых в выводе экспортированной модели. Применимо к экспортам nms=True во всех форматах, кроме CoreML, чей пайплайн NMS не имеет ограничения на количество детектирований, а также к экспортам сквозной детекции без NMS (YOLO26, YOLOv10, с ограничением до числа доступных анкеров) и экспортам детекции, позы и сегментации IMX.
batchint1Задает размер батча инференса экспортированной модели или максимальное количество изображений, которое экспортированная модель будет обрабатывать одновременно в режиме predict. Для экспортов Edge TPU это значение автоматически устанавливается равным 1.
devicestrNoneЗадает устройство для экспорта: GPU (device=0), CPU (device=cpu), MPS для Apple silicon (device=mps), Huawei Ascend NPU (device=npu или device=npu:0) или DLA для NVIDIA Jetson (device=dla:0 или device=dla:1). Экспорты TensorRT автоматически используют GPU, но TensorRT 11.0 не поддерживает DLA.
datastrNoneПуть к файлу конфигурации датасета, необходимый для калибровки квантования INT8. Если не указан при включенном INT8, Ultralytics выбирает специализированный под задачу калибровочный датасет там, где это необходимо, или возвращается к датасету по умолчанию для задачи модели.
fractionfloat1.0Указывает часть датасета, которую нужно использовать для калибровки квантования INT8. Позволяет выполнять калибровку на подмножестве полного датасета, что полезно для экспериментов или при ограниченных ресурсах. Если не указано при включенном INT8, будет использован весь датасет.
end2endboolNoneПереопределяет сквозной (end-to-end) режим в моделях YOLO, поддерживающих инференс без NMS (YOLO26, YOLOv10). Установка значения False позволяет экспортировать эти модели так, чтобы они были совместимы с традиционным пайплайном постобработки на основе NMS. Подробности см. в руководстве по сквозному обнаружению.

Продуманная конфигурация гарантирует, что экспортированная модель оптимизирована для конкретного случая использования и эффективно функционирует в целевой среде.

Руководство по экспорту

Настройки решений#

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

АргументТипПо умолчаниюОписание
modelstrNoneПуть к файлу модели Ultralytics YOLO.
regionlist или dictNoneТочки, определяющие область интереса (ROI): либо список кортежей (x, y), либо словарь, сопоставляющий имена областей со списками точек для нескольких областей (только для RegionCounter). Когда None, решения, требующие наличия области, возвращаются к предопределенному значению по умолчанию.
show_inboolTrueФлаг для управления отображением входящих объектов в потоке видео.
show_outboolTrueФлаг для управления отображением выходящих объектов в потоке видео.
analytics_typestr'line'Тип графа, то есть line, bar, area или pie.
colormapintcv2.COLORMAP_DEEPGREENЦветовая карта для использования в тепловой карте.
json_filestrNoneПуть к JSON-файлу, который содержит все данные о координатах парковки.
up_anglefloat145.0Пороговый угол для позы «вверх».
kptslist[int]'[6, 8, 10]'Список из трех индексов ключевых точек, используемых для контроля тренировок. Эти ключевые точки соответствуют суставам или частям тела, таким как плечи, локти и запястья, для упражнений типа отжиманий, подтягиваний, приседаний и упражнений на пресс.
down_angleint90Пороговый угол для позы «вниз».
blur_ratiofloat0.5Регулирует процент интенсивности размытия со значениями в диапазоне 0.1 - 1.0.
crop_dirstr'cropped-detections'Имя директории для хранения обрезанных обнаружений.
recordsint5Общее количество обнаружений для запуска электронной почты с охранной сигнализацией.
vision_pointtuple[int, int](20, 20)Точка, где зрение будет отслеживать объекты и рисовать пути, используя решение VisionEye.
sourcestrNoneПуть к входному источнику (видео, RTSP и т. д.). Используется только с интерфейсом командной строки (CLI) решений.
figsizetuple[float, float](12.8, 7.2)Размер фигуры для аналитических графиков, таких как тепловые карты или графики.
fpsfloat30.0Количество кадров в секунду, используемое для расчетов скорости.
max_histint5Максимальное количество исторических точек для отслеживания объекта при расчетах скорости/направления.
meter_per_pixelfloat0.05Масштабирующий коэффициент, используемый для преобразования расстояния в пикселях в реальные единицы измерения.
max_speedint120Максимальное ограничение скорости в визуальных оверлеях (используется в оповещениях).
datastr'images'Путь к директории изображений, используемой для поиска по сходству.
imgszint640Размер входного изображения для вывода модели.

Руководство по решениям

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

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

АргументТипПо умолчаниюПоддерживаемые задачиДиапазонОписание
hsv_hfloat0.015detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Корректирует цветовой тон изображения на долю цветового круга, внося вариативность цветов. Помогает модели обобщать данные при различных условиях освещения.
hsv_sfloat0.7detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Изменяет насыщенность изображения на долю, влияя на интенсивность цветов. Полезно для симуляции различных условий окружающей среды.
hsv_vfloat0.4detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Модифицирует значение (яркость) изображения на долю, помогая модели хорошо работать при различных условиях освещения.
degreesfloat0detect, segment, semantic, depth, pose, obb0.0 - 180Случайно поворачивает изображение в заданном диапазоне градусов, улучшая способность модели распознавать объекты в различных ориентациях.
translatefloat0.1detect, segment, semantic, depth, pose, obb0.0 - 1.0Сдвигает изображение по горизонтали и вертикали на часть размера изображения, помогая учиться обнаруживать частично видимые объекты.
scalefloat0.5detect, segment, semantic, depth, classify, pose, obb0 - 1Масштабирует изображение с коэффициентом усиления, имитируя объекты на разном расстоянии от камеры.
shearfloat0detect, segment, semantic, depth, pose, obb-180 - +180Наклоняет изображение на заданный градус, имитируя эффект просмотра объектов под разными углами.
perspectivefloat0detect, segment, semantic, depth, pose, obb0.0 - 0.001Применяет случайное перспективное преобразование к изображению, улучшая способность модели понимать объекты в 3D-пространстве.
flipudfloat0detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Переворачивает изображение вверх ногами с заданной вероятностью, увеличивая вариативность данных, не затрагивая характеристики объекта.
fliplrfloat0.5detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Переворачивает изображение слева направо с заданной вероятностью, что полезно для изучения симметричных объектов и повышения разнообразия набора данных.
bgrfloat0detect, segment, semantic, depth, pose, obb0.0 - 1.0Меняет каналы изображения с RGB на BGR с заданной вероятностью, полезно для повышения устойчивости к неправильному порядку каналов.
mosaicfloat1detect, segment, semantic, pose, obb0.0 - 1.0Объединяет четыре изображения для обучения в одно, имитируя различные композиции сцен и взаимодействия объектов. Очень эффективно для понимания сложных сцен.
mixupfloat0detect, segment, semantic, 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Случайным образом стирает области изображения во время обучения, чтобы побудить модель фокусироваться на менее очевидных признаках.
augmentationslistNonedetect, segment, semantic, pose, obb-Пользовательские преобразования Albumentations для продвинутой аугментации данных (только через Python API). Принимает список объектов преобразования для специализированных задач аугментации.

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

Руководство по аугментации

Настройки логирования, чекпоинтов и построения графиков#

Логирование, чекпоинты, построение графиков и управление файлами важны при обучении модели YOLO:

  • Логирование: отслеживай прогресс модели и диагностируй проблемы с помощью таких библиотек, как TensorBoard, или записывая данные в файл.
  • Чекпоинты: Сохраняй модель через регулярные интервалы, чтобы возобновить обучение или поэкспериментировать с разными конфигурациями.
  • Построение графиков: Визуализируй производительность и прогресс обучения, используя библиотеки типа Matplotlib или TensorBoard.
  • Управление файлами: Организуй файлы, созданные во время обучения, такие как чекпоинты, лог-файлы и графики, для легкого доступа и анализа.

Эффективное управление этими аспектами помогает отслеживать прогресс и облегчает отладку и оптимизацию.

АргументПо умолчаниюОписание
projectNoneЗадает корневой каталог для сохранения запусков обучения. Если не указано, запуски сохраняются в директории runs/<task>. Каждый запуск сохраняется в отдельной поддиректории.
nameNoneОпределяет название эксперимента. Если не указано, YOLO использует название режима и увеличивает его номер для каждого запуска (например, train, train-2), чтобы избежать перезаписи.
exist_okFalseОпределяет, нужно ли перезаписывать существующую директорию эксперимента. True разрешает перезапись; False запрещает ее.
plotsTrueУправляет созданием и сохранением графиков обучения и валидации. Установи значение True, чтобы создавать такие графики, как кривые потерь, кривые precision-recall и примеры предсказаний для визуального отслеживания производительности.
saveTrueВключает сохранение контрольных точек обучения и финальных весов модели. Установи значение True, чтобы периодически сохранять состояния модели, что позволяет возобновлять обучение или развертывать модель.

Пользовательский конфигурационный файл#

Загрузи сохраненный YAML, чтобы повторно использовать полный набор аргументов без их передачи в командной строке. Аргумент cfg переопределяет значения из default.yaml, в то время как дополнительные аргументы, переданные вместе с ним, по-прежнему имеют приоритет.

АргументПо умолчаниюОписание
cfgNoneПуть к YAML-файлу, значения которого заменяют записи default.yaml. Пример для CLI см. в разделе Overriding Default Config File.

FAQ#

Как мне улучшить производительность моей модели YOLO во время обучения?#

Повысь производительность, настроив такие гиперпараметры, как batch size, learning rate, момент и затухание весов. Настрой параметры data augmentation, выбери подходящий оптимизатор и используй такие методы, как раннюю остановку (early stopping) или mixed precision. Подробности см. в Train Guide.

Каковы ключевые гиперпараметры для точности модели YOLO?#

Ключевые гиперпараметры, влияющие на точность, включают:

  • Размер пакета (batch): большие размеры могут стабилизировать обучение, но требуют больше памяти.
  • Скорость обучения (lr0): меньшие значения обеспечивают точную настройку, но более медленную сходимость.
  • Момент (momentum): ускоряет векторы градиента, сглаживая колебания.
  • Размер изображения (imgsz): большие размеры улучшают точность, но увеличивают вычислительную нагрузку.

Настрой эти параметры в зависимости от твоего датасета и оборудования. Узнай больше в разделе Train Settings.

Как задать скорость обучения для тренировки модели YOLO?#

Скорость обучения (lr0) имеет решающее значение; наччи с 0.01 для SGD или 0.001 для Adam optimizer. Отслеживай метрики и вноси изменения по мере необходимости. Используй планировщики скорости обучения на основе косинуса (cos_lr) или разогрев (warmup_epochs, warmup_momentum). Подробности приведены в Train Guide.

Каковы настройки вывода (инференса) по умолчанию для моделей YOLO?#

Настройки по умолчанию включают:

  • Порог уверенности (conf=0.25): минимальная уверенность для детекций.
  • Порог IoU (iou=0.7): для Non-Maximum Suppression (NMS).
  • Размер изображения (imgsz=640): изменяет размер входных изображений.
  • Устройство (device=None): выбирает CPU, GPU, Apple MPS или Huawei Ascend NPU (npu).

Полный обзор см. в разделах Predict Settings и Predict Guide.

Зачем использовать обучение со смешанной точностью (mixed precision) для моделей YOLO?#

Обучение в режиме Mixed precision (amp=True) снижает потребление памяти и ускоряет обучение за счет использования FP16 и FP32. Это полезно для современных GPU, позволяя использовать более крупные модели и выполнять вычисления быстрее без значительной потери точности. Узнай больше в Train Guide.

Комментарии