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

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

Детекции деляться на следующие виды:

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

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

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

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

Количество верно положительных детекций назыа

Далее, для конкретного класса (например, "машина") считаются меры 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{align*} \text{Precision} &= \text{Precision}(\alpha) \\ \text{Recall} &= \text{Recall}(\alpha) \end{align*}
Как будут изменяться Precision и Recall при увеличении α\alpha?

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

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

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

Как видим, график имеет пилообразную форму, поэтому его сглаживают, заменяя значение precision P для каждого значения recall R на максимальный 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