目标检测Anchor free方法总结:YOLOv1、CornerNet、CenterNet、FCOS

YOLOv1(2016):https://arxiv.org/pdf/1506.02640.pdf
CornerNet(2018):https://arxiv.org/pdf/1808.01244.pdf
CenterNet(2019):https://arxiv.org/pdf/1904.08189.pdf
FCOS(2019):https://arxiv.org/pdf/1904.01355.pdf

什么是Anchor free方法?

  Anchor free是相对于Anchor base而言的一种目标检测方法,anchor base需要在图像的特征图中每个位置预先设置一定数量的anchor,然后对每个anchor进行分类和回归。而anchor free的方法则不需要预先设定anchor,直接对图像进行目标检测。anchor free的方法相对于anchor base有几个好处:
  1、不用设计关于anchor的超参数如anchor的数量、边长、长宽比、IOU阈值等,而这些超参数在anchor base方法中对网络性能影响很大。
  2、训练过程中不用重复计算大量的IOU。在anchor base中假如在一个30*30的feature map中每个位置有9个anchor,那么对于每一个真实目标框要计算30*30*9=8100次IOU来筛选正样本。对于多级多目标预测计算量大大增加。
  3、在anchor base方法中需要预设大量的anchor,如果不使用RPN网络筛选建议框,那么训练会存在大量的负样本,而添加RPN网络会降低网络的推理速度,anchor free则不存在正负样本不均衡的问题。

YOLOv1

  网络结构


在这里插入图片描述

  网络由24卷积层和2个全连接层顺序叠加组成。

  实现方法
  通过卷积网络进行特征提取,生成S×S的feature maps(图中为7×7),特征图上的每个点映射在原图上为一个方格,那么原图上就是S×S的网格。对于一个真实的目标框其中心点落在那个网格内,那么那个网格就负责预测这个目标。每个网格要预测B个bounding box,每个bounding box除了要回归自身的位置(x,y,w,h)之外,还要附带预测一个confidence值,其中x,y是边界框相对于其所在单元格的偏移(一般是相对于单元格左上角坐标点的偏移,在这里每个正方形单元格的边长视为1,故x,y在[0,1]之间);w,h分别是预测的边界框宽,高相对于整张图片宽,高的比例,也是在[0,1]之间。原始网络是预测2个bbox,所以上图网络最后输出就是7×7×(20+2×(1+4)),20为类别数。网络预测后的bbox通过NMS进行过滤,得到最终的检测框。
  损失函数如下图所示:


损失函数

  前两项是bbox位置误差项,然后两项是bbox置信度误差项,最后一项是包含目标的单元格分类误差项。

  YOLOv1是对S×S个网格直接预测B个bbox(x,y,w,h,c),而没有预先设定anchor,它也是第一个anchor free的目标检测算法,而在后来的YOLOv2中则采用了anchor机制来提高算法召回率。

CornerNet

  网络结构


在这里插入图片描述

  网络的backbone采用沙漏网络,具体结构参考:Hourglass。然后对主干网络进行两个分支预测:一个分支是对bbox左上角的角点进行预测,另一个分支则是对bbox右下角的角点进行预测。在每个分支中首先进行corner pooling,然后生成三个分支Heatmaps、Embeddings、Offsets。

  Corner Pooling
  在对目标左上角进行检测时,由先验知识可以知道,目标的信息包含在该点的右下方,因此作者设计了Corner Pooling来融合某点轴线方向上的信息,top-left corner pooling如下图所示:


在这里插入图片描述

  top-left corner pooling是分别将目标点垂直轴线以下的位置提取最大值,然后对水平轴线以右的位置提取最大值,将两个最大值相加即为该点池化后的结果,实际应用时可以从右向左、从下向上进行更新计算,减小复杂度,提高计算效率,实例计算如下所示。bottom-right corner pooling原理类似。


在这里插入图片描述

  Heatmaps
  Heatmaps的作用是预测某一点是否为某个目标的角点。以左上角分支为例,网络预测的Heatmaps为H×W×C,C为类别数,每个channel为一个二值量,全为负数时表示该点预测为背景。另外在训练计算损失函数时,作者只将ground truth角点处的点划为正样本,但是因为在真实角点附近的负样本也可以得到较大重叠区域的bbox,因此作者在计算这些邻近负样本的损失函数时运用一个二维高斯函数进行约束 x , y x,y x,y为点 ( i , j ) (i,j) (i,j)离真实点的距离,论文中 δ \delta δ取1/3 r r r
y c i j = { e − x 2 + y 2 2 δ 2 x 2 + y 2 ≤ r 2 0 e l s e y_{cij}=\begin{cases} e^{-\frac{x^2+y^2}{2\delta^2}}& x^2+y^2\le r^2&\\ 0& else \end{cases} ycij={ e2δ2x2+y20x2+y2r2else
  Heatmaps部分损失函数使用Focal loss:
L d e t = − 1 N ∑ c = 1 C ∑ i = 1 H ∑ j = 1 W { ( 1 − p c i j ) α l o g ( p c i j ) y c i j = 1 ( 1 − y c i j ) β ( p c i j ) α l o g ( 1 − p c i j ) e l s e L_{det}=-\frac{1}{N} \sum_{c=1}^C \sum_{i=1}^H \sum_{j=1}^W\begin{cases} (1-p_{cij})^ \alpha log(p_{cij})& y_{cij}=1 &\\ (1-y_{cij})^\beta (p_{cij})^\alpha log(1-p_{cij})& else \end{cases} Ldet=N1c=1Ci=1Hj=1W{ (1pcij)αlog(pcij)(1ycij)β(pcij)αlog(1pcij)ycij=

  • 10
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值