《图解深度学习》学习笔记(六)

第七章 深度学习工具

1、Theano

在学习Theano时,我们必须了解共享变量的概念。由于函数的输入和输出是Python的Numpy数组,所以每次调用这些函数时,GPU都需要将其复制到内存里。如果使用共享变量,GPU就可以从共享变量中获取数据,无须每次都将数据复制到内存里。通过使用共享变量,使用误差反向传播算法等梯度下降法估计参数时,就无须每次调整时都将符号变量复制到内存中,因此运算速度能够得到提高。将训练样本也作为共享变量,即可避免每次调整时都将训练样本复制到内存中。共享变量的创建可以使用share函数。

2、Pylearn2

基于Theano的数值运算,通过并行计算加速运算过程。通过yaml文件配置定义网络以及和训练有关的设置,并将其赋值给train.py中的参数。与xml相似,是一种数据序列化表达格式。

3、Caffe

4、训练系统——DIGITS

直观清晰的用户界面。

5、Chainer

日本公司开发

6、TensorFlow

核心部分采用C++编写以实现高效计算,其函数接口支持C++和python两种编程语言。

7、小结

8、Pytorch



第八章 深度学习的现在和未来。

一、物体识别

深度学习最初是被用于物体识别的,而目前其物体识别性能已居于绝对的领先地位,各种应用案例不断见诸报端。

1、AlexNet

2012年举办的物体识别挑战赛( ILSVRC 2012 )是深度学习在图像识别领域得以迅速发展的一个转折点。 以往的物体识别主要依靠对SIFT等尺度不变特征变换方法和支持向量机等机器学习方法的组合应用来提升性能。 2012年以后,深度学习一跃成为物体识别的核心方法。

在ILSVRC2012中获胜的卷积神经网络名为AlexNet。其网络结构如图8.3所示,包含5个卷积层和3个全连接层,在第1,2,5个卷积层之后进行池化操作。使用激活函数ReLU并在全连接层引入Dropout是AlexNet网络的创新点,也是识别性能得以提升的主要原因。这些改进抑制了过拟合。

经此一役,以往不受重视的卷积神经网络终于向世人展示了它的可能性。并且表明了GPU能够加速训练。卷积神经网络自动学习得到的卷积核能够捕捉到多个方向的边缘以及颜色渐变。能够捕捉边缘梯度的卷集合,已经非常接近以往由研究者们设计出来的卷积核。此外,卷积神经网络自动学习得到的卷积核还能捕捉到网纹图像等很难手工设计的复杂形状。 

2、反卷积、反池化操作引入到AlexNet

反卷积网络:引入反卷积层,能够把卷积结果恢复为原始的图像和特征图。通过反卷积进行恢复后,我们可确认单元对哪些图像产生了反映。这样就可以从视觉上直观地确认训练后的网络的好坏。如果事先保存池化起始坐标,那么即便进行了池化操作,图像也能被恢复为原始图像。2013年在AlexNet网络训练中引入该处理后,赢得比赛。

3、GooLeNet和VGG

2014年ILSVRC第一名:GooleNet。第二名VGG网络。

网络中每一层的结构都是精心设计的,并非多层网络的简单叠加。

以VGG为例,为了加深与AlexNet相当的网络结构,每段卷积都是用了两层大小相等的3*3卷积核。使用两个3*3卷积核代替一个5*5卷积核训练后的网络可以捕捉更复杂的形状。

GooleNet是通过由多个卷积层组成的Inception模块堆叠而成的。

Inception模块有如下结构:

  • 在3*3或5*5卷积前和最大池化后都分别加上了1*1卷积核,把得到的特征图与1*1卷积得到的特征图联合输出,形成一组特征。
  • 1*1卷积核可以看作是在特征图之间建立一种全连接,从而得到新的特征图。
  • 这个方法是基于network in network提出来的,Network in network中的微型网络(micro network)可以代替激活函数特征图全部连接起来

二、物体检测

物体检测是确定图像中物体位置的方法。比较经典的物体检测有人脸检测行人检测,这都属于事先限定了检测对象的物体检测

非类别限定的物体检测:即不再限定只检测人脸或行人。而是比物体识别、人脸检测及行人检测更难的任务。

  • 物体识别:识别对象是整个图像,识别结果是输出的该图像的所属类别;
  • 物体检测:需要确定一个或多个物体的位置,检测结果是输出的该物体的所属类别及其位置。

在物体识别中应用的卷积神经网络能够识别输入样本的所属类别,但不能直接应用于物体检测。在物体检测中应用的神经网络还需考虑以下两个问题:

  1. 如何筛选候选区域
  2. 如何去除冗余的候选区域

为了解决上述问题,区域卷积神经网络(Regions with Convolutional Neural Network, R-CNN)等方法应运而生。

R-CNN

R-CNN是通过Selective Search(选择性搜索)分割方法从图像中提取候选区域

接下来把候选区域作为卷积神经网络的输入。这里,卷积神经网络的输入尺寸是固定的,而Selective Search提取的区域大小宽高比(aspect ratio)各不相同,所以需要根据卷积神经网络的尺寸要求重新设置宽高比,这样就解决了上面第一个问题:如何筛选候选区。解决第二个问题(如何删除冗余候选区)的方法是进行迁移学习。包括卷积神经网络在内的所有神经网络,其识别对象都属于训练过的类别。所以,如果输入的样本图像不属于训练样本类别,神经网络就只能从已训练的类别中选去最接近的类别输出,而无法输出准确类别。为了解决这个问题,我们首先使用ImageNet数据集进行物体识别的网络训练,再把训练好的网络参数(预训练)作为其他数据集的初始值进行微调。这样就可以把原本只适用于ImageNet的网络迁移到其他数据集上。

在进行物体检测时,除了要识别候选区域的物体对象,还需要识别其是否属于背景。R-CNN并不使用卷积神经网络进行最终判断,而是把网络中倒数第2层的输出作为特征向量,例如AlexNet网络把第7层全连接层的输出作为特征向量输入到支持向量机进行识别(本质其实是用神经网络完成特征工程)。支持向量机是一个判断输入的特征向量与对象类别是否一致的二值分类器,支持向量机个数与识别的类别数相等。根据这个结果判断候选区域属于特定类别的物体还是背景。即R-CNN能够把卷积神经网络作为特征提取器使用。

R-CNN首先采用Selective Search提取候选区域,然后对所有候选区域进行CNN特征提取,处理非常耗时 。人们正在对R-CNN进行改进,目前已通过改进得到两种方法 :

  1. 一种是Fast R-CNN,即首先对整个图像进行卷积操作得到特征图,然后在全连接层以后处理各个候选区域
  2. 一种是Faster R-CNN直接使用CNN提取候选区域不再使用Selective Search

三、分割

分割是输出每个像素所属类别的方法。

  • 在进行物体识别时,输入层单元个数等于样本图像大小,输出层单元个数等于类别数。
  • 在进行分割时,输入层单元个数和进行物体识别时一样,等于样本图像大小,但输出层单元个数等于样本图像大小 * 类别数,即分割的输出结果是各个像素属于各类别概率

分割对象可以是风景图像、人脸图像和医用图像等。

  1. 首先根据输入图像生成多个不同分辨率的图像,并把这些图像分别输入到卷积神经网络中进行图像分割。
  2. 然后把提取到的特征图汇总后,结合其他分割方法的结果来计算最终的分割结果。

FCN 

最近,研究者提出了使用全部由卷积层组成的全卷积网络(Fully Convolutional Networks, FCN)进行分割的方法。如图8.12所示,这种方法通过对用于物体识别训练的网络进行迁移学习,使其成为适用于分割的网络。此外,全卷积网络是通过把卷积神经网络中的全连接层变成卷积层而得到的,这里的卷积层使用了我们前面提到的物体识别中1*1卷积核

将网络的全连接层变成卷积层之后,整个网络只有卷积层和池化层,称为全卷积网络。

四、回归问题

典型的回归问题包括面部器官检测人体姿态估计

回归问题中训练的网络能够根据输入图像输出人脸区域的眼睛嘴巴等器官的坐标,或者头和肩膀等部位的坐标。坐标矢量中,各部位的x和y坐标与输出层的单元一一对应。回归问题中使用卷积神经网络的一大优势是能够直接预测各部位的坐标,而无须考虑人体姿态限制条件部位之间的关系等。训练时要使用最小二乘误差函数

Deep Pose

Deep Pose是基于AlexNet的网络结构进行人体姿态估计的方法。Deep Pose通过级联的网络来提高估计的准确率。

  1. 首先,第一层网络初步估计各部位的坐标并把得到的位置信息输入到下一层网络
  2. 然后,第二层网络使用该位置信息估计各部位的位置,即第二层网络训练的是对位置信息的插补值。这使得网络在进行姿态估计时对于各种姿态变化具有稳健性

面部器官检测

借助级联网络结构进行面部器官检测的方法如图8.14所示,针对整个脸部区域的网络和针对特定区域的网络分别去检测各器官。各区域的候选器官是固定的,如果输入上半边脸的图像,网络就会输出双眼和鼻子;如果输入下半边脸的图像,网络就会输出鼻子和嘴巴。接下来,综合这些结果初步估计各器官的大概位置,然后使用针对各器官的网络进行详细位置估计。

由于这里是独立估计每个器官的位置,所以人脸检测结果对于面部朝向具有很好的稳健性

五、人脸识别

人脸识别有两种方式:

  1. 第一种叫作人脸比对,基于二值模式,对捕捉到的人脸图像或指定的人脸图像与己认证的对象做对比,核实二者是否为同一人;是不是同一个人
  2. 第二种叫作人脸认证,即进行类别识别,从已登记人员中找出识别到的对象是谁 。 

后者随着登记人数的规模扩大,识别难度也会增大;(主要是检索难度)。

而前者虽然比较简单,但是人的衰老和表情变化,以及光照情况都会导致获取的人脸图像差别很大,以至于比对困难。

Deep Face

对于人脸比对问题,基于卷积神经网络的Deep Face方法比对准确率与人类相差无几。包括人脸比对在内的人脸识别:

  1. 首先要剪裁人脸区域,
  2. 然后利用区域内的信息进行识别,而在剪裁人脸区域时要用到面部器官检测结果,即根据面部器官检测结果中的眼睛和嘴巴的位置决定剪裁尺寸

如图8.15所示,Deep Face根据三维的人脸形状信息来剪裁人脸区域。具体就是使用事先设置三维人脸模型进行配准得到对二维人脸图像器官的位置估计。 利用三维模型剪裁能够得到准确的人脸区域,从而消除人脸的位置偏差。在卷积神经网络中,池化操作只实施一次。利用卷积神经网络进行人脸比对的主要问题是如何识别未经训练的人。解决这个问题的方法就是和物体检测一样,把卷积神经网络中倒数第二个中间层的输出作为特征向量使用。存储每个人的特征向量,并计算已存储特征向量比对对象的特征向量之间的欧式距离,以此确定是否为同一人。这样识别的准确率几乎能够达到人类水平。

(神经网络做为特征工程的工具来提取特征,相似度比对阈值筛选。)

六、网络可视化

对卷积神经网络表达能力的分析研究。

应用反卷积层的方法:会从某一层中任选单元,并对使单元做出强烈反应的区域图像进行可视化

使用DrawNet时,选择某个单元后,已对该单元产生强烈反应的上一层中的单元,以及会对该单元产生强烈反应的下一层中的单元会被可视化。由此可知强烈反应的传导途径,以及产生强烈反应的单元区域。

随着可视化技术的研究,研究者还提出了能够欺骗卷积神经网络的方法。

逐个像素地替换输入图像的颜色通道,或者替换掉相邻像素,就能很容易地欺骗卷积神经网络。如下图

特意创建能够对字符进行错误识别的识别模式,可以得到类似二维码的结果,这种模式可以用来对个人信息进行加密。如下图:

网络可视化不仅可以帮助我们分析网络内部的运行,还能用于甄选更适合的网络以提高识别性能,甚至用于加密,所以它的相关研究也受到了高度重视。


七、深度学习的未来

一些性能已经超越或可能超越人类水平的研究。

Deep Q-Network

Deep Q-Network能够自动学习电视游戏,其游戏水平已经超越人类。它以游戏得分作为奖励,训练如何使用游戏操纵杆才能得到更高分。

网络选择的是对于当前输入能够得到最高分的操作。当然最高分并不是通过一次训练就能得到的,一旦失败也就意味着游戏结束,需要重新开始游戏 。这与人类玩游戏的过程一样。最初开始训练的时候,经常出现得分很低或游戏很快就结束的情况,而下一次训练时网络就会采用能够在某种情况下获得较高分的操作方法,从而逐渐提高得分。 这种学习方法就称为强化学习

Deep Q-Network是强化学习卷积神经网络相结合的方法。

Deep Dream

根据网络可视化知道,人们目前已经能够分析出卷积神经网络中某一层单元会对哪些物体和区域产生强烈反应。Deep Dream就是通过突出这些信息生成新的图像的方法。输入含有随机噪声的图像后,这一方法甚至能生成一些虚幻类的图耐 。既然 Deep Dream能够生成俨如梦幻世界一般的画作,那么也许将来的某一天,我们只需设定一个主题,计算机就能自动创作出水平不啻于画家的作品 。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值