基于卷积神经网络的多类商品分类算法研究毕业论文
2020-02-17 21:59:30
摘 要
网络购物在人们生活中变得越来越重要,如何更好地为线上商家和用户提供友好智能的搜索系统已成为网站开发者研究的对象。传统的搜索系统多基于文字,这样既费时费力又难以展现多种特征,故选择深度学习领域中的卷积神经网络来实现商品图片的分类。
本文研究了如何选取并运用两种卷积神经网络结构来实现10类商品图片的分类,算法的总体思路是先进行图片的收集,运用Keras深度学习框架研究商品种类识别方法,训练出自动识别模型,使用softmax算法进行分类识别。本文首先了解了国内外研究现状,并对卷积神经网络领域的知识做了具体描述。在实验部分选择了VGG19和ResNet50两种合适的且表现优异的网络模型进行训练,选择了合适的值对参数进行初始化,运用了Dropout、momentum等方法得到了分类模型,经测试发现基本可以对10类商品图片进行精确分类。
关键词:商品图片分类;机器学习;卷积神经网络
Abstract
Online shopping has become more and more important in people's lives, how to better provide online merchants and users with friendly and intelligent search system has become the object of website developers Research. Traditional search system is based on text, so it is time-consuming and difficult to show a variety of characteristics, so choose the depth of learning in the field of convolution neural network to achieve the classification of commodity pictures.
This paper studies how to select and use two kinds of network structures to realize the classification of 10 kinds of commodity pictures, the overall idea of the algorithm is to collect pictures first, and use Keras depth learning framework to study commodity type recognition methods, train automatic recognition model, and use Softmax algorithm for classification and recognition. This paper first understands the current research situation at home and abroad, and gives a specific description of the knowledge of convolution neural network field. In the experimental part, two suitable and excellent network models of VGG19 and ResNet50 were selected for training, the appropriate values were selected to initialize the parameters, and the classification models were obtained by using Dropout, momentum and other methods. After testing, it was found that the picture of 10 kinds of goods can be accurately classified.
Key Words:commodity picture classification; machine learning; convolution neural network
目 录
第1章 绪论 1
1.1研究目的及意义 1
1.2国内外研究现状 1
1.3论文内容安排 2
第2章 设计的相关原理 4
2.1传统机器学习 4
2.1.1传统机器学习简介 4
2.1.2相关术语 5
2.1.3神经网络的发展 5
2.1.4误差反向传播算法 5
2.2卷积神经网络 7
2.2.1卷积神经网络简介 7
2.2.2相关概念 8
2.2.3卷积层 8
2.2.4池化层 9
2.2.5全连接层 9
2.2.6 Dropout 10
2.2.7激活函数 10
2.3深度学习框架TensorFlow 12
第3章 系统的设计与实现 13
3.1系统设计 13
3.2实验使用模型 14
3.2.1 ResNet网络简介 14
3.2.2 VGG网络简介 15
3.3实验内容 16
3.3.1数据准备及处理 16
3.3.2参数相关内容 17
3.3.3实验测试 17
3.4实验分析 17
第4章 总结与展望 22
参考文献 23
致 谢 24
第1章 绪论
1.1研究目的及意义
近几年来电子商务高速发展,基于其便捷、灵活、种类齐全等特点,越来越多的人选择网络购物,并向智能化、普遍化的方向发展。目前购物网站的搜索系统多是基于文字的,商家需要先对商品进行分类并添加文字标注,消费者通过关键字来寻找所需要的商品。但是关键字很难反映商品的整体特征,存在消费者搜索到的商品与预期不符合的问题。并且人工标注主要依靠人力,存在过程繁琐、效率低等问题。现在人工智能技术高速发展,因此基于图片特征的商品分类和搜索有广阔的研究前景。
网络购物在日常生活中有着重要的地位,京东商城、唯品会、苏宁易购等网站应运而生。人们可以随时通过电子设备选购物品,图片传达的信息多且非常直观明了,也可以减少人工进行文字标注的繁琐工作。所以采用把图片和文本相结合的方法进行分类,会让消费者体验到更好的查找效果。因此我们应该去研究如何开发利用图像检索,以方便人们的生活,同时也更好地利用人工智能相关的知识和技术。目前有很多种图像分析的方法都是针对内容的,比如根据颜色和形状特征这两类信息来分类,或者根据图案的样式来分类等。但是这些方法都需要通过人工提取图像特征再进行分类,过程仍然比较繁琐。
基于这些问题我们提出卷积神经网络分类模型,这是深度学习领域中的一种高效算法,前期只需要简单的预处理和特征提取,可以让模型提取图片的特征进行学习,最后在输入同类图片时进行无误地分类。训练模型的过程我们是看不到的,我们需要根据相关指标进行参数和结构优化。在图像的理解领域中,卷积神经网络比普通的神经网络更好地适应结构,在提取特征的时候同步进行分类。本网络先进行卷积操作,然后进入非线性函数矫正,对图像下采样能降低处理量,之后使用softmax分类。
1.2国内外研究现状
图像分类是将不同类别的目标图像进行分类的技术,分类的依据是图像中不同的特征,过程是机器对图像进行定量的评估和分析。本文主要研究卷积神经网络这种算法。卷积神经网络(Convolutional Neural Netwok, CNN)是深度学习中常用的网络模型。传统技术容错能力较差、运行缓慢且泛化能力很弱,局部连接和权值共享等是CNN的核心思想,它们使模型简单化,权重减少,从而减弱了训练的难度[1]。CNN被广泛应用到图像识别和语音分析中,如图像问答、照片风格迁移、歌曲合成等。
深度学习模仿人脑,包括有监督、无监督的学习方式。卷积神经网络应用有监督的学习方式,由多层感知机发展而来。1962年,Hubel和Wiesel提出了感受野的概念。1989年,Lecun Y等提出反向传播算法,持续推动卷积神经网络的研究。1998年Lecun Y等人提出的LeNet-5是最经典的,手写数字的识别便是采用这种算法。2012年,Krizhev sky A等首次应用卷积神经网络,将CNN用于LSVRC-12竞赛中,加深了CNN模型的深度同时结合ReLU dropout技术,他们在ImageNet大规模视觉识别挑战赛中获得了第一名,使用的模型实现了最优分类(也称为AlexNet模型),从此大赛的主要算法变成了卷积神经网络[2]。AlexNet模型包括5个卷积层和2个全连接层。在此之前,图像识别的错误率一直都很高,但是在应用CNN及其变形方法后取得了显著的成效[3]。之后还出现了VGG模型和GoogLeNet模型,由于VGG和 GoogLeNet的层数较多,故网络结构庞大,训练过程耗费时间多,VGG模型中的各种参数需要调整、优化。2014年,Ross Girshick等人提出了RCNN检测方法,但RCNN速度很慢以致很少使用。2015年,Ross Girshick通过改进提出了Fast RCNN,速度和精度得到提升。2015年,任少卿等人提出了Faster RCNN进一步改进使用区域建议网络进行区域建议。2016年,刘伟等人提出的SSD检测速度很快。2017年,何凯明等人提出了Mask RCNN实现了实例集的分割与检测。
Mishkin等人对比了各种CNN网络在Imagenet比赛取得的成就以及它们所用的参数,总结了一些优化建议如下:(1)深度学习与数据集大小紧密相关,训练模型时应保证数据量足够多或满足最小值;(2)批量尺寸常取128或256,实际应用时应该根据GPU性能来灵活调整;(3)最大值池化之和以及平均池化在下采样时表现较好;(4)激励函数应该选用有BN的ReLU非线性函数或没有BN的指数线性单元;(5)对于学习率的衰减,线性学习率衰减方法比平方根、平方衰减等方法效果好;(6)若输入图像尺寸较小,使用小的卷积核或小的滑动步长也可以收集到大量特征从而取得不错的效果。
这一系列新模型的提出与改进已经取得了很好的分类效果,在多个领域得到应用。这些成就得益于研究人员的不断改进如非线性函数的优化,同时数据集的大量增多以及计算机处理能力大幅提升,使得训练过程更加高效,使得模型层次可以增多。在现阶段以及未来的一段时间内,深度学习的研究会继续深入,一定会有更加完善的算法被提出以更好地服务我们的生活。
1.3论文内容安排
本文在介绍了卷积神经网络的基础上,重点研究了基于ResNet模型和VGG模型的学习方法,并实现了10类商品图片的归类。本文各章的主要安排如下:
第一章:绪论。主要介绍了不少于10类的商品图片的分类的目的及意义,简要概括了图片分类中卷积神经网络算法的研究现状及相关成果,简要概括了一些提高模型性能的改进方法,并列出了所研究的内容和对结构的安排。
第二章:卷积神经网络综述。主要介绍了CNN的相关概念和结构组成,包括卷积层、池化层、全连接层、激活函数等概念及作用,介绍了经典算法,比较了常用的图片分类可用的模型以及特征提取的方法,为第三章的内容提供了一定的理论依据。
第三章:基于卷积神经网络的商品图片分类。具体介绍了ResNet和VGG网络结构,通过调节学习率、dropout等参数,选取了10类商品的图片进行了分类生成模型,对比了两种模型的测试正确率和损失函数等。
第四章:总结与展望。总结了本文的研究内容,分析了本文所用算法的欠缺,同时对以后的研究进行了展望。
第2章 设计的相关原理
2.1传统机器学习
2.1.1传统机器学习简介
机器学习可以让算法变得更加智能,机器学习算法可以自行学习所提供数据的特征。学习是较复杂的活动,在学习的过程中必定存在推理的过程。所以根据所用推理的多少可以归纳出4种主要的学习方法分别为:使用实例法、演绎法、机械法、以及类推法。学习时使用大量的推理会收到很好的学习效果,从而可以提高系统的性能。
在理论的层面上,机器学习是通过自行学习来实现靠人为编程不能完成的功能,这也属于一种学习方法。从实践的意义上来说,机器学习是一种让计算机不再靠各种指令而是使用数据来工作,然后训练出所需的模型,并使用模型实现预测功能的一种方法。机器学习是为了模仿人脑思考问题、总结经验的历程,将此运用到对数据的处理之中。通过计算机得出的模型能够以近似于人脑的方式灵活解决许多复杂的问题。机器学习中的“训练”与“预测”的过程可以分别对应到人类思考过程中的“总结”和“推测”的过程,提取有用的特征,然后根据已有的实例,构造从特征到标签的映射。由此我们可以看出,机器学习的学习思考过程并不复杂,只是对人类在不断学习得到成长的过程的模拟。机器学习与人类思考过程类比图如图2.1所示。
图2.1 机器学习与人类思考学习对比
机器学习与数学息息相关,如在自然界与生产生活中,有很多相互独立的随机因素在影响着一些现象。当各个因素的影响较微小时,那么产生的总体影响基本上是正态分布的。又如导数可以在维度空间描述趋势,如从三维空间降到二维平面。机器学习有许多经典算法,如:随机森林算法、最邻近规则分类算法、Kmeans算法等。部分算法采用监督学习的方法,部分采用无监督学习的方法。
随着大数据概念的兴起,人们发现可以把大数据和机器学习很好地结合起来进行研究,大数据可以为机器学习提供庞大的数据集,进而不断地提高模型的精确性[4]。同时,因为机器学习的不断发展,巨大的数据又有了新的应用。在实际生活中,我们可以根据不断收集的数据来发现到一定的规律,然后利用机器学习使这一规律服务于生产生活中来提高工作效率或提高效益。
2.1.2相关术语
现在将机器学习里常用的概念列举如下。
训练集:又称训练样例,是用于进行训练模型、产生模型或算法的数据集。
测试集:又称测试样例,是对已经完成学习的模型或算法进行验证的数据集。
验证集:是用来调整参数的数据集。
有监督学习:是一种训练集有类别标记的学习方式。
无监督学习:是一种训练集无类别标记的学习方式。
半监督学习:是一种训练集包括有类别和无类别标记的学习方式。
特征向量:是属性的集合,通常用一个向量来表示,附属于一个实例。
标记:是实例所属类别的标记。
分类:预测一个标签(是离散的),目标标记为类别型的数据,属于有监督学习。
回归:预测一个数量(是连续的),目标标记为连续型的数值,属于有监督学习。
聚类:属于无监督学习。
2.1.3神经网络的发展
神经网络(又称人工神经网络, ANN)算法在上世纪80年代在机器学习领域非常流行,神经网络起源于人们对大脑工作机理的研究。早期学者们通过研究猫的视觉分析发现,机器学习的机理实际上就是分解与整合,其在视觉与语音的识别上效果明显。神经网络随着BP算法的出现得以飞快发展,神经网络的发展在90年代陷入困境期,神经网络的训练在BP算法的加速下还是很难进行。直到2006年,Geoffrey Hinton在科学杂志上论证了两个观点:(1)深度的神经网络通过学习得到的特征更有助于分类的实现,深度神经网络包含多个隐藏层;(2)逐层地进行初始化可以有效地解决训练中的难度。这些观点的提出给出了解决计算难度的方法指导,同时也更加证明了深层神经网络算法的优越性。神经网络不仅能够用来解决分类的问题,同时也能够处理回归的问题。为了节省训练的时间,我们通常在将特征向量传入输入层时,先进行标准化操作到0和1之间。
2.1.4误差反向传播算法
BP算法即误差反向传播算法由Rumelhart提出,该算法包括信号的前向传播和误差的反向回传,使多层网络的训练得以进行下去。多层前馈网络也被称为BP网络,因为它常使用BP算法来进行训练。对于正向传播过程,实例的数据进入输入层,经过各个隐藏层的加工处理,通过输出层得到预测值,比较预测值和真实值。如果得到实际结果与预期输出不符,则把误差反向回传做一系列处理。对于反向传播过程,将输出误差反向回传经过各个隐藏层,并把误差平均分配给各层所有的单元,使用最小的误差来更新各个连接上的权重,即进行权值调整。BP算法网络结构如图2.2所示。BP算法示意图如图2.3所示。
输入层 隐藏层 输出层
图2.2 BP算法网络结构
实际输出
输入
输出
W
-
训练学习
图2.3 BP算法示意图
首先,对权重和偏向进行随机初始化时,可以选取-1到1之间,或在-0.5到0.5之间的数值,同时给每个单元分配一个偏向值。基于一个神经网络,将输入的训练实例输入到输入层并开始向前传送,某一层上单元的值为:
(2.1)
其中,为权重值,为上一层单元的值,为偏向值。
然后使用激活方程(sigmoid方程)进行非线性转化,结果为该层的输出值,同时也是下一层的输入值:
(2.2)
在比较输出值和实际标记后,计算出误差并进行反向传送。误差的计算公式为:
(2.3)
其中,为真实值。
对于隐藏层有:
(2.4)
BP算法采用梯度爬行的方法,应用目标的负梯度反向进行参数的更新。对于(2.4)算得的误差给出学习率(l)控制迭代更新的步长,学习率可以在0到1内进行适当地取值。太大的话会产生振荡,太小的话收敛很慢。权重更新为:
(2.5)
(2.6)
偏向更新为:
(2.7)
(2.8)
在完成一次更新以后,接着使用新的权值和偏向值进行下一次计算。反向信号的正向和反向传播周而复始地进行,网络不停地进行学习[5]。终止条件有:更新后的权重比某个阈值小;进行预测得到的错误率比某个阈值小;已经达到预设一定的循环次数。满足以上一种情况,算法即完成更新。
标准BP算法有一些缺陷:(1)属于贪婪算法,无法查证产生的最优解是局部的还是全局的;(2)学习效率低下,需要进行大量地训练;(3)没有完善的理论来指导选择隐节点;(4)出现过拟合现象。针对这些缺陷,有学者提出了加入陡度因子、自适应调整学习速率增加动量项等改进措施。
2.2卷积神经网络
2.2.1卷积神经网络简介
卷积神经网络(Convolutional Neural Netwoks, CNN)的本质是多层感知机,是深度学习中得到成功应用的常用的模型。CNN的连接数比规模相同的基本型前馈神经网络少,故所用的参数也较少,在取得使用较少的时间即可得到不错的结果。CNN可以在没有数学表达关系的情况下,自行对输入、输出进行学习与总结,从而在两者之间建立起联系。在多次训练之后,网络就能够把输入映射到输出。
CNN是采用监督学习方式的多层网络,其中的卷积层和最大池化层用来提取输入对象的特征。各层上有许多二维平面,所有平面上都分布了神经元,这些同平面的神经元的权值共享。CNN前部分结构包括卷积层及池化层,全连接层在后面部分。前部分结构将提取到的特征传给首个全连接层,输出层完成分类工作,常用的分类算法有:softmax回归、决策树、K邻近算法等。
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示: