Перейти к содержанию

Валидация модели с помощью Ultralytics YOLO

Экосистема и интеграции Ultralytics YOLO

Введение

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



Смотреть: Учебник по режимам Ultralytics: Валидация

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

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

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

Основные характеристики режима Val

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

  • Автоматизированные настройки: Модели запоминают свои конфигурации обучения для простой валидации.
  • Поддержка нескольких метрик: Оценивайте свою модель на основе ряда метрик точности.
  • CLI и Python API: Выберите интерфейс командной строки или Python API в зависимости от ваших предпочтений для валидации.
  • Совместимость с данными: Бесперебойно работает с наборами данных, используемыми на этапе обучения, а также с пользовательскими наборами данных.

Совет

  • Модели YOLO11 автоматически запоминают свои настройки обучения, поэтому вы можете легко проверить модель с тем же размером изображения и на исходном наборе данных, просто используя yolo val model=yolo11n.pt или model('yolo11n.pt').val()

Примеры использования

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

Пример

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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
yolo detect val model=yolo11n.pt      # val official model
yolo detect val model=path/to/best.pt # val custom model

Аргументы для валидации модели YOLO

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

АргументТипПо умолчаниюОписание
datastrNoneУказывает путь к файлу конфигурации набора данных (например, coco8.yaml). Этот файл должен содержать путь к данным валидации.
imgszint640Определяет размер входных изображений. Все изображения изменяются до этого размера перед обработкой. Большие размеры могут повысить точность для маленьких объектов, но увеличить время вычислений.
batchint16Устанавливает количество изображений в пакете. Более высокие значения более эффективно используют память GPU, но требуют больше VRAM. Настраивайте в зависимости от доступных аппаратных ресурсов.
save_jsonboolFalseЕсли True, сохраняет результаты в файл JSON для дальнейшего анализа, интеграции с другими инструментами или отправки на серверы оценки, такие как COCO.
conffloat0.001Устанавливает минимальный порог уверенности для обнаружений. Более низкие значения увеличивают полноту, но могут привести к увеличению количества ложных срабатываний. Используется во время валидации для вычисления кривых точности-полноты.
ioufloat0.7Устанавливает порог Intersection Over Union для Non-Maximum Suppression. Контролирует устранение дубликатов обнаружения.
max_detint300Ограничивает максимальное количество обнаружений на изображение. Полезно в плотных сценах для предотвращения чрезмерного количества обнаружений и управления вычислительными ресурсами.
halfboolTrueВключает вычисления половинной точности (FP16), снижая использование памяти и потенциально увеличивая скорость с минимальным влиянием на точность.
devicestrNoneУказывает устройство для валидации (cpu, cuda:0, и т.д.). Когда None, автоматически выбирает лучшее доступное устройство. Несколько устройств CUDA можно указать через запятую.
dnnboolFalseЕсли True, использует OpenCV модуль DNN для логического вывода модели ONNX, предлагая альтернативу методам логического вывода PyTorch .
plotsboolFalseКогда установлено значение True, генерирует и сохраняет графики прогнозов в сравнении с истинными значениями, матрицы ошибок и кривые PR для визуальной оценки производительности модели.
classeslist[int]NoneУказывает список идентификаторов классов для обучения. Полезно для фильтрации и фокусировки только на определенных классах во время оценки.
rectboolTrueЕсли True, использует прямоугольный вывод для пакетирования, уменьшая заполнение и потенциально увеличивая скорость и эффективность за счет обработки изображений в их исходном соотношении сторон.
splitstr'val'Определяет разделение набора данных, используемое для валидации (val, test, или train). Обеспечивает гибкость в выборе сегмента данных для оценки производительности.
projectstrNoneИмя каталога проекта, в котором сохраняются выходные данные проверки. Помогает организовать результаты различных экспериментов или моделей.
namestrNoneИмя запуска валидации. Используется для создания подкаталога в папке проекта, где хранятся журналы и результаты валидации.
verboseboolFalseЕсли True, отображает подробную информацию в процессе валидации, включая метрики для каждого класса, прогресс пакета и дополнительную отладочную информацию.
save_txtboolFalseЕсли True, сохраняет результаты обнаружения в текстовых файлах, по одному файлу на изображение, что полезно для дальнейшего анализа, пользовательской постобработки или интеграции с другими системами.
save_confboolFalseЕсли True, включает значения достоверности в сохраненные текстовые файлы, когда save_txt включен, обеспечивая более подробный вывод для анализа и фильтрации.
workersint8Количество рабочих потоков для загрузки данных. Более высокие значения могут ускорить предварительную обработку данных, но могут увеличить использование CPU. Установка значения 0 использует основной поток, что может быть более стабильным в некоторых средах.
augmentboolFalseВключает увеличение времени тестирования (TTA) во время валидации, что потенциально улучшает точность обнаружения за счет скорости инференса, выполняя инференс на преобразованных версиях входных данных.
agnostic_nmsboolFalseВключает агностическое к классам Non-Maximum Suppression, которое объединяет перекрывающиеся рамки независимо от их предсказанного класса. Полезно для приложений, ориентированных на экземпляры.
single_clsboolFalseРассматривает все классы как один во время валидации. Полезно для оценки производительности модели в задачах бинарного обнаружения или когда различия между классами не важны.
visualizeboolFalseВизуализация истинных, истинно положительных, ложноположительных и ложноотрицательных результатов для каждого изображения. Полезно для отладки и интерпретации модели.
compilebool или strFalseВключает PyTorch 2.x torch.compile компиляция графа с помощью backend='inductor'. Принимает True"default", False → отключается, или строковый режим, например "default", "reduce-overhead", "max-autotune-no-cudagraphs". При отсутствии поддержки возвращается в режим eager с предупреждением.

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

Пример валидации с аргументами



Смотреть: Как экспортировать результаты проверки модели в CSV, JSON, SQL, Polars DataFrame и т. д.

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

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

Пример

from ultralytics import YOLO

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

# Customize validation settings
metrics = model.val(data="coco8.yaml", imgsz=640, batch=16, conf=0.25, iou=0.6, device="0")
yolo val model=yolo11n.pt data=coco8.yaml imgsz=640 batch=16 conf=0.25 iou=0.6 device=0

Экспорт ConfusionMatrix

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

from ultralytics import YOLO

model = YOLO("yolo11n.pt")

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

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

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

Как проверить мою модель YOLO11 с помощью Ultralytics?

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

from ultralytics import YOLO

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

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

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

yolo val model=yolo11n.pt

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

Какие метрики я могу получить при валидации модели YOLO11?

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

  • mAP50 (средняя точность (mean Average Precision) при пороге IoU 0.5)
  • mAP75 (средняя точность (mean Average Precision) при пороге IoU 0.75)
  • mAP50-95 (средняя точность (mean Average Precision) по нескольким порогам 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

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

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

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

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

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

Могу ли я проверить свою модель YOLO11, используя пользовательский набор данных?

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

Примечание

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

Пример на Python:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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=yolo11n.pt data=path/to/your/custom_dataset.yaml

Для получения дополнительных настраиваемых параметров во время валидации см. раздел Пример валидации с аргументами.

Как сохранить результаты валидации в JSON-файл в YOLO11?

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

Пример на Python:

from ultralytics import YOLO

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

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

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

yolo val model=yolo11n.pt save_json=True

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



📅 Создано 2 года назад ✏️ Обновлено 5 дней назад
glenn-jocherMatthewNoycejb297686Laughing-qRizwanMunawarUltralyticsAssistantjk4eBurhan-Q

Комментарии