Smart City

Automatic garbage classification management system

PR025

龙飞 杨 (湖北大学)

Apr 22, 2022 3539 views

Automatic garbage classification management system

本项目通过图像识别检测医疗垃圾类别并对其进行分类投放。通过医疗垃圾分类尽量实现医疗废物再利用,节约资源,同时减少对环境的危害。

Demo Video

[URL: https://v.youku.com/v_show/id_XNTg2MzQxMjc4NA==.html]

Project Proposal


1. High-level project introduction and performance expectation

1  设计介绍

1.1  设计目的

       随着社会的发展和城市化进程的加快,产生的垃圾逐年增加。我们设计了一款自动垃圾分类装置,该装置能够自动识别垃圾的类型,并将其放入对应的垃圾桶中。我们期望通过自动垃圾分类来减少环境污染,节省土地资源,实现资源再利用和提高人们的生活质量。 

1.2  应用范围

       开发以DE10-Stander为核心,外接摄像头,实现智能显示器,通过深入学习技术建立垃圾分类,并加速Pipcnn的设计,加速使用,对垃圾快速识别和分类。设计的自动垃圾分类装置具有体积小巧、外形美观、功能强大等特点,可以在家庭、办公室或室内环境等设置中,有效地处理生活垃圾带来的污染,同时能够提高垃圾回收率,降低垃圾污染破坏环境的风险。

1.3  使用 Inter FPGA 的好处

       Intel FPGA 再利用其板核计算的硬件资源,处理速度快,流水线并行和数据并行(延迟低,流处理),可以在运行中实现控制以及计算等多种功能,FPGA开发板软硬件结合是很好的 opencl 的载体,英特尔 FPGA 开发的体积小可以适用于各种场合,而且很多性能,其丰富的硬件资源也利于进行垃圾的图像识别加速功能。

 

2. Block Diagram

2  硬件设计介绍

       我们采用DE10-Stander作为软件系统核心控制板,配合摄像头,控制图像的采集和显示等信息的提取以及模型的计算。以STM32开发板为硬件控制核心,红外传感器和伺服电机分别实现垃圾的检测和投递。STM32为核心,设计了稳压模块,为FPGA开发板和所接外设供电。可以采集红外传感器的状态,与FPGA开发板通信来控制舵机和补光板的工作。

图 2.1 系统硬件关系示意图

       下图为STM32控制板的设计图,主要为各个模块以及FPGA开发板供电,同时处理红外传感器的数据,控制补光灯以及舵机。

(a) PCB设计图

(b)PCB渲染图

图 2.2 stm32控制板PCB设计图

       启动后,FPGA与STM32分别进行初始化,然后进行握手通信,当握手成功后系统开始正常运行。当有垃圾投放时,红外感应器可以给STM32开发板发送信号,之后STM32控制LED灯打开以及通过GPIO向FPGA开发板发送信号,FPGA接收到开始信号后,摄像头采集图像并对其进行预处理,然后送入FPGA的PipeCNN模块中进行计算,输出识别结果发送给STM32,最后STM32控制伺服电机将垃圾放入对应垃圾桶。以下是本系统的结构设计图。

图 2.4 系统结构设计图

3. Expected sustainability results, projected resource savings

3  可持续性

3.1  可持续性目标

       随着社会的发展和城市化水平的提高,垃圾的产量逐年增加,垃圾围城形势严峻。大量的垃圾堆放或填埋导致臭气蔓延,并且污染土壤和水源,对环境和人体都会产生危害。实行垃圾分类能够有效减少环境污染,节省土地资源,促进资源回收利用。

       现如今许多垃圾含有化学物质,有的甚至会导致人们发病率提升。如果通过填埋或者堆放处理垃圾,即使远离生活场所对垃圾进行填埋,并且采用了相应的隔离技术,也难以杜绝有害物质渗透,这些有害物质会随着地球的循环而进入到整个生态圈中,污染水源和土地,通过植物或者动物,最终影响到人们的身体健康。

       垃圾填埋和垃圾堆放等垃圾处理方式占用土地资源,垃圾填埋场都属于不可复场所,即填埋场不能够重新作为生活小区。且生活垃圾中有些物质不易降解,使土地受到严重侵蚀。

       很多垃圾属于人们没有合理利用的资源,这种废弃资源的方式对于整个生态系统的损失都是不可以估计的。在垃圾处理之前,通过垃圾分类回收,就可以将垃圾变废为宝,如回收纸张能够保护森林,减少森林资源的浪费;回收果皮蔬菜等生物垃圾,就可以作为绿色肥料,让土地能够更加肥沃。

       综上所述,减少环境污染,节省土地资源,促进资源回收利用都是极其重要的可持续发展目标,实行垃圾分类刻不容缓。

3.2  预期可持续性结果

自动垃圾分类就是将垃圾自动分门别类地投放,并通过分类地清运和回收使之重新变成资源。垃圾分类能够减少环境污染、节省土地资源、再生资源的利用。我们期望实现以下可持续性结果:

(1)减少环境污染:通过垃圾分类减少有害垃圾对环境的污染

(2)节省土地资源:减少垃圾填埋和垃圾堆放对土地资源的侵蚀和占用

(3)实现资源再利用:通过垃圾分类回收使垃圾的变废为宝,实现资源的重复使用

(4)提升人们生活质量:通过改善生活环境提升生活质量

3.3  预计资源节约

通过自动垃圾分类装置,我们期望实现以下资源的节约:

(1)减轻土地受到侵蚀的现象同时减少垃圾占地面积

(2)减少垃圾数量的60%

(3)实现生活垃圾中30%可回收垃圾的回收利用

4. Design Introduction

4  设计介绍

4.1  设计目的

       随着社会的发展和城市化进程的加快,产生的垃圾逐年增加。我们设计了一款自动垃圾分类装置,该装置能够自动识别垃圾的类型,并将其放入对应的垃圾桶中。我们期望通过自动垃圾分类来减少环境污染,节省土地资源,实现资源再利用和提高人们的生活质量。开发以DE10-Stander为核心,外接摄像头,实现智能显示器,通过深入学习技术建立垃圾分类,并使用加速Pipcnn的设计,加速对垃圾的识别和分类。

4.2  系统模型

        我们尝试过自行搭建简单网络,但是识别效果较差,最终在不断探究中我们选取了基于ImageNet标准的VGG-16的模型,并选取其前15层的参数,针对如下49个种类做一个针对性的训练。

图 1.1  训练模型结构示意图

以下是我们所设定的Label与垃圾的对应。

表 4.1 设定垃圾对应的Label

经过多轮训练和测试,结果如下表所示

表 4.2 训练及测试结果

training layers

batch_size

epochs

Train accuracy rate

Test accuracy rate

Validation accuracy rate

3

64

350

99.7

78.70

68.77

2

64

60

100

85.27

71.74

1

64

30

100

95.32

73.07

 

4.3  硬件设计

        在硬件设计时考虑到本系统对垃圾的感应,识别以及投放等功能需求,我们选用STM32作为整个硬件系统控制的核心,依靠DE10-Stander丰富的资源使用opencl来对训练出的VGG-16求解。由于DE10-nano需要与STM32做通信,故此处我们在官方提供的BSP基础上,重新制作了一套BSP, 增加了我们需要的如GPIO等外设。硬件加速部分借鉴了王东老师的开源项目PipeCNN,实现对VGG16进行加速。 最后使用在FPGA与STM32的协同下完成如下的垃圾的正确识别以及正确投放。 结构设计部分我们使用了圆柱形筒状结构,采用双层布局。上层用于投放、识别、处理以及固定控制板和电池等部件;下层放置分类垃圾桶和转动装置。

图 4.2  实物投放识别流程动图

 

5. Functional description and implementation

5  主要功能以及实现

5.1  主要功能

      设计了一款自动垃圾分类装置,主要功能为自动对垃圾进行识别和分类投放。共设置有四类垃圾,分别为可回收垃圾、厨余垃圾、有害垃圾和其它垃圾。当装置检测到有垃圾投入时,内部投放口处于关闭状态,摄像头会采集垃圾图片并将图片信息送入卷积神经网络进行识别和分类,确定垃圾的种类后,装置会自动将对应类型的垃圾桶旋转至投放口下方,然后打开投放口,垃圾落入对应类别的垃圾桶。

5.2  实现方法

(1)  利用红外传感器感应是否有垃圾投入,若有垃圾投入,装置内部LED灯亮起,否则LED灯保持熄灭状态。

(2)  LED灯亮起后,摄像头拍摄垃圾图片并传给FPGA。

(3)  ARM读取数据并送入训练好的卷积神经网络,选用PipeCNN加快识别和分类速度。

(4)  FPGA将识别和分类的结果通过GPIO给出。

(5)  STM32采集FPGA开发板从GPIO口给出的信号并控制垃圾的投放。

5.3  模型训练

        选用了经典的VGGNet模型中的VGG-16作为训练模型。该模型的层次模块如下:

图 5.1  训练模型结构层次

        由于该模型复杂度较高,参数量庞大,重新训练需要耗费大量时间,因而采用了迁移学习的方式对其进行处理后再训练:首先利用预训练模型加载网络,冻结全连接层前面的网络。然后去掉原始的全连接层后添加自己的全连接层,仅对新添加的全连接层进行训练。

        我们从kaggle的数据集、华为云竞赛-垃圾分类挑战赛-数据集以及自己拍摄的数据集三者一共筛选了19000张图片作为训练的数据集,考虑到一次性加载所有数据集内存占用极高,硬件要求苛刻,因而对数据集进行了处理,将其分批送入训练模型。同时,由于图片读取需要一定的时间,为了避免迭代产生较大的延迟,影响训练速度,因而对数据集做了预读取处理。经测试,模型训练时间有了明显的缩短。

图 5.2  数据集来源

图 5.3  数据集来源-自己拍摄

5.4  PipeCNN

       卷积神经网络是深度学习中最具有代表性的一种模型,被大量运用,但是大型的卷积网络会有百万数量级的神经元和千万数量级的连接权重。单台设备越来越难以满足存储并计算大量数据的需求,因此使用并行技术来加速深度学习的做法渐渐兴起。而FPGA具有大量的处理单元、可定制的模块和较低的功耗,因此非常适合用于实现神经网络。

PipeCNN是一种基于OpenCL的用于大型卷积神经网络的FPGA加速器。在OpenCL的基础上加入了深度的并行化、数据复用和任务并行化。能够有效加快网络识别和分类的速度。以下为PipeCNN在DE10-nano中所占用的资源:

图 5.4  FPGA资源占用

可以看出PipeCNN在此开发板中有着充足的资源来运行得到最后的结果。

6. Performance metrics, performance to expectation

6  性能参数

6.1  预期性能参数

(1) 单个图像识别时间不超过2秒

(2) 垃圾分类准确率不低于95%

6.2  实际性能参数

        本系统在运行计算时依赖DE10-Stander开发板,故我们的团队需要在开发板有限的资源下实现整个VGG-16模型的正确运行。 在我们不断的修改参数和测试后,经过对测试结果的分析与统计,本系统对单个类别的垃圾识别准确率需要大于90%并配合STM32硬件系统把垃圾投放在正确的垃圾桶的概率需要大于95%。

        在硬件资源足够的情况下平均识别使用的时间为1.93s。下图为本系统的程序在资源足够的情况下的识别状况。

 

图 6.1 测试程序运行截图

对比预期性能参数与实际性能参数,准确率和识别时间达到了预期的指标.

使用FPGA对图像数据进行并行计算处理,使图像识别的速度得到了明显的提高。

7. Sustainability results, resource savings achieved

7  系统设计方案

7.1  模型训练

      首先通过在三个数据集中获得到的数据集图片最终数据集中包含49类垃圾,我们将其分为四个大类,分别为可回收垃圾、有害垃圾、厨余垃圾和其它垃圾。使用迁移学习,训练VGG-16的最后一层得到最后的参数输出。  

图 7.1   程序示例

7.2  数据类型转换

        为了节省在运算时所使用的资源,PipeCNN中把所有的浮点参数转换成了八位有符号的定点数,并在主机端程序中保存了每一层定点小数的位置,此处我们使用matlab把训练所的模型参数转成定点数。

图 7.2  数据类型处理程序示例

7.3  硬件设计

        我们采用DE10-Standard开发板作为核心控制板,配有摄像头和VGA显示器,用于垃圾图像的采集和显示。使用STM32开发板作为电机主控板,控制红外传感器和伺服舵机,用于实现垃圾检测和投放。 

图 7.3  系统硬件设计框图

7.4  软件运行流程

        启动后,FPGA与STM2通信并等待回应,收到回应后FPGA恢复GPIO口信号并等待STM32发送开始信号。接收到开始信号后,使用opencv打开摄像头采集图像并对,并减去预先存储好的mean_data使其可以用8为有符号数表示,然后再把opencv读取的RGB的值转换成tensorflow所使用的BGR格式方便后续计算,然后把所得数据送入FPGA的PipeCNN模块中进行计算,输出最大值给STM32,直到收到STM32发送的结束信号后进入下一次循环,继续等待开始信号。STM32为核心,设计了稳压模块,为FPGA开发板和所接外设供电。可以采集红外传感器的状态,与FPGA开发板通信来控制舵机和补光板的工作。硬件加速部分借鉴了王东老师的开源项目PipeCNN,实现对VGG16的加速。

图 7.4 主机端程序流程图

图 7.5 从机端程序流程图

 

7.5  创新设计

        1. 迁移学习:使用迁移学习是因为VGG16网络非常复杂,训练起来参数量很大,对于硬件需求较高,因此我们采用迁移学习来对其进行微调。减少训练的参数量同时加快训练速度。

图 7.6  模型训练流程

        2. 自制BSP:我们在操作系统上重新编译了内核和设备树文件,使DE10-Sdandard支持USB摄像头以及对FPGA GPIO外设的直接控制。硬件上我们在官方提供的BSP基础上,重新制作了一套BSP, 增加了我们需要的外设。以下时外设BSP增加部分。

图 7.7  自制BSP新增外设

       3. 最后是结构上我们采用了双层旋转式投放方式,可以有效存放识别前的垃圾和快速投放识别后的垃圾。同时这一设计使它体型小巧,外形美观符合当下流行趋势。以下时本模型的实物图

图 7.8 系统结构展示

8. Conclusion

8  结论

1. 针对本系统所分的垃圾种类,对基于ImageNet的VGG-16模型的进行重训练,本系统的识别正确率达到了90%;

2. 把VGG-16所训练出的浮点参数转换成对应的定点参数,在FPGA中运行时,只会产生2%的误差,极大的提高了其运算速度并减少了运行时所占用的FPGA硬件资源。

3. 本系统使用有限的FPGA硬件资源,基于PipeCNN完成了VGG-16模型的参数计算,在有限的资源下不仅保证了2s计算一次的速度外,在完成本系统的职能即垃圾投放的正确率上也达到了95%。

1 Comments



Please login to post a comment.

keith woollvin

Congratulations for qualifying for the Grand Final, I enjoyed reading about your project. It was great to see it function in the video.

May 10, 2022 05:15 AM