打印
[STM32L1]

基于Tensorflow的智能垃圾分类系统的研究与设计

[复制链接]
5767|33
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
摘 要:本研究旨在开发一种基于TensorFlow的深度学习应用程序,该应用程序通过OpenCV图像处理检测垃圾中的垃圾类型。为了提供最有效的方法,本研究对众所周知的深度卷积神经网络体系结构进行了实验。经测试Inception-v4的准确率要优于其他同类模型。本研究的模型是经过精心优化的深度卷积神经网络体系结构,用于对选定的可回收对象类别进行分类,其数据将通过STM32硬件端进行分析进而控制整个垃圾分类系统。

使用特权

评论回复
沙发
工程师犹饿死|  楼主 | 2021-10-27 23:40 | 只看该作者
引言

  使用传统的工艺对垃圾进行分类,需要增加人力和物力以及时间。在当前人工智能越来越普及的大时代背景之下,利用图像处理对垃圾进行分类是一种非常有效的方法。本研究的主要目的是设计一种基于深度学习算法的全自动垃圾分类系统来对常见垃圾进行分类。深度学习的方法已经成功应用到了各个领域,例如自动驾驶、医学成像和多种工业环境,在对象检测问题上取得了显著成果。

使用特权

评论回复
板凳
工程师犹饿死|  楼主 | 2021-10-27 23:42 | 只看该作者
1 系统结构流程图

  由框图可以知道本系统主要是由软件和硬件的组合,其中算法处理部分在PC端进行,将垃圾置于挡板上,由PC端进行OpenCV图像处理分割以及数据集的训练和识别,继而通过蓝牙将数据发送到MCU核心端控制垃圾桶旋转,与此同时,挡板打开,垃圾落入指定的格子内,从而完成垃圾自动分类。舵机用于控制挡板的开启以及关闭,步进电机控制垃圾桶精确角度的旋转,TTS串口语音播报模块实时播报当前的垃圾种类,进而由OLED显示出来,以方便使用者查看信息。

使用特权

评论回复
地板
工程师犹饿死|  楼主 | 2021-10-27 23:42 | 只看该作者

使用特权

评论回复
5
工程师犹饿死|  楼主 | 2021-10-27 23:43 | 只看该作者
2 硬件设计

  硬件端以STM32F1为核心,控制OLED模块、蓝牙模块、TTS语音模块以及步进电机,通过各种硬件实现了各种功能,硬件系统总体结构
如图2。

使用特权

评论回复
6
工程师犹饿死|  楼主 | 2021-10-27 23:44 | 只看该作者

使用特权

评论回复
7
工程师犹饿死|  楼主 | 2021-10-27 23:45 | 只看该作者
 3 TensorFlow算法设计

  本研究的核心是TensorFlow,其用于数据集模型的训练,从而提升图像识别的准确率以及实现精准分类。

使用特权

评论回复
8
工程师犹饿死|  楼主 | 2021-10-27 23:46 | 只看该作者
3.1 数据集的训练

  本研究的重点是对可回收材料进行分类,该研究目的是识别一些最常见的可回收材料,例如玻璃,纸张,纸板,塑料,金属和垃圾。由于没有公开的垃圾数据集,故在该研究中需要手工收集自己的图像数据集,由于每一类的规模较小,所以对每一幅垃圾图像都进行了图像处理。包括图像的随机旋转、图像的随机亮度控制、图像的随机平移、图像的随机缩放和图像的随机剪切,此外还执行了均值减法和归一化。数据集包含六类可回收对象,数据集的图像具有白色背景,每张照片都会选择不同的方向和曝光度。图3显示了来自数据集的部分样本图像。

使用特权

评论回复
9
工程师犹饿死|  楼主 | 2021-10-27 23:46 | 只看该作者

使用特权

评论回复
10
工程师犹饿死|  楼主 | 2021-10-27 23:47 | 只看该作者
3.2 CNN 卷积神经网络

  CNN旨在明确用于图像分类,该算法首先从数据集中输入图像,它将输入作为激活量,也将输出作为激活量。因此,在CNN中,中间层不像普通的人工神经网络那样是法向量,而是具有高度,宽度和深度的空间维度。该算法主要分为三层:卷积层、最大池化层和全连接层。

使用特权

评论回复
11
工程师犹饿死|  楼主 | 2021-10-27 23:48 | 只看该作者
卷积层:该层接收一些输入量,在这种情况下,图像将具有特定的高度,宽度和深度。它存在一些过滤器,它们基本上是由随机数初始化的矩阵。滤镜在空间上较小,但深度与输入图像的通道相同,对于RGB,滤镜的深度为3,对于灰度,滤镜的深度为1,依此类推,过滤器在输入量上进行卷积。它在图像中进行空间滑动,并在整个图像中计算点积,过滤器最终为输入图像生成激活图。

使用特权

评论回复
12
工程师犹饿死|  楼主 | 2021-10-27 23:49 | 只看该作者
点积的计算方式如下:

使用特权

评论回复
13
工程师犹饿死|  楼主 | 2021-10-27 23:50 | 只看该作者
 其中 W = 滤波器、 x = 输入图像 b = 偏差,在每个卷积层的末端,CNN最终会获取滤波器的激活图。

使用特权

评论回复
14
工程师犹饿死|  楼主 | 2021-10-27 23:50 | 只看该作者
激活函数为ReLu:



  此激活函数最终会舍弃零以下的值,即将最小值阈值设为零。

使用特权

评论回复
15
工程师犹饿死|  楼主 | 2021-10-27 23:51 | 只看该作者
最大池化层:最大池化基本上只是激活映射的下采样层,通常使用 2 2 × 过滤器和步长为2的最大池化层,最终将输入激活图缩小为一半的空间图。池化的另一种方法是平均池化,在这种方法中,子矩阵的最大值保留为下一层的平均值而不是最大值。

使用特权

评论回复
16
工程师犹饿死|  楼主 | 2021-10-27 23:52 | 只看该作者
完全连接层:完全连接层在最后将体积作为输入,它像正常的神经网络一样完全连接到整个输入量,该层执行最后一个矩阵乘法器以计算输出。

使用特权

评论回复
17
工程师犹饿死|  楼主 | 2021-10-27 23:53 | 只看该作者
 在传统的多层神经网络中,神经元第一层与下一层中的所有神经元相连;卷积层在上一层的输出上建立本地连接,全连接层执行矩阵乘法,卷积层使用卷积过程,如等式(1)所示的线性数学过程:

使用特权

评论回复
18
工程师犹饿死|  楼主 | 2021-10-31 23:04 | 只看该作者
当等式1被用于连续域时,可以得到等式2的情况:

使用特权

评论回复
19
工程师犹饿死|  楼主 | 2021-10-31 23:04 | 只看该作者
 x [k] 在等式2中可以写成 x [k−j] , 同 样 ,x [k−j]可以在等式中转换为 x [k+j]。如等式3,它并不影响结果。

使用特权

评论回复
20
工程师犹饿死|  楼主 | 2021-10-31 23:05 | 只看该作者
在进行卷积过程中,w是卷积层的滤波器,x是这一层的输入, f ( . ) 是激活函数sigmoid,是将输入向量与卷积层上神经元的权重向量 ( w ) 执行点积的一个数学过程。步幅 ( ζ ) 是一个参数,可以定义为卷积过程中过滤器窗口输入窗口上的偏移量,也可在等式4中被计算出来:

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

75

主题

886

帖子

0

粉丝