Title:Auto-DeepLab:Hierarchical Neural Architecture Search for Semantic Image Segmentation
From:CVPR2019
Note data:2019/06/18
Abstract:提出一种NAS方法应用于图像语义分割,并取得了SOTA的效果。
Code :pytorch
传送门:NAS综述
目录
Auto-DeepLab论文解读
1 Abstract
最近,神经架构搜索(NAS)已经成功地识别出在大规模图像分类上超过人类设计的神经网络架构。本文将NAS用于语义图像分割。现有的工作通常集中于搜索可重复的单元结构,同时手工设计控制空间分辨率变化的外部网络结构。这种选择简化了搜索空间,但是变得越来越成问题,这使得图像预测变得更加网络化。因此,我们建议除了单元级结构之外还搜索网络级结构,这构成了分层体系结构搜索空间。我们提供包含许多流行设计的网络级搜索空间,并开发一种允许有效的基于梯度的架构搜索(Cityscapes上的3 P100 GPU天)的配方。我们证明了所提方法在具有挑战性的Cityscapes,PASCAL VOC 2012和ADE20K数据集上的有效性。 Auto-DeepLab是我们专门针对语义图像分割进行搜索的架构,无需任何ImageNet预训练即可获得最先进的性能。
2 Introduction
深度神经网络在人工智能任务中取得了优异的表现,最近的一些工作尝试自动机器学习(Auto-ML),近期的神经网络结构搜索(NAS)在图像分类任务中取得了state-of-the-art的效果。本文尝试将NAS运用在图像语义分任务中。
从图像分类中简单的移植想法不足以进行语义分割。 在图像分类中,NAS通常将转移学习从低分辨率图像应用到高分辨率图像,而语义分割的最佳体系结构必须固有地在高分辨率图像上运行。 这表明需要:
- 更宽松和通用的搜索空间来捕捉更高分辨率带来的架构变化;
- 更高效的架构搜索技术,因为更高的分辨率需要更大的计算。
基于CNN结构的分割模型通常遵循两级层次结构,其中外部网络级别控制空间分辨率变化,内部单元格级别控制特定的分层计算。 NAS 的绝大部分当前工作遵循这种两级分层设计,但只在手工设计外部网络级别时自动搜索内部单元级别。 这种有限的搜索空间对于密集图像预测而言成为问题,其对空间分辨率变化敏感。
因此,在我们的工作中,我们提出了类似网格的网络级搜索空间,常用单元级搜索空间,以形成分层体系结构搜索空间。 我们的目标是共同学习可重复的细胞结构和网络结构的良好组合,专门用于语义图像分割。
就架构搜索方法而言,强化学习和进化算法即使在低分辨率CIFAR-10数据集上也往往是计算密集型的,因此可能不适合语义图像分割。 我们从NAS的差异化表达中汲取灵感,并开发出与分层架构搜索空间完全匹配的离散架构的连续放松。 分层架构搜索通过随机梯度下降进行。 当搜索终止时,最好的小区架构被贪婪地解码,并且使用维特比算法有效地解码最佳网络架构。 我们直接在Cityscapes的321×321图像作物上搜索建筑。 搜索非常有效,在一个P100 GPU上只需要大约3天。
论文的主要贡献有:
- 首次尝试将NAS扩展到图像分类到密集图像预测之间。
- 提出了一个网络级架构搜索空间,它可以对经过深入研究的单元级别进行扩充和补充,并考虑对网络级别和单元级别架构进行更具挑战性的联合搜索。
- 开发了一种可区分的连续配方,可在3个GPU天内有效地进行两级分层架构搜索。
- 如果没有ImageNet预训练,我们的模型明显优于FRRN-B和GridNet,并且与Cityscapes上其他ImageNet预训练的最先进模型具有相当的性能。 在PASCAL VOC 2012和ADE20K上,也优于几种最先进的模型。
3 Related Work
论文主要图像语义分割,神经结构搜索方法,神经结构搜索空间三个方面介绍相关的一些工作。
图像语义分割
卷积神经网络在图像语义分割取得了优异表现,在这些最优的模型中,有两个直观重要的模块:
- 多尺度上下文模块
- 神经网络的设计
围绕着多尺度上下文模块提出了PSPNet,deeplab等模型,另一方面围绕着神经网络的设计提出了AlexNet,VGG,ResNet等模型框架。另外针对与分割框架提出的编码-解码结构有效的提取了大范围的背景信息。
但是这些大多数的方法都需要的在ImageNet上进行预训练,这是我们不想要的。在这篇论文中我们提出神经结构搜索模型,在不需要预训练的基础上达到了最优的表现。
神经结构搜索方法:
顾名思义神经结构搜索目的就是自动设计神经网络结构,一些公众中使用神经结构搜索RNN网络应用在自然语言处理领域,还有CNN应用在图像分类任务中。一些工作使用强化学习的方法去训练RNN,表示生成指定CNN架构的符号序列的策略。 RL的替代方案是使用进化算法(EA),通过改变迄今为止发现的最佳架构来“演化”架构。但是这些RL和EA方法往往需要在搜索过程中进行大量计算,通常需要数千个GPU天。 PNAS 提出了一种渐进式搜索策略,该策略显着降低了搜索成本,同时保持了搜索体系结构的质量。 NAO将嵌入式架构嵌入到潜在空间中并在解码之前执行优化。此外,一些作品利用了采样模型之间的架构共享,而不是单独训练它们中的每一个,从而进一步降低了搜索成本。我们的工作遵循可微分的NAS公式,并将其扩展到更一般的分层设置。
神经结构搜索空间:
早期的一些工作试图直接构建整个网络。最近的论文已经转向搜索可重复的单元结构,同时保持外部网络级结构的手工固定。我们的工作仍然使用这个单元级别的搜索空间来保持与以前的工作一致。论文的一个贡献是提出一个新的通用网络级搜索空间,因为我们希望联合搜索这个两级层次结构。
4 Architecture
本节介绍我们的两级分层体系结构搜索空间。 对于Cell Level Search Space, Network Level Search Space,基于对许多流行设计的观察和总结提出了一种新颖的搜索空间。
4.1 细胞水平搜索空间
4.2 网络空间搜索
在图像分类NAS框架中,一旦找到单元结构,整个网络就使用预定义的模式构建。因此,网络级不是架构搜索的一部分,因此其搜索空间从未被提出或设计过。
这种预定义的模式简单明了:通过插入“缩小单元”(将空间分辨率除以2并将滤波器数乘以2的单元),将许多“正常单元”(保持特征张量空间分辨率的单元)平等的分隔开。这种下采样策略在图像分类情况下是合理的,但在密集图像预测中,保持高空间分辨率也很重要,因此存在更多的网络级别变化。
在用于密集图像预测的各种网络架构中,我们注意到两个一致的原则:
- 下一层的空间分辨率要么是两倍大,要么是两倍小,要么保持不变。
- 最小的空间分辨率是下采样32倍。
遵循这些常规做法,我们提出以下网络级搜索空间。网络的开头是一个双层“枝干”(stem)结构,每个枝干都将空间分辨率降低2倍。之后,总共有L层具有未知空间分辨率的单元,分辨率的最大值是被下采样4倍,最小值是被下采样32倍。由于每层空间分辨率可能至多为2倍不同,因此枝干后的第一层只能被下采样4倍或8倍。我们在图1中说明了我们的网络级搜索空间。我们的目标是在这个L层网格中找到一条好的路径。
在图2中,我们展示了我们的搜索空间足以覆盖许多流行的设计。在未来,我们计划进一步放宽这个搜索空间以包括U-net架构,其中层 l 除了l−1之外还可以从l 之前的一个层接收输入。
5 Method
我们首先介绍与上述分层架构搜索完全匹配的连续松弛的(指多数个)离散架构。然后,我们讨论如何进行架构搜索优化,以及如何在搜索终止后解码一个离散架构。
5.1连续松弛的架构
网络架构
优化
引入这种连续松弛的优点是控制不同隐藏状态之间的连接强度的标量现在是可微分计算图的一部分。因此,它们可以通过梯度下降方法得到有效的优化。我们采用[49]中的一阶近似,并将训练集分为两个不相交的集合trainA和trainB。 优化在以下二者之间交替进行:
其中损失函数L LL是在语义分割小批量上计算的交叉熵。
6 Experiment
我们考虑网络中总共L=12 L = 12L=12层,并且单元中的块个数为B=5 B = 5B=5。网络级搜索空间有2.9×104 条不同的路径,单元结构的数量为5.6×10^14。所以联合分层搜索空间的大小约为10^19。我们遵循通常的做法,即在将特征张量的高度和宽度减半时将滤波器的数量加倍。图1中每个蓝色节点的下采样率为s ,有B×F×s 个输出滤波器(output filters),其中F FF是控制模型容量的乘法滤波器( filter multiplier)。在架构搜索中我们设置F=8 。在s2→s 的连接中设置卷积的步长为2,同时缩小空间分辨率,加倍滤波器数量。对于所有2s→s 的连接,双线性上采样后接1×1的卷积,同时增大空间分辨率,减半滤波器数量。使用的孔洞空间金字塔池化模块有5条分支:一个1×1的卷积,三个3×3有不同孔洞率的卷积,和一个池化的图像特征。在搜索过程中,我们使用简化的有3条分支的ASPP,只使用一个孔洞率为96/s 的3×3 的卷积。每个ASPP分支滤波器的数量依旧是B×F×s 。
我们在Cityscapes数据集上进行用于图像语义分割的架构搜索。更具体地说,我们使用train_fine集中一半分辨率(512×1024)的图像进行随机图像裁剪,得到321×321图像。我们随机选择train_fine中一半的图像当做trainA,另一半为trainB。
在总数为40的epochs中进行架构搜索优化。由于GPU显存限制,设置batch size为2。当学习网络权重w ww时,我们使用动量为0.9的随机梯度下降优化,学习率从0.025衰减到0.001,权值衰减率为0.0003。当学习架构编码α,β时,我们使用学习率为0.003,权值衰减率为0.001的Adam优化。我们凭经验发现,如果在w ww没有经过良好训练的情况下开始优化α,β ,那么这种结构往往会陷入糟糕的局部最优。因为我们在经过20 epochs后才开始优化α,β 。整个框架搜索优化在单个P100 GPU上需要耗时3天。图4显示在整个过程中验证集精度稳步提高。我们也尝试寻找更长的epochs(60,80,100),但没有观察到好处。
图3显示了找到的最佳架构。就网络级架构而言,在开始(保持以4的下采样时间更长)和结束(以8的下采样结束)时都优选更高的分辨率。我们还使用灰色虚线箭头显示每个节点上最大β \betaβ值的连接。我们观察到在前3/4层中有进行下采样,并在最后的1/4层中进行上采样的一般趋势。在单元级架构方面,经常使用孔洞卷积和深度可分卷积的结合,这表明已经学习了上下文的重要性。注意,很少发现孔洞卷积在用于图像分类的单元中是有用的。
实验细节:
项目 | 属性 |
数据集 | Cityscapes/VOC2012/ADE20K |
图片大小 | 512 × 1024(随机裁剪 321×321) |
优化器 | SGD |
权重衰减 | momentum 0.9/weight decay 0.0003 |
学习率 | (初始学习率为0.05) |
7 Conclusion
在本文中,我们首次尝试将神经网络搜索技术从图像分类扩展到密集图像预测问题。我们承认空间分辨率变化的重要性,不固定在单元级上,将网络级整合到搜索空间中来体现架构变化。我们还开发了一种可微分的公式,它允许我们在两级分层搜索空间中实现高效(比DPC [6]快大约1000倍)的架构搜索。搜索的结果Auto-DeepLab是通过从头开始在基准语义数据集进行训练评估得来的。在Cityscapes上,Auto-DeepLab明显优于之前的最新技术8.6%,并且在利用粗略注释时与经过ImageNet预训练的顶级模型相当。在PASCAL VOC 2012和ADE20K上,Auto-DeepLab也优于多个经过ImageNet预训练的最先进模型。
未来的工作有很多可能的方向。在目前的框架内,目标检测等相关应用应该是合理的。我们还可以尝试以很小的计算开销解决不同层的单元架构α 。除了当前的框架之外,更加通用和松弛的网络级搜索空间应该是有益的。