资源描述
基于深度学习的智能分类垃圾桶 Intelligent classification trash can based on deep learning 中文摘要随着人类科技的进步和生活质量的提高,随之而产生的生活垃圾也越来越多,因此如何有效的回收处理生活垃圾成为人们关注的焦点。调查研究发现,在源头处对垃圾进行分类处理的方法是整个垃圾分类处理流程中最高效的也是分类最彻底的。而当前的分类规则其一是难以做到各地全部统一,另一方面是垃圾分类种类繁多,难以区分,会对人的生活质量造成一定影响。目前市面上出现了种类繁多的“智能垃圾桶”,但基本都只是实现了自动开合功能,不具备垃圾分类识别的能力。而当前的人工智能技术正在飞速发展,深度学习领域的图像识别方向有了长足的发展,使得使用图像识别技术对垃圾进行分类成为可能。选择正确的图像识别分类算法是本项目的重中之重。因此,本文对过往的图像识别方面的突出贡献的算法做介绍和总结,把握其发展的脉络,从而说明选择MobileNetV2网络的原因。在本项目中,系统可分为垃圾识别模块和垃圾分类投放模块,即识别模块和控制模块。在垃圾投入到垃圾桶中,由识别模块对垃圾进行识别分类,再把分类结果发送给控制模块,由控制模块将其投放到对应的垃圾桶中。经过实际测试,垃圾的类别判断正确率能在可接受范围内,而识别分类速度则在经过分类结果滤波后,平均成功识别一次垃圾的平均时间为4秒。这证明该项目在智能垃圾分类领域还是很有发展前景的。关键词:垃圾分类,卷积神经网,MobileNetVAbstractWith the advancement of human science and technology and the improvement of quality of life, more and more domestic waste is generated. Therefore, how to effectively recycle and treat domestic waste has become the focus of peoples attention. The investigation and study found that the method of sorting waste at the source is the most efficient and the most thorough in the entire waste sorting process.One of the current classification rules is that it is difficult to unify all regions, on the other hand, there are many types of garbage classification, which are difficult to distinguish, which will have a certain impact on peoples quality of life.At present, there are a variety of smart trash cans on the market, but basically only the automatic opening and closing function is realized, and the ability to sort and identify trash is not available. The current artificial intelligence technology is developing rapidly, and the direction of image recognition in the field of deep learning has made great progress, making it possible to use image recognition technology to classify garbage.Choosing the correct image recognition classification algorithm is the top priority of this project. Therefore, this article introduces and summarizes the algorithms that have made outstanding contributions in the past in image recognition, grasping the development context, and thus explaining the reasons for choosing the MobileNetV2 network.In this project, the system can be divided into a garbage recognition module and a garbage classification delivery module, namely a recognition module and a control module. After the garbage is put into the garbage bin, the recognition module classifies the garbage, and then sends the classification result to the control module, and the control module puts it into the corresponding garbage bin. After actual testing, the classification accuracy rate of garbage can reach 90%, and the recognition and classification speed is after filtering the classification results, and the average time for successfully identifying a garbage is 4 seconds. This proves that the project is still very promising in the field of intelligent waste classification.Key words: Garbage Classification; Convolutional Neural Network; MoblieNetV2目录中文摘要IAbstractII目录IV图目录VII表目录VIII第一章 绪论11.1 课题研究背景与意义11.1.1 研究背景11.1.2 意义21.2 国内外垃圾分类及研究现状31.2.1 国外现状31.2.2 国内现状31.3 本文研究内容3第二章 智能分类垃圾桶总体设计52.1 概述52.2 系统分析及设计思路52.3 系统框架52.4 系统总体运行流程62.4.1 主处理器及主控制器处理流程62.5 本章小结7第三章 智能垃圾分类图像处理原理83.1 卷积神经网络对图像的基本操作83.1.1 卷积操作83.1.2 池化操作93.2 LeNet网络103.2.1 综述103.2.2 特点123.3 AlexNet网络133.3.1 概述133.3.2 特点133.4 VGGNet网络143.4.1 特点153.5 GoogleNet网络及Inception架构163.5.1 背景介绍163.5.2 InceptionV1163.5.3 InceptionV2183.5.4 InceptionV3203.6 ResNet网络213.6.1 综述213.6.2 残差结构223.7 MobileNet233.7.1 背景介绍233.7.2 MobileNetV1243.7.3 MobileNetV2243.8 本章小结27第四章 智能垃圾桶控制系统硬件设计284.1 智能垃圾桶整体结构分布284.2 STM32硬件系统框架284.3 STM32微处理器294.4 步进电机与步进电机驱动器294.4.1 步进电机294.4.2 步进电机驱动器294.5 Jetson Nano304.6 本章小结31第五章 系统实现及测试325.1 识别算法选取与训练325.1.1 MobileNetV2325.1.2 TensorFlow框架325.1.3 训练MobileNetV2网络335.2 串口通信测试355.2.1 通信格式355.2.2 通信测试365.3 实际垃圾分类测试375.4 本章小结38第六章 总结与展望1参考文献2致谢4图目录图 1.1 2014-2019年中国大、中城市生活垃圾产生量1图 2.1 系统总体框架5图 2.2 左A为主控制器处理流程 右B为主处理器处理流程6图 2.3 系统总体运行流程6图 3.1 卷积在图象中的计算图示9图 3.2 左为平均池化 右为最大池化10图 3.3 LeNet-5神经网络模型10图 3.4 全连接层(从左到右分别为输入层、隐藏层、输出层)11图 3.5 激活函数11图 3.6 Sigmoid函数(S型函数)12图 3.7 AlexNet网络13图 3.8 ReLU函数图像13图 3.9 Dropout方法14图 3.10 左图为早期版本 右图为改进版本16图 3.11 通过不同的卷积核以及池化层实现的聚类17图 3.12 55卷积被替换方式17图 3.13 完善后的InceptionV1结构18图 3.14 两个连续33卷积核替代55卷积核19图 3.15 InceptionV2结构19图 3.16 BN方法计算公式20图 3.17 BN方法计算示例20图 3.18 使用31和13的非对称卷积替代33卷积21图 3.19 InceptionV3结构21图 3.20 常规深度网络过深会导致深层网络训练效果反而不如浅层网络22图 3.21 残差块(Residual Black)22图 3.22 Shortcut Connections示例22图 3.23 图左为Option A 图右为Option B23图 3.24 深度卷积与逐点卷积24图 3.25 两种倒残差结构25图 3.26 ReLU6函数图像25图 3.27 不同维度下使用ReLU激活函数后再还原的图像25图 3.28 MobileNetV2结构26图 4.1 垃圾桶整体结构28图 4.2 STM32主控模块28图 4.3 电机驱动器连接图30图 4.4 Jetson Nano B01底板30图 4.5 神经计算性能对比31图 5.1 训练、验证、测试集33图 5.2 用来训练网络的数据集33图 5.3 训练集准确率33图 5.4 验证集准确率34图 5.5 训练集损失函数34图 5.6 验证集损失函数34图 5.7 实际测试材料37图 5.8 实际测试材料的识别效果概率分布37表目录表 1.1 2014-2019年信息发布城市数量1表 3.1 VGG网络层数配置15表 3.2 VGGNet各个深度下的单张图片的准确率15表 3.3 ResNet网络层数配置23表 3.4 MobileNetV2网络层数配置26表 3.5 MobileNetV2网络在ImageNet数据集上性能和参数对比27表 3.6 MobileNetV2网络在COCO数据集上性能和参数对比27表 4.1 步进电机参数表29表 4.2 树莓派4与Jetson Nano参数对比表31表 5.1 各个神经计算模型性能对比表32表 5.2 测试集图片识别成功率35表 5.3 串口通信格式表35表 5.4 主控制器串口测试表36表 5.5 主处理器串口测试表36X广东东软学院本科生毕业设计(论文)第一章 绪论1.1 课题研究背景与意义1.1.1 研究背景人类科技进步和城市化极大的了改善人们的生活质量,生活垃圾产量也随之水涨船高,“垃圾围城”这一景象也在各大城市中不断上演。据2019年全国大、中城市固体废物污染环境防治年报1显示,2019年,全国202个大、中城市的生活垃圾产生量为21147.3万吨。图 一.1 2014-2019年中国大、中城市生活垃圾产生量表 一.1 2014-2019年信息发布城市数量从上面数据可以看到,生活垃圾以每年一千万吨的量在增长,这是一个惊人数据。而在国外,梅波克洛夫指出:,美利坚合众国一年生成的城市固体废弃物高达2.39亿吨。这些垃圾,大多都是混合回收,在垃圾回收中心进行简单回收后,再填埋到指定地区。这种粗暴的垃圾处理方式,不仅占用珍贵的土地资源去填埋垃圾,又浪费了一些可回收的资源。在2019年极具讨论性的上海垃圾分类话题中,上海市实行了史上最严垃圾分类管理规定。根据官方发布数据,截止至当年8月底,上海实现每天4500吨的可回收物回收,比去年年底多了5倍19之多。由此可见,在源头对垃圾进行分类是垃圾分类与回收中极重要的一环。但是在上海实行的垃圾分类规定的管理中,可以看到很多都是通过人工去分类、监管的,这种方式给人们的日常生活还是造成一定的困扰,例如只能定时扔垃圾、垃圾分类过于复杂等问题。而且,人们虽然认识到垃圾分类的作用,也觉得应该进行,但是对垃圾分类方法却不是太了解3,因此需要一种辅助手段去帮助他们。另一方面,随着计算机技术的快速变革,深度学习作为机器学习的重要分支日益得到普及。如今世界处处都存在它的踪迹,如股票行情预测、人脸识别及智能机器人等。可以说,它在智能制造行业里面有着非常光明的前景,而其中的图像分类与检测领域更是出类拔萃。1.1.2 意义正如日本水泥大王浅野总一郎所说的“在这个世界上没有一件无用的东西,任何东西都是可以利用的”。如一般做填埋处理的湿垃圾可以通过厌氧发酵处理工艺2等技术实现生物发电,提高了对资源的利用率。从源头上采取人工分拣的办法,对垃圾进行分类回收,使其各尽其用;垃圾越早分拣,成分越简单,也就越容易分拣20。传统的人工分拣方法,既对人健康不利,效率也不够高。因此,本文所设计的基于深度学习的智能分类垃圾桶,通过深度学习算法去分类垃圾类别,并且能根据不同地区的要求进行不同种类划分,从而在源头处自动对垃圾进行分类和处理。其优点在于:通过技术手段,既客观上减轻了人们在垃圾分类上面的负担,也让主观上缺乏分类垃圾意识的民众也一起参与进来,这也符合当前的利用人工智能建设智能城市的市场发展趋势。既能促进环保发展,又能减轻人们的日常生活负担,使未来更美好。1.2 国内外垃圾分类及研究现状1.2.1 国外现状.(1) 日本日本对生活垃圾分类的处置采取精细化的态度,所以垃圾分类领域中名列各国第一。其分类最主要就是在源头处进行精细分类,共有15大类之多,并且对每一种垃圾都附有详细的处理要求。如废旧报纸要求要捆绑得整齐,而废电器的电线则要求绑在它自身上4。但是这种方式,是日本从90年代就开始动员形成的,而且伴随着高额的罚款。它的发展不是一蹴而就,而是经历了多个阶段才最终形成现在的机制。.(2) 美国美国既是一个经济强国,也是一个垃圾产生大国。它本身有一套垃圾分类标准,而且还将垃圾处理形成了产业。在2018年,美国的清洁科技领域获得超过40亿美元的投资,其投资率相比17年增长了54%。美国垃圾分类机器人初创公司Clean Robotics更是在15年便将一部分智能分类垃圾桶投入到了市场。但是其本身高昂的价格与分类效率低下使得其没有铺开来。而也有些公司采用终端处理方式,使用智能分类算法、机械臂和流水线结合的方式形式分类。1.2.2 国内现状国内在垃圾分类处理方面虽然立法和建立试点城市的方法实施已久,但是由于宣传和成本等问题,在国内没有形成普遍的垃圾分类意识。同时,政府方面在政策上也没有足够支持,很多地方的分类垃圾桶,在进行垃圾回收时,采用的是混合回收,哪怕是在源头进行分好,最终依然是混在一起。当然,这也与民众平时也不按垃圾分类标准进行投放有关。2019年的上海最严垃圾分类规定的执行,一方面看到了垃圾分类的必要性,另一方面也对民众生活造成了一定困扰,甚至一度在微博等社交网络平台形成了讨论热潮。在目前的做法中,国内依然采用分类垃圾桶的方式,通过人工分类,手工投放的方式进行投放。当然,为了辅助人工分类,如阿里巴巴集团等公司也上线了手机app分类小程序对垃圾进行分类,还有是基于NB-IOT技术在本地拍照上传到远程服务器上进行识别,再返回分类结果后对垃圾进行分类投放到对应垃圾桶的方式5。1.3 本文研究内容本文主要是基于深度学习的智能分类垃圾桶研究与设计,通过基于深度学习的移动终端的轻量级卷积神经系统,针对移动终端或嵌入式设备,使用深度学习的图像分类技术对垃圾桶内的垃圾进行检测分类,然后通过电机结构将其投放到对应的桶体中。本文各章节安排如下:第一章:绪论。讲诉垃圾分类研究的背景和意义,接着介绍国内外在垃圾分类处理这方面的主要方法和现状。第二章:智能分类垃圾桶的总体设计。主要是通过分析需求从而确定系统的整体流程,然后分别表述了系统各个模块和总体的运行流程。第三章:介绍了卷积神经网络的一些基本术语和操作,同时介绍这一领域算法的逐步发展,由此引出本身使用MobileNetV2模型的原因。第四章:智能垃圾桶控制系统硬件设计。主要是描述了垃圾桶的机械结构和硬件电路以及电机等内容。第五章:系统实现及测试。介绍了模型的训练过程和模块之间的通信编码以及通信测试等。最后对整个智能分类垃圾桶进行总体测试,证明分类的准确性。第二章 智能分类垃圾桶总体设计2.1 概述本项目中所设计的智能分类垃圾桶是基于深度学习实现的智能分类。通过安装在垃圾桶中的USB摄像头采集图像传送到作为处理中心的Jetson Nano上,然后Jetson Nano对图像信息进行分类处理,再将处理后的结果通过串口传输到STM32中,由STM32根据分类结果将垃圾投放到对应的桶体中。2.2 系统分析及设计思路主要是考虑到垃圾桶对垃圾分类并将其投放到相应的垃圾桶中是一个实时性要求很高的任务,而由终端拍摄照片或者传输视频流的方式将采集样本发送到云端,再由云端处理完返回结果给终端再进行处理,这种方式耗时太长。而且在网络波动较大的地方,更是难以使用。本项目采用的是本地进行处理的方式。由于有Google公司提出的MobileNetV2算法跟NVIDIA公司开发的Jetson Nano平台,使得在本地进行高效的图像检测分类成为了可能。这种方法避免了因为网络波动而造成的识别时间过久甚至是无法识别的问题。本项目中,采用的是模块化设计的思路,分为识别分类模块和控制模块。这样分类主要原因是Jetson Nano平台是带操作系统的,虽然本身有PWM输出,但是其精准度依旧比不上MCU。因此在控制部分中采用STM32F103作为主控芯片,在接收到Jetson Nano的分类信号后,控制步进电机去投放垃圾到对应的垃圾桶。Jetson Nano和STM32之间由于距离近,所以直接采用串口通信方式进行,避免了无线信号会出现的干扰问题。2.3 系统框架图 二.1 系统总体框架2.4 系统总体运行流程2.4.1 主处理器及主控制器处理流程图 二.2 左A为主控制器处理流程 右B为主处理器处理流程图 二.3 系统总体运行流程2.5 本章小结本章主要分析了本项目的项目需求,然后根据项目需求去制定项目的运作流程。通过运作流程将系统分为控制模块和处理模块两大模块,通过分开模块化操作,实现系统的稳定运行。同时也介绍了系统各个模块和总体的运行流程。第三章 智能垃圾分类图像处理原理3.1 卷积神经网络对图像的基本操作3.1.1 卷积操作其实质是图像矩阵和权值矩阵的点乘卷积运算公式为yn=xnhn=0Nxin(三.1)卷积计算的相关术语:.(1) Filter过滤器,也称卷积核,它的本质是卷积神经网络中的权值矩阵,通过在“二维平面”中运动,将卷积核包裹住的部分元素实行矩阵乘法,接着将计算得到的结果求和得到单个输出像素值,从而实现对图像进行特征提取。.(2) Stride步长,一般小于卷积核的尺寸,主要用来驱动卷积核在图像进行上滑动的长度。如果步长等于1,则向右滑动一格,步长为k,滑动k格,具体如图 3.1 卷积在图象中的计算图示所示。.(3) Padding填充,就是使用额外的自定义像素(通常值为0,因此也称零填充)填充图像的边缘。在不使用填充的情况下,卷积核很难采集到位于边缘的像素的特征,边缘的特征很容易就被忽略掉。而填充通过在边缘外增加一圈假像素,使得卷积核的可以让边缘区域的像素处于卷积核的中心位置。这样不仅能在卷积操作结束之后提取到边缘像素的特征,也能产生与输入矩阵尺寸相同的输出矩阵。.(4) Feature Map特征图,卷积计算之后产生的图像.(5) 卷积后图像尺寸hin为输入矩阵的高度,win为输入矩阵的宽度,hout为输出矩阵的高度,wout为输出矩阵的宽度,F为卷积核的尺寸,P为填充值,S为步长out=inF+PS+1 wout=winF+PS+1(三.2).(6) 图像中的卷积计算步骤可分为以下三步:求点积:将55的输入矩阵中3x3深蓝色区域中每个元素分别与其对应的权值矩阵相乘,然后再相加,得到输出矩阵的第一个元素滑动窗口:若步长为1,则将33权值矩阵向右移动一个格重复操作:重复执行“求点积-滑动窗口”操作,直到输出矩阵被填满图 三.1 卷积在图象中的计算图示y1,1=42+12 + 0 0 + 1 1 + 2 0 + 1 1 + 2 1 + 0 2 + 1 1 = 14(三.3)y1,2=11+02 + 1 0 + 2 1 + 1 0 + 1 1 + 0 1 + 1 2 + 2 0 = 6(三.4)y1,3=01+12 + 3 0 + 1 1 + 1 0 + 2 1 + 1 1 + 2 2 + 5 0 = 10(三.5)3.1.2 池化操作在卷积层之后通常紧挨着一个降采样层,通过减少矩阵的高度和宽度,从而减少计算参数,加快网络运行的速度,这一操作就是池化操作。而降采样就是降低特定信号的采样率的过程。 池化包括均值池化和最大池化两种:.(1) 均值池化对池化区域内的像素点取均值,这种方法得到的特征数据对背景信息更敏感。.(2) 最大池化对池化区域内所有像素点取最大值,这种方法得到的特征数据对纹理特征信息更敏感,示例如图 3.2所示图 三.2 左为平均池化 右为最大池化3.2 LeNet网络3.2.1 综述Yann LeCun提出的第一个训练成功的CNN模型:LeNet-5。该模型包含有输入层、卷积层、池化层、全连接层和Softmax层。图 三.3 LeNet-5神经网络模型.(1) 输入层输入层是整个神经网络的输入节点。在LeNe网络使用灰度图来训练和识别,所以其输入为32, 32, 1,其中3232是图像的尺寸,而1代表的是图像的通道数。.(2) 卷积层在本层使用卷积操作对输入的图像矩阵进行处理,以此来提取图像特征。卷积操作增强特定的输入特征,并且降低原始图像的噪音。.(3) 降采样/池化层本层采用的是平均池化,通过利用图像的局部相关性原理,对图像进行子抽样。这种方法在保留有用信息的前提下,不仅能有效的降低神经网络的计算量,还能减少过拟合。.(4) 全连接层全连接层的本质为矩阵向量乘积计算,该计算使用特征空间变换方法对输入的特征图进行处理,从而集成有用的信息。它的每一层的每个神经元都和上一层所有神经元相连接。该层结构如图 3.4所示,其函数表达为ai= wx1ix1+ wx2ix2+ wxnixn+bi(三.6)yi= wa1ia1+ wa2ia2+ wanian+bai(三.7)图 三.4 全连接层(从左到右分别为输入层、隐藏层、输出层).(5) 激活函数在神经网络中,激活函数作为一种特殊的映射法则,将特定的输入映射到对应的输出上。如图 3.5所示,通过对上一层所有的节点的输出值求加权和,然后生成一个非线性的输出值,并将其传递给下一层节点作为输入值。LeNet中采用的激活函数是Sigmoid函数,也称S型函数它本身可导且导数非零,容易计算。图 三.5 激活函数Sigmiod函数定义y=11+e(z)(三.8)图 三.6 Sigmoid函数(S型函数).(6) 损失函数损失函数是用来估算预测值与真实值之间的不一致程度,它是一个非负实值函数。损失函数越小,模型的鲁棒性就越好。而在目前的卷积神经网络中,通常是使用交叉熵作为损失函数。Hp, q= xpxlogqx=p=0,q0Hp,q0其他 Hp,q0p=1,q1Hp,q0(三.9)交叉熵描述的是两个概率分布之间的距离,p代表样本的标签值,而q代表预测值。通过交叉熵方法计算出来的值越小,即两个概率分布的值越趋近,则预测越准确。交叉熵损失函数定义如下所示,其中yi为标签值,而yi为预测值Loss= i=1nyi logyi(三.10)3.2.2 特点LeNet模型首次使用了卷积方法去提取图像的空间特征,还使用了平均池化方式的池化层来降采样,而在降采样层后面使用了S型激活函数。3.3 AlexNet网络3.3.1 概述AlexNet网络是ILSVRC-2012挑战赛的冠军,也是首个在大规模图像问题中取得突破性进展的深度神经网络9。下图为AlexNet网络结构图 三.7 AlexNet网络卷积神经网络的一大特点是模块化的设计思维,通过卷积层-激活函数-池化层-标准化的有机组合方式,可以形成多种类型的模块设计。如图 三.7中的其中一种模块设计就是:卷积层-激活函数(ReLU)-最大池化层。3.3.2 特点.(1) 使用ReLU函数作为激活函数ReLU函数定义fx=max(0,x)(三.11)图 三.8 ReLU函数图像ReLU函数有效规避了S型函数在神经网络层次加深的时候出现的梯度弥散问题。由于采用梯度下降法去训练AlexNet网络,因此饱和非线性激活函数的学习速度要慢于不饱和非线性激活函数。.(2) Dropout方法在全连接层中,使之任意忽略掉一部分神经元,从而在一定程度上遏制了过拟合的出现。图 三.9 Dropout方法.(3) 重叠的最大池化操作尽管常规的池化操作不会重叠,然而Alex-Net使用到了以下方法,其中卷积核尺寸大于移动的步长,从而达到了池化层重叠操作。如图 三.2所示的就是池化层重叠。采用最大池化方法是为了除去平均池化带来的模糊化结果,这也是一种避免过拟合的手段。.(4) 使用GPU和CUDA加速神经网络的训练.(5) 数据增强该技术主要是对图像进行剪裁、翻转、镜像、放缩等操作,在数据量较小的情况下增加数据量,从而减少过拟合3.4 VGGNet网络从文章名10就可以看出来,VGGNet主要是尝试了更深的结构。VGGNet有深度为16的VGG-16和深度为19的VGG-19。前者计算量相对较少的情况下获得的准确率比较高,而后者计算量庞大,但是准确率最高。VGG-16的参数个数高达1.36亿,而VGG-19更是达到了1.44亿。表 三.1 VGG网络层数配置表 三.2 VGGNet各个深度下的单张图片的准确率3.4.1 特点.(1) VGGNet网络取消了LRN层主要原因是如表 三.2所示,经过作者在ILSVRC dataset上面进行验证,发现LRN并不能提升模型的性能,反而会还会增加不少计算量10。.(2) VGGNet网络使用单一模块相比于后面的网络,超参数稀少,网络结构单一。但是相比于经过Incepti-on、深度可卷积网络等方法优化过的结构,它本身的训练参数过于庞大。.(3) 使用3个33卷积核来代替77卷积核根据“NTN(Network in Network)”的结果,使用三个33网络来替代77的大卷积核,既不损失精度,又能提高性能。.(4) 随着网络加深,图片的高度和宽度不断的以一定的规律缩减3.5 GoogleNet网络及Inception架构3.5.1 背景介绍近些年来,为了获得高质量的模型的最佳做法是增加模型的深度(即层数)和宽度(即每一层的卷积核的数目或神经元的数目)11。但是,这种做法会带来以下问题:a)参数增加过多,若训练集的数据有限,则容易导致过拟合b)网络越大,计算复杂度越大,难以实际应用c)梯度消失会随着网络的加深而愈加严重,最终影响训练的成败。但是,另一个问题又出现了,那就是计算机的硬件对于非均匀稀疏数据的计算效率很差。文章中提出使用从稀疏的连接结构的方法去解决上诉问题,此方法的依据是Hebbian准则。然后为了解决稀疏连接带来的计算效率降低的问题,提出了通过使用多个稀疏矩阵并将其聚集为相关的密集子矩阵来提高计算性能的想法。3.5.2 InceptionV1.(1) 概述Inception结构主要是使用密集组件来替代最优的局部稀疏结构。图 三.10 左图为早期版本 右图为改进版本.(2) 不完善的InceptionV1结构在上文中提到,卷积网络是模块化组成的。在高度稀疏的大型深层神经网络中,可以通过分析每个模块最后一层的相关性,逐层构建局部最优的网络拓扑结构,从而将高度相关输出的神经元聚合起来。在深度较浅的层,相关的特征信息都集中在局部,并且将这些信息输出到下一层。而这些信息再被11的卷积核再次提取。这种做法对应图 3.11,通过加大单个卷积层的宽度,也就是说在一个卷积层里,使用不同大小的卷积核。而且由于池化层在别的文献中都有不错的表现,以此也在该模块中加入了一个池化层。再通过网络自行调整内部参数,来决定使用哪个过滤器,和是否使用池化层等,增强了网络的自我学习效果图 三.11 通过不同的卷积核以及池化层实现的聚类采用尺寸不同的卷积核意味着有不同的感受野,从而可以提取到多种不同尺寸的特征图。而在最后的拼接层中,将不同尺寸的特征图进行融合。在该论文中采用的卷积核大小尺寸为11、33、55,是为了更容易对齐。将步长设为1后,再分别将填充设为0、1、2,这样卷积后得到的特征图的大小就一致了,再将这些特征图堆叠聚合。虽然这些特征图的维度一致,但是由于33和55的卷积核有填充操作,因此他们提取到的特征的值是不一样的,因此特征图也就不一样。.(3) 完善后的InceptionV1结构上述的模型存在一个很重要的问题就是,计算量过大,其中55的卷积共需要1.2亿次的计算量,这与这个网络的初衷(减少计算量)是不一致的。针对这个问题,通过V1结构的作者的实践,发现以下网络替代可以有效的解决上述问题。示意图如下所示:图 三.12 55卷积被替换方式通过上图可看到,完善后55卷积核的模型,为完善前的1/10。同理,也可以在33卷积核上应用这一种方法。同时,此结构中的11卷积层又被称为“bottleneck”(瓶颈层)。因此,完善后的InceptioV1结构如下所示图 三.13 完善后的InceptionV1结构.(4) 特点a)深度和宽度:模型总层数达到22层,增加了多种卷积核,11、33、55,以及MAX-POOLb)为了避免上述增加宽度导致的计算量巨大的问题,在33、55卷积核前分别加上11d 卷积核,来降低计算量。c)使用Average Pooling代替全连接层,AlexNet的参数量是GoogleNet的12倍之多,GoogleNet的Top5的错误率为6.67%,相比AlexNet提高了10个百分点。但在最后仍添加一个全连接层,以便以后微调分类输出。d)添加了两个辅助分类器。经过论文作者验证,辅助分类器在训练早期对精度的提升不大,但是在训练快要结束的时候,相比于没有添加辅助分类器的模型准确率会更高。3.5.3 InceptionV2.(1) 概述在InceptionV1中为了获得不同的感受野,而大的卷积核能带来大的感受野,因此采用了55的大卷积核。虽然经过了InceptionV1结构的优化后,参数减少了很多。但是经过计算,在卷积核数目相同的情况下,55的卷积核的计算成本高出33卷积核2.78倍。改进后的结构被称为InceptionV2结构。它用两个级联的33卷积核代替庞大的55的卷积核。同时,论文提出了一个非常强大的算法,即Batch Normalization(BN方法)。图 三.14 两个连续33卷积核替代55卷积核图 三.15 InceptionV2结构.(2) BN方法BN方法的灵感来源于机器学习中的常用的规范化数据的方法:白化。但是这种方法计算成本过高,因此该文提出了BN方法,希望既能减少计算量,又能让数据尽可能保留原始的表达能力。BN是一类强大的正则化的处理方法,它的作用范围是神经网络中一层所有的feature map,即它不是对某一张图片的feature map进行标准化处理,而是一个小规模的数据样本的所有feature map,从而使一整层的输出契合N(0,1)的正态分布。图 三.16 BN方法计算公式原文中描述:对于一个拥有d维的输入x,将其所有维度进行标准化处理。例如:输入图像是RGB三通道,则d等于图像的通道数等于3,而x=(x1,x2,x3),其中x1就代表R通道所对应的特征矩阵。图 三.17 BN方法计算示例3.5.4 InceptionV3.(1) 概述该模型依旧是以Inception系列模型为基础进行优化。在InceptionV2网络中,我们发现一个55的卷积核可以被两个33的卷积核给替换掉,从而明显的减少了参数量。作者在此基础上思考,是否还能对此进行进一步的拆分。从而提出了空间不对称卷积分解的思路,即两个相对小的一维卷积替换掉一个大的二维卷积。.(2) 大卷积核分解该方法是使用不对称卷积思想,经过作者12实际验证,使用非对称卷积去对大的卷积核进行拆分,即n1的卷积核,实际效果比22的卷积核效果更好。图 三.18 使用31和13的非对称卷积替代33卷积图 三.19 InceptionV3结构如上图所示,使用一个31和13的卷积的级联去替代一个33的卷积。这种方式可以削减一部分网络参数,增加计算速度和降低过拟合程度。而且由于多了一个卷积层,模型的表达能力得到增强。3.6 ResNet网络3.6.1 综述卷积神经网络的层数对分类识别效果中起很大作用。然而一般的神经网络层数不断堆叠加深,不一定会带来好的效果。下图为何凯明博士针对不同层数的模型做的测试。发现56层的深度网络时,表现还不如20层的深度。这种称为网络梯度消失或者网络退化。图 三.20 常规深度网络过深会导致深层网络训练效果反而不如浅层网络3.6.2 残差结构如图 3.21 残差块(Residual Black)所示,作者提出了一个残差函数F(x)=H(x)-x,x为该结构的深入,期望输出是H(x),而堆叠的非线形层结果F(x)即为我们学习的目标。以下结构也被称为残差学习单元。图 三.21 残差块(Residual Black)文中将输入x传输到输出H(x)中的方法使用的是“Shortcut Connections”(捷径连接),指的是在网络的输入层添加一个线形层直接连接到输出层。在ResNet网络中,shortcut Connections将输入x与组合而成的非线性层的输出相加,即允许原始图像的输入信息直接传输到后面的层中。图 三.22 Shortcut Connections示例在残差网络中,将xm复制到更深层的网络节点中,然后在后续节点的激活层前面加上xm, 这样原始信息就可以直接传达到更深层网络。残差块使更深层的网络构造成为可能。因此,可以使用残差块叠加构造ResNet神经网络。图 三.23 图左为Option A 图右为Option B表 三.3 ResNet网络层数配置在ResNet网络中,深度较浅的网络ResNet-34采用的是Option A方式构造残差模块,而ResNet-50及以上则采用Option B方式构建残差模块。其中, 11的卷积核主要是用来降维以及升维使用。堆叠的非线性层与Shortcut的输出矩阵必须一致。3.7 MobileNet3.7.1 背景介绍在现实中,如无人驾驶汽车、机器人等产品,使用的往往是性能受限的嵌入式设备,这要求神经网络模型的体积和计算量不能太大。因此,我们需要一个既能保持高准确率又能在嵌入式设备中高速运行的网络模型14。3.7.2 MobileNetV1.(1) 深度可分离卷积(Depthwise Separable Convolution)MobileNet所用的深度可分离卷积是可分离卷积12的一种变形,它将一般卷积分为深度卷积和11的逐点卷积两个部分。图 三.24 深度卷积与逐点卷积深度卷积中的每一个卷积核负责一个输入矩阵的chennel,所以输出矩阵的channel等于卷积核的个数等于输入矩阵的chennel。而点卷积则是传统卷积,只不过特定卷积核尺寸为11。通过深度可分离卷积,可以有效的减少模型的参数量,从而提高计算速度。在文中,经过计算后得出的结论是,深度可分卷积的计算速度是普通卷积的89倍。.(2) 模型收缩超参数(Model Shrinking Hyperparameters)a) 为了使模型的计算量更少,作者增加了两个超参数,(Width Multiplie)和(Resolution Mult-iplie)。b) 宽度乘数(Width Multiplie):用来改变输入输出的chennel,减少feature map的数量,减少网络的厚度。其中的取值为0,1。c) 分辨率乘数(Resolution Mult-iplie):用来改变输入层的分辨率,同样可以减少网络的参数量3.7.3 MobileNetV2.(1) 倒残差结构(Inverted Residuals)MobileNetV2主要是基于MobileNetV1进行改进的。为了提升梯度的跨层传播能力,因此将残差结构添加到了MobileNetV2网络中,提出了一种新的结构,倒残差结构。图 三.25 两种倒残差结构在引用残差结构的时候,作者提出了两种残差结构模型,如图 三.25所示。经过作者的实验验证,(b)中的倒残差结构有着更好的内存利用效率。同时为了在嵌入式设备中也能使用16位较低精度的浮点数去精确的描述数值,作者使用ReLU6替换了ReLU非线性激活函数。ReLU6函数定义为ReLU6=min(max0,x,6)(三.12)图 三.26 ReLU6函数图像.(2) Linear Bottlenecks作者做了个实验,使用一个二维的图像做输入,然后采用不同维度的矩阵T对该图像进行卷积操作并提取相关的图像特征。再使用ReLU激活函数得到它的输出值,接着使用矩阵T的逆矩阵T-1将之前得到的输出矩阵还原。得出如图 3.27所示结果。从图中可以看出,ReLU激活函数会对低维特征信息造成较大损失,而高维特征造成的损失不大。图 三.27 不同维度下使用ReLU激活函数后再还原的图像基于上述所说的问题,因此在MobileNetV2结构中的第二个逐点卷积层中去掉ReLU6激活函数,直接使用线性连接。.(3) MobileNetV2结构及模型图 三.28 MobileNetV2结构在上图中提到在Stride=1的时候就需要使用捷径连接,但是在实际上是需要同时满足stride=1且输入矩阵与输出矩阵的shape相同两个条件时才能使用捷径连接,不然shape不同的矩阵根本无法进行加法操作的。表 三.4 MobileNetV2网络层数配置表 三.4中的t是拓展因子,c是输出特征矩阵的深度channel,n是bottleneck的重复次数,s是步距(仅针对第一层,其他层均为1)。表 三.5 MobileNetV2网络在ImageNet数据集上性能和参数对比表 三.6 MobileNetV2网络在COCO数据集上性能和参数对比3.8 本章小结本章主要介绍了卷积神经网络在图像识别领域的发展脉络。首先从Alex这个ILSVRC-2012挑战赛的冠军开始,分别介绍了AGGNet、GoogleNet、ResNet这些给深度卷积神经网络带来显著进步的网络模型。最后通过对比前面的庞大的卷积神经网络,从而体现了MobileNet及MobileNetV2网络体积小的优点。第四章 智能垃圾桶控制系统硬件设计4.1 智能垃圾桶整体结构分布图 四.1 垃圾桶整体结构4.2 STM32硬件系统框架图 四.2 STM32主控模块STM32接收Jetson Nano通过串口发送过来的垃圾分类信号,接收到信号之后,判断接收到的垃圾类别。然后根据垃圾类别去驱动57步进电机转动,从而带动垃圾桶旋转到对应的分类垃圾桶体。接着驱动42步进电机将暂时存放垃圾的托盘拉起,使垃圾下落到垃圾桶中。再将垃圾托盘收起,垃圾桶转回原来位置。4.3 STM32微处理器微处理器也可称单片机,它相比于原来的通用计算机而言,有着成本低廉、使用方式灵活和易于产品化等特点。在本项目中,选择STM32F429作为整个主控模块的核心处理器,它是一个32位的微处理器,本身主频高达180M,本身外设资源及其丰富。4.4 步进电机与步进电机驱动器4.4.1 步进电机步进电机是一种能够产生电磁转矩的电磁铁,它接收外部的电脉冲信号并将其转换为角度位移或者直线位移,电磁脉冲信号又被称为数字控制信号16。当它每接收到一个脉冲的信号的时候,便会转动一个角度,这个角度就叫做步距角。因此,如果要它的旋转角度和旋转速度,只需要控制单位时间内发送的脉冲信号的个数即可。由于本项目要在底部旋转分类垃圾桶,需要一个强有力的电机,因此本项目中采取了57步进电机作为动力源。而收放托盘需要的力相对较小,因此可以使用42步进电机。表 四.1 步进电机参数表4.4.2 步进电机驱动器由于本文中所用的步进电机运行所需要的电流比较大,尤其是57步进电机需要3A的电流,STM32最小系统本身无法驱动这么大的电流。步进电机驱动器是驱动步进电机运行的功率放大器,它可以提供步进电机所需要的能源。而驱动器性能的优劣会直接影响到步进电机性能的测试结果17。在项目开发中,在前期由于驱动器选取不当,导致步进电机经常发生丢步现象,后来更换了驱动器之后才正常运转。本文中选取的电机驱动器采用DM542芯片,能够提供最大5A的电流供给电机使用。图 四.3 电机驱动器连接图4.5 Jetson NanoJetson Nano是一款专门为AI应用而设计的开发板。采用1.4Ghz的ARM-A57芯片,128核Nvidia Maxwell GPU和4GB RAM。它运行的官方系统是Ubuntu 18.04的一个定制版本,名称为Linux4Tegra,主要设计在NVIDIA的硬件上运行。该系统预配置了CUDA跟TensorRT组件,因此可以使用CUDA对卷积神经网络计算进行加速。它本身也集成了UART、I2C等外设通信组件。图 四.4 Jetson Nano B01底板如图 四.4所示,Jetson Nano引出来了40个GPIO口,布局与树莓派一致。但是Jetson Nano的GPIO口的电流特别弱,因此使用的时候需要使用额外的供电电路去驱动电子元器件。本项目最初考虑使用的主处理器是树莓派,但是树莓派本身只有一个ARM的CPU能够用作神经网络计算,而Jetson Nano除了有CPU还配置了专为AI设计的GPU。而且显卡上附带的显存对于本身最大内存只有4G的机器来说重要性不言而喻。表 四.2 树莓派4与Jetson Nano参数对比表图 四.5 神经计算性能对比通过上图可以看到,在各种模型计算中,Jetson Nano的运算性能完胜树莓派加英特尔第二代神经网络计算棒的组合。4.6 本章小结本章主要介绍了垃圾桶的物理结构以STM32、电机和Jetson Nano等硬件设备。第五章 系统实现及测试5.1 识别算法选取与训练5.1.1 MobileNetV2因为要在嵌入式设备上运行,所以模型的计算量和体积是首要的考虑因素,实际使用中,不可能让机器运行好几分钟去分辨识别一次垃圾。而选择进行本地识别,也有一部分原因是基于设备运行时间考虑的。因
展开阅读全文