Перейти к основному содержимому

Оценка качества детекции

По корректности распознавания класса объекта и по точности его выделения мерой IoU обнаружения в задаче детекции объектов делятся на следующие виды:

  • Верно положительные (True Positives): модель корректно распознала класс объекта и выделила его рамкой, сильно пересекающейся с истинной рамкой (IoUα\text{IoU}\ge \alpha).

  • Ложно положительные (False Positives): модель выделила рамкой объект, которого на самом деле нет либо выделила присутствующий объект, но неточно (IoU<α\text{IoU}< \alpha).

  • Ложно отрицательные (False Negatives): модель не распознала реально присутствующий объект.

Случаи верно отрицательных детекций (True Negatives), как в бинарной классификации, в задаче детекции не рассматривается, поскольку, строго говоря, им соответствуют все случаи, когда модель корректно не сработала на отсутствие объектов, а нас интересуют только корректные/некорректные выделения объектов целевых классов.

Далее, для конкретного класса (например, "машина") считаются меры Precision и Recall, как в бинарной классификации:

Precision=TPTP+FP\text{Precision}=\frac{TP}{TP+FP} Recall=TPTP+FN\text{Recall}=\frac{TP}{TP+FN}

Например, для класса "машина":

  • Мера Precision показывает, как часто среди детекций машин действительно оказывались корректно выделенные машины.

  • Мера Recall показывает, какую долю машин среди реально присутствующих машин на изображении детектор сумел корректно выделить.

Как и в бинарной классификации, можно вычислять F-меру, агрегирующую Precision и Recall (через среднее гармоническое):

F-measure=2PrecisionRecallPrecision+Recall\text{F-measure} = \frac{2\cdot\text{Precision}\cdot\text{Recall}}{\text{Precision}+\text{Recall}}

Важно понимать, что меры Precision и Recall вычисляются для фиксированного значения порога α\alpha. При изменении этого порога они будут некоторыми функциями от него:

Precision=Precision(α)Recall=Recall(α)\begin{aligned} \text{Precision} &= \text{Precision}(\alpha) \\ \text{Recall} &= \text{Recall}(\alpha) \end{aligned}
Как будут изменяться Precision и Recall при увеличении α\alpha?

При увеличении α\alpha детектор будет осторожнее выделять объекты - только там, где он больше в них уверен. Соответственно Precision будет увеличиваться ценой того, что Recall будет становиться ниже.

Варьируя α\alpha от 0 до 1, можно построить график зависимости P(R)=Precision(Recall), который называется графиком зависимости точности от полноты (precision-recall curve), с которым мы уже сталкивались при оценке качества семантической сегментации.

Пример этого графика приведён ниже (синяя кривая, источник):

Как видим, график имеет пилообразную форму, поэтому его сглаживают, заменяя значение precision для каждого значения recall на максимальное значение precision при всевозможных значениях recall выше порога:

P(R)P~(R)=maxR~RP(R).P(R)\longrightarrow \tilde{P}(R)=\max_{\tilde{R}\ge R} P(R).

Точность P~\tilde{P} называют интерполированной точностью (interpolated precision) и её зависимость от Recall показана на графике выше красной кривой.

Для оценки качества детектора при всевозможных порогах α\alpha вычисляют меру Average Precision (AP) как площадь под графиком интерполированной точности:

AP=01P~(R)dRAP=\int_0^1 \tilde{P}(R)dR

На практике для этого часто разбивают значения Recall на равномерно распределённые значения R0,R1,...RKR_0,R_1,...R_K (обычно {0,0.1,0.2,...0.9,1}\{0,0.1,0.2,...0.9,1\}) и вычисляют приближённую площадь:

AP=k=1KP~(Rk)(RkRk1)AP = \sum_{k=1}^K\tilde{P}(R_k)(R_k-R_{k-1})

Если усреднять APcAP_c по каждому из CC классов в многоклассовой классификации, то получим величину Mean Average Precision (mAP):

mAP=1Cc=1CAPcmAP=\frac{1}{C}\sum_{c=1}^{C}AP_c