Link to this sectionКак протестировать модели компьютерного зрения#
Link to this sectionВведение#
Тестирование модели проверяет, как обученная модель работает с ранее не виденными реальными данными — например, с объектами в движении, при плохом освещении или частичном перекрытии, а не на специально подготовленных бенчмарках. В то время как оценка модели измеряет метрики на размеченном наборе данных, тестирование подтверждает, что изученное поведение модели соответствует целям твоего приложения перед развертыванием. Это руководство охватывает подготовку тестовых данных, тестирование моделей Ultralytics YOLO26 и выявление переобучения, недообучения и утечки данных.
Watch: How to Test Machine Learning Models | Avoid Data Leakage in Computer Vision 🚀
Link to this sectionТестирование модели в сравнении с оценкой модели#
Тестирование модели и оценка модели — это два разных этапа в проекте по компьютерному зрению. Оценка измеряет производительность с помощью метрик на размеченном наборе данных; тестирование проверяет, сохраняется ли изученное моделью поведение в условиях, близких к развертыванию.
Представь, что ты обучил модель компьютерного зрения распознавать кошек и собак и хочешь развернуть её в зоомагазине для наблюдения за животными. На этапе оценки модели ты используешь размеченный набор данных для расчета таких метрик, как точность, прецизионность и полнота. Например, модель может с точностью 98% различать кошек и собак в данном наборе данных.
После оценки ты тестируешь модель, используя изображения из зоомагазина, чтобы увидеть, насколько хорошо она идентифицирует кошек и собак в более разнообразных и реалистичных условиях. Ты проверяешь, может ли она правильно маркировать животных, когда они двигаются, находятся при различном освещении или частично закрыты предметами, такими как игрушки или мебель. Тестирование модели проверяет, что модель ведет себя ожидаемым образом вне контролируемой среды оценки.
Link to this sectionПодготовка к тестированию модели#
Наборы данных компьютерного зрения обычно делятся на обучающие и тестовые выборки для моделирования реальных условий: обучающие данные обучают модель, а тестовые данные проверяют ее поведение на примерах, которые она никогда раньше не видела. Платформа Ultralytics хранит организацию наборов данных и разметку в одном месте, что помогает при создании размеченного тестового набора.
- Реалистичное представление: Ранее не виденные тестовые данные должны быть похожи на те, с которыми модель будет работать после развертывания. Это дает реалистичную картину возможностей модели.
- Достаточный размер: Тестовый набор данных должен быть достаточно большим, чтобы предоставить надежные выводы о том, насколько хорошо работает модель.
Link to this sectionКак протестировать модель YOLO26#
Тестирование обученной модели YOLO26 включает два дополняющих друг друга рабочих процесса: валидацию на размеченной тестовой выборке для получения количественных метрик и прогнозирование на новых изображениях для качественного анализа поведения.
Link to this sectionВалидация на размеченной тестовой выборке#
Режим валидации сравнивает предсказания модели с эталонными метками и сообщает значения прецизионности, полноты, 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".
Link to this sectionПрогнозирование на новых изображениях#
Режим прогнозирования запускает модель на новых, не виденных ранее данных без необходимости наличия меток. Он не создает метрики производительности, но сохранение аннотированных результатов позволяет тебе просматривать, как модель ведет себя на реальных изображениях — например, для целой папки тестовых изображений за раз.
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, поэтому результаты дадут быстрое представление о том, насколько хорошо модель может работать в твоем конкретном контексте.
Link to this sectionРежим валидации в сравнении с режимом прогнозирования#
| Режим | Цель | Требуются метки | Выходные данные |
|---|---|---|---|
| Валидация | Количественная оценка производительности относительно эталона | Да | Прецизионность, полнота, mAP50, mAP50-95, матрица ошибок, PR-кривые |
| Прогнозирование | Анализ поведения модели на новых, неразмеченных данных | Нет | Аннотированные изображения и результаты прогнозирования, без метрик |
Link to this sectionКак анализировать результаты тестирования#
Когда у тебя на руках есть прогнозы и метрики, разберись, где и почему модель допускает ошибки:
- Неправильно классифицированные изображения: Определи и просмотри изображения, которые модель классифицировала неверно, чтобы понять, в чем заключается ошибка.
- Анализ ошибок: Проведи тщательный анализ ошибок, чтобы понять их типы (например, ложноположительные и ложноотрицательные результаты) и их потенциальные причины.
- Предвзятость и справедливость: Проверь наличие любых искажений в предсказаниях модели. Убедись, что модель работает одинаково хорошо на разных подмножествах данных, особенно если они включают чувствительные атрибуты, такие как раса, пол или возраст.
Link to this sectionПереобучение и недообучение в машинном обучении#
При тестировании модели машинного обучения, особенно в компьютерном зрении, важно следить за переобучением и недообучением. Эти проблемы могут существенно повлиять на то, насколько хорошо твоя модель работает с новыми данными.
| Проблема | Общие признаки | Как это исправить |
|---|---|---|
| Переобучение | Высокая точность обучения при низкой точности валидации; сверхчувствительность к незначительным изменениям или несущественным деталям на изображениях | Примени регуляризацию, например dropout, увеличь размер обучающего набора данных, упрости архитектуру модели |
| Недообучение | Низкая точность даже на обучающем наборе; постоянная неспособность распознать очевидные признаки или объекты | Используй более сложную модель, предоставь более релевантные признаки, увеличь количество эпох обучения |
Ключ к успеху — найти баланс, чтобы модель хорошо работала как на обучающем, так и на валидационном наборе данных. Регулярный мониторинг метрик и визуальный осмотр предсказаний во время тестирования помогут тебе вовремя заметить отклонение в любую из сторон.
Link to this sectionУтечка данных в компьютерном зрении и как её избежать#
Утечка данных происходит, когда информация извне обучающего набора данных случайно используется для обучения модели. Модель может казаться очень точной во время обучения, но она не будет работать эффективно на новых, не виденных ранее данных, если произошла утечка данных.
Утечку бывает трудно заметить, и часто она возникает из-за скрытых искажений в обучающих данных:
| Тип искажения | Как это выглядит |
|---|---|
| Искажение камеры | Различные углы обзора, освещение, тени и движения камеры создают нежелательные закономерности |
| Искажение наложения | Логотипы, временные метки или другие наложения на изображениях вводят модель в заблуждение |
| Искажение шрифтов и объектов | Определенные шрифты или объекты, которые часто появляются в конкретных классах, искажают обучение модели |
| Пространственное искажение | Дисбаланс переднего и заднего плана, распределения bounding box и расположения объектов влияют на обучение |
| Искажение меток и домена | Неверные метки или сдвиги в типах данных приводят к утечке |
Link to this sectionКак обнаружить и избежать утечки данных#
Чтобы найти утечку данных, проверь, не являются ли результаты модели подозрительно хорошими, посмотри, не является ли один признак гораздо важнее остальных, перепроверь интуитивно, имеют ли смысл решения модели, и убедись, что данные были разделены правильно до какой-либо обработки.
Чтобы предотвратить её, используй разнообразный набор данных с изображениями или видео с разных камер и из разных сред, а также внимательно проверяй свои данные на наличие скрытых искажений — например, того, что все положительные образцы были сняты в определенное время дня. Избегание утечки данных делает твои модели компьютерного зрения более надежными в реальных ситуациях.
Link to this sectionЧто делать после тестирования модели#
После тестирования твоей модели следующие шаги зависят от результатов. Если модель работает хорошо, ты можешь развернуть её в реальной среде. Если результаты неудовлетворительны, тебе нужно внести улучшения. Это может включать анализ ошибок, сбор большего количества данных, повышение качества данных, настройку гиперпараметров и переобучение модели.
Link to this sectionЗаключение#
Тщательное тестирование модели — валидация на отложенной тестовой выборке, прогнозирование на реальных изображениях и проверка на переобучение и утечку данных — вот что превращает хорошо оцененную модель в надежную. Устрани проблемы, которые выявило тестирование, перед развертыванием, и твоя модель с гораздо большей вероятностью будет работать в продакшене так, как задумано. Если по пути возникнут вопросы, задай их сообществу в репозитории Ultralytics на GitHub или на сервере Ultralytics в Discord.
Link to this sectionFAQ#
Link to this sectionКаковы ключевые различия между оценкой модели и тестированием модели в компьютерном зрении?#
Оценка модели измеряет производительность с помощью метрик на размеченном наборе данных, в то время как тестирование модели проверяет, как она ведет себя на новых, не виденных ранее данных, напоминающих условия развертывания. Оценка дает цифры, такие как прецизионность и mAP, на контролируемом наборе данных; тестирование показывает, сохраняется ли изученное поведение при различном освещении, движении или перекрытии. См. Тестирование модели в сравнении с оценкой модели для примера.
Link to this sectionКак я могу протестировать свою модель Ultralytics YOLO26 на нескольких изображениях?#
Используй режим прогнозирования и передай путь к папке в качестве source — YOLO26 запустится на каждом изображении в папке и может сохранить аннотированные результаты для проверки. Режим прогнозирования не вычисляет метрики; чтобы количественно оценить производительность на размеченном наборе, используй режим валидации. Оба рабочих процесса показаны в разделе Как протестировать модель YOLO26.
Link to this sectionКакие метрики сообщает валидация YOLO26 на тестовом наборе?#
Для моделей обнаружения валидация сообщает прецизионность, полноту, mAP50 и mAP50-95 и сохраняет графики, включая матрицу ошибок и кривую «точность-полнота». Чтобы выполнить валидацию на выделенной тестовой выборке, а не на выборке val по умолчанию, определи test: в своем YAML-файле набора данных и передай split="test". См. руководство по метрикам производительности, чтобы понять каждую метрику.
Link to this sectionЧто делать, если моя модель компьютерного зрения показывает признаки переобучения или недообучения?#
Для борьбы с переобучением примени методы регуляризации, такие как dropout, увеличь размер обучающего набора данных или упрости архитектуру модели. Для борьбы с недообучением используй более сложную модель, предоставь более релевантные признаки или обучай дольше (больше эпох). Признаки каждой проблемы и соответствующие исправления обобщены в разделе Переобучение и недообучение в машинном обучении.
Link to this sectionКак обнаружить и избежать утечки данных в компьютерном зрении?#
Подозревай утечку данных, если результаты тестирования выглядят подозрительно хорошими, один признак доминирует в предсказаниях или решения модели не имеют интуитивного смысла. Предотвращай это, используя разнообразные наборы данных с разных камер и из разных сред, проверяя данные на скрытые искажения и убеждаясь, что разделение на обучающую/тестовую выборки произошло до любой обработки. См. Утечка данных в компьютерном зрении для ознакомления с распространенными типами искажений.
Link to this sectionКакие шаги мне предпринять после тестирования модели компьютерного зрения?#
Если результаты соответствуют целям твоего проекта, развертывай модель; если нет, улучшай её перед развертыванием. Это может означать анализ ошибок, сбор более разнообразных данных, повышение качества данных, настройку гиперпараметров и переобучение. Повторяй тестирование после каждого раунда изменений, чтобы подтвердить, что исправления сработали.