第十八章:Auto-DeepLab:用于语义图像分割的层次化神经架构搜索

news2024/11/24 14:55:40

0.摘要

        最近,神经架构搜索(NAS)已经成功地识别出在大规模图像分类任务上超越人工设计的神经网络架构。在本文中,我们研究了NAS在语义图像分割任务中的应用。现有的工作通常集中在搜索可重复的基本单元结构,而手动设计控制空间分辨率变化的外部网络结构。这种选择简化了搜索空间,但对于密集图像预测任务来说,网络级别的架构变化更加复杂。因此,我们提出了在基本单元结构之外搜索网络级别结构的方法,形成了一个分层的架构搜索空间。我们提出了一个包含许多流行设计的网络级别搜索空间,并开发了一种有效的基于梯度的架构搜索方法(在Cityscapes图像上使用了3个P100 GPU天的计算资源)。我们在具有挑战性的Cityscapes、PASCAL VOC 2012和ADE20K数据集上展示了所提出方法的有效性。我们的架构搜索方法Auto-DeepLab在语义图像分割任务中达到了最先进的性能,而且没有进行任何ImageNet预训练。

1.引言

        深度神经网络已经在各种人工智能任务中取得了成功,包括图像识别 [38,25]、语音识别 [27]、机器翻译 [73,81]等。尽管更好的优化器 [36]和更好的归一化技术 [32,80]在其中起到了重要作用,但很多进展都来自于神经网络架构的设计。在计算机视觉领域,这对于图像分类 [38,72,75,76,74,25,85,31,30]和密集图像预测 [16,51,7,64,56,55]都是成立的。最近,在AutoML和普及人工智能的精神下,设计自动化神经网络架构的兴趣日益增加,而不是过分依赖专家经验和知识。重要的是,在过去的一年中,神经架构搜索(NAS)已经成功地在大规模图像分类问题上识别出了超过人工设计的架构 [93,47,62]。

        图像分类是神经架构搜索(NAS)的一个很好的起点,因为它是最基础且研究最充分的高级识别任务。此外,存在着一些基准数据集(如CIFAR-10),其图像相对较小,从而导致计算量较小,训练速度较快。然而,图像分类不应该是NAS的终点,当前的成功显示了将其扩展到更具挑战性领域的潜力。在本文中,我们研究了用于语义图像分割的神经架构搜索,这是一个重要的计算机视觉任务,它为输入图像中的每个像素分配类似于“人”或“自行车”的标签。简单地从图像分类中移植想法并不足以满足语义分割的要求。在图像分类中,NAS通常将从低分辨率图像到高分辨率图像的迁移学习应用于NAS [93],而用于语义分割的最佳架构必须在高分辨率图像上运行。这表明需要:(1)更宽松和更一般的搜索空间,以捕捉较高分辨率图像带来的架构变化,以及(2)更高效的架构搜索技术,因为更高的分辨率需要更多的计算量。

        我们注意到现代的卷积神经网络设计 [25,85,31]通常遵循一个两级层次结构,其中外部网络级别控制空间分辨率的变化,内部单元级别控制具体的逐层计算。目前绝大多数关于NAS的研究 [93,47,62,59,49]也遵循这种两级层次设计,但只自动搜索内部单元级别,而手动设计外部网络级别。然而,这种有限的搜索空间对于密集图像预测问题是有问题的,因为它对空间分辨率的变化非常敏感。因此,在我们的工作中,我们提出了一个像格子一样的网络级别搜索空间,将最初在 [93]中提出的常用单元级别搜索空间进行扩展,形成了一个分层的架构搜索空间。我们的目标是共同学习可重复的单元结构和网络结构的良好组合,特别适用于语义图像分割任务。

        就架构搜索方法而言,强化学习 [92, 93]和进化算法 [63, 62]即使在低分辨率的CIFAR-10数据集上也往往需要大量计算资源,因此可能不适用于语义图像分割。我们从可微分的NAS [69, 49]的表达式中获得启发,并开发了一种连续的松弛方法来精确匹配分层架构搜索空间的离散架构。通过随机梯度下降进行分层架构搜索。当搜索结束时,我们使用贪婪算法解码出最佳的单元结构,使用维特比算法高效解码出最佳的网络结构。我们直接在来自Cityscapes [13]的321×321图像裁剪上进行架构搜索。这种搜索非常高效,只需要在一个P100 GPU上进行约3天的时间。

        我们在多个语义分割数据集上报告了实验结果,包括Cityscapes [13]、PASCAL VOC 2012 [15]和ADE20K [90]。在没有ImageNet [65]预训练的情况下,我们的最佳模型在Cityscapes测试集上的性能显著超过了FRRN-B [60] 8.6% 和GridNet [17] 10.9%,在同时利用Cityscapes上的粗略注释时,与其他ImageNet预训练的最先进模型 [82,88,4,11,6] 的性能相当。值得注意的是,我们的最佳模型(无预训练)在Multi Adds方面的性能与DeepLabv3+ [11](有预训练)相当,但速度快了2.23倍。此外,我们的轻量级模型的性能仅比DeepLabv3+ [11]低1.2%,而参数数量减少了76.7%,在Multi-Adds方面速度提高了4.65倍。最后,在PASCAL VOC 2012和ADE20K上,我们的最佳模型在使用更少的预训练数据的情况下超过了几个最先进模型 [90,44,82,88,83]。

总结起来,我们论文的贡献有四个方面:

  • 我们是首批将NAS扩展到稠密图像预测领域的尝试之一。
  • 我们提出了一个网络级别的架构搜索空间,对已有的单元级别搜索空间进行了增强和补充,并考虑了更具挑战性的网络级别和单元级别结构的联合搜索。
  • 我们开发了一个可微分、连续的表达式,以在3天的GPU训练时间内高效地进行两级层次结构的架构搜索。
  • 在没有ImageNet预训练的情况下,我们的模型明显优于FRRN-B和GridNet,并在Cityscapes上达到了与其他ImageNet预训练的最先进模型相当的性能。在PASCAL VOC 2012和ADE20K上,我们的最佳模型也超过了几个最先进的模型。

2.相关工作

图像语义分割:在全卷积神经网络(FCNs [68, 51])的完全卷积方式下,卷积神经网络[42]在几个语义分割基准测试上取得了显著的性能。在最先进的系统中,有两个关键组成部分:多尺度上下文模块和神经网络设计。已经知道上下文信息对于像素标记任务[26, 70, 37, 39, 16, 54, 14, 10]非常重要。因此,PSPNet [88]在几个网格尺度上执行空间金字塔池化[21, 41, 24](包括图像级池化[50]),而DeepLab [8, 9]则应用了几个具有不同采样率的并行空洞卷积[28, 20, 68, 57, 7]。另一方面,神经网络设计的改进显著推动了性能的提高,从AlexNet [38],VGG [72],Inception [32, 76, 74],ResNet [25]到更近期的架构,如Wide ResNet [86],ResNeXt [85],DenseNet [31]和Xception [12, 61]。除了将这些网络作为语义分割的主干网络之外,还可以采用编码器-解码器结构[64, 2, 55, 44, 60, 58, 33, 79, 18, 11, 87, 83],这种结构可以在保持详细的对象边界的同时有效地捕获长距离的上下文信息。然而,除了FRRN [60]和GridNet [17]之外,大多数模型都需要从ImageNet [65]预训练的检查点进行初始化,用于语义分割任务。具体而言,FRRN [60]采用了一个双流系统,其中一个流中携带全分辨率信息,另一个流中携带上下文信息。GridNet在类似的思想基础上构建了多个具有不同分辨率的流。在这项工作中,我们应用神经架构搜索来为语义分割专门设计网络主干。我们进一步展示了在没有ImageNet预训练的情况下的最先进性能,并在Cityscapes [13]上显著优于FRRN [60]和GridNet [17]。

神经架构搜索方法:旨在自动设计神经网络架构,从而减少人力和工作量。一些工作[22, 34, 92, 49]在语言任务中搜索RNN单元,而更多的工作则在图像分类中搜索良好的CNN架构。一些论文使用强化学习(或者是策略梯度[92, 93, 5, 77]或者是Q-learning[3, 89])来训练一个循环神经网络,该网络表示生成CNN架构的策略的序列。与RL相反,还可以使用进化算法(EA),通过对迄今为止找到的最佳架构进行变异来“进化”架构[63, 84, 53, 48, 62]。然而,这些RL和EA方法在搜索过程中往往需要大量的计算资源,通常需要数千个GPU天。PNAS[47]提出了一种渐进搜索策略,大大降低了搜索成本,同时保持了搜索架构的质量。NAO[52]将架构嵌入到潜空间中,并在解码之前进行优化。此外,一些工作[59, 49, 1]利用样本模型之间的架构共享,而不是单独对每个模型进行训练,从而进一步降低了搜索成本。我们的工作遵循可微分NAS的形式化[69, 49],并将其扩展到更一般的分层设置中。

神经架构搜索空间:之前的论文,比如[92, 63],尝试直接构建整个网络。然而,更近期的论文[93, 47, 62, 59, 49]已经转向搜索可重复的单元结构,同时通过手动固定外部网络级别的结构。这个策略最早在[93]中提出,可能受到现代CNN常用的两级层次结构的启发。我们的工作仍然使用这种单元级别的搜索空间,以保持与之前的工作的一致性。然而,我们的贡献之一是提出了一个新的通用的网络级别搜索空间,因为我们希望在这两级层次结构上进行联合搜索。我们的网络级别搜索空间与[67]有相似的外观,但重要的区别在于[67]保留了整个“结构”,并没有改变架构的意图,而我们为每个连接关联了一个显式的权重,并专注于解码一个离散的结构。此外,[67]在将人脸图像分割成3个类别[35]方面进行了评估,而我们的模型在Cityscapes[13],PASCAL VOC 2012[15]和ADE20K[90]等大规模分割数据集上进行了评估。与我们最相似的工作是[6],它也研究了用于语义图像分割的NAS。然而,[6]专注于使用随机搜索来搜索较小的Atrous Spatial Pyramid Pooling(ASPP)模块,而我们专注于使用更先进、更高效的搜索方法来搜索更基础的网络主干架构。

3.架构搜索空间

        本节描述了我们的两级层次化架构搜索空间。对于内部单元级别(第3.1节),我们重新使用了[93,47,62,49]中采用的方法,以保持与之前的工作的一致性。对于外部网络级别(第3.2节),我们根据对许多流行设计的观察和总结,提出了一个新颖的搜索空间。

3.1.单元级别搜索空间

        我们将一个单元定义为一个小的全卷积模块,通常重复多次以构成整个神经网络。更具体地说,一个单元是一个由B个块组成的有向无环图。每个块是一个两分支结构,将两个输入张量映射到一个输出张量。在单元l中的第i个块可以用一个5元组(I1,I2,O1,O2,C)来指定,其中I1,I2 ∈ Il i Il i是选择应用于相应输入张量的层类型,C ∈ C是用来将两个分支的个体输出组合成该块的输出张量Hil的方法。单元的输出张量Hl只是按照顺序连接块的输出张量H1l,...,HBl。可能的输入张量集合Iil由前一个单元的输出Hl-1,前两个单元的输出Hl-2以及当前单元中前面的块的输出{H1l,...,Hil}组成。因此,随着在单元中增加更多的块,下一个块有更多的选择作为潜在的输入来源。可能的层类型集合O包括以下8种在现代CNN中常见的操作符:

 于可能的组合操作符C的集合,我们简单地让逐元素相加成为唯一的选择。

3.2.网络级别搜索空间

        在由[93]开创的图像分类NAS框架中,一旦找到了一个单元结构,整个网络就会使用预定义的模式进行构建。因此,网络级别并不是架构搜索的一部分,因此其搜索空间从未被提出或设计过。这个预定义的模式简单明了:一些“正常单元”(保持特征张量的空间分辨率)被“缩减单元”(将空间分辨率减少一半并将滤波器数量乘以2)等距离地分隔开来。这种保持下采样策略在图像分类案例中是合理的,但在密集图像预测中,保持高空间分辨率也很重要,因此网络级别的变化更多[9,56,55]。在密集图像预测的各种网络结构中,我们注意到有两个一致的原则:•下一层的空间分辨率要么是上一层的两倍,要么是一半,要么保持不变。•最小的空间分辨率被下采样了32倍。

        在遵循这些常见做法的基础上,我们提出了以下网络级别的搜索空间。网络的开始是一个两层的“干线”结构,每一层将空间分辨率降低了2倍。之后,共有L层具有未知的空间分辨率,最大的分辨率被下采样了4倍,最小的分辨率被下采样了32倍。由于每一层的空间分辨率最多相差2倍,因此干线之后的第一层只能是下采样4倍或8倍。我们在图1中展示了我们的网络级别搜索空间。我们的目标是在这个L层的网格中找到一条好的路径。在图2中,我们展示了我们的搜索空间足够一般,可以涵盖许多流行的设计。在未来,我们计划进一步放宽这个搜索空间,包括U-net架构[64,45,71],其中第l层除了接收l-1层的输入外,还可以接收来自l之前的另一层的输入。我们再次强调,我们的工作在细胞级别的架构之外还搜索了网络级别的架构。因此,我们的搜索空间比之前的工作更具挑战性和通用性。

 图1:左侧:我们的网络级别搜索空间,其中L = 12。灰色节点表示固定的“干线”层,沿着蓝色节点的路径表示候选的网络级别架构。右侧:在搜索过程中,每个单元都是一个密集连接的结构,如4.1.1节所述。每个黄色箭头都与一组值αj→i相关联。连接层之后的三个箭头分别与βls2ls2→s,βsl→s,β2ls→s相关联,如4.1.2节所述。最好以彩色查看。

(a) DeepLabv3使用的网络级架构。

(b) Conv-Deconv使用的网络级架构。

(c) Stacked Hourglass使用的网络级架构。

图2:我们的网络级别搜索空间是通用的,并包括各种现有设计。

4.方法

4.1.架构的连续松弛

4.1.1.单元架构

 

4.1.2.网络架构

4.2.优化

4.3.离散架构解码

5.实验结果

5.1.架构搜索实现细节

5.2.语义分割结果

5.2.1.Cityscapes数据集

5.2.2.PASCAL VOC 2012数据集

5.2.3.ADE20K数据集

6.结论

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/760908.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一些有趣的Git学习资料

Git 可以说是程序员必备的技能之一了,基于 Github/Gitlab 以及相关工作流的使用,Git 已经融入到了我们的日常工作中,这里分享一些有趣的 Git 学习资料,希望可以帮助大家更好的理解 Git。 1. Welcome to Learn Git Branching 以动…

第二周笔记

public class Calc { //加法, 把和作为一个结果返回出去, 返回给调用者 public int add3(int num1, int num2){ if(num1 0 && num2 0){ return 0; //隐式包含一个if-else结构 } //使用return 关键字 return nu…

【Linux操作系统】多线程抢票逻辑——学习互斥量(锁)函数接口

文章目录 1.进程线程间的互斥相关背景概念2.联系代码学习同步互斥问题3.互斥量(锁)的函数接口3.1初始化互斥量3.2销毁互斥量3.3互斥量加锁和解锁3.4改进多线程抢票代码 1.进程线程间的互斥相关背景概念 临界资源:多线程执行流共享的资源就叫…

beego验证码(配置到redis存储)

我们定义一个全局变量用于存储redis连接 RedisDb *redis.Client 然后连接 redis 这一块我们将redis信息写到app.conf文件里了: redisDb 1 redisAddr "127.0.0.1:6379" redisPwd "" package initializeimport ("beego_learning/global&q…

【Java基础教程】(十四)面向对象篇 · 第八讲:多态性详解——向上及向下转型、关键字 final与 instanceof的作用~

Java基础教程之面向对象 第八讲 本节学习目标1️⃣ final 关键字1.1 final类1.2 final方法1.3 final属性 2️⃣ 多态性2.1 向上转型2.2 向下转型2.3 关键字 instanceof 🌾 总结 本节学习目标 掌握final 关键字的主要作用及使用;掌握对象多态性的概念以…

【CSDN新星计划】初阶牛C/C++赛道——顺序程序设计(C语句)

目录 3.1 C语句的作用和分类 🍉(1)控制语句 🍉(2)函数调用语句 🍉(3)表达式语句 🍉(4)空语句 🍉(5&#…

【C++进阶之路】vector的基本使用和模拟实现

前言 作为STL的容器之一,vector的名字通常令人疑惑?在字面上,我们通常会翻译成向量,但感觉又解释不通,总觉得应该叫dynamic array翻译成动态数组/顺序表,更容易理解?那为啥呢? 我从…

【Java】微服务项目的部署

微服务项目的部署 准备Centos安装 Docker镜像加速检查加速器是否生效 下载docker-compose方法1 curl方法2 pip方法3 直接下载released 用docker-compose部署中间件导入项目安装jdk maven git设置idea内存减小jar启动占用内存增加idea可使用内存 本文参考 https://gitee.com/…

音乐怎么转换成wav格式?分享这五个方法给大家!

在音频编辑和处理过程中,将音乐文件转换为WAV格式是一种常见需求。WAV格式以其无损音质和广泛的兼容性而受到许多人的喜爱。下面介绍了五种常用的方法,帮助您将音乐文件转换为WAV格式,其中方法一使用记灵在线工具。 方法一:记灵在…

非常规自增自减

非常规自增自减 目录 一. 概述二. 例题 一. 概述 在C语言的单目操作符中有(自增)和–(自减)这两个运算符。假设有变量i,我想让变量i加上1,那么我们会写成ii1这样的形式。…

自旋锁与开关中断临界区的区别

自旋锁和开关中断临界区都是用于保护共享资源的机制,但它们的实现方式和使用场景有所不同。 自旋锁主要是用于多核CPU上的并发编程中,它通过不断地检查锁的状态来等待锁的释放,从而避免了线程的阻塞。当一个线程需要访问共享资源时&#xff…

VTK 三维模型 体绘制 关于环境光、漫反射、镜面反射

光源: 1):环境光:环境光是一种低强度的光,由光线经过周围环境表面多次反射后形成的,利用环境光可以描述一块区域的亮度,通常在场 景中,环境光的颜色是一个常量. 2):太阳光:即定向光源,特点是从无穷远出发射光线,光线是平行的,光线强度不会随着距离衰减. 3):点光源:在有限空间…

maven安装和换源

1. 安装(17条消息) maven历史版本下载和安装_beiback的博客-CSDN博客 安装 maven历史版本仓库 下载 Index of /dist/maven/maven-3 (apache.org)https://archive.apache.org/dist/maven/maven-3/ 选择对应版本-binaries/-zip 解压即可使用 2.换源 (17条消息) 手把手教你更改…

【读书笔记】从实模式到保护模式

计算机语言 x86汇编语言:从实模式到保护模式(操作系统引导课) 原书作者李忠 用电表示数据 寄存器的作用:具有记忆功能的器件。锁存可以通过下面的开关控制,平时开关为空,按下开关之后,将输入锁…

PLEX如何搭建个人局域网的视频网站

Plex是一款功能非常强大的影音媒体管理系统,最大的优势是多平台支持和界面优美,几乎可以在所有的平台上安装plex服务器和客户端,让你可以随时随地享受存储在家中的电影、照片、音乐,并且可以实现观看记录无缝衔接,手机…

VScode——NPM脚本窗口找不到

一、问题描述(NPM终端在任务栏左侧找不到) VScode(Visual Studio Code)版本:1.79.2 二、解决办法 第一步:通过设置/用户设置/扩展/MPM更改NPM默认配置,如下图所示: 第二步&#xff…

[java安全]CommonsCollections6

文章目录 【java安全】CommonsCollections6**测试环境**前言分析TiedMapEntry注意点一注意点二POC调用栈 【java安全】CommonsCollections6 测试环境 3.1-3.2.1,jdk1.7,1.8 前言 之前我们分析了CommonsCollections1 LazyMap利用链,但是在java 8u71以…

2023 年中回顾:珍惜当下,锻炼身体

文章大纲 过去几十年的经验:人类的悲喜并不相同马太效应破圈:健康的身体写博客这件事:价值导向参考文献 距离上次阶段性回顾仅仅过去半年,感觉整个IT 行业天翻地覆慨而慷了。 时光荏苒,我自己也在芯片领域深耕了365天&…

swagger不可用

swagger不可用 问题描述问题处理测试环境外网域名测试环境内网域名思考 总结 问题描述 上周swagger还没啥问题,这周一测试突然和我说,测试环境的swagger都用不了了,然后开始找原因 问题处理 测试环境外网域名 一直跳这个弹窗,百度…

学习AJAX

AJAX 🚀 HTTP请求报文响应报文 🚄 express框架🚬 express基本使用 🚒 原生AJAX🚬 GET.HTML🚬 POST.HTML🚬 JSON.HTML🚬 nodemon工具可以帮助重启服务🚬 IE缓存问题&#…