FCOS相关
创始人
2024-01-17 19:37:51

因为用到了某家带bpu的(懂的都懂) 他们支持这个只是demo做的有点差 还没有c++的~~ 

因为他们用所以就搬来了 勿怪啊 基于昨天和他们相关的tops 又说说这个!!

FCOS是一种基于全卷积的单阶段目标检测算法,并且是一种Anchor box free的算法。其实现了无Anchor,无Proposal,并且提出了Center-ness的思想,极大的提升了Anchor-Free目标检测算法的性能。

全卷积单阶段目标检测

类型:基于multy-level的目标检测模型

Paper link:https://arxiv.org/pdf/1904.01355.pdf

Code link:https://github.com/tianzhi0549/FCOS

anchor box 的弊端:

1.太多超参数,调试复杂

检测性能对anchor的尺寸、宽高比、数量十分敏感。比如RetinaNet中,调整超参数能够影响4%的AP在COCO数据集上。因此对于anchor的超参数需要细致调整。

2.难以处理尺度变化很大的目标,尤其是很小的目标

预定义的anchor框尺寸和宽高比是固定的也会妨碍检测模型的泛化性能,检测模型会难以处理尺度变化很大的目标,尤其是很小的目标。

3.通用性差

对于新的检测任务就需要重新设计anchor

4.negative sample 占比太大,正负样本不均衡

为了获得更高的找回率,基于anchor的模型会在输入图像上密集放置anchor框,大多数anchor框在训练阶段被认为是负例,过多的负例加剧了正负样本之间的不平衡。

5.计算复杂

大量的anchor框也会明显增加计算量和内存占用,尤其在iou计算的阶段。

问题:

​ 全卷积FCN神经网络在密集预测任务(语义分割、高度估计、关键点检测、计数)上获得了巨大的成功。作为其中一种高层的视觉任务,目标检测因为用到了anchor,可能是唯一一个没有纯粹全卷积像素级预测的任务了。很自然我们会疑问:我们能通过简单的像素级预测来做目标检测吗,像语义分割中的FCN那样?

现有方法和存在的问题:

一些工作尝试去构造一种FCN-base的框架,如DenseBox、UintBox。具体来说,这些FCN-base的模型直接在特征图的一层的每个空间位置上预测一个4D向量和一个类别。如图1左所示,4D向量 (l,t,r,b)表示该位置到边界框四条边的偏移量。这些模型和语义分割的FCNs很像,除了每个位置需要回归一个4D向量以外。

DenseBox图像金字塔多次重复计算

为了处理不同尺寸的边界框,DenseBox将训练样本缩放成固定尺寸,从而在特征金字塔上进行检测,这和一次计算所有卷积的FCNs理念不同。

重叠处的像素回归的框是不明确的

而且,这些方法主要用在特定区域的检测上,比如场景文字检测和人脸检测,因为边界框大大重叠,所以这方法不适合在通用目标检测上使用。如图1右所示,高度重叠的边界框会给训练带来问题:重叠处的像素回归的框是不明确的。

 

如左图所式,FCOS预测一个4D向量 (l,t,r,b)来编码每个前景像素点对应边界框的位置(训练时由ground-truth监督)。右图展示了一个像素点对应多个边界框,这可能会给边界框的回归带来问题。

解决方法

1.使用FPN可以大幅度减弱目标分类和回归的这种不明确性。

2.“中心度”(center-ness)分支来预测一个像素到对应边界框中心的偏移,差的边界框会被”中心度“分支抑制

这种新的检测模型有如下优势:

  • 检测和其他FCNs的任务(如语义分割)统一,使它便于在任务间复用。
  • 检测也可以是proposal free和anchor free的,显著降低参数量。设计参数一般需要多次调整,用上很多tricks来获得好的性能。因此我们新的检测框架使检测模型大大简化,尤其是在训练阶段。而且我们的方法完全避免了anchor的复杂的iou计算和匹配,降低了两倍的内存占用。
  • 毫无疑问,我们达到了单阶段检测器sota的性能,而且我们提出的FCOS也可以用做RPN网络,在其他RPN的双阶段检测器中,达到了更好的性能。考虑到这是一个简单的、anchor free的、性能卓越的模型,我们建议学界重新思考anchor的必要性,而后者在当下被认为是检测中理所应当的标准。
  • 提出了模型通过少量调整可以立刻用于解决其他视觉任务,包括实例分割、关键点检测。我们相信这种新的方法可以成为实例级预测问题的新的baseline。

方法 

在这首先推导目标检测在像素级预测范式中的形式。其次展示了如何利用多层预测来提高召回率,解决训练中重叠边界框的不确定性的问题。最后,提出了“中心度”分支,抑制差的检测框,大幅度提高总体性能。

1.网络结构

FCOS采用的网络架构和RetinaNet一样,都是采用FPN架构,如图2所示,每个特征图后是检测器,检测器包含3个分支:classification,regression和center-ness。

 

2.正负样本定义

 

如果其落在任何GT的中心区域,就认为这个位置为正样本,并负责预测这个GT,在映射后的该点直接回归目标框,而不是把这个点看成目标框的中心点进行回归;否则为负样本。如果落在多个GT的区域内,则称其为模糊样本(ambiguous)。

3.FPN结构和ambiguous样本的处理

重叠框会在训练过程中带来二义性模糊的问题,因为重叠区域的像素需要判断:我到底该去回归哪个框呢?这是导致FCN based模型性能较差的一个原因。对于anchor-based方法,采用FPN时会将不同大小的anchor放置在不同大小的特征图上,特征图越小,感受野相应更大,用来检测更大的物体。同样地,这种设计理念可以用在FCOS模型上,以解决前面所说的模糊样本问题。

 

上python 

class Scale(nn.Module):def __init__(self, init_value=1.0):super(Scale, self).__init__()self.scale = nn.Parameter(torch.FloatTensor([init_value]))def forward(self, input):return input * self.scale

但是现在的版本中,前面已经提到每个特征图上的回归值其实是已经除以特征图的 s 进行缩放,这样就和学习一个scale值基本等同,所以加不加这个策略都可以。

模糊样本的出现大部分是由于物体重叠造成的,但是重叠的物体大部分其大小是不同的,所以FPN的使用可以更一步解决模糊样本问题。

4.网络输出和loss定义

  1. classification分支

和RetinaNet一样采用 C 个二分类,classification分支共输出C个预测值,loss采用focal loss。

2. regression分支

regression分支每个位置预测一个实数向量 t=(l,t,r,b) ,其对应的target为当前位置与GT框4个顶点间的距离:

 

​ loss计算使用的是IOU loss。

3. ceterness分支

FCOS在regression分支的末尾添加了一个额外的center-ness分支(最早的版本是放在classification分支,但是放在regression分支效果更好)来抑制那些由那些偏离目标中心的位置所预测的低质量检测框。center-ness分支只预测一个值:当前位置与要预测的物体中心点之间的归一化距离,值在[0, 1]之间,图4给出了可视化效果,其中红色和蓝色值分别1和0,其它颜色介于两者之间,从物体中心向外,center-ness从1递减为0。

给定回归的 target=(l∗,t∗,r∗,b∗) ,center-ness的target定义为: 

 

centerness 可视化

centerness 的loss计算使用BCE损失。

最终的loss是三个loss相加。(以下是分类和回归loss)

在测试阶段,最终的置信度为center-ness和分类概率的乘积:

六、实验

简要提一下,日后如果感兴趣再补。

COCO训练集上训练,验证集上测试和消融研究,在测试集上提交得到最终结果。

如果没额外说明:

训练: 主干resnet50,优化器SGD训练90K次迭代,初始学习率0.01,batchsize=16,学习率在60K和80K次迭代时减小10倍,衰减系数1e-4,动量0.9。用ImageNet预训练模型,RetinaNet中的初始化方法初始化其他参数,输入图像短边固定在800,长边小于等于1333。

预测: 输入图像经过模型,后处理和RetinaNet相同(包括超参数)。

消融分析

  • BPR:我们看到RetinaNet还是很强的,但是在使用了多层级FPN预测后,FCOS的召回也很棒。 

 

  • 二义性样本:使用了FPN后,二义性样本减小明显(第二列为不同类别的二义性样本个数)。 

 

  • FPN:FPN同样提升了10几个点

  • 候选框数量、存储:因为没有anchor,所以对比单个像素点上9个anchor框少了9倍的候选框数量就很显然了,与此同时,显存占用也只有一半,性能总体没掉,甚至看AP还比RetinaNet高。

 

  • 中心度:从上至下分别是没用中心度、使用每个像素上回归出来的向量计算得到中心度(间接的方法)、使用文中提到的额外分支预测的中心度(直接的方法+)。可见这个额外分支虽然只有单层,但在全指标上都有明显的提升。

 

  • RPN:FCOS可以作为two-stage模型的RPN网络,提了不少点。

 

  • 模型对比:文中结果看看起来基本稳坐one-stage方法第一的宝座。但模型共享了头部网络,也减小了anchor算iou的计算量,但是全文通篇没有提到前向速度。我姑且估计是因为ResNe(X)t-50/101+FPN的多层级预测减慢了速度,可以跑跑开源代码试试。 

  • 改进(这个作者不放在算法设计部分而是放在实验部分,不起眼但是很重要):

 

    • “ctr. on reg.”: 将 center-ness分支移到regression branch. 
    • “ctr. sampling”: 只采样中心点附近的 ground-truth boxes作为正样本.
    • “GIoU”: 使用GIOUloss
    • “Normalization”: 将regression targets 除以 the strides:
  • centerness可视化

 ​

 如左图所式,FCOS预测一个4D向量 (l,t,r,b)来编码每个前景像素点对应边界框的位置(训练时由ground-truth监督)。右图展示了一个像素点对应多个边界框,这可能会给边界框的回归带来问题。

分类得分乘以ceterness之后,,低质量的不准的框大大减少,相当于减少了FP.

下面在复习一下~~  whaosoft aiot http://143ai.com 

经典单阶段Anchor-Free目标检测模型

Anchor free的好处是:

  • 避免了Anchor Box带来的复杂计算,如计算重合度IoU;
  • 避免了Anchor Box相关的超参数设置,其对性能影响较大;

因此,FCOS的优点是:

  • 其可以和其他使用FCN结构的任务相统一,方便其他任务方法之间的re-use
  • proposal free和anchor free,减少了超参数数量,更简单
  • 减少了计算复杂度,如IoU计算
  • FCOS在单阶段算法中性能不错,并且证明了FCOS替换两阶段算法里的RPNs也可以取得更好的性能
  • 适用于各种instance-wise的预测问题

FCOS包含三个大模块:

正负样本定义

一个目标检测算法性能的优异性,最大影响因素就是如何定义正负样本。而FCOS的定义方式非常通俗易懂。主要分为两步: (1) 设置regress_ranges=((-1, 64), (64, 128), (128, 256), (256, 512),(512, INF),用于将不同大小的bbox分配到不同的FPN层进行预测即距离4条边的最大值在给定范围内 (2) 设置center_sampling_ratio=1.5,用于确定对于任意一个输出层距离bbox中心多远的区域属于正样本(基于gt bbox中心点进行扩展出正方形,扩展范围是center_sample_radius×stride,正方形区域就当做新的gt bbox),该值越大,扩张比例越大,选择正样本区域越大;(细节:如果扩展比例过大,导致中心采样区域超过了gt bbox本身范围了,此时需要截断操作)

损失函数

上面已经发了~~!!

Center-ness的计算公式如下,其范围为0-1,训练阶段使用BCE Loss并和之前的损失函数相加,测试阶段用于加权预测得分:

 

实验结果

对比实验结果:

有无Center-ness分支的消融实验:

 

替换RPN的消融实验:

 

 

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
怎么样消灭臭虫 臭虫用什么药消... 奔奔虫控|被吸血臭虫骚扰的滋味,你体会过吗?相信被臭虫骚扰过的人都不想再体验一次了吧?那么臭虫应该怎...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
苁蓉的食用方法 鲜苁蓉的吃法有... 肉苁蓉号称“温而不热,补而不峻,暖而不燥,滑而不泄,故有从容之名。”历来也是传统药食同源的滋补佳品。...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...