论文链接:https://arxiv.org/abs/1904.01355
本文是自己阅读完论文后为了方便回顾整理的笔记,如果有错误的地方欢迎在评论区指出。
基于FCN的框架进行对象检测的缺点:
1、必须对图像金字塔检测,违背了FCN所有卷积一次计算的理念。
2、应用于具有高度重叠边界框的通用对象时效果不佳。高度重叠的边界框导致了模糊性:对于重叠区域中的像素,不清楚要回归哪个边界框。
FCOS:利用gt box中的所有点来预测边界框,可能会在远离目标物体中心的位置产生一些低质量的预测边界框。为了抑制这些低质量的检测,引入了一个只有一层的”中心度“分支来预测一个像素点对其相应边界框中心的偏差。这个分数被用来降低低质量的检测边界框的权重,并在NMS中合并检测结果。
FCOS是一个基于anchor-free的单阶段目标检测算法,一种完全卷积的无锚框和proposal的单阶段目标检测器,以逐像素预测的方式解决目标检测,类似于语义分割。
①检测无anchor无proposal,减少了设计参数的数量。
②避免了与anchor box有关的复杂计算:如IOU计算和anchor box与gt box之间的匹配。加快速度,减少内存。
③FCOS可以作为两阶段检测器中的RPN,甚至比RPN更好的性能
④可以立即扩展到解决其他视觉任务,包括实例分割和关键点检测等。
⑤可以利用尽可能多的前景样本来训练回归器,而基于anchor的检测器仅将达到一定IOU的anchor box视为正样本。
1)关于特征图上每个像素映射到原输入图像后的点:基于anchor的检测器将其视为(多个)anchor box的中心,并以这些anchor box为参考对目标边界框进行回归;FCOS直接回归该位置的目标边界框,回归量是该点到框的四条边的距离(图3中的4个量)。换句话说,FCOS直接将位置视为训练样本,而不是锚框。
2)如果位置(x,y)落入任何gt box,并且该位置的类标签c**是gt box的类标签,则将其视为正样本,否则为负样本,c*=0(背景类)。除了用于分类的标签,还有一个4D实数向量t*=(l*,t*,r*,b*)作为该位置的回归目标。l*,t*,r*,b*是位置到边界框四个边的距离。如果一个位置落入多个边界框,则将其视为模糊样本。我们只需选择面积最小的边界框作为其回归目标,比如说图2的点同时落入两个框内,选择蓝色的那个作为回归目标。通过多级FPN预测,模糊样本的数量可以大大减少,因此它们几乎不影响检测性能。形式上,如果位置(x,y)与一个边界框Bi相关联,那么该位置的训练回归目标可以表示为:
网络输出在特征图之后添加了4个卷积层,用于分类和回归。此外,由于回归目标总是正数,我们采用exp(x)将任何实数映射到回归分支的顶部(0, ∞)。FCOS的网络输出变量比每个位置有9个锚框的基于anchor的检测器要少9倍。
Lcls:focal loss,Lreg:IOU loss。Npos:正样本的数量。λ:1。Lreg的平衡权重。指示函数1{c*>0}=1,c*<0时该指示函数为0。
p>0.05视为正样本。根据反转方程(1)获得预测边界框。
使用FPN可以降低模糊样本的比例,因为大多数重叠的对象被分配到不同的特征级别。
1)、定义了5个级别的特征图,在不同级别的特征图上检测不同大小的对象。P3、P4、P5由主干CNN的特征图C3、C4、C5生成,然后是1*1卷积层。P5应用一个步长为2的卷积层得到P6,P6应用一个步长为2的卷积层得到P7。各特征图步幅分别为:8、16、32、64、128。
2)、在不同的特征级别之间共享头部,不同的特征级别需要回归不同的尺寸范围。因此,对不同的特征级别使用相同的头是不合理的。因此,FCOS没有使用标准的exp(x),而是使用exp(six),用一个可训练的标量si来自动调整特征级别Pi的指数函数的基数。
3)、同一类别的物体之间的重叠所导致的模糊样本并不重要。如果具有相同类别的对象A和B由重叠,无论重叠部分的位置预测哪个对象,预测都是正确的。遗漏的对象可以通过只属于它的位置进行预测。因此,只计算不同类别的边界框之间重叠的模糊样本。
举个例子:A、B都是狮子,发生了重叠,重叠的位置预测哪个框的类别都是狮子,假设预测的A,那么遗漏的B这个框由不与A发生重叠部分的点产生预测框来进行预测。
在使用FPN后,FCOS和基于锚的检测器之间仍然存在性能差距,这是优于原理对象中心的位置产生了许多低质量的预测边界框。
图3中,红色表示1,蓝色表示0,其他颜色表示1、0之间的值。中心度由公式(3)计算,描述了从位置到该位置负责的对象中心的归一化距离。并随着位置偏离物体中心而从1衰减到0。测试时,最终分数=预测的中心度*相应的分类分数,低质量边界框的最终分数会被降低,很有可能被NMS过滤掉。
中心度的一个替代方法:仅使用gt box的中心部分作为正样本,代价是一个额外的超参数。
1、ctr.on reg.:将中心度分支移到回归分支
2、ctr.sampling:只对gt box的中心部分采样为正样本。
3、GIoU:在IoU Loss 中惩罚外接矩形区域上的联合区域。
4、Normalization:用FPN水平的跨度对公式(1)中的回归目标进行归一化。
参考:
1、https://blog.csdn.net/WZZ18191171661/article/details/89258086
2、霹雳吧啦Wz
3、https://blog.csdn.net/weixin_44751294/article/details/119585952