Конфигурация#
Настройки и гиперпараметры 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 могут выполнять различные задачи компьютерного зрения, включая:
- Detect: Обнаружение объектов идентифицирует и локализует объекты на изображении или видео.
- Segment: Сегментация экземпляров делит изображение или видео на области, соответствующие различным объектам или классам.
- Семантическая сегментация (
semantic): Семантическая сегментация присваивает метку класса каждому пикселю на изображении для детального понимания сцены. - Глубина (
depth): Монокулярное оценивание глубины прогнозирует карту глубины в метрах для каждого пикселя по одному RGB-изображению. - Classify: Классификация изображений предсказывает метку класса входного изображения.
- Pose: Оценка позы идентифицирует объекты и оценивает их ключевые точки на изображении или видео.
- OBB: Ориентированные ограничивающие рамки используют повернутые ограничивающие рамки, что подходит для спутниковых или медицинских снимков.
| Аргумент | По умолчанию | Описание |
|---|---|---|
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.
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
model | str | None | Задает файл модели для обучения. Принимает путь либо к предобученной модели .pt, либо к файлу конфигурации .yaml. Это необходимо для определения структуры модели или инициализации весов. |
data | str | None | Путь к файлу конфигурации датасета (например, coco8.yaml). Этот файл содержит параметры, специфичные для датасета, включая пути к обучающим и валидационным данным, имена классов и количество классов. |
epochs | int | 100 | Общее количество эпох обучения. Каждая эпоха представляет собой один полный проход по всему датасету. Изменение этого значения может повлиять на продолжительность обучения и производительность модели. |
time | float | None | Максимальное время обучения в часах. Если задано, этот аргумент переопределяет аргумент epochs, позволяя обучению автоматически остановиться по истечении указанного времени. Полезно для сценариев обучения с ограничениями по времени. |
patience | int | 100 | Количество эпох ожидания без улучшения метрик валидации перед ранней остановкой обучения. Помогает предотвратить переобучение, останавливая обучение при плато производительности. |
batch | int или float | 16 | Размер батча с тремя режимами: задается как целое число (например, batch=16), авторежим для использования 60% памяти GPU (batch=-1) или авторежим с указанной долей использования (batch=0.70). |
imgsz | int | 640 | Целевой размер изображения для обучения. Изображения изменяются до квадратов со сторонами, равными указанному значению (если rect=False), сохраняя соотношение сторон для моделей YOLO, но не для RT-DETR. Влияет на точность модели и вычислительную сложность. |
save | bool | True | Включает сохранение контрольных точек обучения и финальных весов модели. Полезно для возобновления обучения или развертывания модели. |
save_period | int | -1 | Периодичность сохранения контрольных точек модели в эпохах. Значение -1 отключает эту функцию. Полезно для сохранения промежуточных моделей во время длительных сеансов обучения. |
cache | bool | False | Включает кэширование изображений датасета в памяти (True/ram), на диске (disk) или отключает его (False). Повышает скорость обучения за счет сокращения дискового ввода-вывода ценой увеличения использования памяти. |
device | int, str или list | None | Задает вычислительное устройство(-ва) для обучения: один GPU (device=0), несколько GPU (device=[0,1]), CPU (device=cpu), MPS для Apple silicon (device=mps), Huawei Ascend NPU (device=npu:0 или device=npu:0,1), либо автоматический выбор простаивающего 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. Полезно для итеративных экспериментов без необходимости вручную очищать предыдущие результаты. |
save_dir | str | None | Задает точную директорию для сохранения результатов запуска, переопределяя комбинацию project/name. Путь используется как есть без автоинкремента, поэтому последовательные запуски используют ту же директорию. |
pretrained | bool или str | True | Определяет, начинать ли обучение с предобученных весов. Может быть булевым значением или строковым путем к загружаемым весам. pretrained=False выполняет обучение со случайным образом инициализированными весами с сохранением архитектуры модели. |
cls_remap | bool | True | При дообучении на разных наборах данных копирует строки предобученной головы классификации в новую модель везде, где названия классов совпадают, поэтому пересекающиеся классы сохраняют свое изученное смещение, а также свои веса, если ширина головы не изменилась. Применяется независимо от того, отличаются ли количества классов или совпадают при другом порядке классов. |
optimizer | str | 'auto' | Выбор оптимизатора для обучения. Варианты включают SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp или auto для автоматического выбора на основе конфигурации модели. Влияет на скорость сходимости и стабильность. |
seed | int | 0 | Устанавливает случайное зерно (seed) для обучения, обеспечивая воспроизводимость результатов между запусками с одинаковыми конфигурациями. |
deterministic | bool | True | Принудительно использует детерминированный алгоритм, обеспечивая воспроизводимость, но это может повлиять на производительность и скорость из-за ограничений на недетерминированные алгоритмы. |
verbose | bool | True | Включает подробный вывод данных во время обучения, отображая индикаторы выполнения, метрики для каждой эпохи и дополнительную информацию об обучении в консоли. |
single_cls | bool | False | Рассматривает все классы в многоклассовых наборах данных как один класс во время обучения. Полезно для задач бинарной классификации или когда ты фокусируешься на наличии объекта, а не на его классификации. |
classes | list[int] | None | Задает список ID классов для обучения. Полезно для фильтрации и фокусировки только на определенных классах во время обучения. |
rect | bool | False | Включает минимальную стратегию отступов (padding) — изображения в батче дополняются до общего размера минимальным образом, причем самая длинная сторона равна imgsz. Может повысить эффективность и скорость, но способно повлиять на точность модели. |
multi_scale | float | 0.0 | Случайное изменение imgsz для каждого батча на +/- multi_scale (например, 0.25 -> от 0.75x до 1.25x), с округлением до кратных шагу модели; 0.0 отключает многомасштабное обучение. |
cos_lr | bool | False | Использует планировщик скорости обучения на основе косинуса, регулируя скорость обучения по косинусному кривой в течение эпох. Помогает управлять скоростью обучения для лучшей сходимости. |
close_mosaic | int | 10 | Отключает мозаичную аугментацию данных в последние N эпох для стабилизации обучения перед завершением. Установка значения 0 отключает эту функцию. |
resume | bool | False | Возобновляет обучение с последней сохраненной контрольной точки. Автоматически загружает веса модели, состояние оптимизатора и счетчик эпох, продолжая обучение без сбоев. |
amp | bool | True | Включает обучение с автоматической смешанной точностью (AMP), снижая использование памяти и возможно ускоряя обучение с минимальным влиянием на точность. |
fraction | float | 1.0 | Указывает долю набора данных для использования при обучении. Позволяет обучать на подмножестве полного набора данных, что полезно для экспериментов или при ограниченных ресурсах. |
profile | bool | False | Включает профилирование скорости ONNX и TensorRT во время обучения, полезно для оптимизации развертывания модели. |
freeze | int или list | None | Замораживает первые N слоев модели или указанные слои по индексу, уменьшая количество обучаемых параметров. Полезно для дообучения или трансферного обучения. |
lr0 | float | 0.01 | Начальная скорость обучения (т.е. SGD=1E-2, Adam=1E-3). Регулировка этого значения имеет решающее значение для процесса оптимизации, влияя на то, как быстро обновляются веса модели. |
lrf | float | 0.01 | Финальная скорость обучения как доля от начальной скорости = (lr0 * lrf), используется в сочетании с планировщиками для изменения скорости обучения со временем. |
momentum | float | 0.937 | Коэффициент моментума для SGD или beta1 для оптимизаторов Adam, влияющий на учет прошлых градиентов при текущем обновлении. |
weight_decay | float | 0.0005 | Член L2-регуляризации, наказывающий за большие веса для предотвращения переобучения. |
warmup_epochs | float | 3.0 | Количество эпох для разогрева (warmup) скорости обучения, постепенно увеличивающее ее от малого значения до начального для ранней стабилизации обучения. |
warmup_momentum | float | 0.8 | Начальный импульс для фазы разогрева, постепенно корректирующийся до установленного значения в течение периода разогрева. |
warmup_bias_lr | float | 0.1 | Скорость обучения для параметров смещения (bias) во время фазы разогрева, помогающая стабилизировать обучение модели в начальные эпохи. |
distill_model | str | None | Путь к контрольной точке модели-учителя (например, yolo26x.pt) для дистилляции знаний. Если задано, модель-ученик обучается с дополнительной потерей дистилляции под руководством замороженного учителя. |
dis | float | 6.0 | Вес функции потерь дистилляции, добавляемой к стандартным потерям детекции. Более высокие значения увеличивают влияние направляющих признаков учителя. |
box | float | 7.5 | Вес компонента потерь рамок в функции потерь, влияющий на то, какое внимание уделяется точному прогнозированию координат ограничивающей рамки. |
cls | float | 0.5 | Вес потерь классификации в общей функции потерь, влияющий на важность правильного предсказания класса по отношению к другим компонентам. |
cls_pw | float | 0.0 | Степень взвешивания классов для борьбы с дисбалансом классов с использованием обратной частоты классов. 0.0 отключает взвешивание классов, 1.0 применяет полное взвешивание по обратной частоте. Значения от 0 до 1 обеспечивают частичное взвешивание. |
dfl | float | 1.5 | Вес функции потерь distribution focal loss (DFL) — компонента локализации bounding box, который регрессирует расстояния до границ рамки. |
pose | float | 12.0 | Вес потерь позы в моделях для оценки позы, влияющий на акцент при точном прогнозировании ключевых точек позы. |
kobj | float | 1.0 | Вес потерь объектности ключевых точек в моделях оценки позы, балансирующий уверенность обнаружения с точностью позы. |
rle | float | 1.0 | Вес потерь остаточной оценки логарифмического правдоподобия в моделях оценки позы, влияющий на точность локализации ключевых точек. |
angle | float | 1.0 | Вес потерь угла в моделях obb, влияющий на точность предсказаний угла ориентированного ограничивающего прямоугольника. |
dlog | float | 1.0 | Вес масштабно-инвариантной логарифмической (SILog) функции потерь в моделях оценки глубины, основной фактор, определяющий точность глубины. |
dgrad | float | 0.5 | Вес градиентных потерь в моделях оценки глубины, штрафующий за ошибки на границах глубин и стимулирующий более резкие границы поверхностей. |
dlam | float | 1.0 | Фактор фокусировки дисперсии потерь SILog в моделях оценки глубины. 1.0 делает потери полностью инвариантными к масштабу, в то время как 0.0 сводит их к обычному log-RMSE. |
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) с предупреждением. |
channels_last | bool | False | Использует формат памяти channels_last (NHWC) для сверток во время обучения, ускоряя работу GPU с CUDA Tensor Core без изменения результатов. Автоматически игнорируется на CPU и MPS, где он не дает преимуществ. |
max_det | int | 300 | Указывает максимальное количество объектов, сохраняемых во время фазы валидации обучения. |
Аргумент batch предлагает три варианта конфигурации:
- Фиксированный размер батча: Укажите количество изображений в батче целым числом (например,
batch=16). - Авторежим (60% памяти GPU): Используйте
batch=-1для автоматической настройки примерно до 60% использования памяти CUDA. - Авторежим с долей использования: Установите дробное значение (например,
batch=0.70) для настройки на основе указанного объема использования памяти GPU.
Настройки предсказания#
Настройки предсказания для моделей YOLO включают гиперпараметры и конфигурации, влияющие на производительность, скорость и точность во время инференса. К ключевым настройкам относятся порог уверенности, порог немаксимального подавления (NMS) и количество классов. Размер входных данных, формат и дополнительные функции, такие как маски, также влияют на предсказания. Настройка этих параметров важна для оптимальной производительности.
Аргументы инференса:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
source | str, int или None | None | Задает источник данных для инференса. Может быть путем к изображению, видеофайлу, директорией, URL-адресом или ID устройства для прямых трансляций. Если опущено, записывается предупреждение, и модель переключается на встроенные демо-ресурсы (ultralytics/assets или демо-URL для OBB). Поддерживает широкий спектр форматов и источников, обеспечивая гибкое применение для различных типов входных данных. |
conf | float | 0.25 | Устанавливает минимальный порог уверенности для обнаружений. Объекты, обнаруженные с уверенностью ниже этого порога, будут игнорироваться. Настройка этого значения может помочь снизить количество ложноположительных результатов. |
iou | float | 0.7 | Порог пересечения над объединением (IoU) для немаксимального подавления (NMS). Меньшие значения приводят к меньшему количеству детектирований за счет устранения перекрывающихся рамок, что полезно для сокращения дубликатов. |
imgsz | int или tuple | 640 | Цель letterbox. Целое число дает квадратный N×N; кортеж дает (height, width). При rect=True фактический тензор может быть меньше этой цели из-за отступов минимального прямоугольника. Используйте rect=False для фиксированного размера. См. Фиксированная форма против минимального прямоугольника. |
rect | bool | True | Если True, используйте отступы минимального прямоугольника, когда это возможно (батч одинаковой формы и поддерживаемый бэкенд). Если False, всегда дополняйте до полного imgsz. См. Фиксированная форма против минимального прямоугольника. |
quantize | int или str | None | Точность инференса: 16/"fp16" включает инференс FP16 на поддерживаемых GPU; 32/"fp32"/не задано — это FP32. Квантование INT8/PTQ настраивается при экспорте, а затем используется путем загрузки экспортированной модели. Заменяет устаревший флаг half. |
device | str | None | Задает устройство для инференса (например, cpu, cuda:0, 0, npu или npu:0). Позволяет пользователям выбирать между CPU, конкретным GPU, Huawei Ascend NPU или другими вычислительными устройствами для выполнения модели. |
batch | int | 1 | Задает размер батча для инференса (работает только тогда, когда источником является директория, видеофайл или файл .txt). Больший размер батча может обеспечить более высокую пропускную способность, сокращая общее время, необходимое для инференса. |
max_det | int | 300 | Максимальное количество разрешенных обнаружений на изображение. Ограничивает общее количество объектов, которые модель может обнаружить за один инференс, предотвращая чрезмерные выходы в плотных сценах. |
vid_stride | int | 1 | Шаг кадров для видеовходов. Позволяет пропускать кадры в видео для ускорения обработки за счет временного разрешения. Значение 1 обрабатывает каждый кадр, большие значения пропускают кадры. |
stream_buffer | bool | False | Определяет, ставить ли входящие кадры в очередь для видеопотоков. Если False, старые кадры отбрасываются в пользу новых (оптимизировано для приложений реального времени). Если True, новые кадры помещаются в буфер, гарантируя отсутствие пропущенных кадров, но вызывая задержку, если FPS инференса ниже FPS потока. |
visualize | bool | False | Сохраняет карту активации классов рядом с каждым предсказанием, показывая, какие пиксели повысили оценки предсказанного класса. Учитывает conf и classes, поэтому classes=[0] сопоставляет только этот класс. Доступно только для моделей PyTorch. |
augment | bool | False | Включает аугментацию во время тестирования (TTA) для предсказаний, что потенциально повышает надежность обнаружения за счет скорости инференса. |
agnostic_nms | bool | False | Включает классово-агностическое немаксимальное подавление (NMS), которое объединяет перекрывающиеся рамки разных классов. Полезно в сценариях многоклассового обнаружения, где часто встречается пересечение классов. Для end-to-end моделей (YOLO26, YOLOv10) это предотвращает появление одного и того же обнаружения с несколькими метками классов (дубликаты IoU=1.0) и не выполняет подавление на основе порога IoU между отдельными рамками. |
classes | list[int] | None | Фильтрует предсказания по набору ID классов. Будут возвращены только обнаружения, принадлежащие указанным классам. Полезно для фокусировки на релевантных объектах в задачах многоклассового обнаружения. |
retina_masks | bool | False | Возвращает маски сегментации высокого разрешения. Возвращаемые маски (masks.data) будут соответствовать исходному размеру изображения, если эта функция включена. Если отключена, они будут иметь размер изображения, использовавшийся при инференсе. |
embed | list[int] | None | Задает слои, из которых извлекаются векторы признаков или эмбеддинги. Используйте model.embed(source) для эмбеддингов предпоследнего слоя или model.predict(source, embed=[layer]) для выбора конкретных слоев. Полезно для последующих задач, таких как кластеризация или поиск сходства. |
project | str | None | Имя директории проекта, в которой сохраняются результаты предсказаний, если включен параметр save. |
name | str | None | Имя запуска предсказания. Используется для создания поддиректории внутри папки проекта, где хранятся результаты предсказаний, если включен параметр save. |
stream | bool | False | Включает эффективную с точки зрения памяти обработку для длинных видео или многочисленных изображений, возвращая генератор объектов Results вместо загрузки всех кадров в память одновременно. |
verbose | bool | True | Контролирует отображение подробных логов инференса в терминале, предоставляя обратную связь о процессе предсказания в режиме реального времени. |
compile | bool или str | False | Включает компиляцию графа PyTorch 2.x torch.compile с помощью backend='inductor'. Принимает True → "default", False → отключает или строковый режим, такой как "default", "reduce-overhead", "max-autotune-no-cudagraphs". При неподдерживаемости возвращается к жадному режиму (eager) с предупреждением. |
channels_last | bool | False | Использует формат памяти channels_last (NHWC) для сверток во время инференса, ускоряя работу GPU с CUDA Tensor Core без изменения результатов. Применяется только к нативным моделям PyTorch; игнорируется для CPU, MPS и экспортированных форматов, таких как TensorRT и ONNX. |
end2end | bool | None | Переопределяет сквозной (end-to-end) режим в моделях YOLO, поддерживающих инференс без NMS (YOLO26, YOLOv10). Установка значения False позволяет запускать предсказание с использованием традиционного пайплайна NMS, а также дополнительно дает возможность использовать аргумент iou. Подробности см. в руководстве по сквозному обнаружению. |
Аргументы визуализации:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
show | bool | False | Если True, отображает аннотированные изображения или видео в окне. Полезно для немедленной визуальной обратной связи во время разработки или тестирования. |
save | bool | False or True | Включает сохранение аннотированных изображений или видео в файлы. Полезно для документации, дальнейшего анализа или обмена результатами. По умолчанию True при использовании CLI и False при использовании в Python. |
save_frames | bool | False | При обработке видео сохраняет отдельные кадры как изображения. Полезно для извлечения конкретных кадров или детального анализа по кадрам. |
save_txt | bool | False | Сохраняет результаты обнаружения в текстовом файле в формате [class] [x_center] [y_center] [width] [height] [confidence]. Полезно для интеграции с другими инструментами анализа. |
save_conf | bool | False | Включает оценки уверенности в сохраненных текстовых файлах. Увеличивает детализацию, доступную для постобработки и анализа. |
save_crop | bool | False | Сохраняет обрезанные изображения обнаружений. Полезно для аугментации данных, анализа или создания сфокусированных наборов данных для конкретных объектов. |
show_labels | bool | True | Отображает метки для каждого обнаружения в визуальном выводе. Обеспечивает быстрое понимание того, какие объекты были обнаружены. |
show_conf | bool | True | Отображает показатель уверенности для каждого обнаружения рядом с меткой. Дает представление об уверенности модели в каждом обнаружении. |
show_boxes | bool | True | Рисует ограничивающие рамки вокруг обнаруженных объектов. Необходимо для визуальной идентификации и определения местоположения объектов на изображениях или кадрах видео. |
line_width | int or None | None | Задает толщину линий ограничивающих рамок. Если None, толщина линий автоматически регулируется в зависимости от размера изображения. Обеспечивает визуальную настройку для ясности. |
Настройки валидации#
Настройки валидации для моделей YOLO включают гиперпараметры и конфигурации для оценки производительности на датасете валидации. Эти настройки влияют на производительность, скорость и точность. Распространенные настройки включают размер батча, частоту валидации и метрики производительности. Размер и состав датасета валидации, а также конкретная задача также влияют на процесс.
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
data | str | None | Задает путь к файлу конфигурации датасета (например, coco8.yaml). Этот файл должен содержать путь к данным валидации. |
imgsz | int | 640 | Определяет размер входных изображений. Все изображения изменяются до этого размера перед обработкой. Большие размеры могут улучшить точность для маленьких объектов, но увеличивают время вычислений. |
batch | int | 16 | Устанавливает количество изображений на пакет. Более высокие значения более эффективно используют память GPU, но требуют больше VRAM. Регулируй в зависимости от имеющихся аппаратных ресурсов. |
save_json | bool | False | Если True, сохраняет результаты в файл JSON для дальнейшего анализа, интеграции с другими инструментами или отправки на сервера оценки, такие как COCO. |
conf | float | 0.001 | Устанавливает минимальный порог уверенности для обнаружений. Меньшие значения увеличивают полноту (recall), но могут приводить к большему количеству ложноположительных результатов. Используется во время валидации для вычисления кривых точности-полноты (precision-recall). По умолчанию равен 0.01 для валидации OBB в целях снижения потребления памяти. |
iou | float | 0.7 | Устанавливает порог пересечения над объединением для немаксимального подавления. Управляет устранением дубликатов обнаружения. |
max_det | int | 300 | Ограничивает максимальное количество обнаружений на изображение. Полезно в плотных сценах для предотвращения чрезмерного количества обнаружений и управления вычислительными ресурсами. |
quantize | int или str | None | Точность валидации: 16/"fp16" включает валидацию FP16 на поддерживаемых GPU; 32/"fp32"/не задано — это FP32. Квантование INT8/PTQ настраивается при экспорте, а затем используется путем валидации экспортированной модели. Заменяет устаревший флаг half. |
device | str | None | Задает устройство для валидации (cpu, cuda:0, npu, npu:0 и т.д.). Когда None, автоматически выбирает лучшее из доступных устройств. Несколько устройств CUDA можно указать через запятую. |
dnn | bool | False | Если True, использует модуль DNN OpenCV для инференса моделей ONNX, предлагая альтернативу методам инференса PyTorch. |
plots | bool | True | Если установлено значение True, генерирует и сохраняет графики предсказаний по сравнению с истинными данными (ground truth), матрицы ошибок и PR-кривые для визуальной оценки производительности модели. |
classes | list[int] | None | Указывает список ID классов для оценки. Полезно для фильтрации и концентрации внимания только на определенных классах во время оценки. |
rect | bool | True | Если True, то используется прямоугольный вывод для батчинга, что уменьшает заполнение и потенциально повышает скорость и эффективность за счет обработки изображений в их исходном соотношении сторон. Игнорируется для валидации depth, которая растягивает каждое изображение до фиксированного квадрата imgsz вместо заполнения. |
split | str | 'val' | Определяет сплит датасета для использования при валидации (val, test или train). Обеспечивает гибкость в выборе сегмента данных для оценки производительности. |
project | str | None | Имя директории проекта, куда сохраняются результаты валидации. Помогает упорядочить результаты разных экспериментов или моделей. |
name | str | None | Имя прогона валидации. Используется для создания подпапки внутри папки проекта, где хранятся логи и результаты валидации. |
verbose | bool | True | Если True, отображает подробную информацию в процессе валидации, включая метрики по классам, прогресс батча и дополнительную отладочную информацию. |
save_txt | bool | False | Если True, сохраняет результаты обнаружения в текстовых файлах (по одному файлу на изображение), что полезно для дальнейшего анализа, пользовательской постобработки или интеграции с другими системами. |
save_conf | bool | False | Если True, включает значения уверенности в сохраняемые текстовые файлы при включенном save_txt, обеспечивая более подробный вывод для анализа и фильтрации. |
workers | int | 8 | Количество рабочих потоков для загрузки данных. Более высокие значения могут ускорить предварительную обработку данных, но могут увеличить нагрузку на CPU. Установка значения 0 использует основной поток, что в некоторых средах может быть стабильнее. |
augment | bool | False | Включает аугментацию во время тестирования (TTA) в процессе валидации, потенциально улучшая точность детекции ценой скорости вывода за счет запуска модели на трансформированных версиях входных данных. |
agnostic_nms | bool | False | Включает классово-агностическое немаксимальное подавление, которое объединяет перекрывающиеся рамки независимо от их предсказанного класса. Полезно для приложений, ориентированных на экземпляры. Для сквозных моделей (YOLO26, YOLOv10) это предотвращает появление одного и того же обнаружения только с несколькими метками классов (дубликаты с IoU=1.0) и не выполняет подавление на основе порога IoU между разными рамками. |
single_cls | bool | False | Во время валидации рассматривает все классы как один единственный класс. Полезно для оценки производительности модели на задачах бинарной детекции или когда различия между классами не важны. |
visualize | bool | False | Визуализирует ground truths, true positives, false positives и false negatives для каждого изображения. Полезно для отладки и интерпретации модели. |
show_labels | bool | True | Отображает метки классов в визуализациях валидации при visualize=True. Установите False для более чистого просмотра совпадений и ошибок. |
show_conf | bool | True | Отображает оценки уверенности в визуализациях валидации при visualize=True. Установите False для более чистого просмотра совпадений и ошибок. |
compile | bool или str | False | Включает компиляцию графа PyTorch 2.x torch.compile с помощью backend='inductor'. Принимает True → "default", False → отключает или строковый режим, такой как "default", "reduce-overhead", "max-autotune-no-cudagraphs". При неподдерживаемости возвращается к жадному режиму (eager) с предупреждением. |
channels_last | bool | False | Использует формат памяти channels_last (NHWC) для свёрток во время валидации, ускоряя работу GPU с CUDA Tensor Core без изменения результатов. Применяется только к нативным моделям PyTorch; игнорируется для CPU, MPS и экспортированных форматов, таких как TensorRT и ONNX. |
end2end | bool | None | Переопределяет сквозной (end-to-end) режим в моделях YOLO, поддерживающих инференс без NMS (YOLO26, YOLOv10). Установка значения False позволяет запускать валидацию с использованием традиционного пайплайна NMS, а также дополнительно дает возможность использовать аргумент iou. |
Тщательный тюнинг и эксперименты имеют решающее значение для обеспечения оптимальной производительности, а также для обнаружения и предотвращения переобучения.
Настройки экспорта#
Настройки экспорта для моделей YOLO включают конфигурации для сохранения или экспорта модели для использования в различных средах. Эти параметры влияют на производительность, размер и совместимость. Ключевые настройки включают формат выходного файла (например, ONNX, TensorFlow SavedModel), целевое устройство (например, CPU, GPU) и функции, такие как маски. Задача модели и ограничения целевой среды также влияют на процесс экспорта.
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
format | str | 'torchscript' | Целевой формат для экспортированной модели, такой как 'onnx', 'torchscript', 'engine' (TensorRT) или другие. Каждый формат обеспечивает совместимость с различными средами развертывания. |
imgsz | int или tuple | 640 | Желаемый размер изображения для входа модели. Может быть целым числом для квадратных изображений (например, 640 для 640×640) или кортежем (height, width) для конкретных размеров. |
keras | bool | False | Включает экспорт в формат Keras для SavedModel TensorFlow, обеспечивая совместимость с сервировкой и API TensorFlow. |
optimize | bool | False | Включает более высокую оптимизацию компилятора для DEEPX, сокращая задержку вывода при увеличении времени компиляции. |
quantize | int или str | None | Точность квантования: 16 (FP16, уменьшает размер модели и может ускорить инференс на поддерживаемом оборудовании) или 8 (INT8/PTQ, дополнительно сжимает модель с минимальной потерь точности, в основном для периферийных устройств; требуется калибровка data/fraction); 32/не задано — это FP32. Форматы экспорта, поддерживающие смешанную точность весов и активаций, также принимают нотацию 'w8a8'/'w16a16'/'w8a16'/'w8a32'. Заменяет устаревшие флаги half/int8 (half=True → 16, int8=True → 8, все еще принимаются с предупреждением об устаревании). Допускаются только те точности, которые поддерживаются целевым форматом (см. ниже). |
dynamic | bool | False | Разрешает использование динамических размеров входных данных для экспорта в TorchScript, ONNX, OpenVINO, TensorRT и CoreML, повышая гибкость при обработке изображений разных размеров. |
simplify | bool | True | Упрощает промежуточный граф ONNX с помощью onnxslim для тех экспортов, которые его строят (см. Форматы экспорта), потенциально повышая производительность и совместимость с движками инференса. |
opset | int | None | Задает версию опсета (opset) ONNX для экспортов, которые строят граф ONNX (см. Форматы экспорта), для совместимости с различными парсерами и рантаймами ONNX. Если не задано, используется последняя поддерживаемая версия. |
workspace | float или None | None | Устанавливает максимальный размер рабочего пространства в ГиБ для оптимизаций TensorRT, балансируя использование памяти и производительность. Используйте None для автоматического выделения ресурсов TensorRT вплоть до максимума устройства. |
nms | bool | False | Добавляет немаксимальное подавление (NMS) к экспортированной модели, если это поддерживается (см. Форматы экспорта), повышая эффективность постобработки обнаружений. Недоступно для сквозных (end2end) моделей. Для CoreML поддерживается только для моделей обнаружения. |
conf | float | None | Порог уверенности, используемый везде, где генерируется NMS во время экспорта: экспорты nms=True; несквозные экспорты детекции Hailo; а также экспорты детекции, позы и сегментации IMX, которые принудительно задают nms=True внутри. По умолчанию равен 0.25, если не задан, за исключением экспортов IMX, для которых по умолчанию используется 0.001. |
iou | float | 0.7 | Порог IoU, используемый везде, где генерируется NMS во время экспорта: экспорты nms=True; несквозные экспорты детекции Hailo; а также экспорты детекции, позы и сегментации IMX, которые принудительно задают nms=True внутри. |
max_det | int | 300 | Максимальное количество детектирований, сохраняемых в выводе экспортированной модели. Применимо к экспортам nms=True во всех форматах, кроме CoreML, чей пайплайн NMS не имеет ограничения на количество детектирований, а также к экспортам сквозной детекции без NMS (YOLO26, YOLOv10, с ограничением до числа доступных анкеров) и экспортам детекции, позы и сегментации IMX. |
batch | int | 1 | Задает размер батча инференса экспортированной модели или максимальное количество изображений, которое экспортированная модель будет обрабатывать одновременно в режиме predict. Для экспортов Edge TPU это значение автоматически устанавливается равным 1. |
device | str | None | Задает устройство для экспорта: 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. |
data | str | None | Путь к файлу конфигурации датасета, необходимый для калибровки квантования INT8. Если не указан при включенном INT8, Ultralytics выбирает специализированный под задачу калибровочный датасет там, где это необходимо, или возвращается к датасету по умолчанию для задачи модели. |
fraction | float | 1.0 | Указывает часть датасета, которую нужно использовать для калибровки квантования INT8. Позволяет выполнять калибровку на подмножестве полного датасета, что полезно для экспериментов или при ограниченных ресурсах. Если не указано при включенном INT8, будет использован весь датасет. |
end2end | bool | None | Переопределяет сквозной (end-to-end) режим в моделях YOLO, поддерживающих инференс без NMS (YOLO26, YOLOv10). Установка значения False позволяет экспортировать эти модели так, чтобы они были совместимы с традиционным пайплайном постобработки на основе NMS. Подробности см. в руководстве по сквозному обнаружению. |
Продуманная конфигурация гарантирует, что экспортированная модель оптимизирована для конкретного случая использования и эффективно функционирует в целевой среде.
Настройки решений#
Конфигурационные настройки решений Ultralytics предлагают гибкость для адаптации моделей под такие задачи, как подсчет объектов, создание тепловых карт, отслеживание тренировок, анализ данных, отслеживание зон, управление очередями и подсчет на основе регионов. Эти параметры позволяют легко вносить коррективы для получения точных и полезных результатов, адаптированных под твои конкретные нужды.
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
model | str | None | Путь к файлу модели Ultralytics YOLO. |
region | list или dict | None | Точки, определяющие область интереса (ROI): либо список кортежей (x, y), либо словарь, сопоставляющий имена областей со списками точек для нескольких областей (только для RegionCounter). Когда None, решения, требующие наличия области, возвращаются к предопределенному значению по умолчанию. |
show_in | bool | True | Флаг для управления отображением входящих объектов в потоке видео. |
show_out | bool | True | Флаг для управления отображением выходящих объектов в потоке видео. |
analytics_type | str | 'line' | Тип графа, то есть line, bar, area или pie. |
colormap | int | cv2.COLORMAP_DEEPGREEN | Цветовая карта для использования в тепловой карте. |
json_file | str | None | Путь к JSON-файлу, который содержит все данные о координатах парковки. |
up_angle | float | 145.0 | Пороговый угол для позы «вверх». |
kpts | list[int] | '[6, 8, 10]' | Список из трех индексов ключевых точек, используемых для контроля тренировок. Эти ключевые точки соответствуют суставам или частям тела, таким как плечи, локти и запястья, для упражнений типа отжиманий, подтягиваний, приседаний и упражнений на пресс. |
down_angle | int | 90 | Пороговый угол для позы «вниз». |
blur_ratio | float | 0.5 | Регулирует процент интенсивности размытия со значениями в диапазоне 0.1 - 1.0. |
crop_dir | str | 'cropped-detections' | Имя директории для хранения обрезанных обнаружений. |
records | int | 5 | Общее количество обнаружений для запуска электронной почты с охранной сигнализацией. |
vision_point | tuple[int, int] | (20, 20) | Точка, где зрение будет отслеживать объекты и рисовать пути, используя решение VisionEye. |
source | str | None | Путь к входному источнику (видео, RTSP и т. д.). Используется только с интерфейсом командной строки (CLI) решений. |
figsize | tuple[float, float] | (12.8, 7.2) | Размер фигуры для аналитических графиков, таких как тепловые карты или графики. |
fps | float | 30.0 | Количество кадров в секунду, используемое для расчетов скорости. |
max_hist | int | 5 | Максимальное количество исторических точек для отслеживания объекта при расчетах скорости/направления. |
meter_per_pixel | float | 0.05 | Масштабирующий коэффициент, используемый для преобразования расстояния в пикселях в реальные единицы измерения. |
max_speed | int | 120 | Максимальное ограничение скорости в визуальных оверлеях (используется в оповещениях). |
data | str | 'images' | Путь к директории изображений, используемой для поиска по сходству. |
imgsz | int | 640 | Размер входного изображения для вывода модели. |
Настройки аугментации#
Методы аугментации данных важны для повышения надежности и производительности моделей YOLO путем внесения вариативности в данные обучения, помогая модели лучше обобщать на невидимых данных. В следующей таблице описаны назначение и эффект каждого аргумента аугментации:
| Аргумент | Тип | По умолчанию | Поддерживаемые задачи | Диапазон | Описание |
|---|---|---|---|---|---|
hsv_h | float | 0.015 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Корректирует цветовой тон изображения на долю цветового круга, внося вариативность цветов. Помогает модели обобщать данные при различных условиях освещения. |
hsv_s | float | 0.7 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Изменяет насыщенность изображения на долю, влияя на интенсивность цветов. Полезно для симуляции различных условий окружающей среды. |
hsv_v | float | 0.4 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Модифицирует значение (яркость) изображения на долю, помогая модели хорошо работать при различных условиях освещения. |
degrees | float | 0 | detect, segment, semantic, depth, pose, obb | 0.0 - 180 | Случайно поворачивает изображение в заданном диапазоне градусов, улучшая способность модели распознавать объекты в различных ориентациях. |
translate | float | 0.1 | detect, segment, semantic, depth, pose, obb | 0.0 - 1.0 | Сдвигает изображение по горизонтали и вертикали на часть размера изображения, помогая учиться обнаруживать частично видимые объекты. |
scale | float | 0.5 | detect, segment, semantic, depth, classify, pose, obb | 0 - 1 | Масштабирует изображение с коэффициентом усиления, имитируя объекты на разном расстоянии от камеры. |
shear | float | 0 | detect, segment, semantic, depth, pose, obb | -180 - +180 | Наклоняет изображение на заданный градус, имитируя эффект просмотра объектов под разными углами. |
perspective | float | 0 | detect, segment, semantic, depth, pose, obb | 0.0 - 0.001 | Применяет случайное перспективное преобразование к изображению, улучшая способность модели понимать объекты в 3D-пространстве. |
flipud | float | 0 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Переворачивает изображение вверх ногами с заданной вероятностью, увеличивая вариативность данных, не затрагивая характеристики объекта. |
fliplr | float | 0.5 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Переворачивает изображение слева направо с заданной вероятностью, что полезно для изучения симметричных объектов и повышения разнообразия набора данных. |
bgr | float | 0 | detect, segment, semantic, depth, pose, obb | 0.0 - 1.0 | Меняет каналы изображения с RGB на BGR с заданной вероятностью, полезно для повышения устойчивости к неправильному порядку каналов. |
mosaic | float | 1 | detect, segment, semantic, pose, obb | 0.0 - 1.0 | Объединяет четыре изображения для обучения в одно, имитируя различные композиции сцен и взаимодействия объектов. Очень эффективно для понимания сложных сцен. |
mixup | float | 0 | detect, segment, semantic, 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 | None | detect, segment, semantic, pose, obb | - | Пользовательские преобразования Albumentations для продвинутой аугментации данных (только через Python API). Принимает список объектов преобразования для специализированных задач аугментации. |
Настрой эти параметры под требования своего набора данных и задачи. Эксперименты с различными значениями помогут найти оптимальную стратегию аугментации для наилучшей производительности модели.
Настройки логирования, чекпоинтов и построения графиков#
Логирование, чекпоинты, построение графиков и управление файлами важны при обучении модели YOLO:
- Логирование: отслеживай прогресс модели и диагностируй проблемы с помощью таких библиотек, как TensorBoard, или записывая данные в файл.
- Чекпоинты: Сохраняй модель через регулярные интервалы, чтобы возобновить обучение или поэкспериментировать с разными конфигурациями.
- Построение графиков: Визуализируй производительность и прогресс обучения, используя библиотеки типа Matplotlib или TensorBoard.
- Управление файлами: Организуй файлы, созданные во время обучения, такие как чекпоинты, лог-файлы и графики, для легкого доступа и анализа.
Эффективное управление этими аспектами помогает отслеживать прогресс и облегчает отладку и оптимизацию.
| Аргумент | По умолчанию | Описание |
|---|---|---|
project | None | Задает корневой каталог для сохранения запусков обучения. Если не указано, запуски сохраняются в директории runs/<task>. Каждый запуск сохраняется в отдельной поддиректории. |
name | None | Определяет название эксперимента. Если не указано, YOLO использует название режима и увеличивает его номер для каждого запуска (например, train, train-2), чтобы избежать перезаписи. |
exist_ok | False | Определяет, нужно ли перезаписывать существующую директорию эксперимента. True разрешает перезапись; False запрещает ее. |
plots | True | Управляет созданием и сохранением графиков обучения и валидации. Установи значение True, чтобы создавать такие графики, как кривые потерь, кривые precision-recall и примеры предсказаний для визуального отслеживания производительности. |
save | True | Включает сохранение контрольных точек обучения и финальных весов модели. Установи значение True, чтобы периодически сохранять состояния модели, что позволяет возобновлять обучение или развертывать модель. |
Пользовательский конфигурационный файл#
Загрузи сохраненный YAML, чтобы повторно использовать полный набор аргументов без их передачи в командной строке. Аргумент cfg переопределяет значения из default.yaml, в то время как дополнительные аргументы, переданные вместе с ним, по-прежнему имеют приоритет.
| Аргумент | По умолчанию | Описание |
|---|---|---|
cfg | None | Путь к 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.