版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
垃圾分类应用系统的设计与实现案例目录TOC\o"1-3"\h\u23514垃圾分类应用系统的设计与实现案例 1275081.1系统总体设计 1284391.2数据库设计 2146691.3功能模块的设计与实现 3220141.3.1硬件端设计与实现 3240321.3.2服务器端设计与实现 9318801.3.3客户端设计与实现 121.1系统总体设计本垃圾分类系统大致包含了以下三个部分的内容:硬件终端,个人用户端和服务器端。在系统总体设计的原则方面,保持了多个模块各自独立,使其都专注于实现自身的功能,减少联系,这样方便人员对系统各部分的维护,以及系统逻辑实现上的开发。系统的总体设计如下图5-1所示:图5-1系统总体设计图Fig.5-1SystemOverallDesignDrawing硬件终端层面我们设计了一个智能垃圾桶,该设备主要包括了一些用于识别垃圾和系统自身所需的硬件部分,比如仓门开关、摄像头等等,还具备了一些用于垃圾分类方面的功能,对垃圾图像的拍照及上传功能,反馈结果接收功能,图像质量模糊检测功能以及定位功能。在个人客户端层面,我们采用小程序的设计,因为根据现如今人们对手机应用程序的使用情况来看,小程序越来越有可能超越传统的APP方式的趋势,它不仅不需要特地下载安装,还仅在微信中查找之后就可以直接使用。客户端层面主要提供的功能包括个人中心,垃圾图像的扫描与传输,结果的接收与展示,垃圾桶位置查询,垃圾分类相关新闻知识的展示,每月各类垃圾数量的统计展示。服务器端最主要的是利用垃圾分类算法模型进行垃圾类别的检测与判断,其主要提供的功能有:对硬件终端和个人客户端拍摄的垃圾图像的接收,垃圾分类算法模型检测功能,结果发送功能,垃圾桶位置的统计功能,各用户各种类垃圾的数量统计功能和其他功能(如模型更新等)。1.2数据库设计数据库方面主要采用MySQL数据库,该数据库是一种关系型数据库,我们使用其可以将数据保存在不同的表中,可以让程序员有针对性的去维护数据库。MySQL数据库主要有以下几个优点:1、开源,可以允许广大开发者借鉴其代码来做扩展,有利于集思广益,完善产品优缺点;2、支持大型数据库,能够处理达到千万级以上的数据;3、采用SQL语言,更容易操作,并且与传统关系型数据库的操作语言并无太大差异,对使用者友好,容易上手;4、开发者可以自主实现数据库的改装,分享开源成果。结合上述优点,本论文决定使用MySQL数据库来保存和处理所要使用到的表。在垃圾分类系统的开发中,会涉及以下几个表,下面将一一介绍:(1)个人用户信息表该表用于记录个人用户的信息,主要包括用户ID,昵称,姓名,性别和手机号,另外还加入了该用户所投垃圾的数量,所投垃圾的种类,该表的字段设计如下表5-1所示:表5-1个人用户信息表Tab.5-1PersonalUserInformationTable字段数据类型主键字段描述User_idUser_nicknameUser_nameUser_numberGarbage_type_numGarbage_numIntStringStringIntIntInt是否否否否否用户ID昵称姓名手机号所投垃圾的种类数所投垃圾的数量(2)垃圾桶位置信息表该表用于记录垃圾桶的位置定位信息,包括垃圾桶的ID,IP地址,垃圾桶位置详细信息等,该表的字段设计如下表5-2所示:表5-2垃圾桶位置信息表Tab.5-2TrashBinLocationInformationTable字段数据类型主键字段描述Trashbin_idInt是垃圾桶IDTrashbin_IP_addressString否垃圾桶IP地址Trashbin_regionString否桶位置详细信息Trashbin_StoragetimeDate否桶放置时间Trashbin_administratorString否管理负责人(3)垃圾种类表该表主要用于记录各种垃圾的相关信息,包括垃圾的ID,垃圾物品名称,垃圾所属类别等,该表的字段设计如下表5-3所示:表5-3垃圾种类表Tab.5-3GarbageTypesTable字段数据类型主键字段描述Garbage_idInt是垃圾物品的IDGarbage_nameString否垃圾物品的名称Garbage_typeString否垃圾的所属类别(4)垃圾分类新闻信息表该表用于记录垃圾分类相关的新闻信息资讯,包括新闻编号,标题,作者,发布人,发布时间,新闻内容。该表的字段设计如下表5-4所示:表5-4垃圾分类新闻资讯表Tab.5-4GarbageClassificationNewsInformationSheet字段数据类型主键字段描述News_idInt是新闻IDNews_titleString否新闻标题News_authorString否作者News_pubisherString否发布人News_pubdateString否发布时间News_contentString否新闻内容1.3功能模块的设计与实现1.3.1硬件端设计与实现1、硬件端设计硬件终端层面我们设计了一个智能的垃圾桶,其是人们用来进行垃圾分类的主要部件,人们可以用它来判断垃圾的种类,并且对垃圾进行针对性的投放。从硬件方面来讲,主要包括了以下几个部分:垃圾桶:设置了四个垃圾种类的垃圾桶,分别是可回收垃圾、厨余垃圾、有害垃圾和其他垃圾四种类别的垃圾桶,材料为高密度聚乙烯,具有抗热、阻燃、耐腐蚀和可回收的优点;数据收发模块:主要用来对拍摄到的垃圾图片通过网络上传至服务器端,并且接收服务器端返回的分类结果。使用ESP8266模块,其能够将数据转换为TCP数据包通过网络发送到服务器,也可以接收数据包并进行解析。门仓开关:用于实现垃圾桶的仓门的打开与关闭,根据系统返回的分类结果开启对应种类垃圾桶的仓门,开启20秒后自动关闭,也可人为手动打开,方便人们直接手动投放;电源系统:为垃圾桶提供电力能源,保持垃圾桶内部系统的正常运作;声音系统:用于提示用户将垃圾放在摄像头的有效拍摄范围下,提示系统在垃圾种类识别过程中进行的每一个步骤名称,如“请将垃圾放入蓝色方框内”、“系统正在识别”,提示用户所判别的垃圾所属种类的信息,如:“该垃圾属于XX垃圾,仓门已打开,请您投放到该垃圾桶中”;摄像头:用于对垃圾进行拍照,分辨率为640×640,并且对于图像模糊的情况可以自动调焦,使之清晰。另外环绕摄像头设置了灯光照明装置,用于改善光线不足的条件下,图像的拍摄质量;放置台:标有蓝色框线区域的放置台,该区域在摄像头拍摄的有效面积范围之内;GPS定位:用于获得垃圾桶位置,其使用北斗模块SKG09D进行定位,该模块具有精度高,功耗低,体积小,能够在-40℃至85℃的环境下满足使用,采用北斗卫星进行定位,并且可以将位置信息通过数据收发模块传递到服务器上,由于垃圾桶并不是经常变换位置,因此上传位置的频率会低一些,为每6小时上传一次。智能垃圾桶能够提供的功能及其运行流程主要包括以下几点:垃圾分类与提示功能该功能主要进行垃圾图像的采集,与服务器进行数据的传输,对分类结果的处理。主要流程设计是:首先由智能垃圾桶的摄像头对放置台上蓝色区域内的垃圾进行拍照,得到该垃圾的图片,之后将图片利用数据收发模块通过网络上传至服务器端,服务端判断垃圾的种类并将结果返回,垃圾桶对结果进行接收,根据结果中垃圾的类型调用仓门系统,开启对应的垃圾桶仓门,并利用声音系统提示用户“该垃圾属于XX垃圾,仓门已打开,请您投放到该垃圾桶中”。图像的质量检测与调整因为受光线和人为因素等的影响,通常垃圾桶摄像头所拍摄到的图像质量并不符合理想状况,有时会出现模糊、暗淡等情况,不利于后续服务端的垃圾分类模型的判断,因此我们有必要设置一项对图像质量的检测调整功能。首先判断图像的质量是否符合要求,对不符合要求的拍摄结果,可以采取调整摄像头对焦,打开摄像头自带的灯光照明,利用这些功能来改善拍摄质量。2、硬件端实现在实现方面,智能垃圾桶的实现效果图如下图5-2所示:a)垃圾桶和摄像头b)声音提示喇叭 c)ESP8266数据收发模块 d)SKG09D定位模块图5-2智能垃圾桶实现效果图Fig.5-2EffectPictureofIntelligentTrashBin在功能的逻辑代码方面,-基于以上两项功能中的部分代码实现,我们进行以下介绍:硬件终端与服务器的通信过程(图片传输)在这部分我们主要利用了网络传输的TCP协议,TCP协议应用于广域网,能够在不同的网络之间实现跨越式的通信传输,同时能够保证传输的安全性,保证两个端点在传输过程中信息准确不丢失。其特点包括以下几个:面向连接,以此构建传输通道;传输可靠,TCP将数据分为多个长度适当的报文段,将数据包进行编号并按顺序进行传送,在接收时会回复发送端一个确认信息,若发送端没有收到确认通知,则说明接收端没有收到该数据,在一定的时间内会重新发送,以此实现信息传递的安全。综上我们可以知道,使用该协议能够符合我们的实现需要。在代码实现手段方面,我们使用Java自身的套接字(Socket)编程进行传输,首先在服务端设置套接字对象,之后将该对象绑定到IP地址上并指定端口号,启动连接线程,等待硬件端连接。在硬件端,智能垃圾桶在摄像头拍摄到垃圾图像后,调用数据收发模块,创建硬件端套接字对象,此对象将服务端的IP地址与端口进行绑定,启动连接线程,按照IP地址和端口号与服务端进行连接。在连接成功之后,硬件端调用图片传输对象来进行图片的传输,服务端调用垃圾分类结果反馈对象进行分类结果的传输。传输完成之后,关闭连接。在这个过程中的主要代码如图5-3,5-4下:图5-3硬件终端与服务器的通信过程中服务端用于接收图片的Socket编程代码Fig.5-3IntheProcessofCommunicationbetweentheHardwareTerminalandtheServer,theServerUsesSocketProgrammingCodetoReceivePictures图5-4通信过程中硬件端用于接收分类结果的Socket编程代码Fig.5-4IntheProcessofCommunication,theHardwareSideisUsedtoReceivetheSocketProgrammingCodeofClassificationResults图像的质量检测实现检测图像质量的部分我们使用了Java版本的OpenCV来进行图像的清晰度、亮度检测。在检测图片亮度方面,判断依据是图像在灰度图上的均值和方差,均值偏离均值点并且方差偏小,图像判定为异常。在检测图片的清晰度方面,计算灰度图标准差,其值越大代表图像清晰度越好。下面列举了部分图像质量检测的核心代码片段,如图5-5,5-6所示:图5-5使用OpenCV检测图片亮度代码片段Fig.5-5UsingOpenCVtoDetectImageBrightnessCodeFragment图5-6使用OpenCV检测图片清晰度代码片段Fig.5-6UsingOpenCVtoDetectImageDefinitionCodeFragment1.3.2服务器端设计与实现1、服务器端设计服务器端对接了硬件终端和个人客户端,主要进行数据的接收传送,以及数据的计算处理,相当于整个垃圾分类系统的大脑。服务端的用户主要是系统的管理员,在服务端中设置了展示层的页面,用于展示各类信息,有利于管理员做进一步的维护,对所有类别的统计信息的掌握。在服务器端主要包含了以下功能:垃圾分类算法模型检测功能该功能主要对硬件终端层和个人客户端层传递过来的垃圾图像,利用第三章提出的垃圾分类算法模型进行垃圾种类的判断。主要流程为:服务器通过网络接收到图片,调用分类算法模型,开始进行垃圾类型判断,将判断结果通过网络发送给该图片的发送端,如果是个人客户端,则还将结果统计到用户的垃圾投递数据库表中,以此实现一次垃圾种类判断的过程。垃圾桶位置的统计功能由于每个智能垃圾桶都含GPS定位功能,并且能够将自己的位置按每6小时上传一次的频率,发送给服务器端,服务端因此可以将这些位置信息做一个统计,得到所有智能垃圾桶的地理位置分布。各用户投递垃圾的种类和数量统计功能该功能主要为所有注册的用户每天投递的垃圾做一个统计,依据的是用户使用小程序的过程中拍摄过的垃圾的类别,以及当天用户拍摄垃圾的数量。系统通过获取这些数据,来统计用户自使用小程序以来每月投递垃圾的种类和数量,以及所投递垃圾总量等信息,并且在展示层页面中进行信息的展示,可以让用户对自己投放垃圾的习惯有一个认识。垃圾分类新闻信息管理功能该功能主要是管理为个人客户端提供的垃圾分类相关的新闻资讯,管理员可以实现信息的添加,修改和删除,为个人用户每天更新最新最广泛的垃圾分类新闻。其他功能(如模型更新等)在服务端还包含了一些其他功能,比如垃圾分类模型的更新功能,系统可以及时的进行模型的更新,有利于垃圾分类算法版本的更替,方便模型的维护。2、服务器端实现在服务端的实现方面,服务器系统为Unbantu16.0464位,处理器为IntelXeon(R)Gold61322.6GHz×28,内存大小为64G,显示卡为NVIDIAGeForceRTX2080Ti,GUDA7.3。算法模型运行环境方面,运行框架使用的是TensorFlow,用Python3.6语言进行实现,主要包含的模块有:Keras2.2.4,Tensorflow1.13,Pillow,Numpy,OpenCV,等等。另外TensorFlow的部署环境方面,使用谷歌公司开发的Tensorflow-Serving部署方案,在实际的生产环境中,Tensorflow-Serving可以智能化的将开发者项目中的算法模型加载,分析其中的计算图来自动实现内部运行逻辑,非常的方便。其还支持模型版本的自动更迭与切换,不影响正在运行的工作。另外还能够实现整体部署环境的高可用,防止单点故障的发生,自动分析硬件本身的资源使用情况,对于模型的输入规模能够进行一个很好的控制,防止宕机,并且能够节省硬件资源。在服务端展示层页面的环境配置中使用MySQL8.0.20作为数据库,Tomcat8.0作为项目的部署服务器。另外使用Javaweb的SSH开发框架进行项目开发,其主要包括Struts2,Spring,Hibernate。其中,Struts2主要用于J2EE平台,是一种开发常见的MVC框架,主要采用JSP+Servlet+Javabean的模式,实现前端界面编辑和后端业务逻辑代码;Hibernate实现持久化,在数据库增删改查的实现中更加简便,不用单去为这些操作写一个类;Spring用来克制类的依赖。总体来说,Struts2主要负责显示层,Spring管理业务层,Hibernate控制持久层。下面是服务端的页面展示:垃圾桶位置分布,如图5-7所示。图5-7垃圾桶位置分布页面效果展示Fig.5-7EffectDisplayofGarbageCanLocationDistributionPage各用户投递垃圾的种类和数量统计功能,如图5-8所示。图5-8各用户投递各类垃圾和数量统计功能页面效果展示Fig.5-8DisplaytheEffectofVariousKindsofGarbageandQuantityStatisticsFunctionPagesDeliveredbyUsers垃圾分类新闻信息管理功能,如图5-9所示。图5-9垃圾分类新闻信息管理页面效果展示Fig.5-9EffectDisplayofGarbageClassificationNewsInformationManagementPage1.3.3客户端设计与实现1、个人客户端设计个人客户端设计了一款微信小程序,主要是为了让人们识别垃圾更加灵活,方便人们进行垃圾的识别和投放,以及有利于人们对垃圾分类知识的学习。该客户端主要包含了以下几个设计:垃圾种类判断该功能与服务端对接,为用户提供完整的垃圾分类的功能,辅助用户知道所拍摄的垃圾属于哪一种类型。该功能的主要识别流程是:用户通过小程序进入“垃圾类别拍照检测”板块,小程序调用系统摄像头对要进行识别的垃圾进行拍摄,将拍摄到的图像传输到服务器端,服务器端判断垃圾所属的种类返回结果,小程序接收到结果,根据其类型来显示垃圾种类,并语音提示“该垃圾属于XX垃圾,请您放入到指定类别的垃圾桶”。垃圾分类新闻展示该功能目的是为了让用户提高对于垃圾分类方面知识的了解,以及现在垃圾分类政策实施的最新情况的获取,让用户提高垃圾分类的意识,积极配合部门关于垃圾分类的相关政策。该功能主要是设置了“垃圾分类新闻资讯”板块,采用瀑布流的形式为用户展现,所包含的内容有垃圾所属种类的知识,以及相关部门发布的一些政策等等。用户点击此板块即可进入并且进行浏览。周边垃圾桶的位置展示该功能主要是为了方便用户对周围垃圾桶位置的查找,基于智能垃圾桶的GPS定位和服务端对垃圾桶位置的信息收集,用户可以通过该功能从服务端获得最新的垃圾桶分布信息,并且可以查找到自身附近的垃圾桶分布,用户能够方便的及时确定垃圾桶的位置,并且进行垃圾投放。个人中心和各类别垃圾的统计该功能能够提供用户的个人信息,包括昵称、姓名、手机号、地址等,除此之外设置了一项对用户平时所投递垃圾的统计,该数据来自服务器端,由服务器对各个用户所投垃圾的种类以及数量作出统计。当用户点击该模块时,小程序向服务器端发出调用该用户相关统计信息的请求,服务器收到请求后将该数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论