原作者:Hei Law, Jia Deng 笔记整理:ganyd 2020.9.16
如有错误或者不清楚之处,欢迎讨论,如需转载请注明出处
论文:https://arxiv.org/abs/1808.01244
代码:https://github.com/umich-vl/CornerNet
摘要
- 提出一种目标检测新方法,用检测目标框的左上和右下对角关键点替代直接定位目标框。使用单个的卷积神经网络就能完成这个任务。不再需要像single-stage检测器一样提前设计一组anchor boxes。
- 提出一种新的池化方法:corner pooling。
- 在MS COCO数据集上实验性能AP为42.2%,超过同时期的单步检测方法。
anchor boxes:不同尺寸和宽高比的box,在单步目标检测器中使用较多,针对不同数据集和场景提前设计好
[1]文章主要内容
目前大部分单步检测器使用anchor boxes
anchor boxes提高了检测速度,但是也有两个缺点:
- 为了提高性能,需要设计大量的anchor boxes使其中部分能与真实目标框重叠,尽量覆盖每个真实框,所以需要大量的anchor boxes,但最终只有几个anchor boxes成功与真实目标框重合。这造成了正负anchor boxes之间的巨大不平衡,降低了训练速度。
- 针对不同数据集和使用场景,一般需要设计不同的超参数,以确定anchor boxes的数量、尺寸、宽高比等。
本文检测成对的corner关键点取代anchor boxes设计
文章提出的方法,使用单个卷积神经网络来预测同一类别的所有object左上角热点图、右下角热点图和所有角点的embedding向量。这个embedding向量使属于同一个object的两个角点的距离最小。
embedding向量的性质是能使距离相近的向量对应的物体有相近的含义
本文提出corner pooling
corner pooling是一种新的池化层,用于定位bounding box的corner。
实际使用中,bounding box的corner经常是超出目标之外的,所以不能直接定位corner。
左上角corner:水平向右找最最顶部边界和垂直向下找最左边边界。同理得到右下角corner。
防止corner覆盖
heatmaps(热图)的尺寸是 , 有C个通道,C是类别数量,为二值图像mask。
对每个corner,只有一个是真实的正样本,其他都是负样本,我们对处于正样本一定半径范围内的负样本corner进行惩罚,按二维高斯分布递减,而不是所有的负样本都进行同样的惩罚。防止在真实标签周围检测到错误corner把真实corner覆盖了。
[2]网络设计
1.corner位置预测损失设计
表示在位置通过heatmap预测为类别的概率
表示对应位置,属于真实类别标签概率,这个概率是确定中心点为1,然后按照非归一化的高斯分布向周围扩散,概率降低。
则定义如下变种的focal loss:
其中,N是一张图像中目标数量
和是控制不同点损失权重的超参数(实验中 )
相比于原始的focal loss,作者在时,增加了项,该项可以减少真实标签位置周围的损失,而且越靠近真实标签,这个损失越小。
focal loss:用于减少正负样本不平衡对损失计算的影响。比如本例中,非目标点比目标点多很多,即负样本比正样本多很多,用一般的损失计算方法,最后累计的损失较大,其他图像中正样本多些,累计的损失就小。而采用focal loss计算方法,会让真实正样本处被错误预测的程度越高,损失越大,负样本处同理。
2.通过预测location offset来解决下采样带来的位置坐标精度丢失问题
很多网络使用下采样层来获取全局信息,同时减少内存占用。对图像中的位置,映射到heatmaps中为,其中是下采样因子。然而这时再从heatmaps映射回原图尺寸,存在预测精度丢失,影响IoU,特别是小目标的IoU。为了解决这个问题,文章还预测了位置偏移(location offsets)用于微调corner的位置。位置偏移计算如下:
其中,和是第个corner的和坐标,这里直接用所有类别的左上角corner一次性预测一组偏移,再用右下角corner预测一组偏移。
offset预测损失设计(只计算真实角点处的损失)
smoothL1 Loss
smoothL1损失特点:当预测框与 ground truth 差别过大时,梯度值不至于过大;当预测框与 ground truth 差别很小时,梯度值足够小。
3.Embedding 向量
一张图像中多个目标的corner如何匹配对?文章对检测到的所有corner预测一个一维的Embedding向量,那么属于同一个object的左上角和右下角corner之间的Embedding距离就应该很小。所以用这个Embedding距离对corner进行配对。
预测Embedding向量设计的损失(只计算真实角点处的损失)
假设表示第个object的左上角corner的Embedding值;对应表示右下角corner的。
其中,是和的平均值,计算的是任何两个corner之间的正距离平均值。
表示什么?文中没有说到???点处的损
4.Corner Pooling
Corner Pooling从水平方向和垂直方向扫描,找目标的上边界和左边界,作为左上角corner;同理右边界和下边界作为右下角corner。
假设我们需要确定一个location处的像素是不是左上角corner。
和分别表示左上角Corner pooling之后的特征图,和表示具体位置上的特征值。对于左上角或者右下角的特征图,取行最大组成向量,取列最大值组成向量。
然后对和逐个对应位置求和,得到最大值的位置就是corner。
5.backbone后的部分网络框架
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%,超过同时期的单步检测方法。