paper:CBNet: A Composite Backbone Network Architecture for Object Detection
official implementation:GitHub - VDIGPKU/CBNetV2
本文的创新点
本文在CBNet v1的基础上,提出了一种新的辅助训练方法、一个更好的连接策略以及一个剪枝策略,综合这些得到了一个新的骨干网络CBNet v2。除了取得了更好的性能表现,在泛化性和兼容性(和模型集成以及特征增强网络如DCN和HRNet的兼容)都得到了提升。
方法介绍
CBNet v1的介绍见CBNet(AAAI 2020)论文解析-CSDN博客,CBNet检测模型的整体结构如图1所示。这里只介绍和CBNet v1不一样的地方。
首先是并行backbone之间的连接方式,如图2所示,CBNet v1中只介绍了前4种,本文引入了一种新的连接FCC集全连接的方式如图2(e)所示。
Auxiliary Supervision
本文针对Assistant Backbone提出了辅助监督,如图4(b)所示。
在CBNet v1中,只有Lead Backbone的输出会经过FPN和检测head。虽然各个backbone是并行的,但后一个backbone通过和前一个backbone之间的相邻连接加深了网络,可能会引入额外的优化困难。在图像分类中,通过deep supervision引入了中间特征层的辅助classifier,以提高非常深的网络的收敛性。为了更好的训练基于CBNet的检测模型,作者提出通过监督辅助neck和head来生成assistant backbones的初始结果,来提供额外的正则化。
对于每个assistant backbone的输出都经过辅助neck和head,得到的输出与ground truth计算损失。注意辅助neck和head与lead backbone的主neck和head共享参数。在推理阶段,我们抛弃辅助监督分支,只利用lead backbone的输出,因此辅助监督并不影响推理速度。
Pruning Strategy for CBNet
这里的剪枝策略和CBNet v1中的加速版本是一样的,都是删去较浅层的连接,CBNet v1中只针对K=2的情况删除前两个stage的连接,这里进行了推广,对于K>2以及删除的阶段i>2的情况都进行了考虑。
实验结果
本文关于各种连接的消融实验和CBNet v1中有一些出入,具体如下
在v1中密集连接DHLC的效果不如AHLC,并且SLC的性能比原始单骨干网络更差。但在这里DHLC的性能比AHLC更好,并且SLC也优于单骨干。作者解释说可能是因为实现框架不同(CAFFE vs. PyTorch)使用的初始化方法不同导致的。个人猜测可能和由于辅助监督导致的。
此外本文还特别针对CBNet v2的兼容性包括和特征增强网络如DCN的兼容性,以及和模型集成的兼容性进行了实验,结果如下
可以看到CBNet v2和DCN以及model ensemble是互补的关系,使用DCN和集成可以进一步提升模型的性能。