Pytorch实现代码:https://github.com/MenghaoGuo/AutoDeeplab

创新点

cell-level and network-level search

以往的NAS算法都侧重于搜索cell的结构,即当搜索得到一种cell结构后只是简单地将固定数量的cell按链式结构连接起来组成最终的网络模型。AutoDeeplab则将如何cell的连接方式也纳入了搜索空间中,进一步扩大了网络结构的范围。

dense image prediction

之前的大多数NAS算法都是基于image level的分类,例如DARTS,ENAS等都是在CIFAR10和ImageNet上做的实验,AutoDeeplab则是成功地将NAS应用到了目标检测和图像分割任务上。

算法

Cell level search space

cell level的结构搜索方式参考的是DARTS,细节可参阅论文笔记系列-DARTS: Differentiable Architecture Search

搜索空间主要由如下8个operation组成:

  • 3 × 3 max pooling
  • 3 × 3 average pooling
  • 3 × 3 atrous conv with rate 2
  • 5 × 5 atrous conv with rate 2
  • 3 × 3 depthwise-separable conv
  • 5 × 5 depthwise-separable conv
  • skip connection
  • no connection (zero)

一个cell的示意图如下(为方便说明每个子节点之间只有三种operation,不同颜色的连线代表不同操作),0表示第一个子节点,它会接收前两层的cell的输出作为输入;

下面我们先以1-2为例看节点之间的计算方式:

1子节点表示为\(H^l_1\),1到2子节点之间的操作可以表示为:

\(\overline{O}_{1 \rightarrow 2}(H^l_1)=\sum_{k=1}^3\alpha^k_{1 \rightarrow 2} O^k(H^l_1)\)

其中\(\alpha^k\)表示第k个operation的概率,上图中一共有三种操作,所以最终的操作应该是三种操作的加权值,另外三个操作的和应该为1,所以通常需要使用softmax操作来实现。更一般化的表达方式如下:

\[
\begin{array}{l}{\qquad \overline{O}_{j \rightarrow i}\left(H_{j}^{l}\right)=\sum_{O^{k} \in \mathcal{O}} \alpha_{j \rightarrow i}^{k} O^{k}\left(H_{j}^{l}\right)} \\
{\text { where }} {\qquad \begin{aligned} \sum_{k=1}^{|\mathcal{O}|} \alpha_{j \rightarrow i}^{k}=1 & \,\,\,\, \forall i, j \\ \alpha_{j \rightarrow i}^{k} \geq 0 & \,\,\,\, \forall i, j, k \end{aligned}}\end{array}
\]

有了操作的表达式后,那么每个子节点的表达方式也就是对多个输入节点作加权求和,如下:

\[
H_{i}^{l}=\sum_{H_{j}^{l} \in \mathcal{I}_{i}^{l}} O_{j \rightarrow i}\left(H_{j}^{l}\right)
\]

Network-level search space

上图左边画的是network-level,横向表示layer,纵向表示图像分辨率(2表示原图是特征图的2倍,其他同理)。

  • 灰色小圆圈表示固定的stem层,可以理解为固定的预处理层,即原图会首先经过一些列操作后得到缩小4倍的特征图,然后会在该特征图上进行模型结构搜索。

  • 蓝色小圆圈表示候选节点,每个节点都可以是一个cell结构
  • 灰色箭头表示每个cell节点数据可能的流动方向,可以看到一个节点最多可能有三种流动方向,即分辨率增大一倍,保持不变和减小一倍。这样做的目的是避免分辨率变化太大而导致信息量丢失过多。例如如果从4直接连接到32,这个画面太美不敢看,所以人为设定了前面的限制(虽然没有实验证明这样不可以,但是凭直觉这样貌似不可以,如果钱和设备像和谷歌一样多也还是可以试一试的)

右边刚开始看的时候还以为就只是介绍了cell结构,但是结合代码后发现有个地方稍微有些不同,这个其实在后面的论文中也有介绍,但是当时没注意看,即每个节点的表达式如下:

\[
\begin{aligned}^{s} H^{l}=& \beta_{\frac{\varepsilon}{2} \rightarrow s}^{l} \operatorname{Cell}\left(^{\frac{s}{2}} H^{l-1},^{s} H^{l-2} ; \alpha\right) \\ &+\beta_{s \rightarrow s}^{l} \operatorname{Cell}\left(^{s} H^{l-1},^{s} H^{l-2} ; \alpha\right) \\ &+\beta_{2 s \rightarrow s}^{l} \operatorname{Cell}\left(^{2 s} H^{l-1},^{s} H^{l-2} ; \alpha\right) \end{aligned}
\]
其中
\[
\begin{array}{ll}{\beta_{s \rightarrow \frac{s}{2}}^{l}+\beta_{s \rightarrow s}^{l}+\beta_{s \rightarrow 2 s}^{l}=1} & {\forall s, l} \\
{\beta_{s \rightarrow \frac{s}{2}}^{l} \geq 0 \quad \beta_{s \rightarrow s}^{l} \geq 0} & {\beta_{s \rightarrow 2 s}^{l} \geq 0 \quad \forall s, l}\end{array}
\]

上面的公式乍看会很懵,我们慢慢看:

  • 首先\(\beta\)表示某条路径的概率,例如\(\beta^l_{s \rightarrow s}\)表示下图中的红色箭头路径的概率,其他同理。
  • \(\text{Cell}(^{s} H^{l-1},^{s} H^{l-2}; \alpha)\)表示输入节点为下图中的两个红色节点,\(\alpha\)表示cell的内部结构

MARSGGBO♥原创







2018-10-29

论文笔记系列-Auto-DeepLab:Hierarchical Neural Architecture Search for Semantic Image Segmentation的更多相关文章

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

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

  2. 论文笔记之:Decoupled Deep Neural Network for Semi-supervised Semantic Segmentation

    Decoupled Deep Neural Network for Semi-supervised Semantic Segmentation xx

  3. 论文笔记之:A CNN Cascade for Landmark Guided Semantic Part Segmentation

    A CNN Cascade for Landmark Guided Semantic Part Segmentation  ECCV 2016 摘要:本文提出了一种 CNN cascade (CNN ...

  4. 【论文笔记系列】AutoML:A Survey of State-of-the-art (上)

    之前已经发过一篇文章来介绍我写的AutoML综述,最近把文章内容做了更新,所以这篇稍微细致地介绍一下.由于篇幅有限,下面介绍的方法中涉及到的细节感兴趣的可以移步到论文中查看. 论文地址:https:/ ...

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

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

  6. 论文笔记系列-Simple And Efficient Architecture Search For Neural Networks

    摘要 本文提出了一种新方法,可以基于简单的爬山过程自动搜索性能良好的CNN架构,该算法运算符应用网络态射,然后通过余弦退火进行短期优化运行. 令人惊讶的是,这种简单的方法产生了有竞争力的结果,尽管只需 ...

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

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

  8. 论文笔记:Fast Neural Architecture Search of Compact Semantic Segmentation Models via Auxiliary Cells

    Fast Neural Architecture Search of Compact Semantic Segmentation Models via Auxiliary Cells 2019-04- ...

  9. 论文笔记: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 ...

随机推荐

  1. .NET配置引用程序集的路径(分离exe和dll)

    按照引用程序集路径的不同,程序集DLL分为两类: 1)全局DLL(在GAC中注册,GAC——全局程序集缓存),有关GAC的详细资料可以参考一下链接: http://dddspace.com/2011/ ...

  2. BST平衡二叉树的后继结点(最近的大)

    public class InorderSuccessorInBST {//平衡二叉树查找后继结点 public TreeNode inorderSuccessor(TreeNode root, Tr ...

  3. ES6中的关键字 - let

    let关键字 1.let关键字声明的变量仅仅在自己的块级作用域内起作用,出了块级作用域就不起作用了: var arr2 = []; for (let index = 0; index < 10; ...

  4. Tp中使用Xunsearch

    可以将安装目录下的核心代码拷贝到Vendor中. 命名为xunsearch. 然后引入使用. vendor('xunsearch.lib.XS'); $xs = new \XS('demo'); // ...

  5. IDEA中Tomcat部署时war和war exploded区别

    原理说明 war模式:将WEB工程以包的形式上传到服务器 :war exploded模式:将WEB工程以当前文件夹的位置关系上传到服务器: 含义解释 war模式这种可以称之为是发布模式,看名字也知道, ...

  6. 利用Travis IC实现Hexo博客自动化部署

    1.Hexo博客的利与弊 Hexo中文 我就默认为看到这篇文章的人都比较了解Hexo博客,也都能够成功手动部署吧.所以第一部分推荐两篇文章一笔带过,让我们快速进入本文的重点内容.实在不知道也不要方先看 ...

  7. latex设置不同中英文字体

    latex中,中文我喜欢宋体,英文喜欢Courier New,于是,我分别设置了中英文字体,文章瞬间顺眼了很多. \documentclass[UTF8]{ctexart} \usepackage[a ...

  8. pycharm_python_flask相关学习心得逐步更新

    2019-10-30: Pycharm的interpreter配置问题对于安装第三方库,如果能够在配置的可视化界面安装成功更好.如果不能可视化安装,则在pycharm的terri..仿cmd下用pip ...

  9. C# vb .net图像合成-合成矩形

    在.net中,如何简单快捷地实现图像合成呢,比如合成文字,合成艺术字,多张图片叠加合成等等?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码 ...

  10. English--分词短语

    English|分词短语 现在开始讲解分词短语的内容.在英语的语法世界里面,想要将句子写的漂亮,分词短语,你值得拥有! 前言 目前所有的文章思想格式都是:知识+情感. 知识:对于所有的知识点的描述.力 ...