4. 目标检测基础

854 阅读2分钟

1. mAP

1.1 基本概念

IoU

IoU的定义:预测框和真实框的交并比。

IoU用来定义正负样本,若IoU>threshold,则为正样本;若IoU<=threshold,则为负样本。

Precision & Recall

查准率:预测为正且预测对的样本与所有预测为正的样本之比。

Precision=TPTP+FPPrecision=\frac{TP}{TP+FP}

查全率:预测为正且预测对的样本与所有实际为正的样本之比。

Recall=TPTP+FNRecall=\frac{TP}{TP+FN}

1.2 mAP计算流程

当一个数据集通过我们的目标检测算法,得到了预测的框和预测的类别。接下来,我们就需要通过计算IoU来判定这些预测框的正负性,以及经过mAP来判定我们算法的好坏。

举例说明

Image1,2预测猫猫类别。红框为预测框,绿框为真实框。百分数为预测猫猫置信度。

图片.png

根据置信度降序进行排序。将IoU>0.5的预测框置为TP,IoU<=0.5的预测框置为FP。 计算每个置信度阈值下的Precision和Recall:例如,confidence>=88%时,所有数据集中,(将confidence<88%的预测框忽略掉。多个预测框对应同一个GT,则置信度最高的那个视为TP,其他的视为FP)TP=1,FP=1,FN=2,因此Precision=1/2,Recall=1/3。

图片.png

绘制出P-R曲线图,然后计算P-R曲线面积作为AP值。

图片.png

计算步骤

0.选用较低的置信度阈值来筛选网络的预测框。使用nms去除高度重复的框。

1.根据置信度降序,并根据IoU阈值判定TP、FP、FN。

2.计算不同置信度阈值下的Precision和Recall,绘制P-R曲线。

3.P-R曲线面积即为AP值。

4.计算完每个类的AP值求平均即为mAP。

COCO数据集的mAP

COCO数据集的"AP"是对不同的IoU阈值的AP值取平均,再对类别取平均得到最终的mAP(在COCO中mAP也叫AP)。

2. NMS 算法

NMS发生在目标检测算法的最后一步,计算mAP的前一步。

图片.png

NMS 步骤

(1) 将某一类别的bbx按照confidence从高到低排序。

(2) 记录当前confidence最大的bbx。

(3) 计算最大confidence对应的bbx与剩下所有的bbx的IoU,移除所有大于IoU阈值的bbx(保留小于IoU阈值的bbx索引)。

(4) 对剩下的bbx,循环执行(2)和(3)直到所有的bbx均满足要求(即不能再移除bbx)。

(5) 对每个类依次进行(1)~(4)操作。

(6) 跨种类比较,如果该框在多类别中都是较大confidence,保留最大confidence。

3. Focal loss

Focal Loss 原论文链接

我们首先了解一点,机器都是通过降低loss来达到最终的拟合。那么如果故意增大某一个loss的权重,就会使机器偏向于学习这部分的特征以降低这部分loss,最终提高了机器的在这方面的性能。

3.1 控制难易样本对loss的贡献

图片.png

图1 绘制不同γ下的FL损失函数。横坐标为目标的预测概率pt,纵坐标为损失值。

γ=0\gamma=0时,FL=CE为二分类交叉熵损失函数。当前面加上了调制系数(1pt)γ(1-p_t)^\gamma,我们就可以通过这个系数来控制难易样本对loss的贡献程度:

当目标预测概率为pt=0.9p_t=0.9时(pt[0,1]p_t∈[0,1]),我们可以说这是一个易区分的样本,得知(1pt)γ(1-p_t)^\gamma非常接近于0,FL的结果是非常接近0的,降低易区分样本的损失值。

当目标预测概率为pt=0.1p_t=0.1时,我们可以说这是一个难区分的样本,得知(1pt)γ(1-p_t)^\gamma非常接近于1,FL的结果是接近无限大的,增加难区分样本的损失值。

通过设计Focal Loss,降低易区分样本对loss的贡献,加大难区分样本对loss的贡献,最终使网络更加关注那些难区分的样本,从而提高网络的预测能力。

3.2 控制正负样本对loss的贡献

目标检测中往往负样本的数量远远大于正样本,这会导致网络将大部分的精力财力耗在了大量的负样本上,对最终的检测效果将是不利的,因此我们可以想到降低负样本对loss的贡献,增大正样本对loss的贡献,使网络对正负样本的关注度做一个权衡。

于是FL前又添加了一个权重因子αt\alpha_t控制正负样本对loss的贡献:

FL(pt)=αt(1pt)γlog(pt)FL(p_t)=-\alpha_t(1-p_t)^\gamma log(p_t) αt[0,1]\alpha_t∈[0,1]

正样本,αt=α\alpha_t=\alpha,一般取0.75。

负样本,αt=1α\alpha_t=1-\alpha,则为0.25。