Meet YOLO26: next-gen vision AI.

Link to this sectionВалидация моделей с помощью Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Link to this sectionВведение#

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



Watch: Ultralytics Modes Tutorial: Validation

Link to this sectionЗачем проводить валидацию с помощью Ultralytics YOLO?#

Вот почему использование режима Val в YOLO26 выгодно:

  • Точность: Получай точные метрики, такие как mAP50, mAP75 и mAP50-95, для всесторонней оценки своей модели.
  • Удобство: Используй встроенные функции, которые запоминают настройки обучения, упрощая процесс валидации.
  • Гибкость: Валидируй модель на тех же или других наборах данных и при иных размерах изображений.
  • Настройка гиперпараметров: Используй метрики валидации для тонкой настройки модели для достижения лучшей производительности.

Link to this sectionКлючевые особенности режима Val#

Вот примечательные функциональные возможности, предлагаемые режимом Val в YOLO26:

  • Автоматизированные настройки: Модели запоминают свои конфигурации обучения для прямолинейной валидации.
  • Поддержка нескольких метрик: Оценивай свою модель на основе ряда метрик точности.
  • CLI и Python API: Выбирай между интерфейсом командной строки или Python API в зависимости от своих предпочтений при валидации.
  • Совместимость данных: Беспрепятственно работает как с наборами данных, использованными на этапе обучения, так и с пользовательскими наборами.
Совет
  • Модели YOLO26 автоматически запоминают свои настройки обучения, поэтому ты можешь легко валидировать модель при том же размере изображения и на исходном наборе данных с помощью команды yolo val model=yolo26n.pt или метода YOLO("yolo26n.pt").val().

Link to this sectionПримеры использования#

Валидируй точность обученной модели YOLO26n на наборе данных COCO8. Аргументы не нужны, так как model сохраняет свои обучающие data и аргументы в качестве атрибутов модели. Смотри раздел «Аргументы» ниже для получения полного списка аргументов валидации.

Ошибка многопроцессорности в Windows

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

Пример
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.box.map  # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps  # a list containing mAP50-95 for each category
metrics.box.image_metrics  # per-image metrics dictionary with precision, recall, F1, TP, FP, and FN

Link to this sectionАргументы для валидации моделей YOLO#

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

АргументТипПо умолчаниюОписание
datastrNoneУказывает путь к файлу конфигурации набора данных (например, coco8.yaml). Этот файл должен содержать путь к валидационным данным.
imgszint640Определяет размер входных изображений. Все изображения изменяются до этого размера перед обработкой. Большие размеры могут улучшить точность для маленьких объектов, но увеличивают время вычислений.
batchint16Устанавливает количество изображений на пакет. Более высокие значения более эффективно используют память GPU, но требуют больше VRAM. Регулируй в зависимости от имеющихся аппаратных ресурсов.
save_jsonboolFalseЕсли True, сохраняет результаты в JSON-файл для дальнейшего анализа, интеграции с другими инструментами или отправки на серверы оценки, такие как COCO.
conffloat0.001Устанавливает минимальный порог уверенности для обнаружений. Меньшие значения увеличивают полноту (recall), но могут привести к большему количеству ложноположительных результатов. Используется во время валидации для вычисления кривых точности-полноты. По умолчанию 0.01 для валидации OBB для снижения использования памяти.
ioufloat0.7Устанавливает порог Intersection Over Union для немаксимального подавления. Контролирует устранение дублирующихся обнаружений.
max_detint300Ограничивает максимальное количество обнаружений на изображение. Полезно в плотных сценах для предотвращения чрезмерного количества обнаружений и управления вычислительными ресурсами.
quantizeint или strNoneТочность валидации: 16/"fp16" включает валидацию в формате FP16 на поддерживаемых GPU; 32/"fp32"/не задано — это FP32. Квантование INT8/PTQ настраивается во время экспорта, а затем используется при валидации экспортированной модели. Заменяет устаревший флаг half.
devicestrNoneУказывает устройство для валидации (cpu, cuda:0, npu, npu:0 и т.д.). Когда None, автоматически выбирается лучшее доступное устройство. Несколько устройств CUDA можно указать через запятую.
dnnboolFalseЕсли True, использует модуль DNN библиотеки OpenCV для инференса модели ONNX, предлагая альтернативу методам инференса PyTorch.
plotsboolTrueЕсли установлено значение True, генерирует и сохраняет графики предсказаний по сравнению с эталонными данными (ground truth), матрицы ошибок и PR-кривые для визуальной оценки производительности модели.
classeslist[int]NoneУказывает список ID классов для оценки. Полезно для фильтрации и концентрации внимания только на определенных классах во время оценки.
rectboolTrueЕсли True, использует прямоугольный вывод (rectangular inference) для формирования батчей, что уменьшает дополнение (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 truths, true positives, false positives и false negatives для каждого изображения. Полезно для отладки и интерпретации модели.
show_labelsboolTrueОтображает метки классов на визуализациях валидации, если visualize=True. Установи False для более чистого вида совпадений и ошибок.
show_confboolTrueОтображает оценки уверенности на визуализациях валидации, если visualize=True. Установи False для более чистого вида совпадений и ошибок.
compilebool или strFalseВключает компиляцию графа PyTorch 2.x torch.compile с backend='inductor'. Принимает True"default", False → отключает, или строковый режим, такой как "default", "reduce-overhead", "max-autotune-no-cudagraphs". При отсутствии поддержки возвращается к режиму eager с предупреждением.
end2endboolNoneПереопределяет режим end-to-end в моделях YOLO, поддерживающих NMS-free вывод (YOLO26, YOLOv10). Установка значения False позволяет выполнять валидацию с использованием традиционного NMS-конвейера, дополнительно позволяя использовать аргумент iou.

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

Link to this sectionПример валидации с аргументами#



Watch: How to Export Model Validation Results in CSV, JSON, SQL, Polars DataFrame & More

Исследуй валидацию модели и различные методы экспорта в Google Colab

Ниже приведены примеры демонстрации валидации модели YOLO с пользовательскими аргументами в Python и CLI.

Пример
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Customize validation settings
metrics = model.val(data="coco8.yaml", imgsz=640, batch=16, conf=0.25, iou=0.7, device="0")
Экспорт ConfusionMatrix

Ты также можешь сохранить результаты ConfusionMatrix в различных форматах, используя предоставленный код.

from ultralytics import YOLO

model = YOLO("yolo26n.pt")

results = model.val(data="coco8.yaml", plots=True)
print(results.confusion_matrix.to_df())
Точность, полнота и F1 для каждого изображения

Валидация сохраняет метрики точности, полноты, F1, TP, FP и FN для каждого изображения (при пороге IoU 0.5) для всех задач, кроме классификации. Доступ к ним можно получить через results.box.image_metrics для обнаружения и OBB, results.seg.image_metrics для сегментации и results.pose.image_metrics для позы после завершения валидации.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Validate and access per-image metrics
results = model.val(data="coco8.yaml")

# image_metrics is a dictionary with image filenames as keys
print(results.box.image_metrics)
# Output: {'image1.jpg': {'precision': 0.85, 'recall': 0.92, 'f1': 0.88, 'tp': 17, 'fp': 3, 'fn': 1}, ...}

# Access metrics for a specific image
results.box.image_metrics["image1.jpg"]  # {'precision': 0.85, 'recall': 0.92, 'f1': 0.88, 'tp': 17, 'fp': 3, 'fn': 1}

Каждая запись в image_metrics содержит следующие ключи:

КлючОписание
precisionОценка точности для изображения (tp / (tp + fp)).
recallОценка полноты для изображения (tp / (tp + fn)).
f1Гармоническое среднее точности и полноты.
tpКоличество истинно положительных результатов для изображения.
fpКоличество ложно положительных результатов для изображения.
fnКоличество ложно отрицательных результатов для изображения.

Эта функция доступна для задач обнаружения, сегментации, позы и OBB.

МетодТип возвращаемого значенияОписание
summary()List[Dict[str, Any]]Преобразует результаты валидации в сводный словарь.
to_df()DataFrameВозвращает результаты валидации в виде структурированного Polars DataFrame.
to_csv()strЭкспортирует результаты валидации в формат CSV и возвращает строку CSV.
to_json()strЭкспортирует результаты валидации в формат JSON и возвращает строку JSON.

Для получения более подробной информации смотри документацию по классу DataExportMixin.

Link to this sectionFAQ#

Link to this sectionКак мне валидировать свою модель YOLO26 с помощью Ultralytics?#

Чтобы валидировать свою модель YOLO26, ты можешь использовать режим Val, предоставляемый Ultralytics. Например, используя Python API, ты можешь загрузить модель и запустить валидацию с помощью:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Validate the model
metrics = model.val()
print(metrics.box.map)  # map50-95

Альтернативно, ты можешь использовать интерфейс командной строки (CLI):

yolo val model=yolo26n.pt

Для дальнейшей настройки ты можешь изменять различные аргументы, такие как imgsz, batch и conf, как в Python, так и в режиме CLI. Проверь раздел Аргументы для валидации моделей YOLO для получения полного списка параметров.

Link to this sectionКакие метрики я могу получить при валидации модели YOLO26?#

Валидация модели YOLO26 предоставляет несколько ключевых метрик для оценки производительности модели. К ним относятся:

  • mAP50 (средняя точность при пороге IoU 0.5)
  • mAP75 (средняя точность при пороге IoU 0.75)
  • mAP50-95 (средняя точность по нескольким порогам IoU от 0.5 до 0.95)

Используя Python API, ты можешь получить доступ к этим метрикам следующим образом:

metrics = model.val()  # assumes `model` has been loaded
print(metrics.box.map)  # mAP50-95
print(metrics.box.map50)  # mAP50
print(metrics.box.map75)  # mAP75
print(metrics.box.maps)  # list of mAP50-95 for each category
print(metrics.box.image_metrics)  # per-image metrics dictionary with precision, recall, F1, TP, FP, and FN

Для полной оценки производительности крайне важно просмотреть все эти метрики. Для получения более подробной информации обратись к разделу Ключевые особенности режима Val.

Link to this sectionВ чем преимущества использования Ultralytics YOLO для валидации?#

Использование Ultralytics YOLO для валидации дает несколько преимуществ:

  • Точность: YOLO26 предлагает точные метрики производительности, включая mAP50, mAP75 и mAP50-95.
  • Удобство: Модели запоминают свои настройки обучения, что делает валидацию простой.
  • Гибкость: Ты можешь проводить валидацию на тех же или других наборах данных и размерах изображений.
  • Настройка гиперпараметров: Метрики валидации помогают в тонкой настройке моделей для достижения лучшей производительности.

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

Link to this sectionМогу ли я валидировать свою модель YOLO26 с помощью пользовательского набора данных?#

Да, ты можешь валидировать свою модель YOLO26 с помощью пользовательского набора данных. Укажи аргумент data с путем к файлу конфигурации твоего набора данных. Этот файл должен содержать путь к данным валидации.

Примечание

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

Пример в Python:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Validate with a custom dataset
metrics = model.val(data="path/to/your/custom_dataset.yaml")
print(metrics.box.map)  # map50-95

Пример с использованием CLI:

yolo val model=yolo26n.pt data=path/to/your/custom_dataset.yaml

Для получения более широких возможностей настройки во время валидации см. раздел Пример валидации с аргументами.

Link to this sectionКак мне сохранить результаты валидации в файл JSON в YOLO26?#

Чтобы сохранить результаты валидации в файл JSON, ты можешь установить аргумент save_json в значение True при запуске валидации. Это можно сделать как в Python API, так и в CLI.

Пример в Python:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Save validation results to JSON
metrics = model.val(save_json=True)

Пример с использованием CLI:

yolo val model=yolo26n.pt save_json=True

Эта функциональность особенно полезна для дальнейшего анализа или интеграции с другими инструментами. Проверь раздел Аргументы для валидации моделей YOLO для получения более подробной информации.

Комментарии