Валидация модели с помощью 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 и т. д.
В приведенных ниже примерах показана валидация модели 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.