论文名称:MetaAnchor: Learning to Detect Objects with Customized Anchors
论文链接:https://arxiv.org/abs/1807.00980
目录
- 导语
- 背景
- 设计思想
- 方法
-
- 锚点框函数生成器
-
- 架构细节
- 实验
-
- COCO 目标检测结果
- 结论
- 参考文献
导语
随着 ImageNet 退出“江湖”,分类任务趋向饱和。在计算机视觉分类、检测、分割三大核心任务的链条中,由于分类过于基础,过于成熟,检测的首要作用日益加大,连锁效应不断加强。
目标检测遵循自身路径,处理进程先后可分为锚点框、(候选框)、目标框。如果说目标检测是计算机视觉的首块基石,那么锚点框(Anchor)则是目标检测的首块基石。作为基石的基石,锚点框的重要性可见一斑。
鉴于现有目标检测系统采用预定义锚点框的种种问题,旷视科技论文《MetaAnchor: Learning to Detect Objects with Customized Anchors 》(已收录于第 32 届神经信息处理系统大会 NeurIPS 2018 )提出一种全新而灵活的锚点框机制——MetaAnchor,可通过自定义方式优化目标检测系统。
由此,这就从最为底层的技术组件层面,自下而上优化并迭代计算机视觉和人工智能技术,乃至推动、赋能场景落地和产业发展,实现技术与产业双轮驱动。
具体来讲,目标检测技术的改进和突破,在提升系统精度与速度的同时,将成为城市大脑、智能机器人、智能手机、智慧金融、新零售等行业发展的重要推手;而上述行业作为“棋子”共同汇聚成旷视科技 AI+IoT 这盘大棋。
背景
最近几年,深度神经网络处理目标检测任务的巨大突破有目共睹。实际做法是目标检测算法为一张给定图像生成一系列边界框,同时分类标注每个目标。但是,对于卷积神经网络而言,直接无序地生成任意数量的预测框并非无足轻重,由此锚点框的思想得以引入,在目标检测系统中获得广泛应用。通过运用分而治之的方法,锚点框成功立足于绝大多数当前最优的目标检测框架之中。
简单来说,锚点框把向量空间(包括位置、大小、类别等)分割为若干个离散的(有可能重叠的)方块(bin,即 ground truth box),并通过锚点框函数为每个相应的 bin 生成一个目标框。X 表示从输入图像提取的特征,那么,第 i 个 bin 的锚点框函数可写为:
其中 是先验(prior,也称为 anchor box),用来描述与第 i 个 bin 相关联的目标框的一般属性,比如平均位置/大小和分类标签;同时,判别是否存在一个目标框与第 i 个 bin 相关联,则把目标框(如果有)的相对位置回归到先验 b_i;θ_i 表示锚点框函数的参数。
为借助深度神经网络建模锚点框,枚举是一个直接的策略,并为目前大多数方法所采用。首先,大量预定义 priors B 通过手工选取,或者统计方法(比如聚类);接着,对于每个,锚点框函数 将分别由一个或多个神经网络层实现。不同锚点框函数的权重是独立的,或者部分共享。
很明显,这种框架的策略(即锚点框的选择以及锚点框函数的定义)在训练和推理之中皆不够灵活。此外,可用锚点框的数量也受制于预定义的 B。
设计思想
本文中,旷视科技提出一种灵活的替代方案建模锚点框。在这一新框架中,锚点框函数由 b_i 动态生成,而不是通过枚举每一个可能的边界框 prior b_i 并分别建模相应的锚点框函数。它的实现源自引入了一个全新的模块——MetaAnchor,可写为:
其中,称之为锚点框函数生成器,它把任一边界框 prior b_i 映射到相应的锚点框函数,w 表示参数。
值得注意的是,MetaAnchor 的先验集 B 不必是预定义的,而是以自定义的方式工作——在推断时,用户可以指定任意 anchor box,生成相应的锚点框函数,并用其预测目标框。接下来,本文会把它与权重预测机制一起展示。锚点框函数生成器可实现优雅部署,嵌入到现有的目标检测框架达成联合优化。
总之,相较于传统预定义的锚点框策略,本文发现,MetaAnchor 具有以下潜在的优势:
1)MetaAnchor 对于 anchor 设置和边界框分布更为鲁棒。在传统方法中,预定义的 anchor box B 经常需要小心设计——锚点框太少可能不足以涵盖稀少的框,或者导致粗糙的预测;但是更多的 anchor 意味着参数更多,有造成过拟合的风险。
此外,很多传统方法使用独立的权重建模不同的锚点框函数,因此很可能在训练时,不相关联于 ground truth 目标框的锚点框会输出较差的结果。与此相反,MetaAnchor 可以在训练时随机采样任意形态的 anchor box,以涵盖不同种类的目标框,同时参数数量保持不变。
进而,根据等式(2),同一权重 w 生成不同的锚点框函数,因此所有的训练数据可以调优所有的模型参数,这意味着对训练框的分布更加鲁棒。
2)MetaAnchor 有助于弥补不同数据集之间的边界框分布的差距。在传统框架中,anchor box B 是预定义的,在训练和测试之时保持不变,这并非最优方案,如果训练集和测试集的边界框分布不同。而在 MetaAnchor 中,锚点框可被灵活地自定义以适应目标数据集(比如,通过网格搜索),而无需重新训练整个检测器。
方法
Anchor 函数生成器
在 MetaAnchor 框架中,如等式(2)所示,锚点框函数生成器 把 b_i 映射到相应的锚点框函数,从而扮演了关键角色。为利用神经网络建模 ,首先要假设对于不同的 b_i,锚点框函数共享同一方程,但是参数不同,这意味着:
接着,由于每一个锚点框函数的区别仅在于其参数 ,生成器由此可预测 ,如下所示:
其中 θ^* 代表共享参数(独立于 b_i 且同样可学习),残差项取决于锚点框 b_i。
本文通过一个简单的二层神经网络实现:
这里,W_1 和 W_2 皆是可学习参数,是**函数(文中使用 ReLU)。隐藏神经元的数量用 m 表示,实际上 m 通常远小于 的维数,这导致预测的权重聚集在一个明显低阶的子空间,这就是为什么在等式(4)中把 方程化为一个残差项,而不是直接使用。
架构细节
理论上讲,MetaAnchor 适用于绝大多数现有的基于锚点框的目标检测框架,但是对两步检测器的最后预测似乎并无助益,遂把主要研究精力聚焦于单步检测器,并以当前最优的单步检测器——RetinaNet 为例展示 MetaAnchor 架构。
图 1:“把 MetaAnchor 应用于 RetinaNet” 示意图。
图 1(a)是 RetinaNet 示意图。简单来讲,5 层的特征 提取自一个 “U 形”的基础网络,其中 P_3 表示最优的特征图(即分辨率最高),P_7 则是最粗糙的。对于每一层特征,附加一个名为“检测头”的子网络生成检测结果。锚点框函数在每个检测头的尾部被定义。
为应用 MetaAnchor,需要重新设计原始的锚点框函数,保证其参数生成于自定义锚点框 b_i。首先要考虑如何编码 b_i,一个包含位置、尺寸、分类标签等信息的向量。在本文实验中,b_i 主要于锚点框尺寸相关,并表示为:
其中 ah_i 和 aw_i 是相应锚点框的高和宽,(AH,AW)是作为正则化项的“标准锚点框”的尺寸。
图 1(b)示意了 MetaAnchor 在 RetinaNet 每个检测头的用法。在 MetaAnchor 中,通过两个独立的锚点框函数生成器 和 分别预测其权重。在 的设计中,隐藏神经元数量 m 设置为 128。此外,在 MetaAnchor 中,过滤器的数量减为 80,过滤器的数量减为 4。
值得注意的是, RetinaNet 中所有检测头的相应层的权重相同,甚至包括代表锚点框函数的最后层。为与上述设计一致,MetaAnchor 为每一层级的检测头使用相同的锚点框生成器函数 和 ,同时“标准框”(AH,AW)在不同层级保持不同。在本文实验中,最低层级(即 P_3)标准框尺寸是所有 anchor box 尺寸的平均值,如表 1 最后一列所示。
表 1:Anchor box。
实验
本文主要在 COCO 目标检测任务中评估 MetaAnchor 的表现。如上所述,基础检测框架使用 RetinaNet,其中特征提取器使用在 ImageNet 分类数据集上预训练的 ResNet-50。
除非特别说明,MetaAnchor 使用锚点框函数生成器的独立于数据的变体。训练时,MetaAnchor 子网络借助基础检测器联合优化。MetaAnchor 不使用批归一化。
COCO 目标检测结果
本文在 COCO-full 数据集上对比了嵌入与不嵌入 MetaAnchor 的 RetinaNet 的表现。训练和测试的输入分辨率都是 600x,基础特征提取器是 ResNet-50,性能指标采用 COCO-minival 数据集的标准 mmAP。
表 8:在 COCO-minival 上的结果
表 8 给出了结果。有趣的是,本文复现的 RetinaNet 模型性能优于 RetinaNet 原论文 1.8%。相比之下, MetaAnchor 模型(即嵌入 MetaAnchor 的 RetinaNet)在 COCO-minival 上取得了 37.5% mmAP,性能优于本文实现的原始 RetinaNet 1.7%,优于 RetinaNet^*(复现 RetinaNet 的最好结果) 0.6%;而借助数据的 MetaAnchor 模型则进一步把性能提升 0.4%。
另外,本文还印证了推理可通过 greedy search 轻松实现涨点而无需重训练。
图 2 可视化了由 MetaAnchor 模型预测的一些检测结果,可以明显看到检测框的形状随着自定义锚点框 b_i 而变化。
图 2:不同自定义锚点框之下的检测结果。
本文同样在 PASCAL VOC 2017 数据集上评估了这一方法。
为进一步验证 MetaAnchor,本文又在 YOLO v2 上做了实现。在 MetaAnchor 中,“标准框” (AH,AW)是(4.18,4.69)。结果如表 7 所示。很明显,MetaAnchor 优于 YOLO v2 baseline,并借助 greedy search 实现性能涨点。
表 7:嵌入MetaAnchor 的 YOLO v2 在 COCO-minival 上的结果。
结论
旷视科技提出了一个全新而灵活的锚点框机制,称之为 MetaAnchor,它为目标检测框架而生,其锚点框函数可由任意自定义的先验框动态生成。
加上权重预测,MetaAnchor 可与大多数基于锚点框的目标检测系统协同工作,比如当前最优的单步检测器 RetinaNet。相较于预定义锚点框方法,实验证明 MetaAnchor 对于锚点框设置和边界框分布更为鲁棒,并在迁移任务上变现出潜力。
COCO 目标检测任务的实验表明,MetaAnchor 在多个维度连续优于同类方法。
参考文献
- D. Ha, A. Dai, and Q. V. Le. Hypernetworks. arXiv preprint arXiv:1609.09106, 2016.
- R. Hu, P. Dollár, K. He, T. Darrell, and R. Girshick. Learning to segment every thing . arXiv preprint arXiv:1711.10370, 2017.
- M. Jaderberg, K. Simonyan, A. Zisserman, et al. Spatial transformer networks. In Advances in neural information processing systems, pages 2017–2025, 2015.
- T.-Y. Lin, P. Goyal, R. Girshick, K. He, and P. Dollár. Focal loss for dense object detection.
- arXiv preprint arXiv:1708.02002, 2017.
- J.Redmon ,S .Divvala ,R .Girshick, andA .Farhadi.You only look once :Unified ,real-time object detection. In Proceedings of the IEEE conference on computer vision and pattern recognition, pages 779–788, 2016.
- J. Redmon and A. Farhadi. Yolo9000: better, faster, stronger. arXiv preprint, 2017.
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:NeurIPS 2018 | 旷视科技提出MetaAnchor:自定义锚点框优化目标检测系统 - Python技术站