美文网首页
CornerNet: Detecting Objects as

CornerNet: Detecting Objects as

作者: ganyd | 来源:发表于2020-09-19 12:43 被阅读0次

原作者:Hei Law, Jia Deng      笔记整理:ganyd 2020.9.16

如有错误或者不清楚之处,欢迎讨论,如需转载请注明出处

论文:https://arxiv.org/abs/1808.01244
代码:https://github.com/umich-vl/CornerNet

摘要

  1. 提出一种目标检测新方法,用检测目标框的左上和右下对角关键点替代直接定位目标框。使用单个的卷积神经网络就能完成这个任务。不再需要像single-stage检测器一样提前设计一组anchor boxes。
  2. 提出一种新的池化方法:corner pooling。
  3. 在MS COCO数据集上实验性能AP为42.2%,超过同时期的单步检测方法。

anchor boxes:不同尺寸和宽高比的box,在单步目标检测器中使用较多,针对不同数据集和场景提前设计好

 

[1]文章主要内容

目前大部分单步检测器使用anchor boxes

anchor boxes提高了检测速度,但是也有两个缺点:

  1. 为了提高性能,需要设计大量的anchor boxes使其中部分能与真实目标框重叠,尽量覆盖每个真实框,所以需要大量的anchor boxes,但最终只有几个anchor boxes成功与真实目标框重合。这造成了正负anchor boxes之间的巨大不平衡,降低了训练速度。
  2. 针对不同数据集和使用场景,一般需要设计不同的超参数,以确定anchor boxes的数量、尺寸、宽高比等。

本文检测成对的corner关键点取代anchor boxes设计

文章提出的方法,使用单个卷积神经网络来预测同一类别的所有object左上角热点图、右下角热点图和所有角点的embedding向量。这个embedding向量使属于同一个object的两个角点的距离最小。

embedding向量的性质是能使距离相近的向量对应的物体有相近的含义

cornerNet工作流程.png

本文提出corner pooling

  • corner pooling是一种新的池化层,用于定位bounding box的corner。

  • 实际使用中,bounding box的corner经常是超出目标之外的,所以不能直接定位corner。
    左上角corner:水平向右找最最顶部边界和垂直向下找最左边边界。同理得到右下角corner。

防止corner覆盖

  • heatmaps(热图)的尺寸是 W\times H\times C, 有C个通道,C是类别数量,为二值图像mask。

  • 对每个corner,只有一个是真实的正样本,其他都是负样本,我们对处于正样本一定半径范围内的负样本corner进行惩罚,按二维高斯分布递减,而不是所有的负样本都进行同样的惩罚。防止在真实标签周围检测到错误corner把真实corner覆盖了。

 

[2]网络设计

1.corner位置预测损失设计

p_{cij}表示在(i,j)位置通过heatmap预测为c类别的概率
y_{cij}表示对应位置,属于真实类别标签概率,这个概率是确定中心点为1,然后按照非归一化的高斯分布向周围扩散,概率降低。
则定义如下变种的focal loss:
if\:y_{cij}=1:
L_{det}=\frac{-1}{N}\sum_{c=1}^{C}\sum_{i=1}^{H}\sum_{c=1}^{W}{(1-p_{cij})^\alpha\log(p_{cij})}

otherwise:
L_{det}=\frac{-1}{N}\sum_{c=1}^{C}\sum_{i=1}^{H}\sum_{c=1}^{W}{(1-y_{cij})^\beta(p_{cij})^\alpha\log(1-p_{cij})}
其中,N是一张图像中目标数量
\alpha\beta是控制不同点损失权重的超参数(实验中\alpha=2 \beta=4

相比于原始的focal loss,作者在y_{cij}\not ={0}时,增加了(1-y_{cij})^\beta项,该项可以减少真实标签位置周围的损失,而且越靠近真实标签,这个损失越小。

 

focal loss:用于减少正负样本不平衡对损失计算的影响。比如本例中,非目标点比目标点多很多,即负样本比正样本多很多,用一般的损失计算方法,最后累计的损失较大,其他图像中正样本多些,累计的损失就小。而采用focal loss计算方法,会让真实正样本处被错误预测的程度越高,损失越大,负样本处同理。

 

2.通过预测location offset来解决下采样带来的位置坐标精度丢失问题

很多网络使用下采样层来获取全局信息,同时减少内存占用。对图像中的位置(x,y),映射到heatmaps中为([\frac{x}{n}],[\frac{y}{n}]),其中n是下采样因子。然而这时再从heatmaps映射回原图尺寸,存在预测精度丢失,影响IoU,特别是小目标的IoU。为了解决这个问题,文章还预测了位置偏移(location offsets)用于微调corner的位置。位置偏移计算如下:
O_k=(\frac{x_k}{n}-[\frac{x_k}{n}], \frac{y_k}{n}-[\frac{y_k}{n}])
其中,x_ky_k是第k个corner的xy坐标,这里直接用所有类别的左上角corner一次性预测一组偏移,再用右下角corner预测一组偏移。

offset预测损失设计(只计算真实角点处的损失)

L_{off}=\frac{1}{N}\sum_{k=1}^{N}SmoothL1Loss(o_k,\hat{o_k})

 
smoothL1 Loss
if\:|x|<1:SmoothL_1(x)=0.5x^2

otherwise:SmoothL_1(x)=|x|-0.5

smoothL1损失特点:当预测框与 ground truth 差别过大时,梯度值不至于过大;当预测框与 ground truth 差别很小时,梯度值足够小。

 

3.Embedding 向量

一张图像中多个目标的corner如何匹配对?文章对检测到的所有corner预测一个一维的Embedding向量,那么属于同一个object的左上角和右下角corner之间的Embedding距离就应该很小。所以用这个Embedding距离对corner进行配对。

预测Embedding向量设计的损失(只计算真实角点处的损失)

假设e_{t_k}表示第k个object的左上角corner的Embedding值;对应e_{b_k}表示右下角corner的。

L_{pull}=\frac{1}{N}\sum_{k=1}^{N}[(e_{t_k}-e_k)^2+(e_{b_k}-e_k)^2]
L_{push}=\frac{1}{N(N-1)}\sum_{k=1}^{N}\sum_{j=1,j\not=k}^{N}\max(0,\Delta-|e_k-e_j|)
其中,e_ke_ke_{t_k}的平均值,L_{pull}计算的是任何两个corner之间的正距离平均值。

\Delta表示什么?文中没有说到???点处的损

 

4.Corner Pooling

Corner Pooling从水平方向和垂直方向扫描,找目标的上边界和左边界,作为左上角corner;同理右边界和下边界作为右下角corner。

假设我们需要确定一个location(i,j)处的像素是不是左上角corner。
f_tf_l分别表示左上角Corner pooling之后的特征图,f_{t_{ij}}f_{l_{ij}}表示具体(i.j)位置上的特征值。对于左上角或者右下角的H \times W特征图,取行最大组成向量t_{ij},取列最大值组成向量l_{ij}
t_{ij}=max(f_{t_{ij}}, f_{t_{(i+1)j}})
l_{ij}=max(f_{l_{ij}}, f_{l_{i(j+1)}})
然后对t_{ij}l_{ij}逐个对应位置求和,得到最大值的位置就是corner。

 

5.backbone后的部分网络框架

点对目标检测框架.png

 

6.Hourglass Network(沙漏模型网络)

CornerNet的backbone是沙漏网络。

hourglass nerwork是全卷积神经网络,有一个或者多个hourglass module组成。一个hourglass module先把输入特征图通过一系列卷积层和最大池化层进行下采样,然后通过一系列的上采样回到原始分辨率。由于最大池化层下采样会丢失细节信息,所以通过skip layers来把细节信息带回到上采样特征。沙漏模型在一个统一的结构中同时获取全局特征和局部特征。

文章中的hourglass network由两个hourglass moudle组成,并对hourglass moudle进行了一些修改:
最大池化层步数改成2来减小分辨率。将特征分辨率降低5倍同时增加特征通道的数量。上采样的时候,应用两个残差块后面跟着最近邻上采样。每个skip连接也由两个残差块组成。

在应用沙漏模型之前,我们减少图像分辨率4次通过使用一个7x7,步长为2的128通道的卷积模块,后面着一个残差块。

实验

在MS COCO数据集上实验性能AP为42.2%,超过同时期的单步检测方法。

相关文章

网友评论

      本文标题:CornerNet: Detecting Objects as

      本文链接:https://www.haomeiwen.com/subject/etyeyktx.html