首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >精品连载 | “深度学习与计算机视觉”学习笔记——发展篇

精品连载 | “深度学习与计算机视觉”学习笔记——发展篇

作者头像
灯塔大数据
发布2020-07-16 17:15:35
发布2020-07-16 17:15:35
7250
举报
文章被收录于专栏:灯塔大数据灯塔大数据

前言

上一篇简要介绍了CNN目前在

对象检测、识别、分类、分割等

应用上的发展

当然,

未来深度学习与计算机视觉的结合点还有很多。

一、

图像生成

首先是图像生成,前面所讲的图像风格迁移也算一种图像生成,以往的模型都是输入图片,提取特征,输出类别等,而这类模型是输入(从卷积层得到的中间)特征,输出对于这种特征的图片。因此,广义上其是在无需任何图像的输入场景下,从零生成与目标相似而又不同的图像。

虽然前述深度神经网络很神奇,但容易被愚弄。比如有研究发现,如图1所示,对一张图像强加一个噪音图像,视觉上不会改变原始图像,但最终分类错误,这种攻击被称为深度神经网络的对抗攻击,其最初由Szegedy等人提出,随后在2013年,由Goodfellow等人进一步研究发现。

图 1

另外,对于很多现实场景下,难以获取监督学习所用的样本,而且人工标注成本较高的问题,通过该类算法可以有望生成优质的新数据,挖掘原始数据的潜在结构特征,实现数据集增强,包括样本增强和特征增强。当然,该类算法能进一步扩展无监督学习算法,比如VAE(Variational Auto-Encoders)这类的自编码学习、GAN(Generative Adversarial Networks)这类的对抗生成网络。如图2所示,其中VAE自编码学习实质是在编码阶段学习原图分布的均值、标准差,并转换成一个低维向量,然后解码阶段就基于低维向量反映是分布重采样生成新图。而现在更主流的GAN,另外增加一个判别器,更准确地向生成模型反馈其学得的分布模式是否靠谱,更具无监督表征学习的潜力。

图 2

GAN框架是由蒙特利尔大学的伊恩·古德费洛在2014年《Generative Adversarial Networks》论文中提出的,他基于多层感知机构造一个生成器和一个判别器,如图3所示,生成器负责将基于先验分布随机采样的输入尽可能映射得像所希望的分布,即这里所谓的真实数据分布;判别器负责度量生成的数据是否属于真实的分布,判别器实质上是一个二分类模型,尽可能分辨开真实样本和生成器生成的样本,输出层通过sigmoid函数输出概率,越接近1表示越相信生成图片是真实的。两者交替训练,就像美术老师教学生画画,一开始学生随意画给老师看,而老师看过更多好看的画作,就分析学生画得好不好;学生根据指导不断精进技艺,老师也得看更多名家的画作,才能对学生指出更有效的指点;这样,学生在进步,老师也在进步,相互成就,直到学生的作品达到大师水准,老师也挑不出毛病,学生完美毕业。

图 3

目前关于GAN的研究成果得按月统计,Github有专门收集各种GAN论文的网站:

https://github.com/hindupuravinash/the-gan-zoo

可以跟踪。最初的GAN被发现并不稳定,后面就针对GAN的模型坍塌,即模型只学到一张图片等问题,研究者从目标函数改进、网络结构优化、隐空间分解等方面考虑,提出了各种变体。其中,一个比较经典且简单稳定的模型是2016年Radford的论文《Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks》中提出来的,命名为DCGAN,如图4所示,其生成器和判别器都采用CNN,同时取消了池化层,并调整激活函数,另外,生成器通过转置卷积即步长调整达到上采样来生成图片的效果。

图 4

由于GAN在生成样本过程成不需要显式建模任何数据分布就可以生成Real-like的样本,所以不仅仅是在图像领域,对于文本、语音、视频等诸多领域都有广泛的应用。当然,对于文本、语音、视频这类序列生成问题,就还需要考虑结合RNN的时序记忆能力(例如,RNN-GAN使用LSTM作为生成器和判别器,直接生成整个音频序列)、强化学习中的策略梯度下降(例如,SeqGAN把生成器的输出作为一个智能体/Agent的策略,而判别器的输出作为奖励/Reward,使用策略梯度下降来训练模型)。

二、

轻量级神经网络

在终端部署深度学习模型,会面临如何让模型更高速的问题,有一个思路就是构建轻量级CNN。当部署模型的设备计算资源有限,或者能耗不能太高的情况下,就需要最大化模型精度的同时考虑降低模型的复杂度。

图 5

如图5所示,通过统计多种ImageNet图像分类模型的Top-1准确率和计算成本、网络参数规模,发现除VGG系列模型一开始就把计算量和参数量设计得很大外,其他架构首先形成了一条斜线,表明计算成本与准确率大概呈正比关系。但从Inception到ResNet,这条斜线变得平缓,模型性能在该数据集上到达拐点,此后,计算成本/复杂度的增加开始大于准确率的提升。说明DNN在利用全部学习能力方面非常低效,也就是说为提高精度而增加的模型自由度/参数并没有被利用上,而这一部分冗余的参数就可以被去掉。同时,如图6所示,通过记录AlexNet各层分别在CPU和GPU上所耗费的时间,发现90%左右的时间都耗在卷积层上,因此,构建轻量级CNN是有必要的。

图 6

近年来,学术界对这方面的研究也不少,方法主要分为两类,一类是考虑缩减运算/操作数精度的位数;另一类是考虑降低运算/操作的数量和模型的大小。

2.1 缩减运算/操作数精度的位数

对于第一类方法,本质是把DNN权重量化为一个更小的一组量化级别,而最终的目标是最小化量化误差,也就是量化后数据和原始数据的差异。具体的量化方式包括线性量化和非线性量化。

在线性量化里,早期的工作包括直接把浮点数变为定点数,或者使用动态定点数,后来逐渐衍生出Low-bit量化、多值化、二值化等线性量化方法。比如Binary Connect(BC),只用-1 和+1 两个权重值,使用这种二值权重,则乘法运算可以用加法运算代替。而它的改进版本Binarized Neural Networks(BNN),同时使用二值的权重和二值激活函数,这样就把乘累加运算(MAC)简化成XNOR 运算。当然,这种方法会带来比较大的性能损失。所以之后有很多尝试来减少性能损失,包括Binary Weight Nets(BWN)、XNOR-Net和Quantized Neural Networks(QNN),取得了一定的效果。再之后Ternary Weight Nets (TWN),它给二值权重增加了一个“0”,即“-1,0,1”的表示方法。TWN 和32-bit 浮点数比较准确度损失只有3.7%。而后面出现的如图7所示的Trained Ternary Quantization(TTQ) 则把AlexNet 的准确度损失差降到了0.6%。

图 7

2.2 降低运算/操作的数量和模型的大小

对于第二类方法,考虑的是如果能够用更少的操作或者更小的网络实现较好的准确度,这方面的工作可以大致分为下面4 类:压缩编码、设计紧凑的网络架构、网络结构剪枝、知识蒸馏。

在压缩编码方面,一般从激活函数的统计特性角度考虑。比如利用ReLU 做激活函数的时候,会造成很多输出的值为“0”,这就造成的很大的稀疏性。在设计硬件加速器的时候,如果能够充分利用这种稀疏性,就可以利用压缩技术降低存储和访存带宽需求;或者对“0”数据直接跳过,从而减少MAC 操作。此外,还可以把一些非常接近“0”的值当成“0”,更进一步增加稀疏性。

在设计紧凑的网络结构方面,旨在通过改进网络架构本身可以减少权重和操作的数量。趋势是用一系列较小的卷积层代替较大的卷积层,使得其总的权重数量减少,但保证具有相同的有效接收场域(effective receptive field,即滤波器从输入图像中计算输出结果的那个区域)。比如前面提到的GoogleNet不同版本的Inception、如图8所示的SqueezeNet等,通过卷积核分解,用多个小卷积代替大卷积,减少了参数量,又引入二次非线性,实验证明也能提升精度。跟踪DCNN网络架构的不断改进,也可以看出:结构设计优秀的网络,即使规模较小(从运算量和权重数量来看),同样可以实现很好的性能。

图 8

在网络剪枝方面,是因为一般为了使网络训练更容易,网络通常是过度参数化的。因此,网络中的大量权重是冗余的并且可以被移除(即设置为零),这个过程被称为网络修剪。其实早在1989 年一种称为最佳脑损伤的技术就提出了这种想法,计算每个权重对训练损失的影响,称为权重重要性。重要性低的权重被删除,其余的权重进行了微调,重复该过程直至达到所需的模型大小和准确度。而如图9所示的DSD算法,正是基于这种思路设计出的一种新的模型训练方法,实验证明能进一步提高模型训练后的准确率,有点类似于Dropout,但其训练过程中的权重剪枝不是随机的,而是基于权重的绝对值作为依据来选择去掉哪些连接。

图 9

在知识蒸馏方面,是因为一般我们提高模型精度是通过使用一个深度网络或对不同模型的预测结果进行集成(ensemble),但导致计算复杂度也更高。知识蒸馏旨在将复杂模型学到的知识转移到更简单的模型上。通过这种方法,学生网络可以实现直接使用相同的数据集进行训练而无法实现的准确性。一般思路,如图10所示,就是用teacher model(或多个teacher models的ensemble)的class score 作为soft target训练student model,目标是最小化soft target 与student model class score 之间的平方差。

图 10

六、

结语

以上是本次分享的全部内容,希望能让大家了解到这个领域的一些基本概念和模型算法,未来这个领域还将衍生更多的应用场景和挑战,如何针对不同任务和难题设计和优化网络结构,需要我们继续深入研究和实践。

参考文献

[1] Khan A, Sohail A, Zahoora U, et al. A Survey of the Recent Architectures of Deep Convolutional Neural Networks[J]. arXiv preprint arXiv: 1901.06032, 2019.

[2] 缪鹏. 深度学习实践:计算机视觉[M]. 清华大学出版社, 2019.

[3] Yongjun Hong, Uiwon Hwang, Jaeyoon Yoo, Sungroh Yoon. How Generative Adversarial Networks and Their Variants Work: An Overview[J]. arXiv preprint arXiv: 1711.05914, 2019.

[4] 万字综述之生成对抗网络,https://www.jiqizhixin.com/articles/2019-03-19-12, last accessed 2019/3/19.

[5] 斋藤康毅. 深度学习入门:基于Python的理论与实现[M]. 人民邮电出版社, 2018.

[6] Vivienne Sze, Yu-Hsin Chen, Tien-Ju Yang, et al. Efficient Processing of Deep Neural Networks: A Tutorial and Survey[J]. Proceedings of the IEEE, 2017, 105(12):2295-2329.

深度学习

THE END

计算机视觉

文章作者: 中国电信研究院 | 原思平

文章内容系作者个人观点,不代表融智未来公众号的观点或立场。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 融智未来 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档