Вопрос или проблема
Я обучил модель YOLOv7 для задачи обнаружения. У меня только один класс, который является объектом, который я хочу обнаружить. Я запустил test.py с –conf-thresh равным 0.001 (по умолчанию) и второй раз с –conf-thresh равным 0.5.
Я получил две следующие PR_curve
и я не понимаю, что происходит. Разве [email protected] не определяет среднюю точность на пороге 0.5? Почему значение меняется, если я меняю порог?
Насколько я понимаю, [email protected] является средней точностью при пороге IOU, а не пороге уверенности. IOU (пересечение над объединением) определяет, как определять истинные/ложные положительные обнаружения, в то время как уверенность определяет, что на самом деле является обнаружением.
Ответ или решение
Изменение порога уверенности (confidence threshold) в моделях, таких как YOLO (You Only Look Once), значительно влияет на производительность моделей и метрики оценки, такие как average precision (AP) и PR-кривые (Precision-Recall curves). Давайте рассмотрим, как изменение порога уверенности влияет на [email protected] и как это взаимосвязано с другими аспектами работы модели.
### Понимание порога уверенности
Порог уверенности — это минимальное значение, при котором модель считает, что обнаруженный объект является положительным примером. Например, если порог уверенности установлен на 0.5, это означает, что модель будет принимать во внимание только те объекты, уверенность в которых превышает 50%. При установке порога на 0.001, модель будет включать почти все обнаружения, даже при очень низкой уверенности.
### Влияние на PR-кривую
Когда вы изменяете порог уверенности, вы меняете количество обнаружений, которые модель использует для вычисления метрик. Когда вы устанавливаете низкий порог (например, 0.001), модель будет обнаруживать больше объектов, что чаще приводит к большему количеству положительных предсказаний, даже ложных. Это позволяет графику PR иметь более высокую точность при большом количестве обнаружений, но может уменьшить полноту.
В то время как меньший порог уверенности увеличивает количество возвращаемых обнаружений, это также может привести к большему количеству ложноположительных результатов, что ухудшает точность. При высоком пороге (например, 0.5) вы исключаете многие ложные срабатывания, но можете пропустить некоторые истинные положительные результаты. Таким образом, PR-кривая становится более “строгой” и, как следствие, может показывать более низкие значения метрики [email protected].
### Средняя точность (AP)
В большинстве случаев average precision (AP) вычисляется как площадь под PR-кривой или в некоторых случаях как значение при определённом пороге IoU (intersection over union). Эти два параметра — порог уверенности и IoU — управляют тем, как мы определяем истинные положительные, ложные положительные и ложные отрицательные.
Важно отметить, что даже если AP обычно оценивается через IoU, когда вы настраиваете порог уверенности, фактически пересчитываются значения точности и полноты, что в конечном итоге также влияет на итоговое значение AP. Это происходит потому, что изменяя порог уверенности, вы изменяете набор обнаружений, на котором рассчитываются метрики для определения AP.
### Заключение
Итак, давайте подведем итог: изменение порога уверенности существенно меняет результат, поскольку он определяет, какие обнаружения принимаются за “правильные” и отфильтровываются. Это в свою очередь влияет на двух основных метрик – точность и полноту, которые критически важны для вычисления [email protected] и других производных метрик. Важно экспериментировать с различными значениями порога уверенности, чтобы найти оптимальное соотношение между точностью и полнотой, подходящее для конкретной задачи.
Таким образом, понимание взаимосвязи между порогами уверенности, PR-кривыми и average precision позволит вам более эффективно оценивать производительность вашей модели YOLO и улучшать её результаты.