CBNetV2简述

引言

  深度卷积网络的蓬勃发展使目标检测取得了很大的进展,一般来说,在基于神经网络的检测器中,骨干网络用于提取检测目标的基本特征,通常最初设计用于图像分类,并在ImageNet数据集上进行预训练,从直观上看,骨干网络提取的代表性特征越多,其检测器的性能越好,简单地说,一个更强大的骨干带来更好的检测性能。从AlexNet开始,主流探测器已经利用了更深更宽的主干,如VGG, ResNet, DenseNet, ResNeXt(《Aggregated residual transformations for deep neural networks》), Res2Net(《A new multi-scale backbone architecture》),最近基于Transformer[15]的骨干也得到了开发,并展示了良好的性能。总的来说,骨干网络预训练的发展保证了目标检测中更有效和高效的多尺度表示。
  但是有一个很自然的问题:它们现有的预先训练的权重在目标检测中表现得更好吗?在ImageNet上进行预训练需要大量的计算资源,这使得获得更好的检测性能变得昂贵,或者,从头开始训练检测器可以节省在ImageNet数据集上对骨干网进行预训练的成本,但需要更多的计算资源。
  本文提出了一种简单而有效的方法,将现有的预先训练的权重组合成一个强大的检测骨干网络,与以往大多数侧重于模块化工艺并要求在ImageNet上进行预训练以加强表示的方法不同,改进了现有的骨干表示能力,无需额外的预训练,而是采用了一种新的组合方法,如图1所示
CBNetV2简述_第1张图片
  该方法取名为CBNnetV2,将多个相同的骨干网分组在一起,具体而言,辅助主干(assisting backbones)和主导主干(lead backbone)通过复合连接进行连接,辅助骨干各阶段的输出流向其后续骨干的平行和更低级阶段,最后,将主导主干的特征输入到neck和检测头进行bbox回归和分类,与简单的网络深化或扩大不同,CBNetV2融合了多个骨干网的高、低级特征,逐步扩展接收域,从而更有效地进行目标检测。值得注意的是,其不需要预先训练CBNetV2的ImageNet检测器;相反,只需要用现有的开源预训练的单个骨干网的权重初始化每个组装好的CBNetV2骨干网,这比设计一个新的主干并在ImageNet上进行预训练要更经济、更有效。此外,为了更好地挖掘CBNetV2的潜力,还提出了一种更好的训练策略。

相关工作

  Object detection:随着卷积神经网络(CNN)的快速发展,基于深度学习的对象检测器有一个流行的范式:骨干网络提取输入图像的基本特征,然后利用neck(比如特征金字塔网络)提高骨干的多尺度,接着检测头输出预测box位置和分类信息。根据检测头的不同,一般目标检测的前沿方法可以简单地分为两大类。第一个分支包含一级检测器,如YOLO,SSD, RetinaNet,NAS-FPN(learning scalable feature pyramid architecture for object detection)和EfficientDet。另一个分支包含两阶段方法,如Faster R-CNN, FPN,Mask R-CNN,Cascade R-CNN和Libra RCNN(《Libra r-cnn: Towards balanced learning for object detection》)。近年来,由于FPN和focal Loss的出现,学术界开始关注Anchor-Free检测器。一方面,FSAF、FCOS、ATSS(《Bridging the gap between anchor-based and anchor-free detection via adaptive training sample selection》)和GFL(《Generalized focal loss: Learning qualified and distributed bounding boxes for dense object detection》)通过基于中心的Anchor-Free方法改进了RetinaNet;另一方面,CornerNet和CenterNet采用基于关键点的方法检测对象边界框。
最近,神经结构搜索(NAS)被应用于自动搜索特定检测器的体系结构。NAS-FPN、NAS-FCOS(《NAS-FCOS: fast neural architecture search for object detection》)和SpineNet(《Spinenet: Learning scale-permuted backbone for recognition
and localization》)使用强化学习控制体系结构采样,取得了很好的结果,SM-NAS(《SM-NAS: structural-to-modular neural architecture search for object detection》)采用进化算法和偏序剪枝方法搜索检测器不同部分的最优组合。Auto-FPN(《Auto-fpn: Automatic network architecture adaptation for object detection beyond classification》)使用基于梯度的方法搜索最优检测器。DetNAS(《Detnas:Backbone search for object detection》)采用one-shot方法,寻找一个有效的骨干网络进行对象检测
Transformer方面主要是DERT以及Swin TransFormer(《Swin transformer: Hierarchical vision transformer using shifted windows》)
  Backbone for Object detection:除开之前介绍过的骨干网络,还有两个non-trivially的骨干网络DetNet(《Detnet: Design backbone for object detection》)和FishNet(《Fishnet: A versatile backbone for image, region, and pixel level prediction》)。
  Recurrent Convolution Neural Network:与CNN的前馈结构不同,循环CNN (RCNN)在每个卷积层中加入了循环连接。这一特性增强了模型集成上下文信息的能力,这对目标识别是非常重要的。如图3所示,CBNet在架构上与展开的RCNN有一些相似之处,但两者有很大的不同。首先,平行级之间的连接在CBNet中是单向的,而在RCNN中是双向的。其次,在RCNN中,不同时间步长的并行阶段共享参数权值,此外,如果使用RCNN作为探测器的骨干,需要在ImageNet上对其进行预训练。相比之下,CBNetV2不需要额外的预训练,因为它直接使用现有的预训练权重。

方法

  本文提出的CBNetV2的架构是由K个相同的骨干网络(K≥2)组成,将K= 2的情况(如图3(a)所示)称为双骨干(DB),将K=3的情况称为三骨干(TB)。
  大多数传统的卷积网络遵循的设计是将输入图像编码为中间特征,单调地降低分辨率。第l阶以第l−1阶的输出(记为 x l − 1 x^{l−1} xl1)作为输入,可以表示为:
在这里插入图片描述
  而本文利用辅助骨干网络B1,…,Bk−1增强主导骨干网络Bk的表示能力,将一个骨干的特征以一种分阶段的方式迭代地注入到其后续骨干中,因此由公式1变为:
在这里插入图片描述
  对于目标检测任务,只有主导骨干网络的输出特征输入至neck,然后再传给RPN检测头,辅助骨干的输出转发到其后续骨干。CBNetV2可以采用多种骨干网架构,并直接从单个骨干网预先训练的权重值进行初始化。
CBNetV2简述_第2张图片
  对于复合连接,如图2所示,提出以下五种组合样式:
  (1)Same Level Composition (SLC)
  如图2(a)所示,融合来自同一阶段骨干网络的输出特征。SLC的操作可以被公式化为:
在这里插入图片描述
  其中w表示1*1的卷积层和批量归一化层。
  (2)Adjacent Higher-Level Composition (AHLC)
  受到FPN的启发,自上而下的方式引入了空间上比较粗糙,但语义上更强且更高级的特征,来增强低级的特征,如图2(b)所示,AHLC将前一个骨干网络相邻较高阶段的输出输入到后续骨干网络,可以被公式化为:
在这里插入图片描述
  其中U()表示上采样操作。
  (3)Adjacent Lower-Level Composition (ALLC)
  与AHLC相反,如图2©所示,引入了一种自下而上的方法,将前一个骨干网络相邻较低阶段的输出输入到后续的骨干网络,可以被公式化为:
在这里插入图片描述
  其中D()表示下采样操作。
  (4)Dense Higher-Level Composition (DHLC)
  受到了DenseNet启发,如图2(d)所示,每一层都连接到所有后续层,构建全面的特征,可以被公式化为:
在这里插入图片描述
(5)Full-connected Composition (FCC)
  与DHLC不同的是,如图2(e)所示,将辅助骨干网络的各个阶段的特征组合在一起,并将其注入到主导骨干网络的各个阶段,可以被公式化为:
在这里插入图片描述
  其中I()表示scale-resizing,当i > l的时候是下采样,i < l的时候是上采样。
CBNetV2简述_第3张图片
  如图4(a)所示,原始的CBNet中,虽然复合骨干是平行的,但后者通过前一个之间的相邻连接来加深网络。为了更好地训练基于CBNet的检测器,本文建议通过一个辅助检测头的监督产生辅助骨干网络的初步结果,以提供额外的正则化,有监督的CBNetV2的一个例子如图4(b)所示,除了使用主导骨干网络特征训练检测头1的原始损失外,另一个检测头2将辅助骨干网络特征作为输入产生Assistant Supervision(这里我觉得论文说反了,图中检测2才是lead的损失)。最后总损失函数如下所示:
在这里插入图片描述
  在推理阶段,放弃了辅助监督分支,只利用了CBNetV2中主导骨干网络的输出特征,因此辅助监督不会影响推理阶段的速度。

实验

  本文实验是在COCO数据集上做,基于开源检测工具箱MMDetection。
  表1和表2展示了与state-of-the-art的方法对比。
CBNetV2简述_第4张图片
CBNetV2简述_第5张图片
  表3展示了在Faster R-CNN上以不同的骨干网络架构所获得的效果
CBNetV2简述_第6张图片
  表4展示了CBNetV2与更深更广的骨干网络进行的比较结果
CBNetV2简述_第7张图片
  表5展示了CBNetV2与DCN的兼容性
CBNetV2简述_第8张图片
  表6展示了CBNetV2在主流检测器上的性能
CBNetV2简述_第9张图片
  表7展示了CBNetV2在Swin Transformer的有效性
CBNetV2简述_第10张图片
  表8展示了不同组合样式对比
CBNetV2简述_第11张图片
  表9展示了不同损失权重的效果
CBNetV2简述_第12张图片
  表10展示了CBNetV2中每个组件的效果
CBNetV2简述_第13张图片

总结

  本文提出了方法CBNetV2,思路简单粗暴,将多个相同的骨干网络结合起来,分为辅助骨干网络和主导骨干网络,变成一个复合网络,融合了多个骨干网的高、低级特征,逐步扩展接收域,从而更有效地进行目标检测,然后又对于辅助骨干网络添加了一个损失函数进行监督,本文实验非常充分,和现有的先进方案进行比较,然后再对于不同的网络进行兼容性测试,以及测试是否能应用在检测器中得到提高的效果,最后完善地做完消融实验,是非常不错的网络改进方面的实验思路,而且这篇论文的相关工作也提到了很多我没有了解的方法。

你可能感兴趣的:(深度学习,计算机视觉,目标检测)