YOLO Vision 2026:

Как протестировать модели компьютерного зрения#

Введение#

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



Watch: How to Test Machine Learning Models | Avoid Data Leakage in Computer Vision 🚀

Тестирование модели в сравнении с оценкой модели#

Тестирование модели и оценка модели — это два разных этапа в проекте по компьютерному зрению. Оценка измеряет производительность с помощью метрик на размеченном наборе данных; тестирование проверяет, сохраняется ли изученное моделью поведение в условиях, близких к развертыванию.

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

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

Подготовка к тестированию модели#

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

Перед началом тестирования
  • Реалистичное представление: Ранее не виденные тестовые данные должны быть похожи на те, с которыми модель будет работать после развертывания. Это дает реалистичную картину возможностей модели.
  • Достаточный размер: Тестовый набор данных должен быть достаточно большим, чтобы предоставить надежные выводы о том, насколько хорошо работает модель.

Как протестировать модель YOLO26#

Тестирование обученной модели YOLO26 включает два дополняющих друг друга рабочих процесса: валидацию на размеченной тестовой выборке для получения количественных метрик и прогнозирование на новых изображениях для качественного анализа поведения.

Валидация на размеченной тестовой выборке#

Режим валидации сравнивает предсказания модели с эталонными метками и сообщает значения прецизионности, полноты, mAP50 и mAP50-95 для моделей обнаружения. Он также сохраняет визуальные вспомогательные материалы, такие как матрица ошибок и кривая «точность-полнота», которые помогают тебе заметить области, где модель может работать недостаточно хорошо.

Использование
from ultralytics import YOLO

# Load a pretrained model or your own trained checkpoint, e.g. "path/to/best.pt"
model = YOLO("yolo26n.pt")

# Validate; add split="test" if your dataset YAML defines a test split
metrics = model.val(data="coco8.yaml")
print(metrics.box.map)  # mAP50-95

По умолчанию валидация запускается на выборке val набора данных. Чтобы измерить производительность на отложенном тестовом наборе, определи выборку test: в своем YAML-файле набора данных и передай split="test".

Прогнозирование на новых изображениях#

Режим прогнозирования запускает модель на новых, не виденных ранее данных без необходимости наличия меток. Он не создает метрики производительности, но сохранение аннотированных результатов позволяет тебе просматривать, как модель ведет себя на реальных изображениях — например, для целой папки тестовых изображений за раз.

Использование
from ultralytics import YOLO

# Load a pretrained model or your own trained checkpoint, e.g. "path/to/best.pt"
model = YOLO("yolo26n.pt")

# Run predictions on a folder of test images and save annotated results
results = model.predict(source="path/to/test_images", save=True)
Тестирование предобученной модели перед собственным обучением

Чтобы проверить, подходит ли YOLO26 для твоего приложения до того, как вкладываться в собственное обучение, запусти режим прогнозирования с предобученным чекпоинтом на своих собственных изображениях. Модели предобучены на таких наборах данных, как COCO, поэтому результаты дадут быстрое представление о том, насколько хорошо модель может работать в твоем конкретном контексте.

Режим валидации в сравнении с режимом прогнозирования#

РежимЦельТребуются меткиВыходные данные
ВалидацияКоличественная оценка производительности относительно эталонаДаПрецизионность, полнота, mAP50, mAP50-95, матрица ошибок, PR-кривые
ПрогнозированиеАнализ поведения модели на новых, неразмеченных данныхНетАннотированные изображения и результаты прогнозирования, без метрик

Как анализировать результаты тестирования#

Когда у тебя на руках есть прогнозы и метрики, разберись, где и почему модель допускает ошибки:

  • Неправильно классифицированные изображения: Определи и просмотри изображения, которые модель классифицировала неверно, чтобы понять, в чем заключается ошибка.
  • Анализ ошибок: Проведи тщательный анализ ошибок, чтобы понять их типы (например, ложноположительные и ложноотрицательные результаты) и их потенциальные причины.
  • Предвзятость и справедливость: Проверь наличие любых искажений в предсказаниях модели. Убедись, что модель работает одинаково хорошо на разных подмножествах данных, особенно если они включают чувствительные атрибуты, такие как раса, пол или возраст.

Переобучение и недообучение в машинном обучении#

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

ПроблемаОбщие признакиКак это исправить
ПереобучениеВысокая точность обучения при низкой точности валидации; сверхчувствительность к незначительным изменениям или несущественным деталям на изображенияхПримени регуляризацию, например dropout, увеличь размер обучающего набора данных, упрости архитектуру модели
НедообучениеНизкая точность даже на обучающем наборе; постоянная неспособность распознать очевидные признаки или объектыИспользуй более сложную модель, предоставь более релевантные признаки, увеличь количество эпох обучения

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

Comparison of underfitting, appropriate fitting, and overfitting on the same dataset

Утечка данных в компьютерном зрении и как её избежать#

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

Утечку бывает трудно заметить, и часто она возникает из-за скрытых искажений в обучающих данных:

Тип искаженияКак это выглядит
Искажение камерыРазличные углы обзора, освещение, тени и движения камеры создают нежелательные закономерности
Искажение наложенияЛоготипы, временные метки или другие наложения на изображениях вводят модель в заблуждение
Искажение шрифтов и объектовОпределенные шрифты или объекты, которые часто появляются в конкретных классах, искажают обучение модели
Пространственное искажениеДисбаланс переднего и заднего плана, распределения bounding box и расположения объектов влияют на обучение
Искажение меток и доменаНеверные метки или сдвиги в типах данных приводят к утечке

Как обнаружить и избежать утечки данных#

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

Чтобы предотвратить её, используй разнообразный набор данных с изображениями или видео с разных камер и из разных сред, а также внимательно проверяй свои данные на наличие скрытых искажений — например, того, что все положительные образцы были сняты в определенное время дня. Избегание утечки данных делает твои модели компьютерного зрения более надежными в реальных ситуациях.

Что делать после тестирования модели#

После тестирования твоей модели следующие шаги зависят от результатов. Если модель работает хорошо, ты можешь развернуть её в реальной среде. Если результаты неудовлетворительны, тебе нужно внести улучшения. Это может включать анализ ошибок, сбор большего количества данных, повышение качества данных, настройку гиперпараметров и переобучение модели.

Заключение#

Тщательное тестирование модели — валидация на отложенной тестовой выборке, прогнозирование на реальных изображениях и проверка на переобучение и утечку данных — вот что превращает хорошо оцененную модель в надежную. Устрани проблемы, которые выявило тестирование, перед развертыванием, и твоя модель с гораздо большей вероятностью будет работать в продакшене так, как задумано. Если по пути возникнут вопросы, задай их сообществу в репозитории Ultralytics на GitHub или на сервере Ultralytics в Discord.

FAQ#

  • Оценка модели измеряет производительность с помощью метрик на размеченном наборе данных, в то время как тестирование модели проверяет, как она ведет себя на новых, не виденных ранее данных, напоминающих условия развертывания. Оценка дает цифры, такие как прецизионность и mAP, на контролируемом наборе данных; тестирование показывает, сохраняется ли изученное поведение при различном освещении, движении или перекрытии. См. Тестирование модели в сравнении с оценкой модели для примера.

  • Используй режим прогнозирования и передай путь к папке в качестве source — YOLO26 запустится на каждом изображении в папке и может сохранить аннотированные результаты для проверки. Режим прогнозирования не вычисляет метрики; чтобы количественно оценить производительность на размеченном наборе, используй режим валидации. Оба рабочих процесса показаны в разделе Как протестировать модель YOLO26.

  • Для моделей обнаружения валидация сообщает прецизионность, полноту, mAP50 и mAP50-95 и сохраняет графики, включая матрицу ошибок и кривую «точность-полнота». Чтобы выполнить валидацию на выделенной тестовой выборке, а не на выборке val по умолчанию, определи test: в своем YAML-файле набора данных и передай split="test". См. руководство по метрикам производительности, чтобы понять каждую метрику.

  • Для борьбы с переобучением примени методы регуляризации, такие как dropout, увеличь размер обучающего набора данных или упрости архитектуру модели. Для борьбы с недообучением используй более сложную модель, предоставь более релевантные признаки или обучай дольше (больше эпох). Признаки каждой проблемы и соответствующие исправления обобщены в разделе Переобучение и недообучение в машинном обучении.

  • Подозревай утечку данных, если результаты тестирования выглядят подозрительно хорошими, один признак доминирует в предсказаниях или решения модели не имеют интуитивного смысла. Предотвращай это, используя разнообразные наборы данных с разных камер и из разных сред, проверяя данные на скрытые искажения и убеждаясь, что разделение на обучающую/тестовую выборки произошло до любой обработки. См. Утечка данных в компьютерном зрении для ознакомления с распространенными типами искажений.

  • Если результаты соответствуют целям твоего проекта, развертывай модель; если нет, улучшай её перед развертыванием. Это может означать анализ ошибок, сбор более разнообразных данных, повышение качества данных, настройку гиперпараметров и переобучение. Повторяй тестирование после каждого раунда изменений, чтобы подтвердить, что исправления сработали.

Комментарии