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

Валидация модели с помощью 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 contains map50-95 of each category
yolo detect val model=yolo11n.pt      # val official model
yolo detect val model=path/to/best.pt # val custom model

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

При валидации моделей 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 Устанавливает минимальный порог уверенности для обнаружений. Более низкие значения увеличивают полноту, но могут привести к увеличению количества ложных срабатываний. Используется во время валидации для вычисления кривых точности-полноты.
iou float 0.7 Устанавливает порог Intersection Over Union для Non-Maximum Suppression. Контролирует устранение дубликатов обнаружения.
max_det int 300 Ограничивает максимальное количество обнаружений на изображение. Полезно в плотных сценах для предотвращения чрезмерного количества обнаружений и управления вычислительными ресурсами.
half bool True Включает вычисления половинной точности (FP16), снижая использование памяти и потенциально увеличивая скорость с минимальным влиянием на точность.
device str None Указывает устройство для валидации (cpu, cuda:0, и т.д.). Когда None, автоматически выбирает лучшее доступное устройство. Несколько устройств CUDA можно указать через запятую.
dnn bool False Если True, использует OpenCV модуль DNN для логического вывода модели ONNX, предлагая альтернативу методам логического вывода PyTorch .
plots bool False Когда установлено значение True, генерирует и сохраняет графики прогнозов в сравнении с истинными значениями, матрицы ошибок и кривые PR для визуальной оценки производительности модели.
classes list[int] None Указывает список идентификаторов классов для обучения. Полезно для фильтрации и фокусировки только на определенных классах во время оценки.
rect bool True Если True, использует прямоугольный вывод для пакетирования, уменьшая заполнение и потенциально увеличивая скорость и эффективность за счет обработки изображений в их исходном соотношении сторон.
split str 'val' Определяет разделение набора данных, используемое для валидации (val, test, или train). Обеспечивает гибкость в выборе сегмента данных для оценки производительности.
project str None Имя каталога проекта, в котором сохраняются выходные данные проверки. Помогает организовать результаты различных экспериментов или моделей.
name str None Имя запуска валидации. Используется для создания подкаталога в папке проекта, где хранятся журналы и результаты валидации.
verbose bool False Если 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 Включает агностическое к классам Non-Maximum Suppression, которое объединяет перекрывающиеся рамки независимо от их предсказанного класса. Полезно для приложений, ориентированных на экземпляры.
single_cls bool False Рассматривает все классы как один во время валидации. Полезно для оценки производительности модели в задачах бинарного обнаружения или когда различия между классами не важны.
visualize bool False Визуализирует ground truth, истинно положительные, ложноположительные и ложноотрицательные результаты для каждого изображения. Полезно для отладки и интерпретации модели.

Каждый из этих параметров играет жизненно важную роль в процессе валидации, обеспечивая настраиваемую и эффективную оценку моделей 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 аргумент с путем к файлу конфигурации вашего набора данных. Этот файл должен содержать пути к данным валидации, названия классов и другие соответствующие сведения.

Пример на 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.



📅 Создано 1 год назад ✏️ Обновлено 5 дней назад

Комментарии