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

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



Watch: Mastering Ultralytics YOLO: Configuration

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

Пример
yolo TASK MODE ARGS

Где:

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

Default ARG values are defined on this page and come from the cfg/default.yaml file.

Задачи

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

  • Detect: Object detection (детектирование объектов) определяет и локализует объекты на изображении или видео.
  • Segment: Instance segmentation (сегментация экземпляров) разделяет изображение или видео на области, соответствующие разным объектам или классам.
  • Classify: Image classification (классификация изображений) предсказывает метку класса входного изображения.
  • Pose: Pose estimation (оценка позы) идентифицирует объекты и оценивает их ключевые точки на изображении или видео.
  • OBB: Oriented Bounding Boxes (ориентированные ограничивающие рамки) использует повернутые рамки, подходящие для спутниковых или медицинских снимков.
  • Semantic segmentation (semantic): Semantic segmentation (семантическая сегментация) присваивает метку класса каждому пикселю изображения для глубокого понимания сцены.
АргументПо умолчаниюОписание
task'detect'Задает задачу YOLO: detect для object detection, segment для сегментации экземпляров, classify для классификации, pose для оценки позы, obb для ориентированных ограничивающих рамок и semantic для семантической сегментации. Каждая задача адаптирована под специфические выходные данные и проблемы анализа изображений и видео.

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

Режимы

Модели 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 включают гиперпараметры и конфигурации, влияющие на производительность, скорость и точность модели. Ключевые параметры включают batch size, learning rate, моментум и weight decay. Выбор оптимизатора, loss function и состав набора данных также влияют на процесс обучения. Настройка и эксперименты критически важны для достижения оптимальной производительности. Для получения более подробной информации смотри функцию точки входа Ultralytics.

АргументТипПо умолчаниюОписание
modelstrNoneУказывает файл модели для обучения. Принимает путь либо к предобученной модели .pt, либо к файлу конфигурации .yaml. Необходимо для определения структуры модели или инициализации весов.
datastrNoneПуть к файлу конфигурации набора данных (например, coco8.yaml). Этот файл содержит специфические для набора данных параметры, включая пути к обучающим и validation data, названия классов и количество классов.
epochsint100Общее количество эпох обучения. Каждая epoch представляет собой полный проход по всему набору данных. Настройка этого значения может повлиять на продолжительность обучения и производительность модели.
timefloatNoneМаксимальное время обучения в часах. Если задано, этот параметр переопределяет аргумент epochs, позволяя обучению автоматически остановиться по истечении указанного времени. Полезно для сценариев обучения с ограничением по времени.
patienceint100Количество эпох, которое нужно подождать без улучшения метрик валидации перед тем, как досрочно остановить обучение. Помогает предотвратить overfitting, останавливая обучение, когда производительность перестает расти.
batchint или float16Batch size с тремя режимами: целое число (например, batch=16), автоматический режим для использования 60% памяти GPU (batch=-1) или автоматический режим с указанной долей использования (batch=0.70).
imgszint640Целевой размер изображения для обучения. Изображения изменяются до квадратных сторон, равных указанному значению (если rect=False), сохраняя соотношение сторон для моделей YOLO, но не для RT-DETR. Влияет на точность модели и вычислительную сложность.
saveboolTrueВключает сохранение чекпоинтов обучения и финальных весов модели. Полезно для возобновления обучения или model deployment.
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Использует косинусный планировщик learning rate, корректируя скорость обучения по косинусной кривой на протяжении эпох. Помогает управлять скоростью обучения для лучшей сходимости.
close_mosaicint10Отключает мозаичную data augmentation в последних N эпохах для стабилизации обучения перед завершением. Установка значения 0 отключает эту функцию.
resumeboolFalseВозобновляет обучение с последнего сохраненного чекпоинта. Автоматически загружает веса модели, состояние оптимизатора и счетчик эпох, продолжая обучение без сбоев.
ampboolTrueВключает обучение с автоматической Mixed Precision (AMP), уменьшая использование памяти и, возможно, ускоряя обучение с минимальным влиянием на точность.
fractionfloat1.0Указывает долю набора данных для обучения. Позволяет обучать модель на подмножестве полного набора данных, что полезно для экспериментов или при ограниченных ресурсах.
profileboolFalseВключает профилирование скорости ONNX и TensorRT во время обучения, что полезно для оптимизации развертывания модели.
freezeint или listNoneЗамораживает первые N слоев модели или указанные слои по индексу, уменьшая количество обучаемых параметров. Полезно для дообучения или transfer learning.
lr0float0.01Начальная скорость обучения (т.е. SGD=1E-2, Adam=1E-3). Корректировка этого значения критически важна для процесса оптимизации, так как она влияет на скорость обновления весов модели.
lrffloat0.01Конечная скорость обучения как доля от начальной = (lr0 * lrf), используется совместно с планировщиками для коррекции скорости обучения с течением времени.
momentumfloat0.937Коэффициент импульса (momentum) для SGD или beta1 для Adam optimizers, влияющий на учет прошлых градиентов при текущем обновлении.
weight_decayfloat0.0005L2 regularization член, штрафующий большие веса для предотвращения переобучения.
warmup_epochsfloat3.0Количество эпох для «разогрева» скорости обучения, постепенно увеличивающее её от малого значения до начальной скорости для стабилизации обучения на раннем этапе.
warmup_momentumfloat0.8Начальный импульс для фазы разогрева, постепенно подстраивающийся до установленного значения в течение периода разогрева.
warmup_bias_lrfloat0.1Скорость обучения для параметров смещения (bias) во время фазы разогрева, помогающая стабилизировать обучение модели в начальные эпохи.
boxfloat7.5Вес компонента потерь bbox в loss function, влияющий на то, насколько сильно учитывается точность предсказания координат bounding box.
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.

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

Настройки прогнозирования

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

Аргументы вывода:

АргументТипПо умолчаниюОписание
sourcestr или int или NoneNoneУказывает источник данных для вывода. Это может быть путь к изображению, видеофайл, директория, URL или идентификатор устройства для прямых трансляций. Если пропущено, будет записано предупреждение, и модель переключится на встроенные демонстрационные ресурсы (ultralytics/assets или демонстрационный URL для OBB). Поддерживает широкий спектр форматов и источников, что обеспечивает гибкое применение для разных типов ввода.
conffloat0.25Устанавливает минимальный порог уверенности для обнаружений. Объекты, обнаруженные с уверенностью ниже этого порога, будут отброшены. Корректировка этого значения может помочь уменьшить количество ложноположительных срабатываний.
ioufloat0.7Порог Intersection Over Union (IoU) для Non-Maximum Suppression (NMS). Меньшие значения приводят к меньшему количеству обнаружений за счет исключения перекрывающихся прямоугольников, что полезно для сокращения дубликатов.
imgszint или tuple640Цель для letterbox. Целое число дает квадрат N×N; кортеж дает (height, width). При rect=True фактический тензор может быть меньше этой цели из-за заполнения до минимального прямоугольника. Используй rect=False для фиксированного размера. См. Fixed shape vs minimum rectangle.
rectboolTrueЕсли True, используй заполнение до минимального прямоугольника, когда это возможно (батч одной формы и поддерживаемый бэкенд). Если False, всегда дополняй до полного imgsz. См. Fixed shape vs minimum rectangle.
halfboolFalseВключает инференс с половинной точностью (FP16), что позволяет ускорить выполнение модели на поддерживаемых GPU при минимальном влиянии на точность.
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Активирует визуализацию признаков модели во время инференса, давая представление о том, что "видит" модель. Полезно для отладки и интерпретации работы модели.
augmentboolFalseВключает TTA (test-time augmentation) для предсказаний, что потенциально повышает надежность обнаружения ценой скорости инференса.
agnostic_nmsboolFalseВключает NMS (Non-Maximum Suppression), не зависящий от класса, который объединяет перекрывающиеся боксы разных классов. Полезно в сценариях многоклассового обнаружения, где часто встречается перекрытие классов. Для end-to-end моделей (YOLO26, YOLOv10) это лишь предотвращает появление одного и того же обнаружения с несколькими метками классов (дубликаты IoU=1.0) и не выполняет подавление на основе порога IoU между различными боксами.
classeslist[int]NoneФильтрует предсказания по списку ID классов. Будут возвращены только те обнаружения, которые относятся к указанным классам. Полезно для фокусировки на нужных объектах в задачах многоклассового обнаружения.
retina_masksboolFalseВозвращает маски сегментации высокого разрешения. Возвращаемые маски (masks.data) будут соответствовать исходному размеру изображения, если опция включена. Если отключена, они будут иметь размер изображения, использованный во время инференса.
embedlist[int]NoneУказывает слои, из которых нужно извлечь векторы признаков или эмбеддинги. Полезно для последующих задач, таких как кластеризация или поиск сходства.
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-режиму с предупреждением.
end2endboolNoneПереопределяет режим end-to-end в моделях YOLO, поддерживающих инференс без NMS (YOLO26, YOLOv10). Установка в False позволяет запустить предсказание с использованием традиционного конвейера NMS, дополнительно позволяя использовать аргумент iou. Подробности см. в руководстве по End-to-End обнаружению.

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

АргументТипПо умолчаниюОписание
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Рисует ограничивающие рамки (bounding boxes) вокруг обнаруженных объектов. Необходимо для визуальной идентификации и расположения объектов на изображениях или кадрах видео.
line_widthint or NoneNoneЗадает толщину линий ограничивающих рамок. Если None, толщина линии автоматически корректируется в зависимости от размера изображения. Обеспечивает визуальную настройку для ясности.

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

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

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

АргументТипПо умолчаниюОписание
datastrNoneУказывает путь к файлу конфигурации набора данных (например, coco8.yaml). Этот файл должен содержать путь к валидационным данным.
imgszint640Определяет размер входных изображений. Все изображения перед обработкой масштабируются до этого размера. Большие размеры могут улучшить точность для мелких объектов, но увеличивают время вычислений.
batchint16Устанавливает количество изображений в батче. Более высокие значения эффективнее используют память GPU, но требуют больше VRAM. Настраивай в зависимости от доступных аппаратных ресурсов.
save_jsonboolFalseЕсли True, сохраняет результаты в JSON-файл для дальнейшего анализа, интеграции с другими инструментами или отправки на серверы оценки, такие как COCO.
conffloat0.001Устанавливает минимальный порог уверенности для обнаружений. Более низкие значения увеличивают полноту, но могут привести к увеличению ложноположительных срабатываний. Используется во время валидации для вычисления кривых precision-recall.
ioufloat0.7Устанавливает порог Intersection Over Union для Non-Maximum Suppression. Управляет устранением дубликатов обнаружений.
max_detint300Ограничивает максимальное количество обнаружений на одно изображение. Полезно в сценах с высокой плотностью для предотвращения чрезмерного количества обнаружений и управления вычислительными ресурсами.
halfboolFalseВключает вычисления с половинной точностью (FP16), сокращая использование памяти и потенциально увеличивая скорость с минимальным влиянием на точность.
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, использует прямоугольный инференс для пакетной обработки, уменьшая дополнение (padding) и потенциально повышая скорость и эффективность за счет обработки изображений с их исходным соотношением сторон.
splitstr'val'Определяет сплит набора данных для валидации (val, test или train). Обеспечивает гибкость при выборе сегмента данных для оценки производительности.
projectstrNoneИмя папки проекта, куда сохраняются результаты валидации. Помогает упорядочить результаты различных экспериментов или моделей.
namestrNoneИмя запуска валидации. Используется для создания подпапки внутри папки проекта, где сохраняются логи и результаты валидации.
verboseboolTrueЕсли True, отображает подробную информацию во время процесса валидации, включая метрики по классам, прогресс по батчам и дополнительную отладочную информацию.
save_txtboolFalseЕсли True, сохраняет результаты обнаружения в текстовых файлах, по одному файлу на изображение, что полезно для дальнейшего анализа, пользовательской постобработки или интеграции с другими системами.
save_confboolFalseЕсли True, включает значения уверенности в сохраненные текстовые файлы, когда включена опция save_txt, предоставляя более подробный вывод для анализа и фильтрации.
workersint8Количество рабочих потоков для загрузки данных. Более высокие значения могут ускорить предварительную обработку данных, но могут увеличить нагрузку на CPU. Установка в 0 использует основной поток, что в некоторых средах может быть более стабильным.
augmentboolFalseВключает TTA во время валидации, потенциально улучшая точность обнаружения ценой скорости инференса за счет запуска инференса на преобразованных версиях входных данных.
agnostic_nmsboolFalseВключает классово-независимый Non-Maximum Suppression, который объединяет перекрывающиеся боксы независимо от их предсказанного класса. Полезно для приложений, ориентированных на экземпляры объектов. Для end-to-end моделей (YOLO26, YOLOv10) это лишь предотвращает появление одного и того же обнаружения с несколькими метками классов (дубликаты IoU=1.0) и не выполняет подавление на основе порога IoU между различными боксами.
single_clsboolFalseРассматривает все классы как один единственный класс во время валидации. Полезно для оценки производительности модели в задачах бинарного обнаружения или когда различия между классами не важны.
visualizeboolFalseВизуализирует ground truth, true positives, false positives и false negatives для каждого изображения. Полезно для отладки и интерпретации работы модели.
compilebool или strFalseВключает компиляцию графа PyTorch 2.x torch.compile с использованием backend='inductor'. Принимает True"default", False → отключает, или строковый режим, например "default", "reduce-overhead", "max-autotune-no-cudagraphs". При поддержке возвращается к eager-режиму с предупреждением.
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 для TensorFlow SavedModel, обеспечивая совместимость с TensorFlow serving и API.
optimizeboolFalseПрименяет оптимизацию для мобильных устройств при экспорте в TorchScript, потенциально уменьшая размер модели и улучшая производительность инференса. Несовместимо с форматом NCNN или устройствами CUDA. Для DeepX включает более высокую оптимизацию компилятора, что уменьшает задержку инференса, но увеличивает время компиляции.
halfboolFalseВключает квантование FP16 (половинная точность), уменьшая размер модели и потенциально ускоряя инференс на поддерживаемом оборудовании. Несовместимо с квантованием INT8 или экспортом только для CPU. Доступно только для определенных форматов, например, ONNX (см. ниже).
int8boolFalseАктивирует квантование INT8, дополнительно сжимая модель и ускоряя инференс с минимальной потерей точности, в первую очередь для периферийных устройств. При использовании с TensorRT выполняет пост-тренировочное квантование (PTQ).
dynamicboolFalseПозволяет использовать динамические размеры входных данных для экспорта в TorchScript, ONNX, OpenVINO, TensorRT и CoreML, повышая гибкость при обработке изображений с различными размерами. Автоматически устанавливается в True при использовании TensorRT с INT8.
simplifyboolTrueУпрощает граф модели для экспорта в ONNX с помощью onnxslim, что потенциально повышает производительность и совместимость с механизмами инференса.
opsetintNoneЗадает версию ONNX opset для обеспечения совместимости с различными ONNX парсерами и средами выполнения. Если не задано, используется последняя поддерживаемая версия.
workspacefloat или NoneNoneУстанавливает максимальный размер рабочего пространства в ГБ для оптимизаций TensorRT, балансируя использование памяти и производительность. Используй None для автоматического выделения ресурсов TensorRT до максимума устройства.
nmsboolFalseДобавляет Non-Maximum Suppression (NMS) к экспортированной модели, если это поддерживается (см. Форматы экспорта), повышая эффективность постобработки обнаружения. Недоступно для end2end моделей.
batchint1Задает размер пакетного инференса (batch inference) экспортированной модели или максимальное количество изображений, которые модель будет обрабатывать одновременно в режиме 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.
datastr'coco8.yaml'Путь к файлу конфигурации датасета, необходимому для калибровки квантования INT8. Если не указано при включенном INT8, coco8.yaml будет использоваться в качестве резервного варианта для калибровки.
fractionfloat1.0Указывает долю датасета для использования при калибровке квантования INT8. Позволяет проводить калибровку на подмножестве полного датасета, что полезно для экспериментов или при ограниченных ресурсах. Если не указано при включенном INT8, будет использован полный датасет.
end2endboolNoneПереопределяет режим end-to-end в моделях YOLO, поддерживающих инференс без NMS (YOLO26, YOLOv10). Установка значения False позволяет экспортировать эти модели для совместимости с традиционным конвейером постобработки на основе NMS. Подробности см. в руководстве End-to-End Detection.

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

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

Настройки решений (Solutions Settings)

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

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

Руководство по Solutions

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

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

АргументТипПо умолчаниюПоддерживаемые задачиДиапазонОписание
hsv_hfloat0.015detect, segment, pose, obb, classify0.0 - 1.0Корректирует оттенок (hue) изображения на долю цветового круга, вводя вариативность цвета. Помогает модели обобщать данные при различных условиях освещения.
hsv_sfloat0.7detect, segment, pose, obb, classify0.0 - 1.0Изменяет насыщенность (saturation) изображения на долю, влияя на интенсивность цветов. Полезно для симуляции различных условий окружающей среды.
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). Принимает список объектов преобразований для специализированных нужд аугментации.

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

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

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

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

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

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

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

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

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

АргументПо умолчаниюОписание
cfgNoneПуть к файлу YAML, значения которого заменяют записи default.yaml. Смотри Переопределение файла конфигурации по умолчанию для примера работы в CLI.

Часто задаваемые вопросы (FAQ)

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

Улучшай производительность, настраивая гиперпараметры, такие как batch size, learning rate, momentum и weight decay. Регулируй настройки data augmentation, выбирай подходящий оптимизатор и используй методы, такие как ранняя остановка или mixed precision. Подробности смотри в Руководстве по обучению.

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

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

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

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

Как задать learning rate для обучения модели YOLO?

Learning rate (lr0) критически важен; начни с 0.01 для SGD или 0.001 для оптимизатора Adam. Контролируй метрики и при необходимости вноси корректировки. Используй планировщики косинусного learning rate (cos_lr) или warmup (warmup_epochs, warmup_momentum). Подробности находятся в Руководстве по обучению.

Каковы стандартные настройки инференса для моделей YOLO?

Стандартные настройки включают:

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

Полный обзор смотри в Настройках предсказания и Руководстве по предсказанию.

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

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

Комментарии