Анализ оценки и дообучения модели#
После обучения модели YOLO следующий шаг — измерить качество её работы и дообучить её, чтобы устранить недостатки. Для количественной оценки точности используются такие метрики, как mAP и IoU, а при дообучении корректируются параметры обучения, чтобы усилить слабые стороны модели и достичь цели твоего проекта. В этом руководстве объясняется, какие метрики оценки являются ключевыми, как их интерпретировать и как действовать с учётом полученных результатов.
Watch: Insights into Model Evaluation and Fine-Tuning | Tips for Improving Mean Average Precision
Оценка и дообучение выполняются ближе к концу рабочего процесса проекта компьютерного зрения, когда обучение уже началось и тебе нужно проверить, что модель точна, эффективна и готова к развёртыванию.
Ключевые метрики оценки#
Различные метрики позволяют измерить эффективность работы модели. Эти метрики производительности дают ясные числовые показатели, которые помогают направлять улучшения и обеспечивать достижение моделью поставленных целей.
Оценка уверенности#
Оценка уверенности отражает степень уверенности модели в том, что обнаруженный объект относится к определённому классу. Она принимает значения от 0 до 1, причём более высокие значения указывают на большую уверенность. Оценка уверенности помогает фильтровать предсказания: действительными считаются только обнаружения со значениями выше заданного порога.
Если при выполнении инференса ты не видишь предсказаний и уже проверил всё остальное, попробуй снизить порог уверенности. Иногда порог слишком высок, из-за чего модель игнорирует действительные предсказания. Его снижение позволяет модели рассматривать больше вариантов. Это может не соответствовать конечным целям проекта, но такой подход помогает понять возможности модели и решить, как её дообучать.
Пересечение по объединению#
Пересечение по объединению (IoU) — это метрика в области обнаружения объектов, которая измеряет степень перекрытия предсказанного ограничивающего прямоугольника с истинным ограничивающим прямоугольником. Значения IoU находятся в диапазоне от 0 до 1, где единица означает идеальное совпадение. IoU важна, поскольку показывает, насколько границы предсказания соответствуют фактическим границам объекта.
Средняя точность по классам#
Средняя точность по классам (mAP) измеряет общую эффективность модели обнаружения объектов. Она учитывает точность обнаружения объектов каждого класса, усредняет эти значения и выдаёт одно число, показывающее, насколько точно модель может обнаруживать и классифицировать объекты.
Чаще всего приводятся две метрики mAP:
- mAP@.5: измеряет среднюю точность при единственном пороге IoU, равном 0.5. Эта метрика проверяет, может ли модель правильно находить объекты при менее строгом требовании к точности. Она показывает, находится ли объект примерно в правильном месте, без необходимости идеального совпадения, и помогает оценить общую способность модели обнаруживать объекты.
- mAP@.5:.95: усредняет значения mAP, рассчитанные при нескольких порогах IoU — от 0.5 до 0.95 с шагом 0.05. Эта метрика является более детальной и строгой. Она даёт более полное представление о точности обнаружения объектов моделью при разных уровнях строгости и особенно полезна для приложений, требующих точного обнаружения объектов.
К другим метрикам mAP относятся mAP@0.75, использующая более строгий порог IoU 0.75, а также mAP@small, medium и large, оценивающие точность для объектов разных размеров.
Оценка модели YOLO26#
Ты можешь оценить обученную модель YOLO26 с помощью режима валидации. Подробное описание вычисления и интерпретации каждой метрики смотри в руководстве по метрикам производительности YOLO26.
Обработка изображений разных размеров#
Оценка модели на изображениях разных размеров помогает понять её производительность на разнообразных наборах данных. Параметр валидации rect=true группирует изображения по соотношению сторон и дополняет каждый пакет до наименьшей подходящей формы, поэтому прямоугольные изображения оцениваются без принудительного преобразования в квадрат.
Параметр imgsz задаёт размер изображения, используемый при валидации, и применяет его как квадратный размер. Если не задать его явно, YOLO26 повторно использует значение, сохранённое в настройках модели: 640 для официальных предварительно обученных моделей или размер, с которым обучалась пользовательская контрольная точка. С помощью rect=true YOLO26 ограничивает длинную сторону значением imgsz и дополняет короткую сторону до кратного шагу, сохраняя соотношение сторон. Настрой imgsz с учётом размеров набора данных и доступной памяти GPU.
Доступ к метрикам YOLO26#
Чтобы подробно изучить производительность модели, можно получить доступ к отдельным метрикам оценки с помощью нескольких строк кода на Python. Приведённый ниже фрагмент загружает модель, выполняет валидацию и выводит наиболее полезные метрики.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Run validation on your dataset
results = model.val(data="coco8.yaml")
# Overall metrics
print("mAP50-95:", results.box.map) # mAP at IoU 0.50:0.95
print("mAP50:", results.box.map50) # mAP at IoU 0.50
print("mAP75:", results.box.map75) # mAP at IoU 0.75
print("Mean precision:", results.box.mp)
print("Mean recall:", results.box.mr)
print("Fitness:", results.box.fitness()) # weighted score used for model selection
# Per-class metrics
print("Class indices evaluated:", results.box.ap_class_index)
print("Per-class mAP50-95:", results.box.maps)
# Per-image precision, recall, F1, TP, FP, and FN
print("Per-image metrics:", results.box.image_metrics)
# Per-stage timing breakdown in milliseconds per image
print("Timing breakdown (ms/image):", results.speed)Обрати внимание: fitness() — это метод, который необходимо вызывать со скобками, тогда как такие метрики, как map, map50 и mp, являются свойствами и вызываются напрямую.
Атрибут results.box.image_metrics — это словарь для каждого изображения с ключами в виде имён файлов изображений, содержащий precision, recall, f1, tp, fp и fn при IoU 0.5 для каждого изображения. Время предварительной обработки, инференса, вычисления потерь и постобработки отдельно указывается в словаре results.speed. Вместе эти данные позволяют определить, с какими изображениями модели сложно работать, и соответствующим образом выполнить дообучение.
Дообучение модели#
Дообучение берёт предварительно обученную модель и корректирует её параметры, чтобы повысить производительность для конкретной задачи или набора данных. Этот процесс также называют повторным обучением модели; он позволяет модели лучше понимать и предсказывать результаты для данных, с которыми она столкнётся в реальных приложениях. На основе результатов оценки ты повторно обучаешь модель на собственных данных, корректируя аргументы обучения, описанные в руководстве по дообучению.
Разбиение изображений на фрагменты для обнаружения небольших объектов#
Разбиение изображений на фрагменты может повысить точность обнаружения небольших объектов. Разделяя большие изображения на небольшие сегменты, например преобразуя изображения размером 1280x1280 в несколько сегментов 640x640, ты сохраняешь исходное разрешение и позволяешь модели обучаться на фрагментах высокого разрешения. Ultralytics поддерживает это во время инференса с помощью инференса по фрагментам SAHI. При обучении на фрагментированных изображениях обязательно правильно скорректируй разметку для каждого нового сегмента.
Заключение#
Оценка и дообучение превращают обученную модель в надёжную модель, готовую к развёртыванию: такие метрики, как mAP и IoU, выявляют слабые места, а целевые изменения параметров помогают их устранить. Начни с режима валидации, чтобы оценить модель, затем повторно обучи её с аргументами из руководства по дообучению и продолжай итерации с новыми параметрами, методами и наборами данных. Если в процессе возникнут вопросы, обратись к сообществу в репозитории Ultralytics на GitHub или на сервере Ultralytics в Discord.
Часто задаваемые вопросы#
Для оценки производительности модели YOLO26 важны такие метрики, как оценка уверенности, пересечение по объединению (IoU) и средняя точность по классам (mAP). Оценка уверенности измеряет степень уверенности модели для каждого обнаруженного класса объектов. IoU оценивает степень перекрытия предсказанного ограничивающего прямоугольника с истинным. Средняя точность по классам (mAP) объединяет значения точности по всем классам; mAP@.5 и mAP@.5:.95 — два распространённых варианта для разных порогов IoU. Подробнее об этих метриках смотри в нашем руководстве по метрикам производительности YOLO26.
Дообучение предварительно обученной модели YOLO26 включает корректировку её параметров для повышения производительности на конкретной задаче или наборе данных. Сначала оцени модель с помощью метрик, затем повторно обучи её на собственном наборе данных, используя предварительно обученные веса. Во время оценки такие параметры, как
rect=true, помогают эффективно обрабатывать изображения разных размеров. Аргументы обучения, которые можно изменить, описаны в руководстве по дообучению.Чтобы обрабатывать изображения разных размеров во время оценки, используй параметр
rect=trueв YOLO26: он группирует изображения по соотношению сторон и дополняет каждый пакет, не преобразуя все изображения в квадрат. Параметрimgszзадаёт размер изображения для валидации; если не переопределить его, YOLO26 повторно использует сохранённое в модели значение — 640 для официальных предварительно обученных моделей. Настройimgszс учётом набора данных и доступной памяти GPU. Подробнее смотри в нашем разделе об обработке изображений разных размеров.Повышение средней точности по классам (mAP) модели YOLO26 включает несколько шагов:
- Настройка гиперпараметров: экспериментируй с разными скоростями обучения, размерами пакета и аугментациями изображений.
- Аугментация данных: используй такие методы, как Mosaic и MixUp, чтобы создавать разнообразные обучающие примеры.
- Разбиение изображений на фрагменты: разделяй большие изображения на небольшие фрагменты, чтобы повысить точность обнаружения небольших объектов.
Аргументы обучения для шагов 1 и 2 описаны в руководстве по дообучению, а шаг 3 — в разделе разбиения изображений на фрагменты.
После выполнения валидации можно получить доступ к метрикам оценки модели YOLO26 с помощью Python:
Использованиеfrom ultralytics import YOLO # Load a model model = YOLO("yolo26n.pt") # Run validation results = model.val(data="coco8.yaml") # Access key metrics print("Mean average precision at IoU=0.50:", results.box.map50) print("Mean average precision at IoU=0.50:0.95:", results.box.map) print("Mean recall:", results.box.mr) print("Class indices evaluated:", results.box.ap_class_index)Анализ этих метрик помогает дообучать и оптимизировать модель YOLO26. Для более подробного изучения смотри наше руководство по метрикам производительности YOLO.