SP-NAS: Serial-to-Parallel Backbone Search for Object Detection 论文笔记

目录

前言

一、Introduction

二、Method

1. Serial-level Search

2. Parallel-level Search

三、 实验细节





前言

最近学NAS+目标检测相关的内容,找到这篇华为诺亚方舟实验室的SP-NAS。

收录于2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)





一、Introduction

之前就有提出,传统的检测任务backbone就是直接移植在分类任务上表现优秀的backbone,如resnet。但这必然不是最优的,就给网络搜索留下了可行空间。

大多数NAS工作不直接搜索检测的backbone,因为一旦backbone结构变化就需要重新在imagenet预训练。(训练supernet的方式应该对此有帮助,比如DetNAS)

之前看过NAS-FPN和DetNAS,本文创新点在:

1)直接在detection dataset上搜索backbone(还是得imagenet pretrain的)

2 ) backbone大小可增长,搜索空间更大更灵活

3 ) 不像DetNAS这种指定4个block并搜索block内部模式,而是搜索整个backbone架构

【作者提出的serial-to-parallel搜索策略】

1)串行搜索阶段:在每个stage找到分辨率、接受域和输出通道最优的串行block

2 ) 并行搜索阶段:几个搜索的串行block组装成一个更强大的并行结构主干,更好地融合高级和低级特征





二、Method




1. Serial-level Search

  • 之前手工设计的检测网络如DetNet,FishNet主要在于利用高分辨率的空间信息、融合不同尺度的feature。本文的搜索空间也基于这些概念设计。
  • 输入图像会先经过两个3*3,s=2的卷积,分辨率降到1/4。
  • 之后接如图backbone,包含若干个stage,stage中有若干block,其中每个block的输入输出维度是相同的。搜索空间的候选block见table. 2。block数量8~60,stage数量5~7,以步长2降采样。同时也搜索何时double channel size(并不是每次降采样都double了)。

  • 网络结构的编码表达 BNB(11,1d1,111,1d11,11d1)。其中d表示channel double。

 ## 然后来看一下作者一直提到但是又看不太懂的Swap-Expand-Reignite搜索策略  =w=

  • 主旨是为了充分利用imagenet预训练好的参数,毕竟大部分paper都表示直接在detection数据集上训练要么准确率低,要么极其耗时。
  • swap:交换相邻block的步长,权重不变。(大概就是把一个block从一个stage并到另一个相邻stage,看图比较好懂)
  • expand:任意两个block中加入一个新block,通道维度不变,权重初始化为单位矩阵
  • reginite:经过一定的swap-expand得到的新网络会被小训练一下(比如 3 epochs),并在一堆新网络里选择性能最好的。但是当新结构偏离原结构太多,会进化不出更好的网络,此时要在imagenet上重新pre-train当前的最优结构,实现网络的“重启”。作者表示这种“重启” 1~2次即可。




2. Parallel-level Search

 先上图

 有点难懂,这边笔者只能简单理解一下。

  •  为了横向扩展网络,增加了K个parallel层,原始的serialNet(上面搜出来的那个)某一stage的output循环迭代地输入pi(1)-pi(k) 。类似于一个自底向上的尺度融合。

x_l^{k} = p_l^{k}(x_{l-1}^{k} + upsample(x_{l}^{k-1}))

  •  重点:每层parallel对应的block都是serialNet复制过去的,包括参数。
  • 具体搜索空间直接搬运文中的例子。假设SerialNet有4个stage,“(0,2,1,3)”表示每个stage的paralle subnet数量K,例如“0”表示在这个阶段没有额外的paralle subnet。“3”意味着我们复制最后一个stage3次。
  • 这个阶段搜索空间比较小,(K+1)^L,文中K=3,L=4~6。采用的随机搜索,但是并不均等采样,增加subnet的概率与FLOPS反相关。

三、 实验细节

  •  serial阶段的小训练+推理要96个GPU day in coco,16个GPU day in VOC(如果我没算错的话)。整体给出在VOC上的search time 26GPU day。
  • 作者给了在不同数据集上得到的网络,每个stage的计算资源分布。不同数据集的差别还是挺大的,看起来检测任务并没有特别倾向于哪个层次的特征(也或许和不同数据集的目标物体不同有关?),总之也比较有意思。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值