Anchor-free之CenterNet

anchor-base VS Anchor-free

Anchor-base存在的问题:

•与锚点框相关超参 (scale、aspect ratio、IoU Threshold) 会较明显的影响最终预测效果;

•预置的锚点大小、比例在检测差异较大物体时不够灵活;

•大量的锚点会导致运算复杂度增大,产生的参数较多;

•容易导致训练时negative与positive的比例失衡。

Anchor-free算法的优点:

•使用类似分割的思想来解决目标检测问题;

•不需要调优与anchor相关的超参数;

•避免大量计算GT boxes和anchor boxes 之间的IoU,使得训练过程占用内存更低。

由于物体的中心区域是远小于其他背景区域的,整个分类的正负样本和难易样本是极不均衡的。直接训练这样的分类问题很难收敛到一个满意的结果。Base anchor对于正负样本比例失调的解决方式一般为focal loss 和OHEM。前者在损失函数上优化,对正负样本已经困难样本进行不同程度的惩罚;后者将原来的ROI网络扩充为两个ROI,一个ROI只有前向传播,用于计算损失,一个ROI正常前向后向传播,以hard example作为输入,计算损失并传递梯度,根据损失进行筛选,选出对分类和检测影响大的样本。

Base anchor检测差异较大物体的策略主要是FPN,如果没有引入FPN,feature map的每个位置只能输出一个框,并且下采样的倍数是8或者16,那么可能会有很多物体的中心点落在同一格子中,这样就会导致训练的时候有多框重叠现象。FPN这种多层级的表示有效解决了这种冲突的现象,可以在一定程度上解决检测物体差异较大的现象。Anchor free没有使用FPN, feature map的每个位置只能输出一个框,下采样的倍数是8或者16,随着FPN的引入,不同尺寸的物体被分配到了不同的层级上,冲突的概率大大降低。

  • CenterNet VS CornerNet等

CornerNet将bbox的两个角作为关键点;ExtremeNet 检测所有目标的 最上,最下,最左,最右,中心点。它们都需要经过一个关键点grouping阶段,这会降低算法整体速度。CenterNet针对CornerNet对内部语义缺失和grouping耗时的问题,提出了对中心点进行估计的方法,找到目标的中心,回归出他们的尺寸。仅仅提取每个目标的中心点,无需对关键点进行grouping 或者是后处理。

网络结构

论文中CenterNet提到了三种用于目标检测的网络,这三种网络都是编码解码(encoder-decoder)的结构:

1. Resnet-18 with up-convolutional layers : 28.1% coco and 142 FPS

2. DLA-34 : 37.4% COCOAP and 52 FPS

3. Hourglass-104 : 45.1% COCOAP and 1.4 FPS

每个网络内部的结构不同,但是在模型的最后输出部分都是加了三个网络构造来输出预测值,默认是80个类、2个预测的中心点坐标、2个中心点的偏置。

确立中心点

在整个训练的流程中,CenterNet学习了CornerNet的方法。对于每个标签图(ground truth)中的某一类,我们要将真实关键点(true keypoint) 计算出来用于训练,中心点的计算方式如下

 

对于下采样后的坐标,我们设为

其中 R 是文中提到的下采样因子4。所以我们最终计算出来的中心点是对应低分辨率的中心点。然后我们对图像进行标记,在下采样的[128,128]图像中将ground truth point以下采样的形式,用一个高斯滤波来将关键点分布到特征图上。

 损失函数

 

  • 1.中心点的损失函数

其中 α 和 β 是Focal Loss的超参数, N 是图像 I 的的关键点数量,用于将所有的positive focal loss标准化为1。在这篇论文中 α 和 β 分别是2和4。这个损失函数是Focal Loss的修改版,适用于CenterNet。

  • 2.目标中心的偏置损失

图像进行了 R=4 的下采样,这样的特征图重新映射到原始图像上的时候会带来精度误差,因此对于每一个中心点,额外采用了一个local offset 去补偿它。所有类 c 的中心点共享同一个offset prediction,这个偏置值(offset)用L1 loss来训练:

这个偏置损失是可选的,我们不使用它也可以,只不过精度会下降一些。

  • 3.目标大小的损失

假设 (X1(k),Y1(k),X2(k),Y2(k)) 为为目标 k,所属类别为c,它的中心点为

我们使用关键点预测 Y^ 去预测所有的中心点。然后对每个目标 K 的size进行回归,最终回归到Sk=(X2(k)-X1(k), Y2(k)-Y1(k)),这个值是在训练前提前计算出来的,是进行了下采样之后的长宽值。作者采用L1 loss 监督w,h的回归

 

  • 4.总损失函数

整体的损失函数为物体损失、大小损失与偏置损失的和,每个损失都有相应的权重。

论文中 size 和 off的系数分别为0.1和1 ,论文中所使用的backbone都有三个head layer,分别产生[1,80,128,128]、[1,2,128,128]、[1,2,128,128],也就是每个坐标点产生 C+4 个数据,分别是类别以及、长宽、以及偏置。

推理阶段

在预测阶段,首先针对一张图像进行下采样,随后对下采样后的图像进行预测,对于每个类在下采样的特征图中预测中心点,然后将输出图中的每个类的热点单独地提取出来。就是检测当前热点的值是否比周围的八个近邻点(八方位)都大(或者等于),然后取100个这样的点,采用的方式是一个3x3的MaxPool。代码中设置的阈值为0.3,也就是从上面选出的100个结果中调出大于该阈值的中心点,最后经过soft nms得到最终的结果。

CenterNet的缺点

1.当两个不同的object完美的对齐,可能具有相同的center,这个时候只能检测出来它们其中的一个object。

2.有一个需要注意的点,CenterNet在训练过程中,如果同一个类的不同物体的高斯分布点互相有重叠,那么则在重叠的范围内选取较大的高斯点。

附:

DCN:https://www.jianshu.com/p/55ddeb498c65

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值