关注上方深度学习技术前沿”,选择“星标公众号”

资源干货,第一时间送达!

最近冒出来很多 Neural Network Search (NAS) + 目标检测的 paper,今天介绍一篇中了 AAAI 2020 的文章:SM-NAS: Structural-to-Modular Neural Architecture Search for Object Detection。

- 论文链接:https://arxiv.org/abs/1911.09929

- 作者来自:华为诺亚方舟实验室&中山大学

论文效果展示:

思路:这篇 Paper 要做的事情和 EfficientDet 非常类似,都是将神经网络结构搜索和目标检测相结合,而且都是从目标检测算法的整个 pipeline 角度来搜。作者用了 coarse-to-fine 的思想,把 NAS 的搜索过程分为两个 stage,先进行结构层次 (structural-level) 的搜索,再进行模块级别 (modular-level) 的搜索,

下面将分别进行介绍:

Structural-level

对于目标检测任务来说,整个流程可以分为 backbone, neck, RPN head, bbox head 四部分。当然像 RetinaNet 这样的 one-stage 模型也可以不要 RPN head,这样就是三部分了。之前的很多工作都是尝试优化其中的一部分,比如 DetNAS 是搜 backbone,Guided-Anchor 是优化 RPN 部分,Cascade RCNN 优化 bbox head 部分。本文的作者指出,应该考虑整个系统不同部分之间的关系,在目标检测的整个 pipeline 上联合进行起来搜索。相当于搜一个最好的组合方式来组合这些模块。

随后作者构建了这样的搜索空间:

  • - backbone:ResNet系列 (Res18, 34, 50, 101),ResNeXt 系列(50, 101),MobileNet V2 。并且都用了 ImageNet 初始化

  • - neck: 不用 FPN (也就是C4) ,FPN 从 P1 到 P6 的哪层进入哪层出 (P1-P5,P2-P5之类的)

  • - RPN: 不用 RPN (one-stage),RPN,Guided Anchor

  • - head: RCNN head, RetinaNet head, Cascade RCNN head (包括 cascade 的数量从2 ~ 4)

  • - 输入图片分辨率:[ 512x512,800x600,1080x720,1333x800]

把本部分的搜索空间可视化如下图所示:

作者最后得到了 11000 种候选的组合,用进化算法来搜,先随机生成初始值,然后选种变异之类的。作者最后花了 2000 GPU hours,一共搜了约500种组合。得到的结果如下图所示:

最左边的图是在不同输入图片分辨率下, speed-accuracy trade off 曲线。作者的横轴用的就是在 V100 GPU 上的 inference time,而不是 FLOPs 这些间接的指标。作者发现 MobileNet V2 虽然 FLOPs 是最小的,但是由于有比较大的内存访问开销,造成实际上用 inference time 来比的话不太行。

作者在上图最右面的帕累托最优曲线上选了6个模型,C0 - C5,送到下一个 Modular-level search 的部分。

Modular-level

在上一步确定了选择哪些模块、模块之间的连接方式之后,这一步来单独优化每个模块。

作者先搜一个 backbone ,固定了有 5 个 stage,并且固定了要逐渐 downsample 2 倍。由于换新的 backbone 再用 ImageNet 初始化会很麻烦,作者在这里就都不用 pre-train model,随机初始化了。为了减轻不初始化的影响,作者把 Batch Normalization 替换成 Group Normalization ,并加入了 Weight Standardization。

这一部分的参数空间非常简单,其实就是搜 backbone 的 channel 数量。比如在之前的 structural-level 搜到的 C5 模型,backbone 用的是 X101_bottleneck。作者把初始的 channel 数量指定为 {48, 56, 64, 72} 四个候选值,然后搜后面的 conv 里面要在哪里把 channel 数量乘2。并没有引入新的运算。作者还搜了 FPN 和 head 部分 的 channel 数量,候选组合就是 {128, 256, 512} 。这一步作者又把衡量速度的指标从 inference time 改成了 FLOPs,作者说 inference time 在不同 GPU 上不一样,而 FLOPs 相对更 consistency。

把本部分的搜索空间可视化如下图所示:

最后搜出来的结果,E0 - E5 如下表所示:

这个表里面在 Backbone 部分有很多字符串,比如"64 1-21-21-12",64 指的是初始的 channel 数量,后面的 1 表示过完 block 结构之后 channel 数量不变,2 表示 channel 数量要乘2。从这个表格上可以看出在每个 stage 开始的时候把 channel 数量乘2倍比较好。

在下图中,蓝色点是上一部分 C0 ~ C5 structural-level 的结果,橘黄色点是 modular-level search 得到的模型,确实有 refine 的作用。

实验结果

和 state-of-the-art 的比较如下表,主要是在 inference time 上有优势:

对于 training from scratch 的对照实验如下表,可以看出 BN + imagenet pretrain 的结果和 GN+WS+no pretrain 的结果接近。

换到其它数据集的结果如下表:

结论

总结一下这篇 paper,个人觉得就是它的 Novelty 和 EfficientDet 非常类似,都是用 NAS 的方法来搜整个目标检测的 pipeline。

EfficientDet 的搜索空间更加复杂,backbone 直接用 EfficientNet,还设计了一个专门的BiFPN,性能相对更好一点。

而这篇的优点在于分两个 stage 来搜,coarse to fine 的思想,对于目标检测这种 pipleline 特别长的任务可以减小搜索空间。

重磅!DLer-目标检测交流群已成立!

为了能给大家提供一个更好的交流学习平台!针对特定研究方向,我建立了目标检测微信交流群,目前群里已有百余人!本群旨在交流目标检测、密集人群检测、关键点检测、人脸检测、人体姿态估计等内容。

进群请备注:研究方向+地点+学校/公司+昵称(如目标检测+上海+上交+小明

广告商、博主请绕道!

???? 长按识别,即可进群!

觉得有用麻烦给个在看啦~  

【AAAI 2020】NAS+目标检测:SM-NAS 论文解读相关推荐

  1. 谷歌 NAS + 目标检测:SpineNet论文详解

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 作者:bearbee 知乎链接:https://zhuanlan.zhihu.co ...

  2. cnn 句向量_深度学习目标检测Fast R-CNN论文解读

    前言 我们知道,R-CNN存在着以下几个问题: 分步骤进行,过程繁琐.Selective Search生成候选区域region proposal->fine tune预训练网络->针对每个 ...

  3. CVPR2020论文分方向整理之检测篇_3D目标检测(代码/论文解读/136篇打包下载)

    CVPR2020论文分方向整理之检测篇(代码/论文解读/136篇打包下载) 本周三,CVPR官方正式开放下载,极市第一时间将所有论文(共1467篇)进行了下载打包,详情见此处.为了方便大家进一步的学习 ...

  4. 目标检测:CenterNet论文解读及代码详解

    论文思想 当前anchor-based目标检测方法可分one-stage.two-stage两种.one-stage模型利用anchor机制得到大量的框,之后直接加入回归.分类分支对框进行分类与微调. ...

  5. 三维目标检测新SOTA---ADFDetV2论文解读

    问题 本文提出了一种单阶段的三维目标检测算法,并在文中分析了二阶段三维目标检测算法的不必要性.其所提算法在waymo实时目标检测竞赛中取得了第一的成绩.其性能超过了所有单阶段和多阶段的目标检测算法. ...

  6. 目标检测算法SSD论文解读

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 原文链接:https://blog.csdn.net/jy001227801/article/ ...

  7. 【lidar】3D目标检测PointPillars:论文解读、代码解读、部署实现(2)

    PointPillars部署:TensorRT推理实现,下载地址:添加链接描述 PointPillars 高度优化的点云目标检测网络PointPillars.主要通过tensorrt对网络推理段进行了 ...

  8. 【lidar】3D目标检测PointPillars:论文解读、代码解读、部署实现(1)

    Abstract 点云中的目标检测是自动驾驶等机器人应用中的一个重要方面.在本文中,作者思考了将点云编码成适合下游检测pipeline的格式问题.最近的文献提出了两种类型的编码器:固定编码器往往更快, ...

  9. CVPR 2020 夜间目标检测挑战赛冠军方案解读

    ↑ 点击蓝字 关注视学算法 来源丨DeepBlue深兰科技 编辑丨极市平台 在 CVPR 2020 Workshop 举办的 NightOwls Detection Challenge 中,来自国内团 ...

最新文章

  1. Linux运维人员-服务器组成硬件基础
  2. egg mysql 连表查询_Egg中使用Sequelize框架关联查询Mysql数据库
  3. Kubernetes——自动扩展容器!假设你突然需要增加你的应用;你只需要告诉deployment一个新的 pod 副本总数即可...
  4. 一文读懂熔断器和重试机制
  5. Flexbox弹性盒模型
  6. 微软MS10-046漏洞的利用
  7. Bootstrap完美select标签下拉菜单实现
  8. 修改 Linux 主机名
  9. mt管理器显示java_真正免root的MT管理器详细使用教程
  10. 杨辉三角形JAVA代码
  11. C10K问题及解决方案
  12. 百度地图改变定位图标
  13. iOS 调整图片尺寸和大小的两个方法
  14. elasticjob已下线_elasticJob 源码解析之自诊断恢复
  15. matlab实验报告井字棋,有偿井字棋游戏300+
  16. 验证码论文概述-----中文篇
  17. ORACLE迁移到DM/达梦 Mysql迁移到DM/达梦 SQLSERVER迁移到DM/达梦 超级有用参考文档!!!
  18. n3150 linux 4k,暴风影音N3150小主机硬件介绍和黑群晖体验
  19. 从零开始,用5年时间,攒够100w,如何够到800w 上海房
  20. Object.assign是什么意思啊?

热门文章

  1. 微软系统遭*** 谴责人为失误
  2. 无线路由器打印机服务器设置密码,路由器怎么设置打印机服务器设置
  3. 涉密计算机格式化维修,涉密计算机中的涉密信息被删除或格式化后,不可复原,可以连接互联网 - 作业在线问答...
  4. java string 属性_String类型的属性和方法
  5. build.xml(黎活明安全管理部署文件)
  6. 大神开源AI代码!这次我也可以亲自上手、模仿OpenAI利用文本合成图像啦!
  7. 前方高能:1024程序员节读书攻略来来来来啦!
  8. 亚马逊千人评分4.6分,用小说的方式解锁开发难题!
  9. 全球最大的3D数据集公开了!标记好的10800张全景图
  10. matplotlib命令与格式:图像(figure)与子区域(axes)布局与规划