注意!注意!注意!本文是针对中国科学院计算所山世光教授于2017年1月7日于北京师范大学所做的《深度学习在计算机视觉中的应用与前景》讲座的内容总结梳理。
计算机视觉系统的任务就是像人一样描述摄像机拍摄到的内容。
常见的视觉任务:
下图所示就是计算机视觉任务中的物体识别的一个例子,如单一物体(图中猫)的识别,或多物体的识别(如图中的狗、猫和鸭子等的识别)。
从2012年到2016年,计算机视觉经历了跨越式发展。在ImageNet ILSRVRC 图像分类上 1000类Top5错误率:26%-> 3.6%。
处理的流程图如下:
深度学习的基本原理是“加权投票模型”,它来源与生物神经学系统中的神经元系统的启示。
如图所示,生物学中,一个完成的神经元主要包括轴突和树突两大部分,神经信号的传递主要是轴突的神经末梢受体释放后经过突触间隙被树突的受体捕获,产生电位传递给胞体。胞体将获得的电信号进行汇总给出决策:产生激励信号或者抑制。
最后整个大脑的决策就是所有神经元信号的加权投票决策。
正是受到生物神经网络的启发,我们在计算机中构建人工神经网络模型。
加权求和(卷积)+ 非线性激活函数
如图所示,我们的输入信号 x1,x2,⋯,xn 可以看作是神经元中来自其他神经元轴突的信号,对应的 wk1,wk2,⋯,wkn 可以看作是对应的突触的信号的权值,中间的求和结点∑ni=0(wixi+b) 是对应细胞体的求和决策,再通过一个激活函数 ψ(⋅) 输出对应的决策 yk 。
激励函数
我们常用的激活函数有Sigmoid 和tanh 等函数,因为这些函数有光滑、连续、可导、有界等优良的性质。
一个神经元看的更远(视野更大、更宽)知识因为它站在了其他神经元的肩上。
神经网络是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。神经网络由大量的人工神经元联结进行计算。
如图所示,对于一幅图像的特征,low-level 是一些简单、底层的特征(如像素特征),到了mid-level 就是一些复杂的特征(如图像中的一些边之类的特征),到了high-level 就是更复杂的特征(如图像中边的组合特征)。处在high-level 的神经元此时它们的决策就更抽象重要。
神经网络的训练
卷积神经网络主要层叠包括以下三个步骤+全连接层
下图是一个经典的CNN结构,称为LeNet-5网络,关于LeNet 的详解可以参考 LeNet-5 网络详解 。LeNet-5 网络共有7层(不包括输入层),每层都包含不同数量的训练参数,主要的有卷积层、下抽样层、全连接层3中连接方式。从中可以看出,CNN中主要有两种类型的网络层,分别是卷积层和池化/采样层(Pooling)。
其中卷积层的作用是提取图像的各种特征;池化层的作用是对原始特征信号进行抽样,从而大幅减少训练参数,另外还可以减轻模型过拟合的程度。
卷积层是卷积核在上一级输入层上通过逐一滑动窗口计算而得,卷积核中的每一个参数都相当于传统神经网络中的权值参数,与对应的局部像素相连接,将卷积核的各个参数与对应的局部像素值相乘之和,(通常还要再加上一个偏置参数),得到卷积层上的结果。如下图所示。
下面的动图能够更好地解释卷积过程:
从图中我们知道卷积的实质是局部连接(卷积、滤波器)、共享权重(若干种滤波器,大大减少学习的权重数),等价于信号中的滤波器。
在卷积神经网络中,我们采用的是Sigmoid 等非线性函数,原因是如果是线性激励,无论神经网络的层数有多少,最终都会坍塌为一个线性激励。
通过卷积层获得了图像的特征之后,理论上我们可以直接使用这些特征训练分类器(如softmax),但是这样做将面临巨大的计算量的挑战,而且容易产生过拟合的现象。为了进一步降低网络训练参数及模型的过拟合程度,我们对卷积层进行池化/采样(Pooling)处理。池化/采样的方式通常有以下两种:
如下图所示:
使用Pooling 技术的另一个目的也是为了获取不变性:
CNN+RNN/LSTM
其中CNN学习表示, RNN/LSTM 建模时序信号
应用: Image Caption, Image QA, Viedo Representation
上图所示:Show and tell: A neural image caption generator。
上图所示: Long-term Recurrent Convolutional Networks 。
深度神经网络已经由传统CNN 向RNN(CVPR14, TPAMI15)和 CNN Cascade 演进。
全自动人脸识别系统流程:
深度学习主要作用在特征提取器这一步上。
第一代:完全人工涉及特征
也是非常底层的特征,包括几何特征,图像模板,Fourier 频谱,如形状,颜色,纹理,频谱等
第一代特征是知识驱动
第二代:(子空间)变换特征
此时的特征是经过处理或变换后的特征,经过如PCA, LDA, LPP, SR 等特征变换处理后得到的特征。
第二代特征是数据驱动(学习W 矩阵, y=Wx )。
第三代: 人工设计局部特征+ (子空间)变换特征
如Gabor滤波器,LBP+PCA, LDA等
第三代特征是知识+数据驱动, y=W(f(x)) 。
第四代:特征学习
第四代特征是完全数据驱动的特征。
卷积神经网络(CNN) 本质上是层次抽象的滤波型局部特征。
其与之前局部特征的不同:
如图所示,理想的深度卷积神经网络是从数据中学习多层特征,如对图像中人脸的学习,可从底层的像素特征学习到第一层的边的特征,然后再到第2层基本脸部部位器官(如鼻子,嘴)等特征,再到高维的特征脸特征。