深度学习图像识别技术:基于TensorFlow Object Detection API和OpenVINO? 工具套件
上QQ阅读APP看书,第一时间看更新

1.2 深度学习简介

深度学习(Deep Learning)就是用深度神经网络来自动学习对象特征,然后让深度神经网络具备识别对象的能力。那什么是深度神经网络?本书先从神经网络说起。

1.2.1 神经网络

提到神经网络,人们的第一印象就是类似于人脑那样充满智慧的东西,如图1-4所示。

图1-4 “神经网络”(引用自https://newsroom.intel.com)

实际上,神经网络非常简单,就是多个神经元(Neuron)的堆叠,如图1-5所示。

图1-5 一个简单的神经网络

这种网状的拓扑结构具备一定的智慧能力(分类能力),所以给它起了一个通俗易懂的名字——神经网络(Neural Network)。一听这个名字就知道包含着人们对其智慧能力的肯定和对其智慧潜力的期望。

1.2.2 神经元

如1.2.1节所述,神经网络由神经元(Neuron)堆叠而成,神经网络的基本组件就是神经元。以小学数学的视角看,神经元就是四则混合运算:神经元输入“ak”与权重“wk”相乘,再与偏置“b”相加,所得的和“z”经过激活函数“σ(z)”处理,得到本级神经元的输出“α”,这也是下一级神经元的输入,如图1-6所示。

图1-6 神经元(Neuron)

每个神经元的基本运算是乘法和加法,即乘加运算;多个神经元堆叠起来,就是多个乘加运算,这个特点非常适合具有大量(上千个)乘加硬件计算单元的GPU来计算,这也是GPU比CPU计算神经网络更快的原因。

激活函数(Activation Function)为神经网络引入非线性,一个典型的常用激活函数是ReLU。ReLU全称是修正线性单元(Rectified Linear Unit),当输入小于等于0的时候, ReLU函数输出为0;当输入大于0的时候,ReLU函数的输出为输入本身,如图1-7所示。

图1-7 ReLU函数

第一次听到激活函数或者拗口的修正线性单元时,可能会感觉它很难,但对比一下初中学的一次函数y=x就会发现,ReLU函数相当于被“切掉”了一半的一次函数y=x,即在x>0时,ReLU跟y=x一样;在x≤0时,y取0。

输入经过本级神经元处理得到输出并传向下一级神经元的计算过程称为前馈计算(feed forward)。

请看神经元的Python代码实现,10行Python代码就可以实现一个神经元了,如代码清单1-1所示。

代码清单1-1 神经元的Python代码实现

1.2.3 深度神经网络

如1.2.1节所述,神经网络由神经元(Neuron)堆叠而成。最基本的神经网络有三层,第一层是输入层、第二层是隐藏层、第三层是输出层,如图1-8所示。

若隐藏层的层数很多,那么神经网络就是有很多层的神经网络,简称多层神经网络( Multi-layers Neural Network)。跟Multi-Layers(多层)相比,Deep(深度)这个修饰词听起来更能够引起公众的注意和兴趣,更加易于传播,由此,深度神经网络(Deep Neural Network)这个名字便代替多层神经网络传播开来。

图1-8 神经网络

一个神经网络具体有多少层才算深度神经网络呢?一个约定俗成的规则是:简单神经网络=2~3层神经网络,意味着隐藏层的层数最多为1;深度神经网络=具有4层或更多层的神经网络,意味着隐藏层的层数大于等于2,如图1-9所示。

图1-9 深度神经网络

研究发现,神经网络层数越多,其信息表达能力就越强。所以,深度神经网络有很强的信息表达能力[1]

1.2.4 深度卷积神经网络

2012年,Geoffrey Hinton及其学生Alex Krizhevsky等创造了一个“大型的深度卷积神经网络(CNN)”[2],赢得了当年的ImageNet图像分类大赛冠军,首次实现Top 5误差率15.4%,远超第二名的10%,这个表现震惊了整个计算机视觉界,大家发现深度卷积神经网络具备强大的图像特征提取能力。为了表达方便,深度卷积神经网络的深度二字通常被省略,简称为卷积神经网络(CNN),表达的意思也是具备多个卷积计算层的神经网络。

李飞飞教授讲授的卷积神经网络课程《CS231n: Convolutional Neural Networks for Visual Recognition》有对卷积神经网络原理与其在图像识别中的应用的详细讲述,而且课程已经可以通过网络来观看,网址是http://cs231n.stanford.edu/。

在课程网站的首页有自动运行的卷积神经网络的示意图,非常形象地展示了卷积神经网络如何识别一个物体的过程,如图1-10所示。

图1-10 卷积神经网络运行示意图(引用自http://cs231n.stanford.edu/)

从图1-10所示中可以看到,图片从左边输入,卷积神经网络从左到右依次提取图像的一部分特征值。特征经过层层提取,并由神经网络的全连接层进行分类,最终输出图像中物体类别的概率值。概率值最大的类别,就是输入图片中的物体的类别。

比较有意思的是,数字图像处理中滤波器的数学实现也是卷积,不同的卷积核可以滤出(提取)不同的图像特征。由此,可以直观地将卷积神经网络想象为一层层的滤波器,每层滤波器滤出(提取)图像不同的特征,如图1-11所示。

图1-11 图像滤波

卷积神经网络强大的自动提取特征的能力和极高的图像分类准确率深受业界认可,越来越多的人开始在计算机视觉领域的图像分类、检测和分割应用中使用卷积神经网络了。