赞
踩
由多层组成,用于学习多层次抽象的数据特征,可以被视作一种表征学习,是机器学习的一个分支。
图形处理器(Graphics processing unit, GPU)
人工神经网络(Artificial neural network,ANN)
卷积神经网络(Convolutional Neural Networks, CNN)
1.通用深度神经网络模型
1989年AT&T贝尔实验室的研究员LeCun通过反向传播算法成功地训练了卷积神经网络,这项工作代表了20世纪80年代神经网络的研究成果。
1998年LeCun等基于前人的工作提出了LeNet,由2个卷积层和3个全连接层组成,因此也被称为LeNet‑5,其结构如图所示。
生成模型可以学习数据中隐含的特征并对数据分布进行建模,它的应用非常广泛,可以对图像、文本、语音等不同数据建模真实的分布,然后基于这一分布通过采样生成新的数据。在深度学习之前就已经有许多生成模型被提出,但由于生成模型往往难以建模,因此科研人员遇到了许多挑战。
变分自编码器(Variational autoencoder, VAE)
是一种当前主流的基于深度学习技术的生成模型,它是对标准自编码器的一种变形。自编码器将真实样本的高级特征通过编码器映射到低级特征,被称为隐向量(或潜向量),然后又通过解码器生成相同样本的高级特征。
生成对抗网络(Generative adversarial net, GAN)
是另一种十分常见的基于深度学习技术的生成模型,它包括2个同时进行的组件:生成器和判别器,其结构如图所示。生成器从隐向量生成图像,判别器对真伪图像进行分类,二者相互对抗,互相促进。
变分自编码器和生成对抗网络近年来有了显著的发展。在计算机视觉领域中,变分自编码器和生成对抗网络已经被广泛应用于图像翻译、超分辨率、目标检测、视频生成和图像分割等领域,具有广阔的研究价值和应用前景。
2 轻量化网络
随着网络层数的加深,各种深度网络模型的性能变得越来越好,随之而来的问题是模型巨大的参数量和缓慢的推理速度,因此轻量化网络的需求变得愈加强烈。轻量化网络的设计核心是在尽可能保证模型精度的前提下,降低模型的计算复杂度和空间复杂度,从而使得深度神经网络可以被部署在计算性能和存储空间有限的嵌入式边缘设备上,实现从学术界到工业界的跃迁。
在分布式训练中,小模型使得服务器之间通信产生的带宽负担也相对较小。目前学术界和工业界设计轻量化的深度网络模型主要有4种方法:
人工设计的轻量化神经网络、
基于神经网络架构搜索(Neural architecture search,NAS)的自动设计神经网络技术、
卷积神经网络压缩
和基于AutoML的自动模型压缩。
3 面向特定任务的深度网络模型
计算机视觉任务众多,深度学习最开始在图像分类实现突破,当前深度学习几乎深入到了计算机视觉的各个领域。本节将针对目标检测、图像分割、图像超分辨率和神经架构搜索等其他计算机视觉任务简要总结深度学习方法。
目标检测任务作为计算机视觉的基本任务之一,包含物体的分类、定位和检测。
近年来随着深度学习技术的发展,目标检测算法已经从基于手工特征的HOG、SIFT及LBP等传统算法转向了基于深度神经网络的机器学习技术。
自2014年Girshick等提出了R‑CNN模型以来,目标检测就成为了计算机视觉最受人关注的领域之一。在R‑CNN之后,
Girshick团队相继提出了Fast R‑CNN、Faster R‑CNN等一系列模型,这些模型均将目标检测问题归结为如何提出可能包含目标的候选区域和如何对这些区域分类两个阶段,因此这类模型也被称作两阶段模型。
受当时性能最好的图像分类网络,如AlexNet和VGG等的影响,R‑CNN系列模型的网络结构由2个子网组成:第1个子网用普通分类网络的卷积层提取共享特征;第2个子网的全连接层进行感兴趣区域(Region of interest,RoI)的预测和回归,中间用一个RoI池化层连接。
如何准确识别不同尺寸的物体是目标检测任务的难点之一。
1.单一特征图方法即为SPPnet、Fast R‑CNN和Faster R‑CNN使用的方法,即在最后一层的特征图上进行预测。尽管速度较快,但包含的语义信息很少,不能准确地预测目标的位置。
2.SSD采用的多尺度融合方法,从网络的不同层抽取不同尺度的特征分别进行预测,这种方法不需要额外的计算,但不能很好地提取小目标敏感的浅层高分辨率特征。
3.特征金字塔网络(Feature Pyramid network, FPN)
借鉴了ResNet跳接的思想,结合了层间特征融合与多分辨率预测。对于基于区域的目标检测器,该特征金字塔结构的特征提取效果优于单尺度的特征提取效果。
4.YOLO是单阶段模型的代表,它没有提出候选区域的过程,而是直接将提出候选区域和分类统一为一个边界框回归的问题,将整张图片作为网络的输入,在输出层对边界框位置信息和类别进行回归,实现了端到端的学习过程。
它首先将图片缩放并划分为等分的网格,然后在每张图片上运行单独的卷积网络,最后用非极大值抑制得到最后的预测框。损失函数被分为3部分:坐标误差、物体误差和类别误差。为了平衡类别不均衡和大小物体等带来的影响,损失函数中添加了权重并将长宽取根号。
**
**
图像分割指图像语义分割任务,其要求将整张图片的所有像素分类为预先定义的多个类别之一。由于是像素级的稠密分类任务,相比图像分类和目标检测更加困难,是图像处理和计算机视觉中的一个重要课题,在场景理解、医学图像分析、机器人感知及视频监控等领域有着广泛的应用。
U‑Net和全卷积网络(Fully convolutional network, FCN)
都是在2015年提出的网络,启发了后来的很多图像分割和目标检测的工作。
Mask R‑CNN是R‑CNN团队的又一次探索,他们在之前Faster R‑CNN的基础上,将其扩展到更精细的像素级别的分类,从而从目标检测领域拓展到图像分割领域。通过使用RoIAlign代替RoIPooling,得到更好的定位效果,并在Faster R‑CNN上添加了二进制的Mask,表征像素是否在目标范围内完成图像分割的任务。
2016年的DeepLab又提出了一种空洞卷积,避免了池化层带来的信息损失,并使用全连接的条件随机场(Conditional random field, CRF)优化分割精度。
2017年剑桥大学提出的SegNet的主要动机是针对道路和室内场景理解,设计一个像素级别的图像分割网络,同时保证内存和计算时间方面上的高效。SegNet采用“编码器‑解码器”的全卷积结构,编码网络采用VGG16的卷积层,解码器从相应的编码器获取最大池化索引后上采样,产生稀疏特征映射。
2017年香港中文大学提出了PSPNet,该网络采用金字塔池化模块,用大小为1××1、2××2、3××3和6××6的4层金字塔分别提取不同尺度的信息,然后通过双线性插值恢复长宽,把不同层的特征连结起来得到全局信息,这种结构比全局池化更具有代表性,融合了多尺度的信息。
DeepLabv2在DeepLabv1和PSPNet的基础上用ResNet101代替VGG16,并提出了一种带有空洞卷积的空间金字塔池化模块(Atrous spatial Pyramid pooling, ASPP),用多尺度的方法以不同的速率并行地提取特征图信息.
DeepLabv3改进了ASPP模块,应用BN层,并将DeepLabv2中Rate=24的3××3卷积模块替换为1××1卷积模块和全局池化模块,克服了像素点相对距离增大时有效权重减少的问题。
DeepLabv3+
将之前的骨干网络ResNet101替换为Xception,并结合深度可分离卷积的思想提出了空洞深度可分离卷积,在减少参数量的同时进一步增大感受野。和DeepLabv3一样,DeepLabv3+也没有使用DenseCRF后处理模块。
2019年旷视科技提出了一种名为DFANet的高效CNN架构,通过子网和子级联的方式聚合多尺度特征,极大地减少了参数量,其结构如图38所示。DFANet采用“编码器‑解码器”结构,解码器的骨干网络采用3个改良的轻量级Xception融合结构,编码器则是一个高效的上采样模块,用于融合高层和底层的语义信息。
2020年笔者提出一种轻量级网络LRNNet。其中分解卷积块FCB利用1××3和3××1的空间分解卷积处理短距离特征,并利用空洞深度分离卷积处理远距离特征,实现了参数量和计算量更少、深度更快、准确率更高的特征提取;高效的简化Non‑Local模块LRN利用区域主奇异向量作为Non‑Local模块的Key和Value,在降低Non‑Local模块的计算量和内存占用的同时,保持其处理远距离关联的效果。
**
**
超分辨率技术是计算机视觉领域提高图像和视频分辨率的重要处理技术之一,研究如何将低分辨率的图像或图像序列恢复出具有更多细节信息的高分辨率图像或图像序列,在高清电视、监控视频、医学成像、遥感卫星成像、显微成像及老旧图像视频修复等领域有着重要的应用价值。传统上超分辨率属于底层视觉领域,但本文叙述顺序从图像分类、目标检测、图像分割到超分辨率,输出逐级复杂,依次为图像标签、目标位置和类别标签、与输入同大小的分割图、比输入图像大的高分辨率图像等。与前几个任务不同,超分辨率需要生成和恢复输入中不存在的信息。
超分辨率的概念最早出现在光学领域,1952年Francia第一次提出了用于提高光学分辨率的超分辨率的概念。
1964年前后,Harris和Goodman分别提出了后来称为Harris‑Goodman频谱外推的方法,这被认为是最早的图像复原方法,但这种技术只能在一些理想情况下进行仿真,实际效果不太理想,因此并未得到推广。
1984年Tsai等首次利用单幅低分辨率图像的频域信息重建出高分辨率图像后,超分辨率重建技术才得到广泛的认可和应用,如今它已经成为图像增强和计算机视觉领域中最重要的研究方向之一。
传统的超分辨率方法包括基于预测、基于边缘、基于统计、基于块和基于稀疏表示等方法。根据输入输出的不同,超分辨率问题可以分为基于重建的超分辨率问题、视频超分辨率问题和单幅图像超分辨率问题。根据是否依赖训练样本,超分辨率问题则又可以分为增强边缘的超分辨率问题(无训练样本) 和基于学习的超分辨率问题 (有训练样本)。
最简单、应用最广泛的经典单幅图像超分辨率方法是插值法,包括Lanczos、Bicubic、Bilinear和Nearest等,这种方法操作简单、实施性好,但并不能恢复出清晰的边缘和细节信息,因此很多其他用于增强细节的传统算法相继被提出。
其次是基于块的方法,也被称为基于邻域嵌入的方法。这种方法使用流形学习中的局部线性嵌入,假设高、低维度中图像块的线性关系可以保持,用低分辨率图像的特征(梯度等)重构高分辨率图像。
其次是提出了基于稀疏表示的方法,也被成为字典学习。这种方法将低分辨率图像和高分辨率图像表示为字典DD与原子αα,高分辨率图像可表示为x=Dhighx=Dhigh,低分辨率图像为y=Dlowy=Dlow,假设不同分辨率的同一幅图像的原子αα,在训练完字典DhighDhigh和DlowDlow后,用低分辨率的图像得到αα,随后得到重构的高清图像。
基于学习的超分辨率技术如图所示
经典的超分辨率方法要求研究者具备深厚的相关领域先验知识。随着深度学习技术的兴起,用神经网络方法重建的图像质量超过了传统方法,速度也更快,这使得大批学者转向对深度学习技术在超分辨率领域的应用研究。
香港中文大学Dong等于2015年首次将卷积神经网络用于单幅图像超分辨率重建,提出了SRCNN,该网络仅仅用了3个卷积层,利用传统稀疏编码,依次进行图像块提取、非线性映射和图像重建,实现了从低分辨率图像到高分辨率图像的端到端映射,流程图如图44所示。SRCNN激活函数采用ReLU,损失函数采用均方误差。
2016年Dong团队在之前SRCNN的基础上提出了更快、实时性更好的FSRCNN,在原始网络的最后加入反卷积层放大尺寸,摒弃了Bicubic插值方法,使用了更多的映射层和更小的卷积核,改变了特征维度,并共享其中的映射层,FSRCNN改进示意图如图所示。训练时FSRCNN只需要微调最后的反卷积层,因此训练速度很快。FSRCNN激活函数采用PReLU,损失函数仍采用均方误差。
2016年提出的ESPCN在SRCNN基础上进一步提高了速度,其结构如图46所示。该工作提出了一种亚像素卷积层,可以直接在低分辨率图像上提取特征,从而避免在高分辨率图像上进行卷积,降低了计算复杂度。ESPCN激活函数采用tanh,损失函数仍然采用均方误差。
SRCNN的网络输入是经过上采样的低分辨率图像,计算复杂度很高,因此FSRCNN和ESPCN都选择在网络末端上采样以降低计算复杂度。但如果在上采样后没有足够深的网络提取特征,图像信息就会损失。为了更好地使用更深的网络,很多工作引入了残差网络。
2016年首尔国立大学Kim等提出的VDSR是第一个引入全局残差的模型,其结构如图47所示。Kim等指出,高低分辨率图像携带的低频信息很相近,因此事实上网络只需要学习高频信息之间的残差即可。VSDR思想启发了很多之后利用残差结构的工作。
CARN是NTIRE2018超分辨率挑战赛的冠军方案,该方案使用全局和局部级联,将ResNet的残差块替换成级联模块和1×11×1卷积模块组合,并提出了一种残差‑E模块,可以提升CARN的效率。
EDVR是商汤科技2019年提出的一种用于视频修复的通用框架,在NITRE 2019 的4个赛道中均以较大的优势获得了冠军。视频修复任务包括超分辨率、去噪声等任务,早期的研究者们简单地将视频修复视作图像修复的延伸,帧间冗余的时间信息并没能被充分利用。EDVR通过增强的可变形卷积网络实现视频的修复和增强,适用于各种视频修复任务,如超分辨率、去模糊等任务。EDVR框架示意图如图50所示。
EDVR提出了PCD(Pyramid, cascading and deformable)对齐模块和TSA(Temporal and spatial attention)融合模块,其结构如图51所示。
PCD模块受TDAN[97]的启发,用一种金字塔结构从低尺度到高尺度使用可变形卷积将每个相邻帧与参考帧对齐。
TSA模块则用于在多个对齐的特征层之间融合信息,通过计算每个相邻帧与参考帧特征之间的元素相关性引入时间注意力机制,相关系数代表每个位置上相邻帧特征信息量的大小。在融合时间特征后进一步应用空间注意力机制,从而更有效地利用跨通道空间信息。
三维卷积是一种常见的利用视频时空间信息的方法,但这种方法往往复杂度较高,限制了模型的深度。2019年提出的FSTRN通过使用一种快速时空间残差模块将三维卷积用于视频超分辨率任务,将每个三维滤波器分解为2个维数更低的3位滤波器乘积,从而降低复杂度,实现更深的网络和更好的性能。此外,FSTRN还提出了一种跨空间残差学习方法,直接连接低分辨率空间和高分辨率空间,减轻了特征融合和上采样部分的计算负担。FSTRN结构如图52所示。
随着深度学习技术的兴起,近20年来超分辨率领域发展迅速,出现了很多具有优异性能的模型,但距离实际应用还有一定的距离。图像配准技术对于多帧图像超分辨率的重建效果至关重要,目前还没有成熟的解决方案。另一个难点则是大量未知的密集计算限制了视频超分辨率重建的计算效率,难以达到实时性的要求。超分辨率算法的鲁棒性和可迁移性仍然是下阶段的研究热点,现有的评价标准,如均方误差、峰值噪声比、结构相似性等还不能客观地衡量重建效果,有时甚至会出现和人眼视觉相违背的情况。
**
**
深度学习技术在图像分类、语音识别及机器翻译等诸多领域上取得了举世瞩目的成功,可以自动地学习数据信息,让研究人员摆脱特征工程,这离不开GoogLeNet、ResNet等经典的深度神经网络模型。然而一个具有优异性能的网络结构往往需要花费研究人员大量的时间资金投入,同时需要具备扎实的专业知识和丰富的经验。因此人们开始研究让机器代替人类,根据数据集和算法自动设计网络结构。
神经架构搜索技术(Neural architecture search,NAS)
设计的模型如今已经在很多任务上取得了超过人工设计深度模型的性能,如图像分割领域的Auto‑DeepLab[99],目标检测领域的NAS‑FPN[100]。神经架构搜索技术是机器学习自动化(Automated machine learning,AutoML)的子领域,代表了机器学习未来发展的方向。神经架构搜索技术的流程如图53所示,首先从一个搜索空间中通过某种策略搜索候选网络架构,然后对其精度、速度等指标进行评估,通过迭代不断优化直到找到最优的网络架构。
搜索空间内定义了优化问题的变量,如网络架构参数和超参数,这些变量决定了模型的性能。常见的网络架构有链式结构和分支结构等,每一个节点的网络架构参数包括卷积层、池化层和激活函数等,超参数包括卷积的尺寸、步长、加法或连结等。典型的网络架构如图54所示。
搜索策略被用于探索神经架构空间,常见的策略包括随机搜索、贝叶斯优化、遗传算法、强化学习和梯度算法等,其中强化学习、遗传算法及梯度算法是目前主流的搜索策略。在性能评估时,由于训练和验证的时间成本较高,因此常常需要采用评估策略降低评估成本,如减少迭代次数、在训练集的子集上训练、减少卷积核数量等,但这些策略往往会导致一些偏差,可能会对最终的优劣次序产生影响。更高级的策略包括权重共享、通过迭代时的表现推断最终性能以及通过模块预测网络性能等方法。
DARTS流程如图55所示。其中:图(a)表示边上的初始未知操作;图(b)在每条边上放置候选操作的组合,连续松弛搜索空间,不断放宽搜索条件;图(c)通过解决一个双层规划问题联合优化混合概率与网络权重;图(d)用学到的混合概率求得最终的网络架构。DARTS是一种简单的NAS方法,适用于CNN和RNN。
基于DARTS,一系列改进算法被相继提出。在DARTS中,搜索在一个有8个单元的网络上进行,搜索出来的架构通过堆叠在一个具有20个单元的网络上被评估,但深度网络和浅层网络的结构往往不同。例如,在代理数据集(如CIFAR‑10数据集)上搜索出来的网络架构可能在目标数据集(如ImageNet数据集)上表现不理想。2019年华为诺亚方舟实验室提出P‑DARTS,针对这一问题(被称为Depth Gap)提出了一种渐进式搜索的方法。
2019年MIT提出ProxylessNAS,针对DARTS只能在小型代理数据集上搜索而在大型数据集上则会出现显存爆炸的问题提出了无代理神经架构搜索技术,在训练时二值化路径,用和DARTS双层规划类似的思想联合训练权重参数和架构参数,从而达到降低显存的目的,并首次提出针对不同的硬件平台搜索满足特定时延的神经网络架构方法。
ProxylessNAS不再采用搜索单元然后堆叠达到更深网络的方法,而是选择主干网络,如MobileNet、ShuffleNet等。ProxylessNAS在CIFAR‑10数据集上以仅570万个的参数量达到2.08%的测试误差。ProxylessNAS示意图如图57所示。
当迭代次数过大后,DARTS设计出的网络架构会包含很多跳接结构,使得性能变得很差,称为DARTS的坍塌。2020年诺亚方舟实验室提出的 DARTS+ 通过引入早停机制,即当一个正常单元出现2个或2个以上的跳接结构时就停止搜索,缩短了DARTS搜索的时间,极大地提高了DARTS的性能,其示意图如图58所示。
2020年商汤研究院提出的随机神经架构搜索SNAS也是一种可微的端到端方法,但与DARTS相比,SNAS将NAS重新表述为在一个单元中搜索空间的联合分布参数优化问题,直接优化损失函数,偏差更小。在同一轮反向传播中SNAS同时训练操作参数和架构参数,并提出了一种新的搜索梯度。相比基于强化学习的神经架构搜索技术,SNAS优化相同的目标函数,但更高效地只使用训练损失作为奖励。
PC‑DARTS是华为诺亚方舟实验室2020年提出的NAS技术,在P‑DARTS的基础上设计了部分通道连接机制,每次只有一部分通道进行操作搜索,这节省了训练需要的显存,减少了计算量,并采用边正则化降低由于操作搜索不全造成的不确定性。PC‑DARTS在CIFAR‑10数据集[108]上用0.1个GPU日达到了2.57%的测试误差,参数量仅有360万个;在ImageNet数据集上用3.8个GPU日以530万个的参数量达到了7.3%的top‑5错误率,取得了更快更好的搜索效果。PC‑DARTS结构如图59所示。
当前的神经架构搜索技术大多被用于图像分类任务,这促使许多研究人员试图设计出更好的人工网络。但一方面由于搜索空间的定义被局限在现有的网络结构设计经验中,使得NAS设计出的网络很难与人工网络有本质上的区别。另一方面,NAS技术设计的网络可解释性很差,由于研究人员采用的数据增强、搜索空间、训练方法及正则化策略等方法常常不同,这使得NAS设计出的架构很难被复现,不同网络架构的性能也难以比较。由此可见,神经架构搜索领域仍然存在很多挑战,如何解决这些问题将会是下一阶段的热门研究方向之一。
**
**
深度学习技术近年来在计算机视觉中的目标检测、图像分割、超分辨率和模型压缩等任务上都取得了卓越的成绩,充分证明了它的价值和潜力。然而深度学习领域仍然有不少难题无法解决,如对数据的依赖性强、模型难以在不同领域之间直接迁移、深度学习模型的可解释性不强等,如何攻克这些难题将是下一阶段的发展方向。为了追求极致的性能,很多科技巨头投入了巨大的人力财力搭建巨型模型,如OpenAI发布的拥有1 750亿个参数的GPT‑3,谷歌发布的拥有1.6万亿个参数的Switch Transformer,快手发布的拥有1.9万亿个参数的推荐精排模型,这些模型需要大量的训练时间和计算资源,如何设计计算硬件、系统和算法来加速训练是一项新的挑战。深度学习技术严重依赖大规模带标签的数据集,因此无监督学习技术、自监督技术,例如表示学习、预训练模型等,仍然是重要的研究方向。同时深度学习技术带来的安全隐患也引起了重视,如何在保护用户隐私的前提下优化分布式训练是另一个具有潜力的研究方向。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。