Fast Neural Architecture Search of Compact Semantic Segmentation Models via Auxiliary Cells

2019-04-24 14:49:10

Paper:https://arxiv.org/pdf/1810.10804.pdf

在过去的许多年,大家一直认为网络结构的设计是人类的事情。但是,近些年 NAS 的发展,打破了这种观念,用自动化的方法在给定的数据上设计合适的网络结构,变的势不可挡。本文在语义分割的任务上,尝试搜索高效的 encoder-decoder framework,并在其他类似任务上做了验证。

1. 方法

1.1 问题定义:

我们考虑 dense prediction task T, 输入是 3维的 RGB image,输出是 C 维的 one-hot segmentation mask,C 是等于类别数目的。我们将从该输入到对应输出的函数,记为 f,即:全卷积网络结构。我们假设 f 可以进一步的分解为两个部分,即:e-代表 encoder,d-代表 decoder。我们用预训练的分类任务的模型来初始化 encoder e,另外,decoder d 部分,就是选择访问 encoder 的多个输出,然后选择利用哪些 operation 在这个上面进行对应的操作。

1.2 Search Space

这里作者着重关注 decoder 部分,该 decoder 可以访问 pre-trained encoder 的多个 layer,从而可以获得多个不同分辨率的输出。为了使得采样的结构紧凑,每一个 encoder 的输出会经过一个 1*1 convolution,得到相同数目的 channel。我们依赖于 RNN 模型,来序列的产生该利用的 layer 的索引 (produce pairs of indices of which layers to use) 以及在这些数据上利用什么操作。特别的,这些操作的序列组合起来,得到一个 cell(如图1所示)。同样的 cell 但是用不同的 weights,对采样到的 layer 进行操作;两个 cell 的输出进行 sum。在 sampling pooling 之后添加 resultant layer。采样的 layer 个数是由超参数控制的,文中设置为 3,允许 controller (即 RNN)来恢复出该 encoder-decoder architecture,比如:FCN, RefineNet。所有的非采样的加和输出,都被组合起来,然后输入到 1*1 卷积中,以进行降维。

作者使用了如下的 11 种操作,作为搜索空间:

1.3 Search Strategy

作者将 training set 划分为两个不连续的集合,meta-train 以及 meta-val。meta-train 是用于训练在特定任务上的 sampled architecture,meta-val 则是用于衡量 trained architecture 的性能,并提供给 controller 一个 scalar,在 DRL 中通常称为 reward 。给定采样的序列,其 logarithmic probabilities 以及 reward signal, the controller 都用 PPO 进行优化。所以,本文的任务就有两个训练过程:

  inner --- optimization of the sampled architecture on the given task,

  outer --- optimization of the controller.

作者接下来对 inner 的过程进行了详细的介绍。

1.4 Progressive Stages:

作者将 inner training process 分为两个阶段:在第一个阶段,固定住 the encoder weights,所以其输出是可以预先计算的,然后仅仅训练 decoder 部分。这种策略可以快速的更新 decoder 的权重,可以对 sampled architecture 进行一个合理的性能评估。我们探索了一个检测的方法来决定是否继续,在第二阶段训练 the sampled architecture。确切的说,当前 reward value 是和所看到的 running mean of rewards 相比较,如果大于平均值,我们继续训练。否则,我们以 1-p 的概率来终止训练过程。概率 p 在搜索过程中是从 0.9 渐变的(annealed)。

而这么做的动机是:在第一个阶段,虽然有些许噪声,但是仍然可以提供潜在的 sampled architecture 的合理预测。至少,他们提供了一个可靠地信号:the sampled architecture is non-promising, 当仅仅花费几秒钟在这个任务上。这种简单的方法,在前期可以鼓励探索。

1.5 Fast training via Knowledge Distillation and Weights' Averaging:

对于语义分割任务来说,需要多次的迭代才能够收敛。通过用 pre-trained classification model 来初始化 encoder 部分可以很大程度上缓解该问题,但是对于 decoder 来说,不存在这种 pre-trained model。作者探索了几种其他的策略,来加速收敛过程:

1). we keep track of the running average of the parameters during each stage and apply them before the final valivation.

2). we append an additional l2-loss term between the logits of the current architecture and a pre-trained teacher network.

这两种方法的组合允许我们接受一个非常可靠地分割模型的性能预测。

1.6  Intermediate Supervision via Auxiliary Cells:

作者添加了一个 辅助单元(auxiliary cell),该 cell 是和 main cell 相同的。同时,在训练和测试阶段,其也不影响 main classifier 的输出,而仅仅对剩下的网络提供更好的梯度。最终,每一个采样的网络结构的奖励,仍然由 main classifier 的输出决定。为了简单起见,我们仅仅在该辅助输出上计算分割损失(segmentation loss)。中间监督的概念,并不是很新,但是前人的工作仅依赖于辅助分类器,而本文作者首次将 decoder 的设计与辅助单元的设计相结合。

2. Experiments: 

下面该 decoder 网络结构就是作者搜索出来的,取得了很好的分割效果。

==

论文笔记:Fast Neural Architecture Search of Compact Semantic Segmentation Models via Auxiliary Cells的更多相关文章

  1. 论文笔记系列-Neural Architecture Search With Reinforcement Learning

    摘要 神经网络在多个领域都取得了不错的成绩,但是神经网络的合理设计却是比较困难的.在本篇论文中,作者使用 递归网络去省城神经网络的模型描述,并且使用 增强学习训练RNN,以使得生成得到的模型在验证集上 ...

  2. 论文笔记系列-Neural Network Search :A Survey

    论文笔记系列-Neural Network Search :A Survey 论文 笔记 NAS automl survey review reinforcement learning Bayesia ...

  3. [论文笔记][半监督语义分割]Universal Semi-Supervised Semantic Segmentation

    论文原文原文地址 Motivations 传统的训练方式需要针对不同 domain 的数据分别设计模型,十分繁琐(deploy costs) 语义分割数据集标注十分昂贵,费时费力 Contributi ...

  4. 论文笔记:Auto-DeepLab: Hierarchical Neural Architecture Search for Semantic Image Segmentation

    Auto-DeepLab: Hierarchical Neural Architecture Search for Semantic Image Segmentation2019-03-18 14:4 ...

  5. 论文笔记:ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware

    ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware 2019-03-19 16:13:18 Pape ...

  6. 论文笔记:Progressive Neural Architecture Search

    Progressive Neural Architecture Search 2019-03-18 20:28:13 Paper:http://openaccess.thecvf.com/conten ...

  7. 小米造最强超分辨率算法 | Fast, Accurate and Lightweight Super-Resolution with Neural Architecture Search

    本篇是基于 NAS 的图像超分辨率的文章,知名学术性自媒体 Paperweekly 在该文公布后迅速跟进,发表分析称「属于目前很火的 AutoML / Neural Architecture Sear ...

  8. 告别炼丹,Google Brain提出强化学习助力Neural Architecture Search | ICLR2017

    论文为Google Brain在16年推出的使用强化学习的Neural Architecture Search方法,该方法能够针对数据集搜索构建特定的网络,但需要800卡训练一个月时间.虽然论文的思路 ...

  9. (转)Illustrated: Efficient Neural Architecture Search ---Guide on macro and micro search strategies in ENAS

    Illustrated: Efficient Neural Architecture Search --- Guide on macro and micro search strategies in  ...

随机推荐

  1. (Linux)CentOS7下安装JDK 1.8

    参考:http://www.cnblogs.com/sxdcgaq8080/p/7492426.html 1.首先查看CentOS7是否有自带的JDK ,一般Linux会自动下载安装Open JDK ...

  2. 免登陆下载jdk

    linux下使用wget免登陆获取jdk对应版本gz包 wget --no-check-certificate --no-cookies --header "Cookie: oracleli ...

  3. Mysql查询报错:Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='

    使用sql别名关联查询的时候,由于字符集冲突导致该错误 解决方案,查询的时候强制转换字符集类型 case when column = '' then _gbk '' collate gbk_chine ...

  4. JMS笔记(三)

    最近重看activemq,对消息的传送确认机制有了进一步认识 1. mq在确认consumer收到消息后才会删除消息,因此consumer接收消息后应该进行ack"确认",java ...

  5. vue 封装组件

    props 接收数据 props对象里面 键值 是对改数据的 数据类型 的规定.做了规范,使用者就只能传输指定类型的数据,否则报警告 先根据要求写出完整的代码,再一一用参数实现组件封装 这里试着封装一 ...

  6. Vue框架创建项目常遇到问题

    利用npm安装cnpm时出现的错误 npm WARN deprecated socks@1.1.10: If using 2.x branch, please upgrade to at least ...

  7. JDK丨WIN10配置JDK1.8 (解决javac不是内部或外部命令,也不是可运行的程序或批处理文件)

    1.下载JDK,安装. 2.配置JDK. (右键我的电脑 - 属性 - 高级系统设置 - 环境变量.) 2.1 添加系统变量JAVA_HOME 变量名:JAVA_HOME 变量值:C:\Program ...

  8. nuget包管理nuget服务器发布包时出现请求报错 406 (Not Acceptable)

    在window服务器上部署nuget服务器时,发布包时出现请求报错 406 (Not Acceptable) 验证用户名.密码正确的情况下,还是出现上面错误.后面跟踪服务器日志,发现window\te ...

  9. 缺陷的背后---LIMIT M,N 分页查找

    一.问题发现篇 最近组内做了一次典型缺陷分享时,翻阅2018年的缺陷,找到了一个让我觉得“有料”的bug(别的同事测试发现的),先大致简单的描述下这个问题: 需要实现的功能:从一个DB库同步某一段时间 ...

  10. 重装@angular/cli reason: write EPROTO 139955972261696:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../deps/openssl/openssl/ssl/record/ssl3_record.c:252:

    前几天不小心卸载了 angular@cli,然后重装的时候发现,一直报错.如下: ××××××××@××××ln622653:/$ npm install -g @angular/clinpm ERR ...