0 1
前言:基于锚点的目标检测方法
在基于关键点(key points)的目标检测方法出现之前,主流目标检测方法一般先设置一些预先定义好的 锚点 (anchor boxes)。 作为预测物体框的参考,神经网络只需要预测实际的物体框相对于这些锚点的偏移。 这样模型就能在一个位置预测多个不同尺寸的物体框,并且预测相对偏移比预测绝对值要容易一些。
最初,这些锚点的大小是人工设置的,如Faster R-CNN [1]和SSD [2]中使用的锚点。 由于模型预测的是相对偏移,一般来说比较接近锚点的物体框预测要更为准确一些,因此YOLOv2[3]中使用了k-means聚类的方法来选择与训练集样本最为匹配的锚点。
基于锚点的目标检测方法 缺点 在于需要生成大量的锚点以更好的覆盖整个图片中的物体,并且需要人工设计一些参数,比如锚点的数量、大小等。
图2 SSD中使用的锚点
0 2
基于关键点的目标检测方法
1. CornerNet [4]
CornerNet发表在2018年ECCV,是使用关键点方法进行目标检测的开山之作。CornerNet通过预测物体框左上角和右下角两个角点,来组成最终的物体框,避免了锚点的使用。
物体的特征一般集中在物体内部,比如一个人的身体、头部,其左上角和右下角两个点的特征并不明显,而且不容易确定位置。
为了解决这个问题,文章引入了 Corner pooling 的结构。
在输出层之前的特征图上,针对左上角点,取其右边和下边的最大值之和,针对右下角点,取其左边和上边的最大值之和。
直观上理解,就是我们在左上角处往右下方向看,在右下角处往左上方向看,这样就能看到整个物体。
如果不使用Corner pooling,相当于看的是角点周围,这样对于比较大的物体就很难获得整个物体的特征,会导致大物体的检测效果差。
网络针对左上角和右下角分别输出 三个结果 :
a. Heatmaps,表示某位置是角点的概率;
b. Offsets,表示实际角点相对于该位置的偏移;
c. Embeddings, 嵌入向量,用于将左上角和右下角进行配对。
生成最终物体框时,取概率最高的k个角点,加上Offsets得到实际位置,再使用Embeddings对左上角和右下角进行配对,取嵌入向量距离超过一定阈值的两个点来组成最终物体框。
损失函数的选择上Heatmaps使用分类损失函数focal loss的变种,Offsets使用回归损失函数smooth L1 loss,Embeddings使用衡量相似度的"pull" loss和"push" loss,损失函数细节可查阅原文。
图3 CornerNet结构示意图
图4 Corner pooling
CornerNet一个 明显的缺点 是使用Embeddings进行角点匹配的效果并不太好,可能导致某个物体的左上角匹配到另一个物体的右下角。后续的ExtremeNet、CenterNet等论文都设法修复或避免这一问题。
图5 CornerNet角点配对错误的例子
2. CornerNet-Lite[5]
针对CornerNet速度较慢的问题,CornerNet的研究团队对网络结构进行了优化。
主要从 两方面 入手,分别提出了一个方案。
一:减少处理的像素数量。也就是先用一个轻量的网络确定物体的大概位置,然后再从这个大概的裁切区域上检测物体的具体位置,该网络被称为CornerNet-Saccade。
二:减少每个像素的处理次数。参考了SqueezeNet和MobileNets,使用深度可分离卷积等方法对网络主干进行轻量化,该网络被命名为CornerNet-Squeeze。
CornerNet-Saccade相比CornerNet 速度 上有较大提升而准确率相当;CornerNet-Squeeze则达到与YOLOv3相当的 速度 和 准确率 ;
CornerNet-Lite依然受限于CornerNet角点匹配 错误较多 的缺点。比如CornerNet-Squeeze虽然从文章中给出的结果上看与YOLOv3相当,但是实际使用中容易出现角点匹配错误情况,效果不佳。
图6 CornerNet-Lite作者给出的优化效果
3. CenterNet [6]
CenterNet在CornerNet基础上加入了一个关键点—— 中心点 ,通过检查CornerNet预测框的中心区域是否存在中心关键点,来决定是否保留这个预测框。
中心关键点在pooling阶段使用了Center pooling,同时取上下左右四个方向的最大值。
此外,还对原有的Corner pooling进行了 优化 。 确定中心区域时,对于较大的物体取5*5分割的中间区域,较小物体取3*3分割的中心区域。中心区域的选择过于依赖人工设计的参数,也是该方法的一个缺点。
图7 CenterNet结 构示意图
4. Objects as Points [7]
这篇文章和上一篇CenterNet一样是19年4月份放到网上的,而且也把自己的网络起名为CenterNet...不同于上一篇CenterNet对CornerNet进行修补。 该方法直接抛弃了右上角和右上角两个关键点,只预测一个中心关键点,再加上物体的宽高,构成最终的物体框。
该文章提出的方法 简洁明了 ,在 速度 和 精度 的权衡上也做的比较好,因此比较被看好。 缺点 在于如果两个物体的中心重合只能预测一个,不过这种情况概率很低。
图8 Objects as Points效果示意图
0 3
小结
基于关键点的目标检测方法或多或少都还存在一些缺点,在实际应用中相比基于锚点的方法也 没有绝对优势 。但是作为近两年目标检测方法的新趋势,我们期待在不远的将来这类方案能有进一步的 突破 。