文章目录
摘要
基于CNN的检测器:
现有的基于CNN的检测器中,骨干网是基本特征提取的一个非常重要的组成部分,检测器的性能很大程度上依赖于骨干网。
本文:
目标是通过从现有的骨干(如ResNet和ResNeXt)构建更强大的骨干来实现更好的检测性能。具体来说,我们提出了一种新的策略,通过在相邻的主干之间进行复合连接来组合多个相同的主干,以形成一个更强大的主干,称为复合骨干网(CBNet)。通过这种方式CBNet将前一个骨干的输出特征,即高级特征,作为输入特征的一部分,逐级迭代地提供给后续骨干,最后利用最后一个骨干(称为Lead骨干)的特征映射进行目标检测。
实验:
证明了CBNet可以很容易地集成到最先进的检测器中,并显著提高它们的性能。如它将FPN、Mask R-CNN和Cascade R-CNN在COCO数据集上的mAP提升了约1.5%到3.0%。
同时实验结果表明,实例分割结果也可以得到改善。
特别的是,通过简单地将本文提出的CBNet集成到基线检测器Cascade Mask R-CNN中,在单模型的COCO数据集(mAP of 53.3)上获得了一个新的最先进的结果,这证明了本文提出的CBNet体系结构的巨大有效性。
代码:
https://github.com/PKUbahuangliuhe/CBNet
1 介绍
目标检测:
目标检测是计算机视觉中最基本的问题之一,它可以服务于广泛的应用,如自动驾驶、智能视频监控、遥感等。近年来,目标检测由于深度卷积网络的蓬勃发展取得很大进步,一些优秀的检测器已经提出,如,SSD、Fast R-CNN, Retinanet、FPN、Mask R-CNN 、Cascade R-CNN等。
骨干网络:
一般来说,一个典型的基于CNN的目标检测器中,骨干网用于提取检测目标的基本特征,这些主干通常是为图像分类任务设计的,并在ImageNet数据集上进行预先训练。
如果一个主干可以提取更多代表性特征,它的检测器将因此表现得更好。换句话说,一个更强大的主干可以带来更好的检测性能,如表1。
(表1: 最先进的检测器Cascade Mask R-CNN在COCO test-dev数据集上的结果,具有不同的现有骨干和建议的复合骨干网络(Dual-ResNeXt152和Triple-ResNeXt152))。
从AlexNet开始,更深入、更大的骨干网(如VGG, ResNet , DenseNet , ResNeXt)可以带来更好的检测性能。尽管基于深度和大型骨干的最先进的探测器取得了令人鼓舞的结果,但性能改进的空间仍然很大。通过设计一个新的更强大的主干并在ImageNet上预先训练来实现更好的检测性能是非常昂贵的。另外,由于现有的骨干网几乎都是为图像分类任务而设计的,直接利用骨干网提取基本特征用于目标检测可能会导致性能欠佳。
本文CBNet:
(图1: 目标检测的复合骨干网(CBNet)体系结构示意图。CBNet通过相邻骨干平行阶段之间的复合连接来组装多个相同的骨干(辅助骨干和头骨干)。CBNet将前一个骨干的输出特征作为输入特征的一部分,逐级迭代地提供给后续骨干,最后输出最后一个骨干的特征,即Lead骨干的特征用于对象检测。红色箭头表示复合连接)
为了解决上述问题,我们提议以一种新颖的方式组装多个相同的主干,以构建一个更强大的目标检测主干(如图1)。
组装的骨干网作为一个整体来处理,称之为复合骨干网(CBNet)。更具体地说,CBNet由多个相同的骨干(特别称为辅助骨干和主骨干)和相邻骨干之间的复合连接组成。从左到右,辅助主干中的每个阶段的输出,即高级特征,通过复合连接作为输入的一部分,流向后续主干的并行阶段。最后利用最后一个主干网的特征图进行目标检测。
CBNet提取的目标检测特征融合了多个主干网的高级和低级特征,提高了检测性能。不需要预先训练CBNet来训练与之集成的检测器,只需要用预先训练过的单骨干模型来初始化CBNet的每个组装的骨干。换句话说,采用所提出的CBNet比设计一个新的更强大的骨干并在ImageNet上预先训练它更经济和有效。
实验及结果:
在广泛测试的MS-COCO基准上,将提出的复合骨干网应用到几个最先进的目标检测器上进行实验,如FPN、Mask RCNN和Cascade R-CNN。
实验结果表明,所有检测器的map值均有1.5 ~ 3.0%的持续增长,证明了复合骨干网的有效性。
此外复合骨干网也改善了实例分割的结果。特别地,使用Triple-ResNeXt152,即三个ResNeXt152骨干的复合骨干网架构,在COCO数据集上实现了最先进的新结果,mAP为53.3,优于所有发布的对象检测器。
本文贡献:
(1)我们提出了一种新的方法,通过组装多个相同的主干来建立一个更强大的目标检测主干,这可以显著提高各种最先进的探测器的性能。
(2)我们用单模型在MSCOCO数据集上实现了新的最先进的结果,即对象检测的mAP为53.3。
2 相关工作
目标检测:
目标检测目标检测是计算机视觉中的一个基本问题。一般目标检测的最先进的方法可以简要地分为两个主要分支:
(1)第一个分支包含一个阶段的方法,如YOLO (Redmon etal. 2016), SSD (Liu etal. 2016), Retinanet(linetal2017b),FSAF(Zhu,He,and savvides2019)和NAS-FPN (Ghiasi, Lin, and Le 2019)。
(2)第二个分支包含两阶段方法,如Faster R-CNN(Ren et al. 2015)、FPN、Mask R-CNN、Cascade R-CNN和Libra R-CNN。
尽管最近基于CNN的检测器已经取得了突破,并取得了令人鼓舞的结果,但性能改进的空间仍然很大。例如,在MS COCO基准上,最好的公开报道mAP只有52.5,这是通过四个检测器的模型集成实现的。
目标检测骨干:
骨干网是基于CNN的检测器中非常重要的组成部分,用于提取目标检测的基本特征。原创作品(R-CNN 和OverFeat) 应用深度学习的目标检测,最近几乎所有的检测器采用预训练和微调范式,即直接使用ImageNet分类任务预训练的网络最为骨干,如VGG, ResNet, ResNeXt 被最先进的检测器广泛使用。由于这些骨干网最初是为图像分类任务设计的,直接使用它们来提取目标检测的基本特征可能会导致不太理想的性能。
最近提出了两个精心设计的骨干,即DetNet 和FishNet用于目标检测,这两个骨干是专门为目标检测任务设计,在基于这两个骨干训练(微调)检测器之前,还需要对ImageNet分类任务进行预训练。
设计和预先训练一个新颖而强大的骨干需要大量的人力和计算成本。我们提出了一种更经济、更有效的解决方案,通过组装多个相同的现有主干(如ResNet和ResNeXt)来构建更强大的目标检测主干。
CBNet与递归卷积神经网络RCNN对比:
如图2:本文提出的复合骨干网络(CBNet)的结构与展开的递归卷积神经网络(RCNN)的结构有些相似。然而CBNet与这个网络有很大不同:
(1)首先,CBNet的体系结构非常不同,特别是对于并行阶段之间的连接。
(2)其次,RCNN中,不同时间步长的并行阶段共享参数,而CBNet中,主干的并行阶段不共享参数。
(3)此外,如果使用RCNN作为一个检测器的骨干,需要在ImageNet上对它进行预训练。然而使用CBNet时,我们不需要对它进行预训练。
3 提出的方法
3.1 CBNet架构
CBNet体系结构由K个相同的骨干(K≥2)组成。 特别地为了简单起见,将K= 2(如图2.a)的情况称为双骨干(Dual-Backbone,DB),而K=3的情况称为三骨干(Triple- Backbone ,TB)。
CBNet体系结构由两种类型的骨干组成:主骨干Bk和辅助骨干B1、B2、…BK−1。每个骨干由L个阶段组成(一般L = 5),每个阶段由几个具有相同大小特征图(feature map)的卷积层组成,骨干的第 l 阶段实现一个非线性变换Fl(·)。
(1)传统的只有一个骨干的卷积网络: 第 l 阶段将前一阶段(第l - 1阶段)的输出(记为xl−1)作为输入,表示为:
(2)CBNet架构: 创新使用了辅助骨干B1、B2、…, Bk−1以一种逐阶段的方式,通过迭代地将前一个主干的输出特征作为输入特征的一部分提供给后续主干,来增强主骨干的特征。具体来说,骨干Bk的第 l 阶段的输入是骨干Bk前一阶段的输出和前一级骨干Bk−1的并行级阶段输出
的融合,具体操作方法:
其中g(·)为复合连接,该连接由1×1卷积层和批量归一化层组成,以减少通道,并进行上采样操作,将Bk−1中第l阶段的输出特征图转化为Bk中同一阶段的输入特征图,并与原输入特征图相加。这种组合样式,即将前一个骨干的相邻高阶段的输出提供给后续骨干,称为相邻高层组合(AHLC)。
在目标检测任务中,将主骨干的输出作为RPN/检测头的输入,辅助骨干的各阶段输出转发到相邻骨干。 此外CBNet中的B1、 B2、……, BK−1 (辅助主干)可以采用各种骨干架构,并可以从预先训练好的单骨干模型直接初始化。
3.2 其他可能的复合样式
同层组合(SLC): 一个直观和简单的组合风格是融合来自同一阶段的骨干输出特征,表示为:
相邻低层组合((ALLC)): 与AHLC相反,另一种直观的组合方式是将前一个骨干的相邻低级别阶段的输出输出给后续骨干,逆层组合(ILC)的运算可表示为:
密集高层组合(DHLC): 在DenseNet中,每一层都与后续所有层连接,在一个阶段内建立密集连接。受此启发,在CBNet体系结构中利用密集复合连接,表示为:
将辅助骨干中所有高阶段的特征集合起来,并将复合特征添加到主骨干中前一阶段的输出特征中。
3.3 基于CBNet的检测网络体系结构
CBNet体系结构适用于各种现成的目标检测器,无需对网络体系结构进行额外修改。
在实践中,将主骨干网的各层与功能网络RPN(检测头)相连。
4 实验
4.1 实现细节
训练设置:
本文中的基线方法是基于检测器框架复制的(Girshick et al. 2018)。
(1)除了Cascade Mask R-CNN ResNeXt152外,所有的基线都使用单尺度策略进行训练——输入图像的短边被调整为800,长边被限制为1333。
(2)实验环境4个NVIDIATitanXGPUs,CUDA9.2andcuDNN
7.1.4
(3)在4个NVIDIA P40 gpu的机器上训练Cascade Mask R-CNN(Dual-resnext152)、Cascade Mask R-CNN(TripleResNeXt152)。
(4)数据增强就是简单地翻转图像。
(5)对于大多数原始基线,单个GPU上的批处理大小是两个图像。由于CBNet对GPU内存的限制,在每个GPU上放一张图像,用CBNet训练检测器。
(2)初始学习率设置为默认值的一半,并训练与原始基线相同的epoch。值得注意的是,不改变这些基线的任何其他配置,除了减少初始学习率和批大小。
测试设置:
在推断过程中,完全使用了原始基线中的配置。
(1)对于具有不同骨架的Cascade Mask R-CNN,进行单尺度和多尺度测试。
(2)对于其他基线检测器,进行单尺度测试,输入图像的短边被调整为800,长边被限制为1333。
(3)值得注意的是,在进行公平比较推断时,没有使用Soft-NMS
4.2 检测结果
基线网络:
为了证明所提出的CBNet的有效性,使用最先进的检测器基线,即FPN、Mask RCNN和Cascade R-CNN,进行了一系列实验,结果见表2。
实验结果分析:
(1)在表2的每一行中,将基线与使用CBNet的基线的变体进行比较,可以看到CBNet持续改进了所有基线,且有显著的差距。更具体地说,基线的mAP增加了1.5%到3%。
(2)Cascade Mask R-CNN基线配置CBNet,在MS-COCO基准上获得了最佳的53.3 mAP检测结果。值得注意的是,该结果仅通过单个模型实现,除了以CBNet为骨干外,没有对基线进行任何其他改进。该结果证明了所提出的CBNet体系结构的有效性。
(3)本文提出的CBNet还提高了实例分割基线的性能。与边界框预测(即目标检测)、像素级分类(即像素级分类)相比,实例分割往往更困难,需要更多的代表性特征。这些结果再次证明了CBNet的有效性。
4.3 与不同组合风格的比较
(表4: 不同组合风格的比较,基线为FPN ResNet101。DB:有/没有双骨干。”SLC表示同一层组合,ALLC表示相邻的低层组合,ADLC表示相邻的密集层组合,AHLC表示相邻的高层组合)
将建议的复合样式AHLC与其他可能的复合样式(SLC、ALLC和DHLC)进行比较。所有实验都是基于FPN ResNet101基线的双骨干架构。
(1)SLC vs . AHLC: 如表4SLC的结果比原始基线更差。我们认为主要原因是SLC的结构会带来严重的参数冗余。具体来说,CBNet中的两个骨干在同一阶段提取的特征相似,因此SLC不能比使用单个骨干学习更多的语义信息。也就是说,网络参数没有得到充分的利用,反而给训练带来了很大的困难,导致了较差的结果。
(2)ALLC vs .AHLC: 如表4,两者之间有很大的差距。我们推断,在CBNet中,如果直接将前一条主干的较低级(即较浅)特征添加到后续主干的较高级(即较深)特征中,后一条主干的语义信息将受到很大的损害。反之,如果将前一主干的深层特征添加到后一条主干的浅层特征上,则后一条主干的语义信息可以得到很大程度的增强。
(3)DHLC vs .AHLC: 表4结果表明,虽然DHLC比AHLC增加了更多的复合连接,但它并没有像AHLC那样带来性能的提高。我们推断,复合骨干网的成功主要在于相邻阶段之间的复合连接,而其他复合连接由于距离太远,并没有丰富太多的特征。
结论:
(1)上述复合样式的CBNet具有相同数量的网络参数(即大约是单骨干网的两倍),但只有AHLC能带来最优的检测性能提升。
(2)实验证明仅仅增加参数或增加额外的主干可能并不能带来更好的结果。
(3)试验也表明,复合连接连接应适当添加。实验结果实际上证明了所提出的复合样式AHLC是有效的和非平凡的。
4.4 共享CBNet的权重
(表5: 双骨干架构中有/没有共享权值的比较。DB:有/没有DualBackbone。共享:有/没有共享权重。APbox:COCO test-dev数据集的检测结果。mb:模型大小)
由于使用了更多的骨干网络,CBNet带来了网络参数的急剧增加。 为了进一步证明检测性能的提高主要来自于复合架构而不是网络参数的增加
在FPN上进行了实验,在Dual-ResNet101中采用共享两个骨干权重的配置,实验结果如表5:
(1)当CBNet共享骨干权重时,参数的增量可以忽略不计,但检测结果仍然比基线好很多。
(2)当不共享权值时,改进并不大(从40.4映射到41.0),这证明了主要是复合架构提高了性能,而不是网络参数的增加。
4.5 CBNet骨干数量
以FPN-ResNet101为基线,进行实验研究CBNet骨干数量与检测性能之间的关系,结果如图4:
随着骨干数量的增加而检测mAP稳步增加,当骨干数量达到3个时,mAP趋于收敛。因此考虑到速度和内存成本,建议使用双骨干和三骨干架构。
(图4:基于FPN ResNet101的CBNet架构下不同骨干数量MS-COCO test-dev数据集上的目标检测结果)
4.6 CBNet的加速版本
(表6: 原始DB和加速版本的性能比较。DB:有/没有DualBackbone。ψ:有/没有CBNet体系结构的加速度修正,如图5)
提出的CBNet的主要缺点是它将减慢基线检测器的推断速度,因为它使用更多的骨干来提取特征,增加了计算复杂度。 例如,如表6所示,DB将FPN的AP提高了1.6%,但将检测速度从8.1 fps降低到5.5 fps。
为了缓解这个问题,提出了一个CBNet的加速版本(如图5,删除辅助骨干的两个早期阶段)。如表6该加速版本可以显著提高速度,同时不影响检测精度(即AP)。
4.7 基于CBNet的基础特征增强的有效性
我们认为CBNet能比单骨干网在目标检测任务中表现得更好的根本原因是:它能比原来专为分类问题设计的单骨干网提取更多有代表性的基本特征。
为了验证这一点,将CBNet提取的中间特征映射与检测器中的原始单一主干提取的中间特征的映射进行可视化和比较(如图6):
示例图像包含两个前景对象:一个人和一个网球,人是大尺寸的物体,网球是小尺寸的物体。相应地将CBNet和原始的单一骨干提取的大尺度特征图(用于检测小目标)和小尺度特征图(用于检测大目标)可视化。
CBNet提取的特征图在前景对象上的激活值始终较强,在背景对象上的激活值较弱——表明CBNet能够更有效地提取具有代表性的基本特征用于目标检测。
(图6: CBNet (Dual-ResNet101)和原始骨干(ResNet101)提取的特征的可视化比较。基线检测器为FPN-ResNet101。对于每个骨干,根据前景对象的大小,通过沿着通道维平均特征映射来可视化Res2和Res5。值得注意的是,来自CBNet的特征图更具有代表性,因为它们在前景对象的激活值更强,在背景对象的激活值更弱)
5 结论
本文:
提出了一种新的网络结构,称为复合骨干网(CBNet),以提高最先进的目标检测器的性能。
CBNet由一系列具有相同网络结构的骨干组成,并使用复合连接来连接这些骨干。具体地说,前一个主干中的每个阶段的输出通过复合连接作为输入的一部分流到后续主干的并行阶段,最后,利用最后一个骨干即主骨干的特征图进行目标检测。
实验结果:
(1)大量的实验结果表明,CBNet算法对FPN、Mask R-CNN和Cascade R-CNN等许多先进的检测器都有帮助,可以提高它们的检测精度。更具体地说,检测器在COCO数据集上的mAP增加了大约1.5%到3%。
(2)通过简单地将CBNet集成到Cascade mask R-CNN基线中,可以获得mAP为53.3的COCO上最优结果。
(3)同时,该方法对提高实例分割性能也非常有效。
(4)另外的消融研究进一步证明了所提议的架构和复合连接模块的有效性。