ai科技评论:作者陈凯,这篇文章最早发表在知乎,雷锋的AI科技评论被授权转载。
前言
进入图像物体检测的坑大概有一年了,至少短期内还会留在坑里,还拉着搭档入坑。值此新的(吉)、(许)和(班)节之际,我打算介绍一些已经完成的工作,并写下我对这一领域的理解。另外,如果有空,我也来说说mmdetection的设计和实现。
作为开始,让我们来谈谈最早开始的项目“引导锚定的区域提案”/>
总结
我们提出了一种新的锚生成方法——引导锚,即通过图像特征来引导锚的生成。通过预测锚的位置和形状,生成稀疏的任意锚,并设计特征自适应模块来修改特征图以更好地匹配锚的形状。以ResNet-50-FPN为骨干,Guided Anchoring将RPN的召回率(AR@1000)提高了9.1个点,用于不同的物体检测器时,可以将map提高1.2到2.7个点。
下图显示了我们的方法与传统RPN的性能和速度比较,可以看出它明显优于传统RPN。
以下结果应用于不同的检测方法,主干是ResNet-50-FPN。
背景
锚是目标检测中的一个重要概念,通常是一组人工设计的框架,作为分类和包围盒回归的参考框架。锚广泛用于单级和两级探测器。例如,两级检测器的第一级通常使用RPN生成建议,这是一个对锚进行分类和回归的过程,即锚->建议->;检测bbox大多数单级检测器直接对anchor进行分类回归,即anchor->:检测bbox。
一种常见的生成锚点的方法是滑动窗口,即首先定义k个具有特定比例和纵横比的锚点,然后以一定的步长在整个图上滑动。该方法广泛应用于fast R-CNN、SSD、RetinaNet等经典检测方法中。
动力
滑动窗口生成锚点的方法简单可行,但并不完美,不然也就没纸可谈了。首先,锚的尺度和长宽比需要提前定义,这是一个对性能影响很大的超级参数,需要针对不同的数据集和方法独立调整。如果比例和长宽比设置不当,召回率可能不够高,或者锚太多可能会影响分类性能和速度。一方面,大部分锚点分布在背景区域,不会对提议或检测产生任何正面影响;另一方面,预定义的锚定形状可能不满足具有极端尺寸或宽高比的对象。所以我们期待的是一个可以根据位置改变形状的稀疏锚。
制剂
首先,我们思考锚是如何产生的。我们通常用四个数字(x,y,w,h)来描述一个锚点,即中心点的坐标和宽度、高度。我们将锚的分布表述为以下公式:
锚的概率分布分解为两个条件概率分布,即给定图像特征后锚中心点的概率分布和给定图像特征和中心点后的形状概率分布,这就是论文题目中的引导锚定的由来。滑动窗可视为均匀分布,但属于脉冲函数的特例。
根据上述公式,锚的生成过程可以分为两个步骤,锚位预测和形状预测。在这个看似简单的公式中,我们走过了一些弯路,讨论了一些奇怪的方法,最终发现了通往简单的道路。
方式
如图所示,基于原始RPN的特征图,我们使用两个分支分别预测锚的位置和形状,然后将它们组合起来得到锚。然后,使用特征适配模块来调整锚特征,并且获得新的特征图用于以后的预测(锚的分类和回归)。整个方法可以进行端到端训练,与以前的方法相比,只增加了3个1x1 conv和1个3x3可变形conv,模型参数变化不大。
位置预测
位置预测分支的目标是预测哪些区域应该作为中心点来生成锚点,这是一个二元分类问题。不同于RPN或者分割的分类,这里我们不预测每个点是前景还是背景,而是预测它是否是物体的中心。
整个要素图区域分为对象中心区、外围区和忽略区。总体思路是在特征图对应的地面真值框中心标记一小块区域作为物体中心区域,训练时作为正样本,其他区域根据距离中心的距离标记为忽略或负样本。具体设计在论文里说的很清楚。通过位置预测,我们可以选择一小部分区域作为锚的候选中心点位置,大大减少了锚的数量。在灵感的时候,预测好位置后,可以用蒙面的conv代替普通的conv,只在有锚的地方计算,这样可以加速。
形状预测
形状预测分支的目标是预测给定锚点中心点的最佳长度和宽度,这是一个回归问题。当然,按照惯例,首先计算目标,即中心点锚的最优w和h,然后用L1/L2/光滑L1损失来监督。但是这个东西的目标不好计算,而且会很难实现,所以我们直接用IoU作为监督者来学习w和h,既然不能计算出最优的w和h,而计算IoU又是一个可导的运算,那就让网络自己优化,使IoU最大化。后来我们切换到有界IoU Loss,但是原理是一样的。
还有一个问题,就是对于一个主播来说,应该用哪个地真来优化IoU,也就是说应该给主播分配哪个地真。对于之前的常规锚,我们可以直接计算它的IoU和所有地面真值,然后分配给IoU最大的gt。不幸的是,锚的w和h是不确定的,需要预测。我们将此锚和gt的IoU表示为
当然,我们不可能真的遍历所有可能的W和H,然后得到IoU的最大值,所以我们采用近似的方法,即对一些可能的W和H进行采样,理论上,采样越多,逼近效果越好。但是为了效率,我们采样了9组常见的W和h,通过实验发现最终的结果对样本组数并不敏感,也就是说不管样本组数多少,近似效果就足够了。
生成锚点
预测好锚点位置和中心点后,我们就可以生成锚点了,如下图所示。这时候主播稀疏,每个位置都不一样。用生成的锚点代替滑动窗口,AR (Average Recall)可以超过普通RPN 4个点,成本只增加2个1x1 conv。
特征适应
故事本可以到此结束。我们用生成的锚点和之前的特征图对锚点进行分类回归,让我们很开心。但是,我们发现了一个不合理的地方。我们都是同一层conv的特征。为什么我能比别人强,代表一个又长又大的主播,而你只能代表一个小主播?
一方面,不合理的原因在于conv同一层不同位置的接收特征场是相同的。在最初的RPN中,每个人都代表相同形状的锚,所以他们很平静。但现在每个锚都有自己独特的形状和大小,所以它并不特别匹配功能。另一方面,对于原始的特征图,它并不知道形状预测分支预测的锚点形状,但是下面的分类和回归都是基于预测的锚点,可能比较困难。
我们添加了一个功能适配模块来解决这个问题。思路很简单,就是把锚点的形状信息直接集成到特征图中,这样新的特征图就可以适应锚点在各个位置的形状。我们使用一个3×3的可变形卷积来修改原始特征图,可变形卷积的偏移量通过锚的w和h的1×1 conv来获得。(重点要放在这里。如果像正常可变形卷积那样通过特征图来预测偏移,则改进是有限的,因为没有实现根据锚形状进行适应的效果。)
通过这种操作,特征的有效范围更接近锚的形状,同一conv的不同位置也可以表示不同形状和大小的锚。从表中可以看出,功能适配仍然非常强大,带来了近五个点的改进。
打开高质量建议书的正确方法
事实上,故事可以到此结束,但是我们遇到了和以前一些改进提案的论文一样的问题,就是提案的质量提高了很多(如下图所示),但是对检测器的性能提升有限。在不同的检测模型上,使用导向锚定可以提高大约一个点。明明有很好的提议,但是mAP没有涨很多,让人很不舒服。
经过一番研究,我们发现以下两点:1。减少提案数量;2.训练时提高阳性样本的IoU阈值(这个比较重要)。既然top300有很多IoU高的提案,为什么还要用1000帧来训练测试呢?既然提案都这么优秀,那么把IoU标准变得更严格也不是没有道理。
这种正确的开场方式基本上是齐家独立转移的,让表演看起来好多了。通过这两个改进,fast R-CNN上的上升点瞬间提高到了2.7点(没有任何招数),其他方法也有了很大的改进。
论锚栓设计标准
我们在论文中提到了锚设计的两个标准,对齐和一致性。对齐是指锚点的中心点应与特征的位置对齐,一致性是指锚点的特征应与形状匹配。
Alignment由于每个锚点都是由要素图上的一个点来表示的,所以最好将锚点定在该点的中心,否则,如果位置偏移,则该点的要素将不会很好地对应于锚点,使用该特征来预测锚点的分类和回归将是有问题的。我们设计了一个类似级联/迭代RPN的实验来证明这一点。主播退步了两次。第一次回归采用常规方法,即对中心点和长宽进行回归,使得第一次回归后,锚点中心点和特征图每个像素的中心不再完全对齐。我们发现这两种倒退促销非常有限。所以在形状预测的分支中,我们只预测W和H,不返回中心位置。
Consistency这个标准是设计特征自适应的初衷。由于每个位置的锚点形状不同,破坏了特征的一致性,因此需要通过特征自适应进行校正。这个准则本质上是关于如何准确提取锚点特征的讨论。对于两级检测器的第二级,我们可以通过RoI池或RoI对齐来准确提取RoI的特征。但是对于RPN或者单级检测器的锚点,由于数量巨大,我们无法用这种笨重的方法准确匹配特征和帧,或者只能用特征图上的一个点,也就是一个512x1x1的向量。那么特征适配(Feature Adaption)就起到了使特征和锚点之间的对应关系更加准确的作用,这种设计在其他地方也可以借鉴。
总结
在 anchor 设计中,alignment 和 consistency 这两个准则十分重要。采用两个 branch 分别预测 anchor 的位置和形状,不需要预先定义。利用 anchor 形状来 adapt 特征图。高质量 proposal 可以使用更少的数量和更高的 IoU 进行训练。即插即用,无缝替换。关于代码
预计将于3月底或4月的某个时候在MM Detection(https://github.com/open-mmlab/mmdetection)发布。欢迎观看。
Arxiv链接
https://arxiv.org/abs/1901.03278
1.《guided 干货 | Guided Anchoring:物体检测器也能自己学 Anchor》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《guided 干货 | Guided Anchoring:物体检测器也能自己学 Anchor》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/junshi/984870.html