物体检测器通常使用图像分类网络的Backbone,由于和检测任务存在一定差异,这些Backbone往往不是最优的。本文中,旷视研究院提出DetNAS,这是首个用于设计更好的物体检测器Backbone的神经网络搜索方法;由DetNAS搜索出的框架在COCO上的性能超越了ResNet-50与ResNet-101,且模型计算量更低。本文已收录于神经信息处理系统大会NeurIPS 2019。

论文名称:DetNAS: Backbone Search for Object Detection

论文链接:https://arxiv.org/abs/1903.10979

开源代码:https://github.com/megvii-model/DetNAS

目录

  • 导语

  • 简介

  • 方法

    • DetNAS Pipeline

    • 空间搜索设计

    • 搜索算法

  • 实验

    • 实验结果

    • 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.

旷视AutoML相关技术往期解读:

AutoML | 旷视研究院提出One-Shot模型搜索框架的新变体

ICCV 2019 | 旷视研究院提出MetaPruning:基于元学习和AutoML的模型压缩新方法

R Talk | 旷视研究院张祥雨:高效轻量级深度模型的研究与实践

传送门 

欢迎大家关注如下 旷视研究院 官方微信号????

NeurIPS 2019 | DetNAS:首个搜索物体检测Backbone的方法相关推荐

  1. DetNAS:首个搜索物体检测Backbone的方法 | NeurIPS 2019

    点击我爱计算机视觉标星,更快获取CVML新技术 物体检测器通常使用图像分类网络的Backbone,由于和检测任务存在一定差异,这些Backbone往往不是最优的. 本文中,旷视研究院提出DetNAS, ...

  2. NIPS2019:旷视提出DetNAS:首个搜索物体检测Backbone的方法

    论文名称:DetNAS: Backbone Search for Object Detection 论文链接:https://arxiv.org/abs/1903.10979 开源代码: https: ...

  3. 物体检测及分类方法总结(提供了很多论文和代码链接)

    原文:http://blog.csdn.net/yimingsilence/article/details/53995721 这里搜集了一些关于物体检测的方法分析和介绍,看好哪个可以去详细研究一下,基 ...

  4. 物体检测及分类方法总结

    原文:http://blog.csdn.net/yimingsilence/article/details/53995721 方法选择: ========DPM========= 使用传统的slide ...

  5. 清华优博论文丨物体检测中的特征构建与模型优化

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 摘 要:本文针对物体检测中的环境变化多样.物体尺度变化不一.搜索空 ...

  6. 35-运动物体检测1(EmguCV学习)

    运动物体检测 Record Code 效果 1. 图片背景差法: 2. 视频背景差法检测运动物体: 3. 图片帧差法检测运动物体: 4. 视频帧差法检测运动物体 Record 1.运动物体检测常用的方 ...

  7. 直播 | 孙剑团队最新工作:用于物体检测的实例条件知识蒸馏 | NeurIPS 2021

    近期,旷视孙剑团队最新工作提出了一种新的目标检测知识蒸馏框架:实例-条件知识蒸馏(ICD)方法利用实例-特征交叉注意力来选择和定位与人类观察到的实例相关的知识,性能表现SOTA,这篇论文已经开源(地址 ...

  8. 张祥雨团队最新工作:用于物体检测的实例条件知识蒸馏 | NeurIPS 2021

    [专栏:前沿进展]在青源LIVE第31期中,旷视研究院张祥雨团队的张培圳研究员深入浅出地为我们介绍了其团队被 NeurIPS 2021 录用的论文「用于物体检测的实例条件知识蒸馏」.本期报告首先简要回 ...

  9. 机器学习如何做好分布外异常检测?谷歌这篇 NeurIPS 2019 论文提出了方法

    2019-12-30 10:16:57 编译 | 翻译官balala 编辑 | 丛末 对于机器学习而言,区分异常数据或有显著差异数据至关重要.谷歌在 NeurIPS 2019 论文中提出并发布了针对基 ...

最新文章

  1. SAP WM Movement Type 里的‘Ref.Stor.Type Search’字段用法初探
  2. how mang libraries do we have: 139
  3. android 活动说明,Android – 如何发送GCM推送通知以及要加载哪些活动的说明?
  4. CodeForces - 1236D Alice and the Doll(贪心+二分+模拟)
  5. Android Studio之Instant Run requires ‘Tools | Android | Enable ADB integration‘ to be enabled解决办法
  6. 世界公认的第一商人——成就犹太商人的15个信条
  7. 51单片机蜂鸣器播放音乐C语言程序实例,51单片机蜂鸣器播放音乐代码
  8. Drools规则引擎
  9. JAVA长连接与短连接
  10. 钉钉isv应用开发(钉钉isv应用开发注意事项)
  11. java基于springboot+Vue+nodejs的高校运动会报名管理系统 element
  12. 如果想做数据标注,你可能会遇到哪些坑?
  13. 海贼王热血航线正在连接服务器,航海王热血航线访问频繁进不去解决方法_航海王热血航线访问频繁怎么回事|微安卓...
  14. [全网首发]一款好看的个人主页源码
  15. excel多表格数据汇总如何实现
  16. 触动心灵的十句诗,不看悔死你
  17. 面试时,怎样才能谈下令自己满意的薪资?
  18. 光伏企业土地使用税如何计算?
  19. 如何系统自学黑客(网络安全)?
  20. word自动编号变黑块的亲测解决方案

热门文章

  1. 为什么你不想学习?只想玩?人是如何一步一步废掉的
  2. “1只老母鸡”估值180亿!老乡鸡发展20年,都做对了什么?
  3. 使用函数节流思想避免 SAP UI5 应用里按钮短时间内被高频重复点击试读版
  4. 一步一步 copy163: 网易严选 ---- vue-cli
  5. python创建数据库字数不限制_KindEditor设置字数限制
  6. 关闭占用指定端口的进程
  7. 5G室内覆盖面临四大挑战,如何破?
  8. 拜托,使用 Three.js 让二维图片具有 3D 效果超酷的
  9. UGeek大咖说 | 精彩回顾:京东商城可观测性体系的落地与实践
  10. Scan的使用方式以及Spring redis的坑