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

下载本文档

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

文档简介

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

目录

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

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

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

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

1.2.2Tensorflow简介..................................................................................2

1.2.3Pycharm简介........................................................................................3

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

2需求分析....................................................................................................................5

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

2.2数据集采集功能分析..................................................................................7

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

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

2.3.2数据集可视化技术...............................................................................8

2.3.3卷积神经网络原理...............................................................................8

2.3.4Web框架技术(Flask/Django)........................................................9

3数据采集....................................................................................................................9

3.1数据集需求分析..........................................................................................9

3.2数据集获取分析........................................................................................11

3.3编程实现....................................................................................................12

4数据集处理..............................................................................................................12

4.1数据采集....................................................................................................13

4.2数据预处理................................................................................................13

4.3切分训练集和测试集................................................................................14

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

5.1模型构建....................................................................................................15

5.1.1模型网络结构.....................................................................................16

5.1.2模型训练.............................................................................................18

I

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

5.2模型编译....................................................................................................19

5.2.1优化器设置.........................................................................................19

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

5.3模型训练与调优........................................................................................20

5.3.1模型训练设置.....................................................................................20

5.3.2学习率调优.........................................................................................21

5.3.3batch_size设置................................................................................21

5.4模型部署....................................................................................................21

5.4.1系统前端设计.....................................................................................21

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

5.4.3模型评估.............................................................................................24

6小结..........................................................................................................................25

参考资料.........................................................................................................................27

II

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

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

1引言

现在世界是这样一个知识多元化发展的信息社会,目前的关于图像人工智

能机器学习涉及最多广泛的话题就是图像的分类及识别,图像的分类也是未来

计算机视觉分析和大规模数字图像智能处理技术的最后一个核心基本技术问题。

传统上的图像自动分类提取方法需要通过人工设计自动提取出图像特征,而一

些基于计算机深度机器学习模型的智能图像特征分类提取方法已经能够做到自

动识别提取图像特征,其中卷积神经网络学习(CNN)法近年来已取得出了十分惊

人的成绩。卷积神经网络(ConvolutionNeuralNetwork,CNN)的发展始于20世

纪80年代。在此之前,处理图像数据通常使用到的都是全连接的神经网络,然

而没有全连接层参数的太多,直接可能导致图像计算的速度大大变得慢,而且

也容易导致产生高过的拟合问题。因此,有效的图像处理还需要具有更丰富合

理结构的神经网络结构。随着数值计算效率得到巨大提升,CNN处理数字图像数

据的巨大潜能被充分发现挖掘。2012年,基于CNN的Alexnet模型在国际

ImageNet图像分类大赛中也一举就获得到了第一名,模型精度领先世界同类第

二名11个%。接着,VGG、GoogLeNet、ResNet也相继被提出。此后,对CNN的

深入一直在持续。而这个服饰分类方法设计是图像分类识别的一个分支,所运

用的就是CNN模型[1]。

1.1项目背景

随着人类现代的科技生活的水平不断在进步,网购平台规模的不断的增加,

用户已经可以直接通过手机端在各种网络在线购物的平台网站上去购买一些衣

物,就像需要挑选一些衣服一般也基本就是按照分类去选择,还有就是随着现

在社会文明的在不断在进步,人类生存的一些心理压力也是不断在扩大,所以

网上也有很多一些相关的一些休闲娱乐小游戏的运用人群也就变得的不断在广

泛,受众人群已经从一些女性,小孩变成的现在更加的大众化,所以在网络时

代,服饰的分类及识别能力也随之变得更重要复杂起来的了[2]。服装类别的智

能处理是目前提高用户体验的一个重要方面。随着神经网络的不断发展,神经

网络在图像分类领域得到了广泛的应用。因此,人们将神经网络应用于服装分

类,所提出的神经网络通常提取图像特征并将其用于分类。

1

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

近年来,深度学习技术的不断发展为图像分类与识别领域带来了良好的技

术和应用。其中卷积神经网络(CNN)已成为图像分类和识别中应用最广泛的模型

之一,它能有效的处理图片数据,对图像分类识别的计算量有所减少,而且在

对服饰分类识别的发展中,CNN模型是比较适用的。

我的毕业设计就是针对市面上出现了许多的休闲小游戏都是关于分类的小

游戏,其中最为普遍的就是服饰分类和穿搭小游戏,它在刚刚发展的时候更受

女性与小孩的喜爱,现在受众面更为广泛,基本上大众化。现在也普遍用于购

物网上进行服饰的分类与选择。总之在网络时代受众面还是比较广的。

1.2开发环境与工具

1.2.1Python简介

Python是一种高级编程语言,它属于面向对象的语言,不像C语言那样死

板,它是一种高级的编程语言。它可以编写服务器端程序、Web应用程序、游

戏和其他类似的程序。它也可以用于数据科学、人工智能、机器学习等领域。

它是一个解释性的、简洁的、面向对象的编程语言,是一种高级解释性语言,

可以在各种平台上运行。Python的设计理念是,通过提供易于使用和可扩展的

函数,使程序开发变得更加容易。Python基于对象编程的概念,使你可以像其

他编程语言一样,在你的应用程序中定义对象和属性,同时保持对象的独立性。

这种理念使Python被用于一些简单、功能有限的程序开发工作中。

Python是一个解释性语言,其语法非常简单,具有极强的可读性。Python

用模块来组织代码,这使得它非常容易阅读和使用。Python有很多强大的库和

工具可供使用。因此,可以使用这些库和工具来构建自己的程序[3]。

1.2.2Tensorflow简介

TensorFlow是一种面向深度学习的编程语言,它能够用于各种大规模数据

的分析,训练和部署。使用TensorFlow的开发者能够轻松地构建复杂的模型,

并将它们应用到各种环境中。下面我们就来介绍一下TensorFlow是如何工作的。

TensorFlow是一个开源框架,它允许用户编写和调试自己的深度学习模型,

并且它提供了一个端到端的编程模型。用户可以使用它构建自己的神经网络模

型,然后在深度学习环境中运行它。它的模块有推理模块、训练模块、模型管

理和调参、数据管理和标注、API(应用程序接口)、其中推理模块提供了一个

可视化平台,可以帮助用户以可视化方式快速构建自己的深度学习模型。用户

2

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

可以在这个平台上查看自己构建的神经网络模型,并根据需要对它们进行微调

和优化。另外,推理模块还提供了一系列工具和API,以帮助用户构建和调参深

度学习模型。训练模块提供了一个训练环境,让用户能够轻松地将自己编写的

模型部署到生产环境中。在这个环境中,用户可以使用TensorFlow提供的API

对深度学习模型进行训练。训练模块还提供了一个自动推理环境,用户可以通

过该环境在生产环境中使用模型来训练和部署自己的神经网络。此外,用户还

可以在这个自动推理环境中使用一些预训练好的模型来进行微调和优化[4]。

TensorFlow提供了一个功能强大的标注工具(DataFrame),该工具允许用

户对已有的标注进行检查和修改,以确保它们符合要求。

TensorFlow还提供了一个用于计算标注结果的机器学习库(MLLibrary),

该库支持各种主流模型(如卷积神经网络CNN)和多种监督学习方法(如梯度下

降和Adam等)[5]。用户可以使用TensorFlow来构建深度学习模型,然后将其

部署到生产环境中。在部署深度学习模型之前,用户需要先将其部署到生产环

境中。用户可以使用TensorFlow的API对深度学习模型进行操作,包括数据处

理,参数设置和调参等。具体的API包括:数据处理(DataProcessing):用

户可以在TensorFlow中处理一些常规的数据操作,如添加,删除和修改数据等。

参数设置(ParametersSetting):用户可以设置深度学习模型的一些关键参数,

例如激活函数、权重、偏置和隐藏层节点等[6]。

1.2.3Pycharm简介

Pycharm是一个面向对象的开发环境,提供了一系列功能强大的面向对象编

程(OOP)库,用于数据分析、图形图像处理和机器学习等应用程序。Pycharm

的目标是支持高效的代码编写和部署,同时保持与Windows和Linux环境的良

好兼容性[7]。

它是一款功能强大、性能卓越、界面友好、易于使用的Python库,它不仅

支持面向对象编程(OOP),而且还提供了很多工具和高级特性。在很多情况下,

它可以直接取代其他库,如Perl、Matlab、Mathematica、R等。

它还可以通过在其基础上构建应用程序来简化开发过程,为开发人员提供

了许多强大的工具。与其他库相比,它具有以下一些优点:封装了大量有用的

功能,如GUI控件和数据结构、UML模型等。提供了很多强大的工具和函数,

如NumPy、SciPy和Scikit-learn等。通过使用可视化工具,如VisualStudio

Code,可以很容易地将Python代码转换为可视化界面。提供了丰富的库,包括

PyTorch和TensorFlow等。提供了大量的API和接口,包括pip、wiki等。

3

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

支持多种数据源,如Matlab、Python和R等。支持多种数据结构和算法。

1.2.4Python第三方库简介

Matplotlib:它是Python的2D绘图库,在不同平台上生成不同打印格式和

交互式环境中生成的告质量图形。它作用于Python脚本、Python和IPython

shell、Jupyter、web应用程序服务器和四组图形用户界面的工具包。它进行可

视化和数据分析是很适用的。这里用了matplotlib中的pyplot函数[8]。

NumPy:它是Python中的一个科学计算库,为我们提供了高效的数组操作

和广泛的数学函数,它是在科学计算、数据分析和机器学习等领域中广泛使用

的工具。它的基本使用方法包括数组的创建、数组的切片、数组的索引和运算

等,它有广播、聚合、通用函数等高级功能[9]。

Tensorflow:是一个由GoogleArtificialIntelligence(GoogleBrain)

开发并维护的深度学习平台。它提供了一个可扩展的编程环境,可以用于构建

各种类型的机器学习模型。它具有高效的计算能力和易于使用的API,使得深度

学习变得更加便捷和高效。它是一个基于图形计算的数值计算库,能够实现机

器学习任务中的各种算法,包括神经网络、决策树、SVM等,并能够在GPU上进

行高效计算。此外,TensorFlow还具有跨平台、分布式计算和自动求导等特点,

为机器学习的开发者提供了更高效、更方便的工具。这里用的是GPU[10]。

Keras:是一种高层次的神经网络API,它的设计目的是使得深度学习模型

的创建和训练变得更加快速、简单和灵活。它也支持多种深度学习模型,包括

卷积神经网络、循环神经网络等,并且可以方便地与其他深度学习框架配合使

用。除此之外,它还具有易于使用、文档齐全、社区活跃等优势,因此受到了

广泛的欢迎和应用[11]。

datasets:是Keras的数据集项目用到的数据集就来自这里。

Layers:它用于CNN模型中的池化层、卷积层、输出层、全连接层的操作。

Models:这里用于模型的打印、编译、训练、预测操作。

Flask:提供了轻量级的Web应用框架,支持各种类型的Web开发任务,如

路由、模板、数据库等。

Requests:提供方便的HTTP请求和响应功能,支持不同类型的HTTP请求

和响应。

BeautifulSoup:提供了方便的HTML和XML解析功能,支持各种类型的

HTML和XML文档解析和处理。

总之,Python拥有丰富的第三方库生态系统,这些库可以帮助开发者更加

4

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

高效地开发和部署应用程序,提高开发效率和代码质量。

2需求分析

2.1可行性需求分析

1.技术可行性

Python编程语言是指一种易于读者理解、动态扩展的面向对象脚本语言。

被广泛应用于科学计算、Web开发、数据分析等领域。这让它对于爬虫领域有着

巨大的优势,是当前爬虫的首选语言。本项目是使用python通过python第三

方库进行数据采集、数据分析和数据可视化显示[12]。

PyCharm是一个Python的脚本语言,它的目的是为了让用户更好地使用

Python。因为我们的程序员并不知道如何编写和解释Python代码,所以他们需

要一个工具来帮助他们。它就是这样一个工具,它能帮助我们在Python的环境

中开发代码。此外,IDE提供了一些高级功能,以支持Django框架下的专业web

开发。pycham是一款对人操作十分友好的软件,利用它对数据可视化进行展示

和分析也十分便捷[13]。

卷积神经网络-CNN最擅长图像处理。它的灵感来源于人类视觉神经系统。

它可以有效地将数据量大的图像降维为少量,有效地保留图像特征,并符合图

像处理的原则。

2.项目可行性

现在市面上出现了许多的休闲小游戏都是关于分类的小游戏,其中最为普

遍的就是服饰分类和穿搭小游戏,它更受女生喜爱。现在也普遍用于购物网上

进行服饰的分类与选择。所以这个项目受众面很广。而且由于社会网络的发达,

大家娱乐需求,生活购买需求大多都在网上进行,图像分类识别需求增大,其

中服饰分类识别也是提升网友体验重要的一环,目前基于深度学习的CNN模型

更适用于服饰分类识别方法设计,与以往的模型设计技术相比,CNN模型可以有

效地将数据量大的图像降维为数据量小的图像,有效地保留图像特征,并符合

图像处理的原则。

CNN模型的搭建使用到的框架是按照Python的语言进行设计出来的,

Python中拥有许多丰富的且十分强大易用的框架库,比如经常要被运用到的库

Matplotlib、Tensorflow、NumPy等,这些框架库都对于CNN模型的搭建都提供

到了一些很好的数据和准备等工作,且Python在人工智能两大技术范畴领域内

的机器学习、神经网络、深度机器学习技术等许多方面目前都是最为主流的编

5

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

程语言,得到最为广泛深入的广泛支持开发和商业应用。不应该有太多基于

Python的web开发框架,比如著名的Django、Tornado和Flask。Python+Django

架构具有广泛易于使用开发的应用程序、快速和可靠的应用的开发及执行的速

度和相对于较高低程度的学习的障碍,可以很轻松地帮助到您来实现并快速可

靠的构建一个可用的web应用服务。Python框架已经非常成功地支持了目前各

种的主流网络协议,因此它会更快经常也会更好被人们广泛的用于编写大型服

务器软件程序和用来构建大型Web网络爬虫。Twisted第三方库支持异步的网络

爬虫编程的工具和支持当前大多数流行的标准网络协议(包括客户端和服务器),

并同时还提供出了其它许多可以广泛用于编写高性能服务器软件代码的工具[14]。

总之,基于深度学习CNN模型的服饰分类识别的方法设计是可以实现的,且

有运用价值。

3.操作可行性

基于CNN模型的服饰分类识别模型的操作可行性很高,主要体现在以下几

个方面:

(1)编程语言:Python目前是目前在深度机器语义学习及分析的领域里面是

目前最流行的用的一种编程语言之一,且以其的语法通俗易懂,对于各种网络

协议语言的支持等方面来说也已经算是的很完善的一种完善。

(2)深度学习框架:TensorFlow:Google的深度学习框架,pyplot可视

化很方便,数据和模型并行化好,速度快。Keras:对于模型的训练中我们有许

多我们已经训练搭建好过的模型,我们完全可以利用对一些已有搭建的模型来

进行一些优化修改而得到符合我们真正想要搭建的模型,从而达到提高我们模

型进行搭建过程和模型训练中的训练效率[15]。另外,当发现我们学习的数据不

足的时候,使用迁移式学习的思想也是其中一个很好的学习想法。

(3)数据预处理:数据预处理是深度学习中非常重要的一步,但是可以使

用Python中的库TensorFlow和NumPy库等进行处理,非常方便。

(4)训练和测试:在Keras中,可以使用GPU加速训练过程,提高训练速

度。此外,Keras提供了丰富的可视化工具,可以对训练和测试过程进行实时监

控和调整。

(5)模型优化:Keras中的Models模块提供了多种优化算法和正则化方法,

可以方便地进行模型优化和调整。

总之,基于CNN深度学习模型的服装分类和识别方法对于设计和操作可行

性非常实用。它们可以有效地将大数据减少到小数据,保持图像特性,并符合

图像处理原理。它们也是深度学习领域最常用的技术之一。

6

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

2.2数据集采集功能分析

该项目的数据集来自天猫上搜索的“衣服”等关键词,通过爬虫技术爬取

了衣服图片然后分类为训练集、测试集、验证集,数据清洗后得到70000条记

录。用于进行训练是对比准确率。

主要获得了以下信息:T恤/上衣,裤子,套头衫,连衣裙,外套,凉鞋,

衬衫,运动鞋,包,短靴。主要通过这些数据来分析对比识别的准确率来确认

模型的可靠性,以及模型的可行性。同时通过对比去说明此项目的市场是很广泛

的。

2.3关键技术分析

2.3.1数据采集技术

获取数据集我用到是网络爬虫技术,这里用到的库主要有time,requests,

urllib,BeautifulSoup等。网络爬虫大致分为四类:

通用的网络爬虫:又通常称为全网网络爬虫,其特性在采集网络数据时,

由部分种子URL直接扩展到覆盖整个网络的网站全部页面,主要被应用于网络

搜索引擎数据信息的快速采集。这种网络爬虫要求有更广泛深度的网络数据快

速收集技术和持续大量的网络数据的收集。它同样对数据信息采集的速度准确

性和数据存储的空间安全性提出了同样很高程度的严格要求,通常还需要深入

的遍历网站资源。例如,Apache的一个子项目Nutch便是一个简单高效易用的

通用分布式网络爬虫框架,其主要使用分布式爬虫的方式去采集网络数据。[16]

聚焦网络爬虫:也有人称为主题网络爬虫,指用户有可选择针对性地来收集

那些与其预先被定义好的网络主题相关资源的页面。与其它通用类网络爬虫工

具相比,以专注聚焦于网络爬虫工具为开发重点提供的针对网络资源所收集到

的相关资源内容较少,主要被用于满足一些特定网络人群中对某个特定的领域

信息搜索的需求。在聚焦网络爬虫中,需要制定过滤策略,过滤所有与给定搜

索主题内容无关内容的页面[16]。

增量网络爬虫:它是指对下载的网页采用增量更新,对只收集新的或修改过

的网页的下载网页使用增量更新。增量网络爬虫技术可以确保在某一定的程度

意义上能确保被扫描过的网站页面信息尽可能最新,并且在历史服务器上已收

集信息的网站页面也不需要再次重复地收集。增量网络爬虫技术避免了重复的

收集网站数据,并还可以进一步缩短搜索时间消耗和搜索空间资源消耗。针对

7

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

于小规模或者特定类型网站上的实时数据信息采集,在设计网络实时爬虫库时,

可预先构建了一个能基于时间戳来判断数据库是否继续更新数据的实时数据库,

通过预先定义一个时间戳数据序列,确定该程序是否需要在更新实时数据库信

息中含有的时间戳数据信息序列的同时再继续收集该时间戳信息[16]。

深度网络爬虫:这主要是基于Deep的Web爬虫,大多数的内容信息无法简

单通过静态链接方式获得,只有在向用户提交表单信息后用户才能成功访问网

页[16]。

这里用到的是深度网络爬虫技术。

2.3.2数据集可视化技术

图2-1Matplotlib中的pyplot函数

2.3.3卷积神经网络原理

卷积神经网络系统技术(ConvolutionalNeuralNetworks,简称CNN)一般是

指一种深度反馈式的神经网络系统技术(FeedforwardNeuralNetworks)的技术,

其的最大技术特点有之一主要是它具有局部连接、权重分享技术特点等。它在

目前也是中国最为完善具有一定国际代表性价值的复杂图像深度机器学习技术

算法框架之一,擅长并适用于各类与复杂的图像视觉分割技术相关专业领域复

杂的深度图像机器学习算法技术问题,特别是对尤其是在复杂的图像视觉任务

识别,如对复杂的图像的分类,目标对象的检测及识别等方面的复杂各种深度

图像视觉任务,如对复杂的图像视觉的分割,有取得很强显著的效果的算法技

术改进,是在国内的目前的使用范围最为应用广泛的机器学习模型框架是之一。

2.3.4Web框架技术(Flask/Django)

flask是一个轻量级的、高可扩展的、异步的Java服务框架,它可以在任

何平台上使用,并且在不同平台之间无缝集成。Flask提供了一系列高效的功能

和特性,如:

8

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

可伸缩性:可配置的API,以满足开发人员对应用程序的不同需求。Flask

提供了灵活且健壮的API,可以很容易地实现API之间的数据共享和集成。另外,

Flask还支持水平扩展,可以根据业务需求定制API[17]。

高并发:可通过一个统一的方式来处理和管理大量请求。Flask支持高并发,

包括高并发请求(每个请求都有一个不同的id)和并发操作(在请求之间插入

或删除数据)[17]。

高性能:Flask是一个基于SpringBoot的框架,使用Spring提供的MVC

模式进行设计。Flask是一个轻量级应用程序框架,它可以无缝地集成到所有平

台上,并且不需要任何特殊技术就可以实现高性能[17]。

可重用性:通过在Flask中使用SpringBoot的方式来设计、开发和部署

应用程序是一种很好的方法。Flask提供了一组标准组件,它们可以为其他应用

程序提供一个通用模型来使用[18]。

安全性:Flask提供了完整的安全功能和配置选项,以保护用户数据和应

用程序免受网络攻击、SQL注入和其他恶意攻击[18]。

Flask可以作为一个成熟且可靠的应用程序框架来使用,而且它非常易于使

用。在一些情况下,它可能是一个很好的解决方案来处理大量数据、复杂业务

逻辑和安全问题[18]。

总的来说,Flask是一个功能强大且易于使用的PythonWeb框架,适合小

型Web应用程序的开发。它的特征是灵活、可扩展,非常适合学习PythonWeb

开发。

3数据采集

3.1数据集需求分析

打开谷歌浏览器,首先登录天猫网,在搜索栏中输入关键字:“衣服”等

关键字,点击搜索,观察图3-1,其中URL为:

/search?fromTmallRedirect=true&tab=mall&q=%E8%A1

%A3%E6%9C%8D&spm=a211oj.23553758.a2227oh.d100;如图3-1所示,然后点击

页面下方的分页按钮,同时观察URL,发现URL有所变化。

/search?fromTmallRedirect=true&tab=mall&q=%E8%A1

%A3%E6%9C%8D&spm=a211oj.23553758.a2227oh.d100&bcoffset=0&p4ppushleft

=%2C44&s=88&ntoffset=-3;如图3-2所示。

9

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

图3-1数据网址页面

图3-2数据网址刷新页面

按F12键调用开发工具并刷新页面,如图3-2所示。利用全局搜索工具定

位所需数据位置,点击开发者工具上面的Headers字段,分析这是个什么请求,

如图3-3。

图3-3查找图片信息

10

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

3.2数据集获取分析

定位到我们所需要的数据所在的位置,复制第一张图的src,得到图片的地

址,然后鼠标右键点击检查选择network。刷新网页:让本网页数据内容重新加

载一遍然后搜索数据来源:复制关键参数,直接进行搜索如图3-4,接下来我们

分析他是以什么形式的数据存放的。显然这是一个json数据。

图3-4分析数据类型页面

从天猫网爬取图片,输入衣服等关键字,爬取前六十页数据,如图3-5所

示:

图3-5爬取的图片集

11

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

3.3编程实现

先通过CNN模型构建思维导图知道我们构建模型过程中需要哪些库来完成

模型的构建,然后导入所需库像主要的pyplot库用于进行可视化展示和数据分

析展示,TensorFlow库主要用于模型训练,Keras库中的所有内部库基本都用

于模型的构建。

图3-6导入所需库页面

4数据集处理

该数据集处理主要是数据预处理,主要是对数据进行清洗、转换、过滤、

合并等相关操作,通常包括以下几个方面:

1、归一化:在0-1范围内规范图像像素可以使模型学习更稳定,并加快模

型学习和训练速度。

2、数据集类型的划分:将训练数据集类型划分为训练数据集、验证练习数

据集和测试训练数据集。训练集一般仅用于模型设计的技能训练,验证集通常

则是用于有效进行的模型的设计性能优化性能测试验证和模型设计性能参数性

能优化的调整,测试集一般可用于有效的评估模型的设计人员的设计泛化学习

的能力[19]。

通过以上的数据预处理步骤,可以使得图像数据适合用于基于CNN模型的

服饰分类识别模型的训练和优化。

4.1数据采集

数据集信息来源于天猫官微网通过网络及爬虫查询等爬虫技术平台所随机

采集,第三章图3-5已经将数据展示出来了,这里就不在展示了。

12

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

4.2数据预处理

数据预处理是数据分析或数据挖掘开始前的准备工作,也是数据分析或数

据挖掘中的必要部分,它主要通过一系列的方法来处理“脏”数据、精准地抽

取数据、调整数据的格式,从而得到一组符合准确、完整、简洁等标准的高质

量数据,保证该数据能更好地服务于数据分析或数据挖掘工作。这里主要是调

整数据的格式[20]。

图4-1数据清洗准备页面

图4-2数据素像值归一化处理

4.3切分训练集和测试集

通过keras中的datasets模块引入fashion_mnist数据集同时可切分出

训练数据集和测试数据集,train_images数组和train_labels数组都是一个训

练据集,即模型中用于学习训练的数据。Test_images数组和test_labels数组

也会常常被用来直接对模型集进行测试,如下图所示:

图4-3通过keras中的datasets模块引入

图4-4数据集切分展示

13

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

图4-5查看训练集和测试集的图片数量

图4-6切分数据集后训练集与测试集的图片数量结果展示

图4-7训练集标签值

图4-8测试集标签值

通过图4-7和图4-8可以查看数据集的标签值是0-9的数值,以此来标记

每一类数据然后进行分类,也就是将每一类分别归为0-9的类别,好进行后续

的数据清洗好模型训练。

图4-9类的标签值

14

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

5模型构建及评估分析

5.1模型构建

以下是一种基于CNN模型的服装分类识别方法的模型构建设计:

我们目前使用到的CNN网络总共可分为了8大层,包括输入图层、第一层

卷积图层、第二层池化图层、第三层卷积图层、第四层全池化输入图层、第五

层全卷积图层、第六层全平面图层、第七层全连接输出图层和第八层输出连接

图层,分别的展示框图如下:

1、输入层:它的通常作用是保存输入信号到卷积神经网络之间的二维原始

波形数据或预处理波形数据。它也可以说是三维图像视觉识别图像处理领域中

的一种原始的三维彩色图像,也有可以看成是二维音频信号识别图像领域中经

傅立叶变换滤波后生成的原始二维波形数据,甚至有可以认为是二维自然语言

智能处理语言中的一维表达式中所示出来的句子向量。输入的矩阵是指一张图

片,可以直接通过预处理软件将这个图片转换为一个固定像素大小的矩阵[21],

如28x28

2、卷积层:它一般通常用之于对输入数据层结构中原始输入数据矩阵的特

征加以提取,通过卷积核矩阵可对原始输入数据结构中矩阵的隐式及相关性问

题进行数学抽象。卷积核运算的抽象原理实际上就是关于两个像素矩阵间的点

积乘方和求和方法的一个数学抽象运算。一个像素矩阵本身是一个输入数据矩

阵,而其中另一个像素矩阵自身则恰好是个卷积核层(滤波器或特征矩阵)。所

最终获得的结果可以被直接表示为从原始图像样本中被提取到的某些特定或局

部特征[21]。

3、池化层:它在实际上一般又可应地称其作为一种坡降采样层模型

(DownsamplingLayer)的模型,作用功能之一也是由于可以自动对感受采样域内

几乎所有样本的全部输出的特征参数信息进行自动筛选,提取出来的该感受采

样区域数据集中的一个或最具某种典型代表性数据的全部输入的特征,可以最

大较小有效的限度上地自动减少全部输出的特征数据信息的采样层规模,从而

能大幅度的减少该模型实现池所需被采样对象的参数数量。根据池输出操作参

数的类型池通常也被进一步分为最大池化、平均和最大池化和最小求和池化,

他们均是指分别可以通过提取池感受域内对象的最大、平均和最小求和总特征

值而输出作为池化输出[21]。最常用的是MaxPooling。

4、全连接层:它主要只用于负责分析或总结从卷积神经网络深度机器学习

15

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

的过程模型中所被提取来的一组多维特征,将对应其一组多维特征的一维输入

特征映射输出对应到其二维特征的映射输出,以高维来分别表示样本批次,低

的一二阶特征通常用来分别对应于任务目标[21]。

5、输出层:它是模型的最后一层,常常使用SoftMax函数进行目标内容分

类。

6、Flatten层:它一般用来直接将二维输入化为"压平",也即就是可以把

多维的二维输入直接一维化,通常用之于从卷积层直接过渡到三维全连接层[21]。

7、损失函数:它在模型训练过程中,在模型训练过程中,有必要选择适当

的损失函数进行优化。常见的熵损失函数一般包括交叉熵损失函数和均方误差

损失函数等[21]。

8、优化器:它是通常可以通过自动地根据损失函数的梯度分布来自动实时

的更新训练模型数据上的参数,常被常用于之应用于提高模型训练系统的整体

训练工作的整体效率程度和提高数据准确性。常用优化器类型的优化选择,比

如随机梯度下降优化器(SGD)、Adam等。这里使用的是Adam[21]。

通过以上的模型构建,可以基本完成基于CNN模型的服饰分类识别的模型

设计了。

5.1.1模型网络结构

我们的构建中的CNN网络共可以被分为8层,包括输入层、第一层卷积层、

第二层池化层、第三层卷积层、第四层池化层、第五层卷积层、第六层全flatten

层、第七层全连接层、第八层全输出层如上图5-1和图5-2代码所示

图5-1模型网络构建结构展示

16

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

图5-2模型构建代码展示

通过图5-2可以了解到CNN模型构建的一个过程每一层都打上了备注信息,

可以清楚知道每一层是什么层,例如第一层为卷积层,第二层为池化层等。图

中每一层的层数是通过不断实验确定的,达到了最佳效果,当然由于时间原因

实验的次数还是比较少的,可能最佳效果还能不断的提高,后面有时间会继续

提高模型的准确率的。

图5-3打印网络结构

图5-3是打印模型的网络结构,可以更直观的看到模型构建的情况和效果。

17

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

图5-4网络结构展示

通过图5-4的模型网络结构展示图可以看出整个模型的内部结构,参数是

不断增大的,因为层数不断增大,这种无规则的增大对提高准确率比较适合,

当然因为实验次数不够,提高准确率的方法肯定是可以无止境的实验出来的,

实验提高准确率的方式还有很多。

5.1.2模型训练

图5-5模型训练代码

图5-5的模型训练是模型构建比较重要的一环,数据中往往会有异常值和

缺失值的存在,而模型训练就是检查这些异常值和缺失值的存在,了解它们的

分布可以有利于我们找到一个更好的模型。同时迭代次数对模型也会造成影响,

所以要找到适合的迭代次数,通过不断实训迭代次数设置为8比较合适,当我

减少或者增加时,模型的准确率会有所降低。

18

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

图5-6模型训练过程展示

通过图5-6可以看出模型训练的还不错,准确率达到了84%,一开始构建模

型时卷积层的深度分别为32、32、64,其准确率为80%。后来调整为20、32、44

时准确率提高了2%再调整全连接的层数为2层时又提高了1%,最后调整第一层

全连接的深度为54,第二层为12时,准确率达到了预期值84%。

5.2模型编译

5.2.1优化器设置

优化器的作用是更新模型中的参数,使得损失函数达到最小值。常见的优

化器包括SGD、Adam、Adagrad等,这里我使用的优化算法是Adam优化器,adam

有默认的学习率,所以不用写lr大小,作用:自适应动态调整学习率。

图5-7模型优化器设置

19

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

5.2.2损失函数设置

损失函数是测量模型预测值和实际值之间的差异,从而指导模型优化过程。

通常的损失函数包括交叉熵、均方差等。在线性回归问题分析中,MSE二次平均

误差通常用作损失函数,在分类回归问题分析方法中,交叉熵差通常用作损失

函数。交叉熵损失函数是通常用以代替均次方根误差损失函数和Sigmoid激活

损失函数的组合[22]。

因此,这里将交叉熵设置为损失函数,交叉熵可以测量同一随机变量中两

种不同概率分布之间的差异,并用实际概率分布和预测概率分布之间的机器学

习来表示。交叉熵值越低,模型的预测越好。

图5-8模型损失函数设置

5.3模型训练与调优

5.3.1模型训练设置

图5-9迭代次数的改变

这里模型训练上没有什么可以进行调优的除了迭代次数上,但是这里的迭

代次数当我把它增加为10或者12时,准确率降低,当减少为6或者7时准确

率依旧降低,经过不断尝试迭代次数为8时效果最佳。

20

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

5.3.2学习率调优

图5-10查看默认学习率

由于adam有默认的学习率为0.001,所以不用写lr大小,作用:自适应动

态调整学习率。所以这里我们不进行lr的调优设置。

5.3.3batch_size设置

设置batch_size的最终设计目的主要还是想要让训练模型可以实现在训

练的整个过程中能够通过为每次的训练选择批量化的训练数据来自动对训练系

统数据进行分析处理。直观程度上容易理解也就是对下一次的训练集所能进行

重新选取的样本数。BatchSize数值的取值和大小主要的影响到模型的性能优

化的难易程度大小和模型渲染速度。同时还因为其数值会更直接有效地会影响

到占用你的GPU空间的内存资源的正常的使用时间等的情况,假如你使用的GPU

所占用的内存空间并不大,该数值也要最好是尽量的设置的小一点[23]。卷积神

经网络(CNN)的输入是张量(Tensor)形式的,包含了图像高度、宽度及颜色

信息。不需要输入batch_size。所以这里我们不设置batch_size。

5.4模型部署

5.4.1系统前端设计

功能设计如图5-11所示:

1、点击上传图片,在图片集中的测试集中选择一张测试图;

2、点击开始检测,如何自动进行识别检测;

3、等待检测结果,可以出准确率达到预期结果84%,也就是分类识别成功。

4、点击保存结果,自此检测结束。

21

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

图5-11功能展示

5.4.2设计效果展示及分析

进行模型预测,选用测试集的第二张图片进行测试,以下是测试结果如

图5-12所示:

图5-12测试图

22

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

图5-13数据展示页面

通过图5-13可以看出预测效果还不错达到了83%。

图5-14模型预测代码展示

温馨提示

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

评论

0/150

提交评论