一、引言
深度卷积神经网络是图像分类和图像识别领域最有效的机器学习技术,许多不同专业领域的学生迫切希望掌握此技术,以便将图像识别和分类方法用于本专业的具体应用中,但由于大部分学生不具备人工智能及计算机相关专业的背景,缺乏必要的专业基础及编程经验,故理解和掌握深度卷积神经网络的编程实现比较困难[1]-[3],故本文对深度卷积神经网络卷积运算提取图像特征的程序结构进行了模块化的教学设计,把深度卷积神经网络中不同的功能模块分别用不同的代码段来实现,根据卷积运算提取特征的不同网络结构把不同模块的组合在一起,实现完整的深度卷积神经网络卷积运算特征提取编程应用。
通过功能模块划分和模块组合这一教学设计目的是让初学者对深度卷积神经网络模型结构和具体代码实现易于理解和掌握[4]。本文基于tensorflow平台,tensorflow是google研发的人工智能学习平台,TensorFlow可用于语音处理及机器翻译、图像分类、目标识别和图像理解等广泛的机器学习和深度学习领域[5]。在掌握本文所述的深度卷积神经网络卷积运算各功能模块的基础上,通过不同的功能模块组合实现基于深度卷积神经网络模型的灵活编程应用[6]。
二、深度卷积神经网络基本功能模块的划分
深度卷积神经网络的卷积运算特征提取功能可分为以下五个基本功能模块。
1.卷积模块:通过设定不同尺寸的卷积核和滑动步长,使卷积核与输入图像进行卷积运算,从而提取图像不同视野范围的特征。Tensorflow是利用tf.keras.layers.Conv2D函数来构建卷积模块。
2.批标准化模块:将神经网络每层的输入都调整到均值为0,方差为1的标准正态分布,以解决神经网络中梯度消失的问题,批标准化的另一个作用是对输入数据的分布进行缩放和偏移。批标准化模块位于卷积运算模块之后,激活运算模块之前,在Tensorflow中使用tf.keras.layers.BatchNormalization函数来构建批标准化模块。
3. 激活层模块:通过激活函数改变输入数据的非线性度和分布范围,根据不同的应用和神经网络层不同的层面采用的激活函数有所不同,可供采用的激活函数主要有:sigmoid,tanh,Relu,softmax等。在Tensorflow中使用Activation()函数构建激活层模块。
4. 池化层模块:池化的作用是通过降维减少特征数量,最大值池化可提取图片纹理,均值池化可保留背景特征。在Tensorflow中利用通过tf.keras.layers.MaxPool2D函数和tf.keras.layers.AveragePooling2D函数分别构建最大和均值池化层模块。
5. 丢弃神经元模块:丢弃神经元是在神经网络的训练过程中,将一部分神经元按照一定概率从神经网络中暂时舍弃,使用时被舍弃的神经元恢复链接。利用tf.keras.layers.Dropout函数构建丢弃神经元模块。
三、深度卷积神经网络模型编程中模块的组合应用
典型的深度卷积神经网络模型有LeNet、AlexNet、VGGNet、InceptionNet及ResNet,这五种网络作为深度卷积神经网络模型的经典代表,是图像识别和分类应用学习所必须掌握的。它们具备多层的网络结构,其中核心的部分是特征提取部分,可由本文分解的五个基本模块灵活组合构成。五个基本的功能模块的完整卷积运算组合关系如图1所示。
图1. 五个基本的功能模块的完整卷积运算组合关系
比如在Tensorflow平台利用Keras来搭建AlexNet模型,它由五次卷积运算和三层全连接组成。第1次和第2次卷积运算用到了卷积模块、批标准化模块、激活层模块、池化层模块;第3、4次卷积运算只用到了卷积模块和激活层模块;第5次卷积运算用到了卷积模块、激活层模块、池化层模块。
VGGNet网络的网络深度有16层和19层,更深的网络意味着更强的表达能力, VGGNet仅使用3 * 3卷积核,VGGNet的16层网络由13次卷积和3层全连接构成。第1次、第3次、第5次、第6次、第8次、第9次、第11次和第12次卷积运算用到了卷积模块、批标准化模块、激活层模块;第2次、第4次、第7次、第10次、第13次卷积运算用到了图1的完整卷积卷积运算模块;第5次卷积运算用到了卷积模块、激活层模块、池化层模块。
从上述两个典型卷积神经网络模型的卷积运算特征提取过程可以看到,在掌握各卷积运算基本模块编程的基础上,不同的模型只需选取五个基本模块进行组合就可以实现输入图像数据的特征提取,从而实现不同应用场景下的深度卷积神经网络模型的编程应用。
四、教学反思
通过卷积神经网络卷积运算基本功能模块的划分和组合的教学设计及实践,使学生对深卷积神经网络的特征提取和卷积运算编程的每一段代码的功能有了深入的理解,在此基础上,学生易于掌握将各基本模块组合在一起实现不同的特征提取方法,并能通过修改相应的功能模块参数实现卷积神经网络模型在更广范围的应用。本文的教学设计适合于对初学者的课堂教学,通过教学实践对比分析发现,大部分非专业学生初步能在TensorFlow平台上开发出图像分类和图像识别的应用系统。