您好,欢迎来到尚车旅游网。
搜索
您的当前位置:首页基于卷积神经网络的图像识别教学实验

基于卷积神经网络的图像识别教学实验

来源:尚车旅游网
第39卷第4期 电气电子教学学报 JOURNAL OF EEE Vo1.39 No.4 Aug.2017 2017年8月 基于卷积神经网络的图像识别教学实验 祝世平,周富强,魏新国,温思寒 (北京航空航天大学仪器科学与光电工程学院,北京100191) 摘要:图像识别是“图像处理”教学中的重要内容。本文在Linux环境下使用iTorch notebook可视化界面利用卷积神经网络实现mnist手写数字 体的准确识别,并详细介绍卷积神经网络的原理,给出直观的实验结果。教学实践表明,通过具有应用性和趣味性的实验可以提高学生的积极 性,加深对课程理论的认知,培养其分析问题和解决问题的能力。 关键词:图像识别;卷积神经网络;iTorch 中图分类号:G426 文献标识码:A 文章编号:100843686l2017)0443124434 Image Recognition Teaching Experiment Based on Convolutional Neural Network ZHU Shi-ping,ZHOU Fu-qiang,WEI Xin-guo,WEN Si—han (School of Science and Optoelectronics Engineering,Beihang University,Beijing 100191,China) Abstract:Image recognition is the important content of Image Processing course.In this paper,under the environ— ment of Linux,we realize the accurate handwritten digit recognition from the data of mnist by using a visual inter— face called itorch notebook,introduce the principle of the convolutional neural network in detail,and give an intui— tive experimental results.The teaching experience shows that such kind of experiment which embodies interesting— ness and practical application has the advantage of increasing the students interest in the course,deepen the cogni— tion of curriculum theory and cultivate their ability to analyze and solve problems. Keywords:image recognition;convolutional neural network;iTorch 0 引言 图像识别是“数字图像处理”课程的重要内容, 随着图像处理技术的迅速发展,图像识别技术的应 用领域越来越广泛¨J。其中,好的识别技术是关键 所在,怎么样提高识别率和识别的速度意义重大,直 接关系到图像识别的实用性和安全性。目前,图像 习的一项重要技术,卷积神经网络(CNN)成功训练 了首个深层神经网络结构,已在图像识别、语音识别 等领域取得卓越成绩 J。另外,在Google公司的a1. phGo运用深度学习的方法战胜围棋高手李世石后, 人们对深度学习的好奇掀起了高潮,故为了更好地 满足学生的求知欲,激发学生的积极性,本课程设计 了基于卷积神经网络的图像识别实验,并在iTorch notebook可视化界面下训练MNIST手写数据集,测 识别方法大多采用人工方式提取特征,不仅费时费 力,而且提取困难;而深度学习是一种非监督学习, 试其识别准确度。通过直观的实验结果,使学生在 实验中达到以下锻炼: (1)熟悉Linux开发环境,并掌握对Torch, 学习过程中可以不知道样本的标签值,整个过程无 需人工参与也能提取到好的特征。作为实现深度学 收稿日期:2016-07-05;修回日期:2016—11.11 基金项目:北京航空航天大学仪器科学与光电工程学院教改项目 第一作者:祝世平(1970一),男,副教授,主要从事图像处理教学和视频压缩、计算机视觉、机器视觉在精密测量中的应用等方面的研究,E—mail spzhu@163.corn 第4期 祝世平,周富强,魏新国,温思寒:基于卷积神经网络的图像识别教学实验 iTorch的安装及使用; (2)了解深度学习,并理解卷积神经网络的概 念,掌握其实现流程; 并在In[]:命令行输人命令测试,便输出如下 图3的界面。 In【1】l E ̄uire。image’; (3)更加深刻的理解图像识别的原理,并对卷 积神经网络技术在图像识别上的应用有所掌握。 另外,实验提供的可视化平台,使学生可以更直 观地对程序进行调试及运行,提高了其动手实践和 分析与解决问题的能力。 zn I 2l: ̄torch.im驴“i越 ・lenall,i¨ ・lenaf1.岫神.1eaa(】’ Out【2lt 1实验环境配置 本实验使用的iToreh notebook是一个通过Web 图3命令测试结果 由图3可看出,该界面能够直观显示出我们的 输入,并能分层次输入,便于学生对程序更好的调试 及理解。 界面实现交互的shell,其中iTorch是Torch的iPy— thon内核。 首先,我们需要一台配置好Python和Torch7的 Linux系统,再针对iTorch notebook配置iTorch, 另外,由于本次实验需要对图像进行显示,故需 要安装image库,在运行itorch notebook前在终端键 人:luarocks install image进行安装。 iTorch是Torch里面的一个包,它能很轻松地显示图 片、视频和音频等等,但是需要和ipython搭配使用, 故需要安装iPython。 打开终端,输入: wget http://ipython.seipy.org/dist/ipython-0.8. 4.tar.gz 最后,本文是针对MNIST数据库中的数字进行 训练及识别,故需要对其进行安装,在运行itoreh notebook前在终端键入:luarocks install mnist完成安 装。 MN1ST是一个手写数字数据库,它有60000个 训练样本集和10000个测试样本集。它是NIST数 下载完毕后,输入解压缩命令:tar zxvf ipython一 0.8.4.tar.gz 据库的一个子集。数据库存储并不是标准的图像格 式,这些图像数据都保存在二进制文件中,所有的图 片都经过了尺寸标准化和中心化,图片的大小固定 为28 X 28。 切换到解压缩的目录:cd ipython-0.8.4 输人命令安装:python setup.PY install 但此时还是无法使用,需要我们再安装ipython— notebook,安装命令如下:sudo apt—get install ipython— notebook 2 实验设计 为了加强学生对卷积神经网络在图像识别的理 解和应用,提高学生运用卷积神经网络等深度学习 方法来解决实际生活中图像识别的能力,本实验要 求学生自行搭建程序运行所需环境,熟悉对Linux - … 然后,在终端输入:itorch notebook,在浏览器中 便会弹出iTorch notebook的Web界面,如图l所示。 n _Notebook k _…-●■一系统的使用,并给出已经训练好的训练集,让学生自 己x,ti ̄JJ试集中的数据进行测试,给出其准确度,并随 图I iTorch notebook的Web界面 机显示图片验证其正确性。 同时,为了让学生更快速的进入实验状态,发挥 自己的动手实践能力,我们给出卷积神经网络的结 点击右上角的new notebook建立一个新的笔记 本,界面如图2所示。 ;-_,… ^n 构,并给出该识别过程中最主要的模型建立流程。 ’y xtJ ’ I I tt●●●●’I 2.1卷积神经网络的网络结构 卷积神经网络CNN(Convolutional Neural Net. -I} works)是一种为了处理二维输入数据而特殊设计的 图2建立新笔记本 多层人工神经网络,网络中的每层都由多个二维平 l26 电气电子教学学报 第39卷 面组成,而每个平面由多个独立的神经元组成 引。 首先,我们需要首先建立一个容器用来存放各 种模块: model=Fin.Sequential() 如图4示,这是一个简单的卷积神经网络 CNN。 然后,放入一个reshape模块。因为mnist库的 原始图片是储存为1列728个像素的。我们需要把 它们变成1通道28×28的一个方形图片。 model:add(nn.Reshape(1,28,28)) 接下来要把图片的每个像素除以256再乘以 3.2,也就是把像素的取值归一化到0至3.2之间。 model:add(nn.MulConstant(1/256.0×3.2)) 图4简单的CNN 然后是第一个卷积层,它的参数按顺序分别代 表:输入图像是1通道,卷积核数量20,卷积核大小 5 X 5,卷积步长I×I,图像留边0 X0。 model:add(Fin.SpatialConvolutionMM(1,20,5, 5,1,1,0,0)) 一输入图像通过和三个可训练的滤波器和可加偏 置进行卷积,卷积后在C1层产生三个特征映射图。 然后特征映射图中每组的四个像素再进行求最大 值,加权值,加偏置,通过一个ReLu函数得到三个 s2层的特征映射图。这些映射图再经过滤波得到 c3层。这个层级结构再和s2一样产生S4。最终, 个池化层,它的参数按顺序分别代表:池化大 小2×2,步长2×2,图像留边0×0。 model:add(IaFi.SpatialMaxPooling(2,2,2,2, 0,0)) 这些像素值被光栅化,并连接成一个向量输入到传 统的神经网络,得到输出。 一再接一个卷积层和一个池化层,由于上一个卷 积层的核的数量是20,所以这时输入图像的通道个 数为2O。 model:add(an.SpatialConvolutionMM(20,50, 般地,C层为特征提取层,每个神经元的输入 与前一层的局部感受野相连,并提取该局部的特征, 一旦该局部特征被提取后,它与其他特征问的位置 关系也随之确定下来;S层是特征映射层,网络的每 个计算层由多个特征映射组成,每个特征映射为一 个平面,平面上所有神经元的权值相等。特征映射 结构采用影响函数核小的sigmoid函数作为卷积网 络的激活函数,使得特征映射具有位移不变性。 此外,由于一个映射面上的神经元共享权值,因 5,5,1,1,0,0)) model:add(Fin.SpatialMaxPooling(2,2,2,2, 0,0)) 在接入全连接层之前,我们需要把数据重新排 成一列,所以有需要一个reshape模块。 model:add(nn.Reshape(4×4×50)) 而减少了网络自由参数的个数,降低了网络参数选 择的复杂度。卷积神经网络中的每一个特征提取层 (C一层)都紧跟着一个用来求局部平均与二次提取 这个参数为什么是4×4×50,即800呢?原因 是:我们的输入是1通道28×28的图像,经过第一 个卷积层之后变成了20通道24×24的图像。又经 的计算层(S一层),这种特有的两次特征提取结构使 网络在识别时对输入样本有较高的畸变容忍能力。 2.2模型建立流程 过池化层,图像尺寸缩小一半,变为20通道12× l2。通过第二个卷积层,变为50通道8×8的图像, 又经过池化层缩小一半,变为50通道4×4的图像。 基于深度学习的图像识别模型流程主要是:把 所以这其中的像素一共有4×4×50=800个。 接下来是第一个全连接层。输入为4×4×50 =800,输出为500。 model:add(nn.Linear(4×4×50,500)) 图像输入到神经网络中,利用深度学习的前向传播 和反向传播误差等算法来最小化损失函数,更新权 值后,得到一个较优的识别模型,然后利用此模型对 新的图像来进行识别。 在该基于卷积神经网络的图像识别实验中,最 核心的部分就是此模型的建立。 两个全连接层之间有一个ReLU激活层。 model:add(Fin.ReLU()) 然后是第二个全连接层,输入是500,输出是 第4期 祝世平,周富强,魏新国,温思寒:基于卷积神经网络的图像识别教学实验 l0,也就代表了lO个数字的输出结果,哪个节点的 响应高,结果就定为对应的数字。 model:add(nil.Linear(500,10)) 提高了运行速度。 ouq7l:Epoch:28 Current loss:0.041 249 0ut【7】:Accuracy orl the testset:98.01% out[7]:Epoch:29 Current loss:0.040074 最后是一个LogSoftMax层,用来把上一层的响 应归一化到0至1之间。 model:add(ril1.LogSoftMax()) outff]:Accuracy ON the te ̄set:98.4% 0outr7】:Epoch:30 Current loss:0.03921 9 Outm:Accurcy aon the te ̄set:98.01% 至此,模型的建立就完成了。我们还需要一个 判定标准。由于我们这一次是要解决分类问题,一 般使用nil.ClassNLLCriterion这种类型的标准(Neg— ative Log Likelihood)。 图6 6次迭代图像识别正确率 针对训练好的模型,我们从测试集中随机选取 图片进行验证,其结果示于图7和8,无论什么形式 的手写体,该算法都能够对其正确的识别。 criterioil=nil.ClassNLLCriterion() 到这里,网络模型的部分就都已经完成了,其具 体流程图如下图5。 国 Out(27]:nil-7・00451 27868652 1 2 4491527557373 ・10.21 1694717407 .n删 m洲。6.。-, ‘ 1 2 -8959040641 7847 ....8004.550933838 3 -5.5985860824585 4 5 .13。564281463623 .o.0052900314331055 43854904。’ 48 -out[41]:3 -11.997975349426 4 5 -4.1710987091064 _8.8565092086792 1j0 ̄1271:677 8 9 2R772,779 .92S3587722778 .8.0180444717407 1: 67_6-12.0_61712196098739387s8440, ’I‘・口,l I,,,,o】 8 9 .9・164228439331 1 ・10.107563972473 .10.131861686707 clas ̄fled output:5 label:5 clas ̄fled output:6 label:6 ……rIght…… ……rl曲卜…一 图7图像识别算例1测试结果图8图像识别算例2测试结果 4 结语 本文详细讨论了基于卷积神经网络的图像识别 实验的原理和流程,并以iTorch noteboook的可视化 界面直观的显示出其准确性。而且,通过让学生自 行搭建程序运行所需环境,自行编程对测试集中的 数据进行测试,并随机显示图片验证其正确性,大大 提高了学生的编程能力,加深了学生对深度学习的 了解,让学生更加全面的理解卷积神经网络在图像 识别中的应用。 参考文献: 邓柳,汪子杰.基于深度卷积神经网络的车牌识别研究[J]。 成都:计算机应用研究,2016,33(3):930-932. 徐彩云.图像识别技术研究综述[J].菏泽:电脑知识与技术, 2013,9(1O):2446-2447. 图5网络模型流程图 卢宏涛,张秦川.深度卷积神经网络在计算机视觉中的应用 3 实验结果 本次实验最终确定神经网络的迭代次数(itera— tioil)为30,其正确率如图6所示,可达到98%以上, 相比较其他算法,错误率大大减少,且由观察可知, 只需迭代30次,准确率便可稳定,缩短了训练时间, 研究综述[J].南京:数据采集与处理,2016,31(1):l—l7. 张文达,许悦雷,倪嘉成,马时平,史鹤欢.基于多尺度分块 卷积神经网络的图像目标识别算法[J].成都:计算机应用, 2016,36(4):1033—1038。 范哲意,曾亚军,蒋姣,翁澍沁,刘志文.视频人脸识别实验 平台的设计与实现[J].北京:实验技术与管理,2016,33 (3):159—161,I65. 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sceh.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务