Meet YOLO26: next-gen vision AI.

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

Ultralytics YOLO ecosystem and integrations

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

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



Watch: Ultralytics Modes Tutorial: Validation

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

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

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

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Примеры использования#

Проведи accuracy обученной модели 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). Этот файл должен включать путь к validation data.
imgszint640Определяет размер входных изображений. Перед обработкой все изображения изменяются до этого размера. Большие размеры могут повысить точность для мелких объектов, но увеличить время вычислений.
batchint16Устанавливает количество изображений в пакете (batch). Более высокие значения эффективнее используют память GPU, но требуют больше VRAM. Регулируй в зависимости от доступных аппаратных ресурсов.
save_jsonboolFalseЕсли True, сохраняет результаты в JSON-файл для дальнейшего анализа, интеграции с другими инструментами или отправки на серверы оценки, такие как COCO.
conffloat0.001Устанавливает минимальный порог уверенности для обнаружений. Более низкие значения повышают полноту (recall), но могут привести к увеличению числа ложных срабатываний. Используется во время validation для вычисления кривых точности-полноты. По умолчанию равно 0.01 для валидации OBB, чтобы уменьшить использование памяти.
ioufloat0.7Устанавливает порог Intersection Over Union для Non-Maximum Suppression. Управляет исключением дублирующихся обнаружений.
max_detint300Ограничивает максимальное количество обнаружений на одно изображение. Полезно в плотных сценах для предотвращения избыточных обнаружений и управления вычислительными ресурсами.
halfboolFalseВключает вычисления с половинной precision (FP16), уменьшая использование памяти и потенциально увеличивая скорость с минимальным влиянием на accuracy.
devicestrNoneУказывает устройство для валидации (cpu, cuda:0, npu, npu:0 и т. д.). Когда значение None, автоматически выбирает лучшее доступное устройство. Несколько устройств CUDA можно указать через запятую.
dnnboolFalseЕсли True, использует модуль OpenCV DNN для вывода модели 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 truths), истинно положительные, ложноположительные и ложноотрицательные результаты для каждого изображения. Полезно для отладки и интерпретации модели.
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 (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 для получения более подробной информации.

Комментарии