




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学士学位论文 本科毕业论文 卷积神经网络及在药盒检测的应用 作者姓名:朱翔宇 学科专业:数学专业 导师姓名:刘利刚 教授 完成时间:二一七年五月 University of Science and Technology of China A dissertation for bachelors degree Convolutional Neural Network and Application in Drug Packaging Recognition Authors Name:Xiangyu Zhu Speciality:Math Supervisor:Prof. Ligang Liu Finished Time:May, 2017 致谢 在研究学习期间,我有幸得到刘利刚老师的教导,老师的学术功底,严谨的工作 态度和敏锐的科学洞察力使我受益良多。衷心感谢他多年来给予我的悉心教导 和热情帮助。 感谢王士玮学长与科大计算机系的阴钰同学在实验方面的指导与帮助。在 此深表谢意。 目录 摘要 3 Abstract 4 第一章 绪论 5 1.1 背景与研究意义 5 1.2 相关工作 6 第二章 卷积神经网络 8 2.1 神经网络简介 8 2.2 CNN 基本概念 9 2.2.1 建立模型 9 2.2.2 优化与误差向后传播算法 12 第三章 利用 CNN 做图像识别 18 3.1 数据获取与预处理 18 3.2 神经网络结构 19 第四章 实验 20 4.1 深度学习框架 20 4.2 训练 CNN 20 4.3 测试结果 23 第五章 总结 27 5.1 论文总结 27 5.2 局限性 27 5.3 未来工作 28 1 中国科学技术大学本科毕业论文 参考文献 29 2 摘要 深度学习技术是近年来在图像处理领域最流行的技术。卷积神经网络在此之中 有着突出的表现,它在图像识别,分类,语义分割,目标检测等领域都有着令人 印象深刻的结果。本文主要介绍了卷积神经网络, 并将其应用与药物盒的识别问 题。对于给定的药物包装盒的图片,卷积神经网络对其进行识别,得到关于图片 的分类信息,如生产厂商等。 在图像分类问题上,卷积神经网络已经被证明具有极强的能力,如果给定足 够的数据。在我们的问题中,识别一个药物盒,一般来讲,基本取决于盒上的商 标与文字,这使得其分类变得困难,由于文字样式较多,且解读文字信息是件困 难的事。 在下面几个章节里,我们将主要介绍有关卷积神经网络及其原理,在实验中 使用的神经网络的结构,以及实验的结果。 关键词:图像识别深度学习卷积神经网络图像理解 3 Abstract Deep learning is known to all in recent years in the field of image processing.One of the most successful technique in deep learning, convolutional neural network had a impressiveworkonimagerecognition,imageclassification,semanticsegmentationand object detection etc.Our paper introduces convolutional neural network and apply it to recognition of drug packaging problem.Given the picture of drug packaging, we use CNN to recognize it and obtain some classification information, like its producer. Convolutionalneuralnetworkhasbeenprovedstrongonimageclassificationprob- lem, given sufficient images data.In general, recognizing a drug packaging usually de- pends on the logo and title words on it, which makes it difficult work, due to the diffi- culty in parsing the words. In the following chapters, we will introduce CNN, the deep network structure used and the experiment results. Key Words: Image Recognition, Deep Learning, Convolutional Neural Network, Im- age Understanding 4 第一章绪论 第一节背景与研究意义 近年来, 深度学习技术在图像处理领域取得了巨大的成功。一方面得益于图 像数据爆炸式的增多,另一方面,GPU 技能飞跃式地提高使得快速的大规模计 算成为可能。因此,在以前由计算瓶颈与数据量制约的深度神经网络,现在已经 被广泛的使用。 在图像处理领域,与传统技术相比,深度学习技术往往有更好的效果,如 图像识别,目标检测,语义分割等任务。实际上,这些都是颇具挑战性的难题, 由于人们一直难以建立一个普适的数学模型,直到深度学习技术开始使用,才 开始有了突破性的进展。甚至,在识别等任务中,神经网络的准确率已经超过 人类1。这是以前人们无法想象的,而在此其中起到关键作用的,是卷积神经网 络1(Convolutional Neural Netowrk, 以下简称 CNN)。 CNN 即是由多个卷积层,全连接层构成的神经网络2,其中最为关键的卷积 层,其作用可以概括为,提取图像的“特征” ,而这些特征就可以用来作图像分 类,描述等任务。与传统的神经网络 (仅由全连接层组成的网络) 相比,CNN 具 有更少的参数,这使得其训练所需的时间大大减少;其次,由于 CNN 卷积作用 在图像上各个小区域,其提取出的特征具有更好的局部性,并且使得网络更加容 易训练。 本论文的目的是做药盒的识别,即输入一张药物包装盒的图片,输出该药物 的信息。考虑到问题的复杂性,现阶段本文将此问题简化为简单的分类问题,即 是,对于给定的药物包装盒的图片,输出其生产厂商名。而预先指定几种生产厂 商的种类后,这就变成一个经典的 CNN 图像分类问题。 在过去十年中, 人们提出了大量的CNN结构来解决图像分类问题, 如Alexnet1, VGG-net2,以及当今识别率最高的 Inception3。一个显著的增长首先表现在网 络的层数3,而随之带来的即是高强度的计算能力要求和大量的训练时间。比如, Inception V3 在一台普通配置的个人笔记本上,可能需要好几天,甚至几个星期 1ImageNet 上,Inception 模型的错误率仅 3.46 %,而一般情况下,人类则有 5% 2除此外还可能有池化层 (pooling layer),以及为过拟合而加入的一些特殊层,如 LRN1(Local Response Normalization),因此 CNN 的定义并没有过于严格的要求 3原先 Alexnet 为 7 层,后来 VGGnet 为 19 层,之后 ResNet 达到 152 层 5 中国科学技术大学本科毕业论文 来完成训练。因此,在实验中,我们选择了较小规模的 Alexnet,而这也需要将 近半天的时间来训练 (使用 Nvidia Titan X Pascal 显卡)。 该问题的研究具有很好的应用价值,可以想象,利用手机等拍摄设备对现实 中的药物盒进行拍照,就可以获取其分类信息,并可以通过在数据库内搜索得到 更加详细的信息。CNN 使查找的工作大幅减少,并提升了用户体验,对于药物 这种特殊的商品,良好训练的 CNN 比一般的工作人员具有更高的识别准确度与 效率,这在药店及医院中有着大量需求。 第二节相关工作 上世纪 90 年代,LeCun 在 MNIST4,一个业界流行的手写数字数据库,上 使用了 LeNet,使得在手写数字识别的准确率提高到 99%。但是由于受到当时计 算能力的制约,CNN 的技术并没有被进一步发展。直至 2012 年,Krizhevsky 提 出了 Alexnet1,并在当时计算机视觉领域的一项竞赛4中取得了第一名,其测试 Top-5 误差 (即给一张图片,如果输出的 5 个预测能猜对它的正确标签,那么就 判定为正确),达到了 15.4%,而第二名则有 26.2%。从网络结构上看,Alexnet 拥 有 5 个卷积层,这使得它对图像特征的表达能力相对于 LeNet 大大增强,并且能 处理更高分辨率的图像。此外,为了解决模型过拟合的问题,Alexnet 对全连接 层加入 Dropout 操作,这在以后成为解决过拟合现象的常用手段。 随后, CNN进入了高速发展的时期。 2013年, Zeller与Fergus提出了ZFnet6, 其本身是Alexnet的改进, 其错误率降低到11.2%, 并且所需训练的样本由Alexnet 的1500万降到130万, 而它的网络结构并未太大变化。 ZFnet的另一个重要贡献在 于, 提出用于可视化网络中的参数与特征的技术DeconvNet6。 2014年, Simonyan 与 Zisserman 提出了 VGG-net2,并达到了 7.3% 的 top-5 误差。与之前的网络结 构相比,VGG-net 并没有引入新的结构与函数,而是大量增多卷积层 (共 19 层卷 积层),使网络变“深” ,其代价则大量的训练时间,可能达到两,三个星期。 而到了 2015 年,Google 提出的 GoogLeNet3与微软提出的 ResNet,大幅刷 新了之前的记录,GoogLeNet 的错误率达到 6.7%(在改进的版本 Inception v3 中, 达到 3.46%),同时 ResNet7达到了 3.6%, 而一般人类的错误率仅在 5% 10% 之间。GoogLeNet 不同于以往的 CNN,由卷积层,全连层等直接顺序叠加,对 于前一层的输入,它并行的进行多种卷积与池化操作,并最后聚合起来,这使 4ILSVRC2012,测试数据集为 ImageNet5 6 中国科学技术大学本科毕业论文 得网络变“宽” 。另一方面,GoogLeNet 舍弃了全连层,并以平均池化层 (Mean Pooling Layer) 代替,这使得需训练的参数大大减少。而 ResNet 则换了一种思路, 它借鉴了残差学习中的思想,提出了残差块的结构,用于拟合输入输出之间的 差。ResNet 即是残差块的大量叠加,并最终达到 152 层。然而作者也指出,单纯 的增加层数只会降低准确率,并更可能引起过拟合,他们尝试了 1202 层的网络, 而其准确率确实不升反降。 7 第二章卷积神经网络 第一节神经网络简介 在介绍神经网络之前, 我们先重新规范化下问题。 给定N组训练数据, xi,yiN i=1, xi是大小为 (n,w,h,c)1的四维张量,一般即代表输入的所有图像,而 yi RM则 是图像的正确标签,M 为类别的数量。现在需要解决的即是一个函数拟合的问 题,即找到 F,在给定的损失函数下,使如下总误差最小: L = 1 N N i=1 loss(F(xi),yi) 在一般的函数拟合问题中,F 所属的函数空间会被限制,如限制到给定最高 次数的多项式空间。而在深度学习领域中,我们则是将 F 限制在所谓“神经网 络函数”空间2,其特征就是 F 是几种预先给定形式的函数的复合。比如,全连 接层是具有如下形式的函数: y = (x W + b) 其中, x,y 为输入输出的二维张量, 形状分别为 (num, n) 与 (num, m), W Rnm,b Rm均是待定参数, 是激活函数3,在这里作用张量,即分别作用到 各个分量上。 可以看出对全连接层而言,W,b 完全确定了函数本身。因此,在优化损失函 数 L 时,所需优化的变量即是所有网络层的参数,这便简化了问题,而且由于激 活函数的导数易于计算,使得在计算机上实现快速求解成为可能。 而损失函数的选择一般是依赖于问题的,比如,对于图像分类问题而言,人 们习惯选择交叉熵 (Cross Entropy) 来作为损失函数,即总误差 L 如下定义: L = 1 N N i=1 ( M j=1 yjlog(F(xi)j) 在得到总误差的完整表达式后,我们就能将它作为目标函数,以数值优化的 1n 代表图像数量,w,h 为图像的宽高,一般要求 w,h 相等,c 则是图像的通道数,如 RGB 图像有 3 个通 道,而灰度图像仅有一个通道 2当然并没有如此的定义,神经网络的内涵如今还在扩充中,并不能严格的定义它 3神经网络中的非线性函数,常见的有 Sigmoid 函数,S(t) =1 1+exp(t) 与 ReLU 函数,f(t) = max(0,t) 8 中国科学技术大学本科毕业论文 方法求得其最小值,更新其参数,这种优化求解,更新参数的过程在深度学习中 即被称为训练。我们将在之后的章节更加详细的讨论关于优化的话题。 第二节CNN 基本概念 卷积神经网络,与一般的神经网络相比,多了卷积层的结构。下面将详细的 介绍卷积神经网络中常见的概念,包括卷积层,池化层及为防止过拟合而进行的 操作等。然后再说明对于目标函数的数值优化方法,并介绍其实现的数值原理, 即误差向后传播算法8(Backward Propagation of Errors)。 一、建立模型 一个简单的 CNN 数学模型的建立,即是各个层函数复合而成,这可以形象 的描述为“将各个层按顺序叠起来” ,为此我们要求每一层输入张量与其上一层 输出张量的形状相同。如 LeNet,它由 2 层卷积层 (后接池化层) 与 2 层全连层组 成。在前面神经网络简介的章节里,我们已经介绍了全连层的概念,下面将介绍 其他在 CNN 中常见的函数 (层)。 卷积层 卷积层的概念与卷积运算密切相关。 对于两个 L2中的函数 f,g 而言, 其卷积运算产生出新的函数按如下定义: f g (t) = R f(x)g(t x) dx 若 f,g 是二维张量,我们同样可以定义离散卷积: f g (x,y) = i,jN(x,y),bdd(f) f(i,j) g(x i,y j) 这里 i,j N(x,y) 表示所有与 (x,y) 相邻且在 f 范围内4的 (i,j)。在图像处 理中,高斯模糊9即应用了离散卷积。一个灰度图像可以自然的看成一个矩阵 f, 然后定义一个方阵 g5,称作卷积核,其值由二维高斯函数确定6,由于有限支集 高斯函数具有低通滤波的特性,因此 f 和 g 做卷积后就能去除 f 的高频信息,如 细节,噪声等。 与高斯模糊类似,卷积层函数也同样定义了自己的卷积核,并进行卷积操作 得到新的张量。然而与前者相比,主要有如下几点不同: 4严格来讲为,(i,j),|x i| 1,|y j| 1 5常见取的大小为 3x3,5x5 等,取决于具体应用,一般长宽为奇数 6去查,与上个 footnote 合并 9 中国科学技术大学本科毕业论文 1. 卷积层可以有多个卷积核,每个卷积核对应输出张量的一个通道 2. 该卷积核的值是未定参数,需要由误差函数优化得到 3. 输入张量有多通道时,将各个通道做卷积操作后的值加起来作为结果 4. 进行卷积操作后,需加入待定偏差参数 b,然后被激活函数作用 为了阐明清楚这些不同,我们写出其表达式。假设输入的一张图像 I,大小 为 (wI, hI, cI),卷积核为 WC= (wC ij)kk,k 为给定的卷积核大小,输出张量 J, 大小为 (wJ, hJ, cJ),则有如下表达式: J(x,y,C) = ( 1c1CI I(,c1) W C (x,y) + bC) 其中,C 的数量由外部给定,WC,bC为待定的参数, 为激活函数。由此 可以看出,卷积层的参数远少于全连层,这使得训练的时间大大减少,并且,卷 积操作只涉及一小片区域,因此卷积层作用的结果更易体现局部特征,见图 2.1。 关于卷积层,还可以调整步长 (strides) 与填充 (padding) 等参数,见3。 图 2.1经 过 卷 积 层, 图 像 的 局 部 特 征 被 提 取 出。 图 转 自 http:/cs231n.github.io/convolutional-networks/ 池化层 池化层 (Pooling Layer),常见的有极大池化层 (Max Pooling) 与平均 池化层 (mean Pooling)。为了说明池化层如何工作,考虑在一个输入的图像上一 个可以滑动的小窗口,大小为 2 2。窗口每滑到一个位置,就拿窗口中的 4 个 数作为输入,输出一个值。对于极大池化层,就是输出其最大值,对于平均池化 层,就是输出 4 个值的平均值。设输入图像为 I,输出图像为 J,则极大池化层的 表达式可以写为: J(x, y) =max i,jW(x,y) I(i,j) 10 中国科学技术大学本科毕业论文 其中,i,j W(x,y) 即由窗口位置决定的所有 (i,j),注意输出图像的尺寸 会由此缩小,缩小的程度取决于窗口的大小与滑动的步长等因素。 池化层的作用大致有两个方面: 1. 对特征进行采样,从而起到降维的作用,使数据规模与参数减少 2. 对特征进行整合,同时保持相对位置,减弱了抽取的特征对于空间位置的 敏感性,从而在一定程度上,使特征具有空间不变性 (如平移,旋转,放缩 等) Softmax 对于分类问题而言,在有限类别下,输入一张图片,希望输出得到 该图片在各个类别的概率。在 CNN 中,Softmax 被用来实现这个功能。假设现 在有 N 个类别,CNN 网络最后由全连层输出一个 N 维的向量 y = (yi)N i=1,经 由 Softmax 输出 N 维向量 z = (zi)N i=1,则满足: zi= eyi N j=1ey j 则易验证 z 非负,分量和为 1,从而为概率分布。 防止过拟合的操作 过拟合现象即在训练集上的误差很小,却在测试集上的 误差变得较大。举例来说,现在要训练一个识别动物的 CNN 模型,但由于训练 时过拟合,导致模型仅在训练集的图片上误差较小,而在新的同种类动物的图片 上测试时,却无法识别。为了防止过拟合现象,常用的手段包括,数据增强 (属 于数据预处理的一部分),误差加入正则项,加入 Dropout 层,以及调整学习速率 (learning rate) 等。这里对于 Dropout 与正则项进行说明。 Dropout Dropout 如字面上意思, 在网络训练更新参数时, 随机“丢弃”一些 参数。为了说明这个过程,考虑输入的向量 x Rn,经过全连层输出数值 y R, 即有: y = (W x + b) 对于有 Dropout 的情况,表达式变为: y = (W (r x) + b), 1 j n, rj Bernoulli(p) 这里 r 的 n 个分量为服从 Bernoulli 分布的独立的随机变量,r x 表示各分量 相乘,p 为 Dropout 层的参数,代表“丢弃元素”的概率,一般取为 0.5。 11 中国科学技术大学本科毕业论文 关于为什么 Dropout 能有效的抑制过拟合,学术界有不同的说法。其中一种 观点认为,对模型添加 Dropout,就相当于同时并存多个模型,并且任何节点均 有与其他节点同时工作的可能,从而增加了模型的一般性。Srivastava et al.10中 对于这种观点有一个有趣的类比, 在自然界里, 加入 Dropout 即类似于有性繁殖, 从父母双方的基因中随机获取并组合起来,而不加入 Dropout 就好像无性繁殖, 直接继承父代的基因。而我们都知道,混合基因更具优势,这是由长时间的自然 选择证明的。 正则项 首先介绍正则项的定义,设模型所有参数为 (wi)N i=1,则含有正则项 的误差可以如下定义: L= L + 2 N i=1 wip Lp (2.1) 在实际应用中,p 常取 1 或 2, 为正则项参数。直观的看,在误差中加入正则 项,惩罚了权值过大的情况。为了说明正则项在抑制过拟合中起到的作用,这里 考虑简单的多项式拟合问题,给定数据点 (xi,yi)5 i=1(数值在合理范围内任取),用 不超过 10 次的多项式去拟合,这里设拟合多项式为 H(x) = 10 i=0wix i,则欲使 下面的目标函数达到最小: L = 5 i=1 (H(xi) yi)2 得到如图 2.2结果,可以看出函数在基本通过给定数据点,然而整体的拟合效果 并不好。这就是一种过拟合,当对误差加入正则项后,即: L= 5 i=1 (H(xi) yi)2+ 2 10 i=0 w2 i 则得到较好的模型拟合效果。直观的讲, 正则项对参数加以限制从而降低了模型 的复杂度 (这里即多项式的次数),从而减少了模型过拟合的可能。对于一般的模 型,如 CNN,正则项的作用被解释为偏差与方差的取舍 (bias-variance tradeoff), 而在贝叶斯理论中,正则项被解释为给了一种先验概率。 二、优化与误差向后传播算法 在前一章节中, 我们介绍了 CNN 中的一些基本概念, 并介绍了构成 CNN 模 型的几种基本函数。当模型构建完成时, 输入图像 x 通过模型, 即可给出预测值, 12 中国科学技术大学本科毕业论文 图 2.2正则项的作用 即分类各类别的概率分布。真实的概率分布 (正确标签概率 1,其他类别概率 0) 与预测的概率分布之间的差距用交叉熵衡量,最终得到要优化的目标函数为: L = 1 N N i=1 ( M j=1 yjlog(F(xi)j) 优化方法 最小化目标函数,传统的思路是使用梯度下降的方法迭代求解,包括最速下 降,共轭梯度法等。在数据量较小时,这些方法是可取的,然而在用深度学习处 理图像的问题中,往往需要大量的数据,这使得求解时每次迭代都非常费时间。 为了克服这一缺点,人们提出了随机梯度下降,该方法每次迭代更新参数时仅用 到一组样本,从而大大减少了计算时间,然而,随之而来的是误差函数剧烈的抖 动难以收敛。Mini-batch 梯度下降法作为两种方法的折中应运而生,它每次迭代 考虑固定数量的样本集,令模型在此样本集上更新参数,从而一定程度上避免了 上述两种方法的缺点。 为了说明这几种方法,设模型所有的参数为 w = wiM i=1,模型为 F = F(x, w),损失函数为 C,数据集为 (xi, yi)N i=1,则误差函数 (暂时不加入正则项) 可写为: L( w) = 1 N N i=1 C(yi, F(xi, w) Batch 梯度下降 即在整个数据集上使用梯度下降法7,写出表达式为: wnew i = wold i lr L wi , L wi = 1 N N i=1 j C(yi,F(xi,wold) Fj Fj wi 7由于速度效率等因素,下降方向统一选为负梯度方向 13 中国科学技术大学本科毕业论文 其中,lr 为迭代步长,在机器学习领域中习惯称为学习速率 (learning rate)。 可以看出当 N 较大时,每次迭代都需要将 N 组数据带入计算一遍,非常费时间。 给出算法伪代码如下: 代码 2.1batch gradient descent 1def bgd(max_iterations, L, lr, data): 2for k in range(max_iterations): 3params = L.all_params() 4grad = calc_gradient(L, data, params) 5 6for i, param in enumerate(params): 7para = para - lr * gradi 随机梯度下降 为了减少计算时间,随机梯度下降每次迭代更新参数时,并 不使用数据集所有的元素,它每次选出一组样本用于更新。表达式如下: wr+1 i = wr i lr L wi , L wi = 1 N j C(yr,F(xr,wr) Fj Fj wi 其中,xr,yr为第 r 次迭代中,从数据集随机选出的一组样本。显而易见,这 极大的减少了每次迭代所用的时间。但是,由于样本之间的差别往往较大,这导 致误差函数每次迭代都会有剧烈的抖动,这意味着我们需要更多的迭代次数以 达到收敛,另一方面,这导致我们被迫使用更小的学习速率,否则可能会极小值 点附近波动而不收敛,而较小的学习速率就导致需要更加多的迭代次数来计算。 算法的伪代码如下: 代码 2.2stochastic gradient descent 1def sgd(max_iterations, L, lr, data): 2for k in range(max_iterations): 3x,y = data.random_select(size=1) 4 5params = L.all_params() 6grad = calc_gradient(L, x, y, params) 7 8for i, param in enumerate(params): 9para = para - lr * gradi Mini-batch 梯度下降 Mini-batch 梯度下降即每次在随机选出固定数量的样本 中,进行参数的更新,可以说 Batch 梯度下降与随机梯度下降均是这种情况的极 端例子。这种方法是前面两种方法的折中,其收敛具有较好的稳定性,同时在计 算方面,可以由 GPU 并行计算,以及分布式系统计算来加速,以减少训练时间。 在实际应用中,batch 的大小一般在 50 256 间取。这里给出算法的伪代码: 14 中国科学技术大学本科毕业论文 代码 2.3mini-batch gradient descent 1def sgd(max_iterations, L, lr, data, batch_size): 2for k in range(max_iterations): 3x,y = data.random_select(size=batch_size) 4 5params = L.all_params() 6grad = calc_gradient(L, x, y, params) 7 8for i, param in enumerate(params): 9para = para - lr * gradi 目前,Mini-batch 梯度下降法在深度学习领域中被广泛应用,然而,仍存在 一些问题需要解决。首先,学习速率该如何设置?正如前面所提,学习速率较大 时,可能会导致误差函数在极小值附近波动而不收敛,但学习速率过小的话,会 导致误差函数收敛缓慢以至于需要更多的迭代次数。因此, 理想的学习速率应依 赖于样本与迭代次数,自适应的改变。现在已经有数种改进的优化方法来解决这 个问题,如 Adagrad11,Adadelta12,Adam13等,详细见其参考文献。 其次,对于非凸误差函数,模型在训练中可能会收敛至次优极小值,这就会 体现在测试误差始终维持在较低水平,而训练误差也无法继续减小。冲量 (mo- mentum)14被提出以解决这个问题, 其思想为参数的更新量与上一次相同时, 增 加其更新量,反之相反时,减少其更新量。其表达式如下: vt= vt1+ L(w), w = w vt 其中,, 为参数。更详细的参考文献。 误差向后传播算法 误差向后传播算法,简称 BP8算法。在前一章节的计算中, 我们得到了参数更新的表达式: wr+1 i = wr i lr L wi 其中,较难计算的是 L wi,即误差函数关于参数的偏导,而 BP 算法就是针 对神经网络,快速高效计算参数偏导的一种数值算法。为了说明这个算法,考虑 一个简单的神经网络,由两层全连层构成,并考虑在一组数据 (x0,y0) 上进行训 练。则网络各层如下: h1= f(W(1)x0+ b(1) h2= f(W(2)h1+ b(2) L = Cost(y,h2) 15 中国科学技术大学本科毕业论文 由链式法则,得到: L W(2) = h2 W(2) L h2 由于 h(i) 2 = f(m (2) j=1 W (2) ij + b(2) i ) ,求导后对 h2 W(2) 与 L W(2) 重新排列,最终化简 得到: L W(2) = ( L h2 f(W (2)h1 + b(2) hT 1 这里, 代表按分量乘。将 L h2 f(W(2)h1+b(2) 记作 (2),则最终得到 L W(2) 的 计算式: L W(2) = (2) hT 1 对于 W(1),经过同样的求导运算,可得出: L W(1) = (W (2)T f(W (1)x0 + b(1) (2) xT 0 则可以定义,(1)= W(2) T f(W(1)x0+ b(1) (2),同样有: L W(1) = (1) hT 0 这里定义 h0= x0。从上述两层的情况可以看出,如果在计算每一层参数的偏导 时,按从后往前的顺序计算,每一层的梯度可以由上一层的计算结果得到。一般 的: (r)= W (r+1)T (r+1) f(zr), r = 1.N 1, (N)= L hN f(zN) zi= W (i)hi1 + b(i) 最后,第 r 层全连层参数更新公式为: W (r) = W (r) lr (r)h(r1) T , i = 1.N 对于卷积层而言,其主要区别在于对卷积参数的偏导与该层输入变量偏导 的计算。设第 r 层仅有一个卷积核,其表达式如下: z(r) ij = a,bw (r) ab h(r1) (ia,jb) h(r) ij = f(z(r) ij ) 16 中国科学技术大学本科毕业论文 这里省略了 a,b 的取值范围,这个可由卷积核本身确定。而算法的关键在于误差 函数对卷积参数与输入的偏导,由直接的微积分得: L w(r) ab = i,j L z(r) ij z(r) ij w(r) ab = i,j L z(r) ij h(r1) ia,jb, L z(r) ij = L h(r) ij h(r) ij z(r) ij = L h(r) ij f(z(r) ij ), L h(r1) i,j = a,b L z(r) i+a,j+b z(r) i+a,j+b h(r1) ij = a,b L z(r) i+a,j+b w(r) ab 对于多个卷积核的情况,有类似的计算,不再赘述。 17 第三章利用 CNN 做图像识别 在使用 CNN 做图像识别的问题中,得到 CNN 模型基本遵循如下的流程。首先 是制作训练数据集与测试数据集, 这包括了图像获取, 预处理, 以及转换为张量。 其次,构建网络模型,添加层函数以及构造误差函数。最后进行模型的训练,即 用模型计算输入的预测值,然后用误差向后传播算法更新参数,得到参数调整好 的模型。 第一节数据获取与预处理 数据获取 利用爬虫可从网上获取批量图片,在我们的问题药盒图片的识别 中,这样的图片可从网上药店获取。对于收集的图片,需进行去重,筛选的操作, 并最后给每一张图片表上标签。 数据预处理 进行数据预处理的目的主要有两个,一是数据标准化,减少由 于图片差异较大导致参数更新有较大波动。二是数据增强, 增强模型处理图像的 鲁棒性,同时,等同于扩充了数据集的数量,有利于防止过拟合。 标准化 对图像进行标准化,即使图像中的所有数据点均值为 0,标准差单位 化, 为 1。 设图像 I 中所有数据点的均值为 mean(包含所有通道), 标准差为 stddev, 则标准化即对任意数据点 x: x = x mean stddev 事实上, 如果不对图像进行标准化, 由于图像之间差异较大, 且其值数量级较大, 可能因此而导致参数的取值范围变大。这一方面可能使学习速率更加难以确定, 另一方面,当参数数量级较大时,可能会使浮点运算误差增大,引起难以预料的 结果。 数据增强 数据增强,在这里即对图像加入噪声,并且随机的进行翻转。当 训练数据量较小时,往往需要数据增强来达到扩充数据的作用。另一方面,对图 像加入噪声可以增强模型的鲁棒性,对于复杂环境下的图像仍然能正确识别出 特征。我们使用了下面三种方法: 1. 对图像进行随机的翻转,沿左右方向 2. 随机改变图像的亮度 18 中国科学技术大学本科毕业论文 3. 随机改变图像的对比度 这里要强调的是,上述的噪声是在从数据集中选出批量 (大小为 mini-batch) 图片后,以随机的参数加上的。也就是说,同一张图片,在不同的批量中被选中 的话,其噪声也是几乎不相同的。 第二节神经网络结构 考虑到时间以及计算资源的因素,本文选择使用结构较为简单的 Alexnet 来 做药盒识别问题。 Alexnet 结构 Alexnet 主要由 5 层卷积层,2 层全连,与最后的 Softmax 层组 成。 图 3.1Alexnet 网络结构 如图 3.1所示,第 1,2,5 层后加入池化层,而第 1 层与第 2 层卷积层后加入了 LRN 层 (未画出)。在第 5 层卷积层后,将四维张量调整大小,变成二维张量作为 下面全连层的输入。最后的两层全连,进行 Dropout 操作。 第一层卷积层中,共 96 个卷积核,大小为 1111,步长为 4,池化层核大小 为 2。第二层卷积层中,共 256 个卷积核,大小为 5 5,步长为 1,池化层核大 小为 2。第三层卷积层中,共 384 个卷积核,大小为 33。第四层卷积层中,共 384 个卷积核, 大小为 33, 步长为 1。第五层卷积核中, 共 256 个卷积核, 大小 为 33,池化层核大小为 2。此时调整输出大小为 (n,m),其中 n 为批量中图片 的数量 (batch size),m 与预设图像大小有关。后接全连层,输出大小为 (n,4096), 第二层全连层输出大小也为 (n,4096),最后接 Softmax 输出数量为类别数。 19 第四章实验 本文使用 tensorflow15深度学习框架来实现构建 Alexnet 的代码,在服务器上进 行网络的训练与测试的计算。服务器的配置是,intel i7,GPU 为 Nvidia Titan X Pascal。训练迭代次数为 8 万到 10 万次,训练所用时间大概为 12 小时。 第一节深度学习框架 本文选用的深度学习框架为 tensorflow, 它是 Google 用于解决深度学习问题 的科学计算库,在目前 Github 上使用人数最多,最流行的深度学习框架。其特 点是将神经网络以计算图的形式构建,从而在多 GPU 核与分布式系统下具有更 强的协作能力。它使用 python 作为程序语言,从而代码简明易懂,并且对于神 经网络具有较灵活的表达能力,这也是我们选择它的原因。 其余常见的深度学习框架还有 Caffe16, Torch17等。 Caffe 的计算效率较高, 但是其代码使用与环境搭建较为困难。Torch 具有较好的可移植性,并且处理动 态结构能力较强,因此适合处理 RNN 类神经网络,并在自然语言处理与语音识 别领域中被广泛应用。 第二节训练 CNN 在实验中,共设置了 5 个厂商的药盒,分别为 999,九芝堂,同仁堂,修正, 云南白药。然后训练数据与测试数据数量如表 4.1 表 4.15 种厂商药物的测试数据与训练数据的图片数 厂商名999九芝堂同仁堂修正云南白药 训练数据677694692678674 测试数据9393978479 注:这里的图片均已经过去重与筛选 在训练 CNN 时,经过测试与选择,我们将初始学习速率设为 0.001,正则项 参数 设为 0.0005,批大小 (batch size) 分别设为 50,60。优化误差函数选用的 20 中国科学技术大学本科毕业论文 方法是 Adam,其机制由 tensorflow 内部实现。 误差函数下降收敛情况如图 4.1。可以看出,在两种批大小中,误差函数均 较快的达到较小误差,而后期波动逐渐减小,趋于平缓。而在每批图片上的准确 率如图 4.2,说明在 1 万次左右时,模型在训练集上的拟合程度已经比较高了。 然而, 真正衡量模型好坏程度的指标应该是其在测试集上的准确率。 在这里, 测试集准确率被定义为测试集上 10 次批次的图片的准确率的平均值,如图 4.3。 可以看出在一定迭代次数后,准确率在一个较高的阶段浮动。 图 4.1深色线是趋势拟合线。绿色批大小为 50,黄色为 60,迭代次数为 80000 次,横坐标为迭代次数,纵坐标为误差值。这里的批误差是指不包含正 则项的模型的误差。此图由 tensorboard(tensorflow 自带的可视化工具) 给 出。 图 4.2深色线是趋势拟合线。绿色批大小为 50,黄色为 60,迭代次数为 80000 次,横坐标为迭代次数,纵坐标为误差值。这里的准确率是指模型在每 批图片上识别正确的比例,它反映了模型在训练集上的拟合程度。此图 由 tensorboard 给出。 21 中国科学技术大学本科毕业论文 图 4.3上图为批大小 50 的准确率图,最高准确率为 92%, 下图为批大小 60 的 准确率图,最高准确率为 89% 22 中国科学技术大
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 岩土基础课课件
- 小龙虾水彩课件
- 输液泵应急预案脚本课件
- 小鸭子学游泳课件
- 商铺租赁合同终止及租赁物使用消防安全协议书范本
- 水稻-养殖一体化土地承包种植合同
- 小鸡家着火了课件
- 小食品调味培训课件模板
- 设备制造行业细分领域高端装备制造业发展策略分析报告
- 贪吃的变色龙课件
- TSZUAVIA 009.1-2019 多旋翼无人机系统实验室环境试验方法 第1部分:通用要求
- GB/T 13993.2-2002通信光缆系列第2部分:核心网用室外光缆
- 综合布线系统-第2版第3章-接续设备
- 五年级上册英语课件-Unit 4《Hobbies》|译林版
- 国际商务文化与礼仪课件
- 人工智能导论课件
- 部编版(人教版)三年级语文上册、下册教材解析及教学建议课件
- 危险化学品安全生产技术培训教程(-)课件
- 质量异常处理单、不合格品审理单
- 中国石油天然气集团公司建设项目其他费用和相关费用的规定
- 道路交通事故现场图绘制PPT讲解(104页)
评论
0/150
提交评论