物体检测器通常使用图像分类网络的Backbone,由于和检测任务存在一定差异,这些Backbone往往不是最优的。本文中,旷视研究院提出DetNAS,这是首个用于设计更好的物体检测器Backbone的神经网络搜索方法;由DetNAS搜索出的框架在COCO上的性能超越了ResNet-50与ResNet-101,且模型计算量更低。本文已收录于神经信息处理系统大会NeurIPS 2019。
论文名称:DetNAS: Backbone Search for Object Detection
论文链接:文末可直接下载
开源代码:https://github.com/megvii-model/DetNAS
导语
在目标检测器中,Backbone起着非常重要的作用,目标检测器的性能高度依赖于Backbone所提取的特征。大多数目标检测器直接使用为图像分类而设计的网络来作为Backbone,但这种方法往往不是最优的,因为图像分类仅关注的是图中主要物体是什么,而目标检测试图在图像中找到每个目标的位置和类别。
虽然目前依靠手工设计的网络能够实现部分性能的提升,但手工设计需要研究人员非常精通领域知识,同时还需要进行反复漫长的调试才能完成。对此,NAS技术可以提供帮助。
近年来,NAS技术取得了巨大突破。在图像分类任务上,通过搜索得到的网络能够匹敌甚至是超越传统手工设计的网络。然而,在目标检测领域使用NAS搜索Backbone仍然具有挑战。
简介
简单将之前的NAS方法用于搜索目标检测器的Backbone并不能解决问题。通常来说,检测器训练需要将Backbone网络先在ImageNet上预训练。但是这会对搜索目标检测器的Backbone造成两个困难:
难以优化:NAS不能用预训练的精度来作为监督信号,需要是最终在目标任务上的效果作为反馈信息。
效率低:在搜索过程中,将每个结构都先预训练,再在检测数据集上进行微调(fine-tuning),这种方法成本太高。
另外,虽然不进行预训练(train from scratch)也是一种选择,但它需要更多的训练时间以补偿没有进行预训练的问题。
有鉴于此,旷视研究院提出了第一个用于搜索目标检测器Backbone的方法。在旷视原创技术one-shot NAS的启发之下,研究员通过将权重训练和结构搜索解耦来进行检测器Backbone的搜索。
图1:DetNAS Pipeline
大部分之前的NAS方法都以一种嵌套的方式来同时优化权重与结构,然而,只有通过将其拆解为两步,预训练才能更加高效。该框架避免了预训练带来的低效问题,使搜索Backbone得以可行。
方法
DetNAS Pipeline
如图1所示,DetNAS由三步组成,1)在ImageNet上预训练Supernet,2)在检测数据集上微调Supernet以及,3)在训练好的Supernet上进行结构搜索。
第一步:预训练Supernet。在ImageNet上进行预训练对于后续微调步骤而言至关重要。在一些one-shot方法中,它们将实际上离散的搜索空间变换为一个连续空间,这样会导致搜索空间中各个网络的权重耦合严重。相反,在Supernet的预训练过程中,旷视研究院采用逐路径方案,从而确保了预训练的Supernet能够反映候选网络的相关性能。具体而言,在每次迭代过程中,只有单个路径会被采样进行前馈与反馈传播,该过程中Supernet图上的其他路径或节点的梯度与权重都不会进行更新。
第二步:微调Supernet。这一过程也是以逐个路径方式进行。将预训练好的Supernet上加上检测器的head,并在目标检测数据集下进行训练。另一个需要强调的细节是批归一化(BN)过程。BN是优化中常用的归一化方法。通常情况下,在微调过程中BN的参数固定为预训练时的参数。然而,在DetNAS中不能沿用此法,因为在不同路径上要归一化的特征并不相等。另外,与图像分类不同,由于目标检测器使用高分辨率的图像进行训练,所以受到显存的限制,批大小会较小,这严重降低了BN的精度。为此,研究人员在Supernet训练过程中使用同步批归一化(SyncBN)作为替代。SyncBN可以在多个GPU上计算批统计量,相当于变相“增加”了批大小(batch size)。
第三步:用进化算法在Supernet上进行搜索。在该步骤中,系统会在已训练好的Supernet上用进化算法进行结构搜索。在这步中一个需要注意的环节依然是BN。在搜索过程中,不同的子网络会在Supernet中逐路径进行采样。然而其中的问题是,各个路径上的批统计量需要彼此相对独立。因此,在评估每条支路前,需要重新统计每条路径上的批统计量。对于DetNAS而言,该过程必不可少,研究员从训练集抽取出一个小子集来重新计算待被评估的那条路径的批数据。此步骤仅为BN累计适量的running mean与running variance,不涉及梯度反传。
空间搜索设计
表1介绍了搜索空间的具体细节。本方法使用的搜索空间基于ShuffleNetv2的块(block)。ShuffleNetv2是一种高效轻量级的卷积网络架构,包含channel split与channel shuffle操作。研究员设计了两个不同大小的搜索空间,大的用于得到主要结果的网络搜索,小的用于消融实验。
表 1:DetNAS 搜索空间
大空间(40个块)主要用于搜索与手工Backbone相比较的网络。其中,每个stage的通道与块用c_1、n_1表示。对每个stage来说,第一个块会以stride为2进行降采样。另外,除了首个stage,其余4个stage共包含8+8+16+8个块用于搜索。对每个被搜索的块来说,都有4个来自ShuffleNetv2的块以供选择:改变核大小{3×3,5×5,7×7};或者将该分支用Xception 块(三个重复、分离的 depthwise3×3 卷积)代替。因此,很容易可以算出大搜索空间候选架构有4^40≈1.2×10^24之多。其中,大部分网络的计算量大于1G FLOPs。小空间(20个块)与大空间相似,每个stage的通道与块用c_2、n_2表示。
搜索算法
框架搜索步骤基于进化算法。首先,对一个种群的网络P进行初始化,每个网络P由其架构P.θ以及其适应度P.f组成。任何违反约束η的架构将会被移除,并且系统会选择一个新架构进行替代。在初始化以后,系统对有适应度P.f的网络P.θ在验证集V_Det上进行评估。然后,研究员会在经评估的网络中选取最佳的 |P|个结构作为父本,以其生成子代网络。
进一步,第二代网络由父本在约束η下变异(mutation)和组合交叉(crossover)所得到。通过在迭代过程中重复此操作,可以找到一条验证集上精度最高的路径。
与基于RL和梯度的NAS方法相比,进化搜索能够很好地满足限制因素(如FLOPs或速度)。为了优化FLOPs或速度,基于RL的方法需要对反馈函数仔细调参。而基于梯度的方法则需要对损失函数仔细调参。虽然如此,它们的输出结果仍然很难全部满足限制要求。为此,DetNAS选择使用进化搜索算法。
实验
实验结果
基于FPN检测器,按照本文方法在上述提到的大空间中进行搜索,得到了DetNASNet结构,结构具体信息参见原论文。表6展示了主要结果。研究员选取了4个手工设计的网络作为对比,包括ResNet-50,ResNet-101,ShuffleNetv2-40和ShuffleNetv2-40 (3.8)。DetNASNet以40.2%mmAP,大小1.3G FLOPs的优势超越了ResNet-50,与ResNet-101性能相当。
表2:两种设置下的DetNASNet与手工设计网络的性能对比
为了消除来自搜索空间的影响,研究员专门对比了ShuffleNetv2-40,它是搜索空间的Baseline。其包含40个块,大小为1.3G FLOPs,与DetNASNet相同。结果显示,ShuffleNetv2-40在COCO上比DetNAS的mAP分数低了1.0个百分点。这证明DetNAS的效果不仅来自于搜索空间。
进一步,研究人员引入搜索空间的影响,将DetNASNet的通道数提升了1.8倍,让网络大小达到了3.8G FLOPs,即DetNASNet (3.8),这等价于ResNet-50的FLOPs。实验结果显示,它以42.0%mmAP分数超越了ResNet-50 4.7个百分点,超越ResNet-101 2.0个百分点。
DetNAS架构
相比于图像分类框架搜索给出的结果,本文提出的目标检测框架搜索展示出了其价值所在。图2展示了在20个块的小空间中搜索出的3个神经网络架构,最上面为在ImageNet分类数据上搜索得到的ClsNASNet,下面两个分别为用FPN、RetinaNet搜索得到的Backbone。图像展示了其中每个块的情况,黄色与橙色代表5×5、7×7的ShuffleNetv2 块,蓝色的块的核大小为3。稍大一些的蓝色块代表Xception ShuffleNetv2块。
图4:在小空间(20块)搜索的框架之间模式的对比
从图4可以发现,在DetNAS中,蓝色块几乎都聚集在stage3、4;而在ClsNASNet中,只有一个Xception ShuffleNetv2块出现在高层级中。该规律在同样为图像分类搜索框架ProxylessNAS于ImageNet数据集上得出的结果相符。以上这些区别满足本文的假设,即用于图像分类的Backbone网络对于物体检测来说不是最优的。
结论
本文提出DetNAS方法,这是第一个用于搜索物体检测任务Backbone的框架。它由三个步骤组成:在ImageNet上预训练Supernet;在检测测数据集上微调Supernet;用遗传算法在训练好的Supernet上搜索。表4给出了每一步所消耗的GPU和时间。DetNAS的计算消耗(在COCO上为44GPU days)仅为训练一个常用物体检测器的两倍。实验结果显示,DetNAS的主要搜索结果的性能在COCO上超越了ShuffleNet和ResNet等传统手工网络结构。
表4:COCO每一步的消耗对比
另外,为了展示DetNAS的有效性,旷视研究院团队在DetNAS上测试了多个物体检测器(FPN和RetinaNet),并且也使用了不同的数据集(COCO与VOC)进行验证。进一步讨论显示,在结构层面,图像分类与物体检测任务之间存在不同的规律,这可能会为手工模型设计提供新的灵感。
参考文献
- Gabriel Bender, Pieter-Jan Kindermans, Barret Zoph, Vijay Vasudevan, and Quoc V. Le. Understandingand simplifying one-shot architecture search. In ICML, 2018.
- Andrew Brock, Theodore Lim, James M. Ritchie, and Nick Weston. SMASH: one-shot model architecture search through hypernetworks. CoRR, abs/1708.05344, 2017.
- Han Cai, Ligeng Zhu, and Song Han. Proxylessnas: Direct neural architecture search on target task and hardware. ICLR, 2019.
- Golnaz Ghiasi, Tsung-Yi Lin, Ruoming Pang, and Quoc V. Le. NAS-FPN: learning scalable feature pyramid architecture for object detection. CVPR, 2019.
- Ross Girshick, Ilija Radosavovic, Georgia Gkioxari, Piotr Dollár, and Kaiming He. Detectron, 2018.
专栏文章推荐
欢迎关注旷视研究院极术社区专栏,定期更新最新旷视研究院成果
加入旷视:career@megvii.com
文件名 | 大小 | 下载次数 | 操作 |
---|---|---|---|
DetNAS Backbone Search for Object Detection.pdf | 1.38MB | 0 | 下载 |