Ultralytics YOLO27:
Get Started

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

Введение#

При тестировании проверяют, как обученная модель работает на ранее не встречавшихся данных из реального мира — например, с движущимися, плохо освещёнными или частично скрытыми объектами, а не на тщательно подготовленном бенчмарке. Оценка модели измеряет метрики на размеченном наборе данных, а тестирование перед развёртыванием проверяет, соответствует ли выученное моделью поведение целям твоего приложения. В этом руководстве рассказывается, как подготовить тестовые данные, протестировать модели Ultralytics YOLO26 и выявить переобучение, недообучение и утечку данных.



Смотри: Как тестировать модели машинного обучения | Как избежать утечки данных в компьютерном зрении 🚀

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

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

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

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

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

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

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

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

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

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

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

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

# Загрузи предварительно обученную модель или собственный обученный чекпойнт, например "path/to/best.pt"
model = YOLO("yolo26n.pt")

# Запусти валидацию; добавь split="test", если в YAML-файле набора данных задана тестовая выборка
metrics = model.val(data="coco8.yaml")
print(metrics.box.map)  # mAP50-95

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

Предсказание на новых изображениях#

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

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

# Загрузи предварительно обученную модель или собственный обученный чекпойнт, например "path/to/best.pt"
model = YOLO("yolo26n.pt")

# Запусти предсказание для папки тестовых изображений и сохрани результаты с разметкой
results = model.predict(source="path/to/test_images", save=True)
Тестирование предварительно обученной модели до пользовательского обучения

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение#

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

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

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

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

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

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

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

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

Комментарии