基于深度学习LeNet5模型的服饰分类方法设计_第1页
基于深度学习LeNet5模型的服饰分类方法设计_第2页
基于深度学习LeNet5模型的服饰分类方法设计_第3页
基于深度学习LeNet5模型的服饰分类方法设计_第4页
基于深度学习LeNet5模型的服饰分类方法设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

湖南商务职业技术学院毕业设计

目录

1引言............................................................1

1.1项目背景.....................................................1

1.2开发环境与工具...............................................2

1.2.1Python简介............................................2

1.2.2TensorFlow简介........................................2

1.2.3LeNet-5的简介.........................................2

1.2.4LeNet-5的网络结构.....................................3

1.2.5Keras简介.............................................3

1.2.6Python第三方库简介....................................4

2需求分析........................................................4

2.1可行性需求分析...............................................4

2.1.1技术可行性.............................................4

2.1.2项目可行性.............................................4

2.2数据集的分析................................................5

2.3关键技术分析................................................5

2.3.1数据集采集技术.........................................5

2.3.2数据集处理技术.........................................5

2.3.3LeNet-5模型技术.......................................6

2.3.4模型的训练与预测.......................................6

3数据集采集......................................................7

3.1服饰数据分析................................................7

3.2数据集需求分析..............................................7

3.3部分数据展示................................................8

4数据集处理......................................................8

4.1切分训练集和测试集..........................................8

4.2浏览数据....................................................9

4.3归一化数据..................................................9

4.4数据预处理..................................................9

I

湖南商务职业技术学院毕业设计

5模型构建及评估分析.............................................10

5.1LeNet-5模型构建............................................10

5.1.1LeNet-5模型的网络结构................................10

5.1.2LeNet-5模型的搭建....................................11

5.2模型编译...................................................12

5.2.1优化器设置............................................12

5.2.2损失函数设置..........................................13

5.3模型的训练与调优...........................................13

5.3.1batch_size设置.......................................13

5.3.2模型训练设置..........................................13

5.4设计效果展示...............................................14

5.4.1模型前端展示..........................................14

5.4.2设计效果展示及分析....................................15

5.4.3模型评估..............................................16

6小结...........................................................17

参考文献...........................................................18

II

湖南商务职业技术学院毕业设计

基于深度学习LeNet5模型的服饰分类方法设计

1引言

随着人们的生活质量变得越来越高,人们的追求已经慢慢的从为了吃饱穿暖

变成了吃好穿好了。但是随之而来的便是种类繁多的食物种类和让人眼花缭乱的

服饰款式给人们带来了极大的不便。有没有什么办法来帮助人们解决这些让人难

以区分的服饰问题呢?我就是利用Lenet-5模型来解决服饰分类的问题。

想解决这个问题就不得不提及近年来人工智能领域中取得的巨大突破的深

度学习了。深度学习在计算机视觉、图像分类、图像识别、多媒体等诸多领域中

都发挥了巨大的作用[1]。而我们的服饰分类问题归根结底就是一个简单的图像分

类问题。例如,商家可以在商品附件摆放摄像头,通过捕捉潜在客户的面部影像

识别客户的喜好,从而帮助商户识别各种商品的受欢迎程度。再如,手写数字识

别,通过事先写好的程序,程序只需对比各种数字事先保存的照片与临场采集的

照片,判断是否为同一数字,即可将烦躁的数字识别出来。

1.1项目背景

随着人们的生活越来越好,我们的衣食住行也变得越来越丰富,这也为我们

的选择提出了不少难题。在大数据时代。随着人工智能变成为了无处不在的技术,

我们便可以使用科技来为我们排忧解难[2]。我们可以将种类繁多的服饰变成不同

的数据,所以我们便利用机器学习进行分布式数据分析,也就是我们学习的计算

机视觉。计算机视觉包括一系列重要任务,如图像分类、定位、图像分割和目标

检测[3]。其中,图像分类可以被认为是最基本的内容。它构成了其他计算机视觉

任务的基础。图像分类还被广泛应用在各个领域内,如人脸识别、手写数字识别、

交通违法捕捉系统、刹车灯检测、计算机视觉等。

而我就是利用了lenet-5模型来针对现实中琳琅满目的服饰进行分析,然后

进行分类。

1

湖南商务职业技术学院毕业设计

1.2开发环境与工具

1.2.1Python简介

Python是一种计算机编程语言,1991年被公开发布。1995年他在弗吉尼亚

州的CNRI继续他在python上的开发,并在那里发布了多个版本。自从python

的发展达到了顶峰[4]。

Python代码都十分简洁,没有像c或c++那么严格的要求,仅仅只需要使用

强制空白符作为缩进即可。这样使得python看起来更加美观简洁。因而使得

Python成为了现在世界上最流行的编程语言之一[5]。

Python常常可以应用于各种领域,是兼容性很强的语言,无论是从编程、

小程序开发、机器人仿生代码,人工智能,云计算还是是一些高科技的远程医疗

和航天飞机控制都可以使用python编程。

1.2.2TensorFlow简介

TensorFlow是人工智能领域的一个重要软件工具,是一个采用计算图

(ComputationalGraph)来计算数值的软件库,它拥有一个全面而灵活的生态

系统[6]。其中包含各种各样的工具和库,可以使人们对于机器学习技术更加简单。

在了解TensorFlow之前我们需要记住一个结论就可以了TensorFlow使用

Tensor来表示数据的。Tensor就是张量,何为张量,通俗易懂的来说张量就是

一个变量,在不同的参考系数下按照提前确认的某种特定的法则进行转换。

TensorFlow和人工智能的关系尤为密切。列如自动识别一个图片里面的人

物是否是你需要的,简单来说就是你百度他的时候,这个模型就可以识别并呈现

反馈给你他的图片;TensorFlow就好像一个功能强大的机床,它可以帮助制造

出不同的产品就是我们的数学模型。这些模型被用于人工智能的各种应用,列如

通过模型判断图片中的物体分别是什么,其中都是依靠各种模型来给出判断的。

1.2.3LeNet-5的简介

LeNet-5诞生于1994年,是最早出现的卷积神经网络之一,也是推动了深

度学习领域发展的重要角色。它常常被认为是CNN的开山之作[7]。它是一种用于

手写数字识别和机器打印字符的非常高效的卷积神经网络。

2

湖南商务职业技术学院毕业设计

1.2.4LeNet-5的网络结构

第一层,我们为了方便称呼理解也叫它C1卷积层。这一层采用卷积层对输

入的数据进行特征提取,利用6个大小为5x5的卷积核生成6个特征图。其步

长为1并且不需要使用扩充值。因此卷积后的特征层为28x28。激活函数

activation为ReLU。

第二层,我们为了方便称呼理解也叫它S2池化层。这一层使用函数,对特

征进行降维处理,效果与池化相同。S2层使用大小为2x2的滤波器池化C1的

特征图。该层共有2x6=12个参数。

第三层,我们为了方便称呼理解叫它C3卷积层,这一层有16给大小为5x

5的卷积核,步长为1且不填充边界。C3层将S2层6个14x14的特征图卷积成

16个10x10的特征图,但是值得注意的是,S2层与C3层的卷积核并不是全连

接的,而是部分连接。

第四层,我们为了方便称呼理解也叫它S4池化层,它与第二层的滤波器相

似,也是2x2的,所以,S4层的特征图池化后,将生成32个5x5的特征图。

第五层,我们为了方便称呼理解叫它C5层,它有120个5x5的卷积核,将

产生120个1x1的特征图,但又因为第五层和第四层是全连接的,所以第五层

参数的个数不能参照C1层来计算,而是参照第三层来计算,但又因为此时是没

有组合的,所以应该是48120个。

第六层,我们为了方便称呼理解叫它F6全连接层。F6全连接层有84个单

元,单元的个数与输入层的设计有关,这一层作为经典的卷积神经网络层,通过

Flatten函数将矩阵拉直成一维向量,再通过Dense函数构建全连接。其中一个

单元都计算输入向量与权值参数的点积并加上偏置参数,然后传给sigmoid函数,

产生该单元的一个状态并传递给输出层[8]。由于C5有120个单元;F6层有84

个单元,每个单元都将容纳120个单元的计算结果。因此,F6层参数的个数为

(120+1)x84=10164。

第七层,我们为了方便称呼理解叫它全连接层(output)。它总共有10个单

元,代表数字0—9,利用函数,将F6层84个单元的输出作为节点的输入xj,计

算欧氏距离。距离越近,结果就越小,意味着识别的样本越符合该节点所代表的

字符。由于该层是全连接层,参数个数为84x10=840。

1.2.5Keras简介

Keras是高级的深度学习链接库,对初学者学习门槛低,可以很容易地建立

3

湖南商务职业技术学院毕业设计

深度学习模型,并且进行训练、预测。Keras的前身是FrançoisChollet为项目

所的编写的代码,在2015年分离成为开源的人工神经网络工具。2016年4月,

Keras在PIPy上发布了第一个稳定版本1.0.0。2017年5月,Keras版本

2.0.0发布。同年6月,Keras版本2.0.5测试性地将Microsoft-CNTK加入后台

选项[9]。

1.2.6Python第三方库简介

TensorFlow库:该库主要是把机器学习中的通用功能封装成了库,并提供

了简易的API,使得我们在构建机器学习系统时不需要再做那些纷繁复杂的数学、

工程工作,能够把主要精力放在自己需要的模型和项目上面。简单来说,

TensorFlow库让机器学习工程从汇编语言时代,上升到了高级语言时代,使得

机器学习这种曾经只存在于高档实验室由高级专业人才才能把玩的高端技术变

成人人都能用的“玩具”[10]。

Matplotlib库:Matplotlib库主要被用于绘制各类可视化图形的命令子库。

2需求分析

2.1可行性需求分析

2.1.1技术可行性

本项目是利用python读取数据,再通过python的第三方库对所获得的数据

进行分类再通过数据展示、数据预处理、构建lenet-5模型与lenet-5模型的编

译与拟合来监控预测精度也就是分类的准确率。

2.1.2项目可行性

近年来,服饰的种类和样式越来越多,在款式、材料、用途、穿着对象、制

作方法等方面各有所不同。在服饰种类繁多的环境下,如何快速准确的识别服饰

的种类也变得尤其重要。本项目主要利用python搭建对服饰进行分类的模型。

利用fashion_mnist数据集中的数据通过卷积池化操作对图像特征的提取进行

分析后再分类,并通过损失函数对模型预测判断其准确性,最后输出。从而让服

饰商品的销售掌握所销售的服饰类别的多少,来更有针对性地了解市场动态,分

4

湖南商务职业技术学院毕业设计

析服饰销售的变化趋势,主动适应市场需求;而对于消费者来说,有利于消费者

选购服饰由于服饰品种繁多所造成的错买。从而解决一些本来可以避免的麻烦。

2.2数据集的分析

由于本次项目使用的fashion_mnist数据集是一个用于机器学习的图像数

据集,再加上通过爬虫获取的数据并处理,这为我们带来了极大的便利。我们只

需要运用TensorFlow深度学习框架,下载并读入数据集即可。但是该数据集与

MNIST手写数字数据集还是有点不一样的,fashion_mnist数据集包含了10个类

别的图像,但是它们都有一个共同点就是它们都是灰度图片,并且都与lenet-5

所要求的32x32的图片大小不同,它们都是28x28的,但是这并不会影响对

模型的应用。

2.3关键技术分析

2.3.1数据集采集技术

数据集获取的反式往往有两种,一种是通过网络爬虫在网上爬取获取的原始

数据,二是通过各种网站下载已经有的数据。

其中网络爬虫又叫网络蜘蛛、网络机器人。它们可以利用脚本来代替人工进

行对网络数据的爬取。然后使用和处理这些信息已对文档进行分类并提供所需要

的数据。他们被广泛应用于网络搜索引擎或其他类似的网站,从而获取或更新这

些网站的内容。

而通过各种网站下载已经有的数据相比网络爬虫在网上爬取获取的原始数

据来说可以说是很简单了,它甚至已经将数据整理好了,只需要你通过相应的代

码直接读取加载使用就行了,比如手写数字识别的mnist数据集和我们所用到的

fashion_mnist数据集,只需要简单的几行代码就可以得到你所需要的数据了。

2.3.2数据集处理技术

在进行图片分类时我们读取的数据不一定会达到我们模型规定的标准,这些

数据可能会包含噪声、缺失值又可能是维度太低或太高,无论遇到哪些问题,这

些数据都将无法直接用于机器学习模型。这个时候我们就需要对得到的数据来进

行处理,我们把这一操作称之为数据预处理。所谓数据预处理就是将所得到的数

据进行一定的操作已到达所需求的标准。这样不仅仅可以让模型继续运行还可以

5

湖南商务职业技术学院毕业设计

确保机器学习模型的准确性和效率。

其实数据预处理的方法主要还是数据清洗、数据转换、数据降噪和增强以及

特征选择。而我们所用到的fashion_mnist数据集已经被统一整理成大小28x

28的图片了,我们就不需要再进行数据清洗了。但当它加载在我们的程序时,

我们得到数据还不满足Tensorflow的数据规范,我们还需要进行一定条件的数

据转换。主要还有两个方面;第一就是维度问题,我们得到的是一个三维的像素

矩阵,但是TensorFlow却是一个四维的,所以我们需要将得到的数据利用

reshape()函数升维。第二就是优化算法,因为我们得到的train_images和

test_images都是整数,最大值是255,为了让后续的算法更加简单,我们需要

将它们的数值都除以255将其变成0-1的数。自此我们所得到的数据就已经满足

tensorFlow的数据格式了,就可以继续执行下去。

2.3.3LeNet-5模型技术

LeNet-5是一个简单的神经网络,它的网络模型虽然很小,但是该有的功能

都有。它的介绍我们已经很熟悉了就不再多介绍了。我们现在主要了解搭建

Lenet-5的方法。首先我们将所需要的数据加载好,然后将得到的数据按照模型

所需要的规范处理好,然后对输入的图像经过卷积、池化、卷积、池化、卷积、

建立全连接层最后输出。

2.3.4模型的训练与预测

其实我们可以将模型看出一个函数,训练模型就是用已经有的数据,来通过

一些方法确定函数的参数,参数确定后的函数就是训练的结果。简单来说你可以

把机器想象成带小孩子,你带他去公园玩,公园的湖里面有鸭子。旁边有鸽子,

他们第一次见不知道是什么,你告诉小孩子那个是鸭子。但突然有一种鸽子飞过

来,你告诉他这个不是鸭子。久而久之,小孩子就会产生认知,这个学习过程就

相当于训练。以后你们再出来玩,再遇到鸽子时,你再问小孩,这个是鸭子吗?

他会回答不是。这个就是预测。而我们就相当于监督者,也可以称之为监督学习。

当然有监督学习就有无监督学习,无监督学习就是小孩子自己通过动物的特征进

行辨识和分类。

6

湖南商务职业技术学院毕业设计

3数据集采集

3.1服饰数据分析

服饰分类有什么用?为什么要服饰分类?这是我需要思考的问题。我国是服

饰大国,也是世界上最大的服饰消费国,并且每年快速增长,存在着极大的市场,

但依然也存在了一些问题,如服饰种类多,相互模仿难以快速区分。尤其是这几

年疫情的结束,我们已经不在是闭门不出了,都需要出门了,所以我们的服饰销

售趋势也越来越高。但我们怎么从让人眼花缭乱的多种服饰选出自己想要的呢?

这个时候我们可以利用知识的力量,通过大数据将服饰图片分类,然后选出自己

想要的。而且服饰图像数据集已经有了,我们也可以导入自带的服饰数据集

fashion_mnist,当然,为了补充数据,我们也可以进行爬虫。

3.2数据集需求分析

打开谷歌浏览器,在搜索栏中输入关键字:服饰图片。具体如下图3-1所示:

图3-1数据网页页面

按F12调出开发者工具,刷新页面,如图3-2所示,然后我们利用全局搜索

工具定位到所需数据位置。通过HTTP库向目标站点发起请求,即发送一个

Request,请求可以包含额外的headers、data等信息,然后等待服务器响应。

如果服务器能正常响应,我们会得到一个Response,这里了包含很多内容,然

7

湖南商务职业技术学院毕业设计

后我们对得到的内容进行解析,筛选出我们需要的东西,然后将数据保存起来。

图3-2分析数据页面

3.3部分数据展示

当我们已经获得了数据集里面的数据时,我们可以通过其中的matplotlib

库来对我们得到的数据展示一下,当然并不是全部展示只需要展示一部分就可以

了,为了方便我们查看,我们先将服饰分类的类别给一个数组,在设置画布大小

通过for循环将16张图片以4x4的布局展示出来。具体代码如下图3-3示:

图3-3展示数据

4数据集处理

4.1切分训练集和测试集

我们通常在处理数据过程中需要把得到的数据集切分为训练集和测试集,在

这里我们使用的数据集使用的方法是直接赋值具体如下图4-1:

8

湖南商务职业技术学院毕业设计

图4-1切分数据集

4.2浏览数据

在训练模型之前我们需要先浏览一下训练数据集的参数。具体如下图4-3所

示:

图4-2浏览数据集

执行代码所得到的结果如图4-3所示,通过代码显示训练集里面有60000个

图像,每个图像由28x28的像素表示:

图4-3数据集结果展示

4.3归一化数据

简而言之,归一化的目的就是使得预处理的数据被限定在一定的范围内(比

如[0,1]或者[-1,1]),从而提高我们网络的训练速度。具体如下图4-4所示:

图4-4归一化数据

4.4数据预处理

由于我们得到的训练数据和测试数据是三维的并不满足TensorFlow规定的

四维数据规范,我们便需要通过reshape()函数对数据集进行升维操作。具体

代码如下图4-5所示:

9

湖南商务职业技术学院毕业设计

图4-5数据预处理

当然不仅仅只有这训练数据和测试数据不满足TensorFlow要求的标准。训

练标签和测试标签也不满足TensorFlow的数据格式,需要通过kears库中的

np_utils函数来把它们变成one-hot的编码形式。具体代码如下图4-6所示:

图4-6转换one-hot编码

5模型构建及评估分析

5.1LeNet-5模型构建

lenet-5模型总共有7层网络,传统上我们不将输入层视为网络层次结构之

一。这七层分别为卷积层、池化层、卷积层、池化层、卷积层、全连接层和输出

层。所以我们只需要一层一层搭建就可以构建好完整的LeNet-5模型。

5.1.1LeNet-5模型的网络结构

如图5-1所示,输入层从名字就能知道这一层是为我们模型输入数据的就不

需要再过多结束了,卷积层,学过深度学习的都知道卷积层是卷积神经网络中最

最重要的组成部件,从卷积神经网络这个名字就可以看到卷积层的重要性了,池

化层也重要,在卷积网络中,两个卷积层中间往往还有一个池化层,池化层可以

非常有效的减小矩阵的大小,这样不仅加了快计算速度,还可以有效的防止过拟

合。全连接层就是将每一个节点都与上一层的所有节点相连,把前面所提取的特

征综合起来。简单来说就是将特征表示整合成一个值。输出层它作为神经网络的

最后一层,它的主要作用就是将神经网络对输入数据的处理结果输出。尤其要注

10

湖南商务职业技术学院毕业设计

意的是它不像卷积层和池化层那样一个模型里面有很多个,它是唯一的,也就是

说每一个神经网络只能有一个输出层。

图5–1LeNet-5网络模型

5.1.2LeNet-5模型的搭建

我们经过了上面了了解我们已经知道了LeNet-5的结构有七层具体搭建的

方法如下图5-2所示:

图5-2搭建LeNet-5

自此,LeNet-5各层就已经梳理完成了,运行的模型概要图如下图5-3所示:

11

湖南商务职业技术学院毕业设计

图5–3模型搭建完成

5.2模型编译

5.2.1优化器设置

优化器就是深度学习中用来计算模型训练和模型输出的。主要是为了让其最

接近最优值,目前来说所有的深度学习都需要设置优化器,我们最常用的就是基

于梯度下降的优化器,在这里我们选择的是Adam优化器,如图5-4所示,它使

用起来非常方便,梯度下降速度快就是容易在最优值附件震荡,这也是我们训练

模型总是会卡在某些部分的原因。

图5–4优化器、损失函数设置

12

湖南商务职业技术学院毕业设计

5.2.2损失函数设置

损失函数是衡量模型预测值与真实值差距的一种方法,选择一个好的损失函

数对模型预测的好坏有重要影响。而服饰分类问题归根结底还是一个多分类问题,

而在分类问题中最常用的就是交叉熵损失函数,在这里我们选择的损失函数是

sparse_categorical_crossentropy,如图5-4所示,它是一种用于多分类问题

的损失函数,这种损失函数会将整数标签映射到模型的输出结果上,并计算模型

预测值与真实值之间的差距。

5.3模型的训练与调优

5.3.1batch_size设置

在模型训练中我们经常看到epoch和batch_size,其中epoch表示训练集

中全部样本的训练次数,而batch_size表示一次训练中样本的个数,通过不断

的测试我们将epoch设置为10,batch_size设置为60。如图5-5所示。

图5-5batch-size设置

5.3.2模型训练设置

而模型的训练需要通过model.flt()函数来实现,函数中的train_images

和train_labels分别是训练集的图像数据和标签,epochs表示训练的次数,

validation_data是用来验证模型准确率的数据。代码如下图5-6所示:

图5-6训练模型

运行之后可以得到随着每增加一次的训练精确度越来越高,如下图5-6所示:

13

湖南商务职业技术学院毕业设计

图5-7训练结果

5.4设计效果展示

5.4.1模型前端展示

当我们的程序设计检验完成后,为了方便我们使用,我们需要通过前端将其

展现出来,具体如下图5-8所示,当我们需要对遇到的服饰进行分类时,只需要

点击上传图片,其实就是选择图片所在的路径来确定要分类的图片,当图片上传

成功后点击开始识别,此时系统会比对计算模型的特征然后将结果输出。

图5-8前端窗口

14

湖南商务职业技术学院毕业设计

5.4.2设计效果展示及分析

首先我们点击上传图片按钮上传一张图片,此时会将我们选择的图片展示在

图片位置框内,然后点击开始识别按钮,经过短暂的运算如图5-9所示。最后会

将识别结果输出。如图5-10所示:

图5-9python运行过程

图5-10运行结果

通过上图5-9可以看出,我们的模型会将我们上传的图片提取特征进行对比

分析,然后输出概率最大的类别。从而将服装的类别输出。

15

湖南商务职业技术学院毕业设计

5.4.3模型评估

当我们训练完模型之后需要通过modek.evaluate()函数来对我们的模型

进行评估。代码实现如下图5-10所示:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论