APP下载

一种基于树莓派的智能分类垃圾桶的设计

2022-06-11金莉娟刘栖昌张许如刘峻杰

软件工程 2022年6期
关键词:树莓派垃圾分类深度学习

金莉娟 刘栖昌 张许如 刘峻杰

摘  要:为解决使用普通垃圾桶時采用人工分拣垃圾造成垃圾分类不准确、效率低下的问题,设计了一款基于树莓派的智能分类垃圾桶。该垃圾桶的分类算法基于TensorFlow架构,采用全卷积网络(Fully Convolutional Networks, FCN)实现对垃圾图像特征的学习和识别,用于训练数据集以改进图像识别的准确率,并明确垃圾所属分类。实际应用时,利用传感器采集数据,利用摄像头识别物品,利用舵机带动投放口到正确的分类位置投放垃圾,并且语音播报当前的垃圾种类。本研究共收集了五类垃圾图像,每类图像训练34 组,每组150 次。实验结果表明,该智能垃圾桶的分类准确率可达到85%以上,具有较好的分类效果。

关键词:垃圾分类;树莓派;TensorFlow;FCN;深度学习

中图分类号:TP399     文献标识码:A

Design of a Intelligent Classification Garbage Can based on Raspberry Pi

JIN Lijuan, LIU Qichang, ZHANG Xuru, LIU Junjie

Abstract: Aiming at the problem of inaccurate garbage classification and low efficiency caused by manual classification of garbage when using ordinary garbage cans, this paper proposes to design an intelligent classification garbage can based on Raspberry Pi. Its classification algorithm is based on TensorFlow architecture, and FCN (Fully Convolutional Networks) is used to realize the learning and recognition of garbage image features, which is used to train the data set to improve the accuracy of image recognition and clarify the classification of garbage. In practical applications, sensors are used to collect data, cameras to identify items, steering gears to drive the discharge port to the correct classification position, and the current type of garbage is broadcast by voice. In this study, a total of 5 types of garbage images are collected. Each type of image is trained for 34 groups, 150 times in each group. The experimental results show that the classification accuracy of the intelligent garbage can reaches more than 85%, which has a good classification effect.

Keywords: garbage classification; Raspberry Pi; TensorFlow; FCN; deep learning

1   引言(Introduction)

随着社会的发展,传统的垃圾分类方式且仅限于手动开关垃圾桶已不能满足人们的生活需求[1]。为此,国内外开展了广泛研究,如美国的Transhbot和BigBelly、芬兰的Enevo,它们大多基于实时检测、自动报警、液晶显示屏进行设计,但是还未涉及垃圾自动分类[2];国内也进行了相关研究,主要分为太阳能垃圾桶与感应性垃圾桶,使得垃圾桶具有自动归类、报警和持续监测等功能,但还不能满足自动识别分类的需求[3]。

本文针对当前现状,设计了一个基于树莓派的智能分类垃圾桶。该垃圾分类系统能够自动、准确地判断出垃圾的类型,通过舵机带动投放口到正确位置,打开挡板,将垃圾投放到桶内,从而实现自动分类并可语音播报出垃圾的种类。此外,在垃圾桶满载时,会发出满载提醒。

2   系统结构(System structure)

垃圾分类系统主要由软件和硬件组成,软件的核心是分类算法,硬件的核心是树莓派。该系统的硬件组成如图1(a)所示,树莓派Pi4B开发板结构如图1(b)所示。

2.1   硬件结构

(1)选择树莓派Pi4B开发板作为核心硬件系统,该款产品较好地达到了系统的设计要求[4]。

(2)采用光电传感器作为检测垃圾容量的硬件系统。在垃圾容量达到75%以后启用喇叭工具进行满载提醒。光电传感器在一般情况下由三部分构成:发送器、接收器和检测电路。其基本原理是以光电效应为基础,将被测物体的变化量转换为光信号的变化,进而利用光电器件将非电信号转换成电信号。

(3)使用托盘暂存待投掷垃圾。使用托盘暂存垃圾时,该垃圾桶的识别分类系统也正在工作,待垃圾识别完成后,依据垃圾的识别结果完成分类。

(4)利用摄像头作为系统中的垃圾图像采集装置。使用摄像头拍摄托盘上的垃圾图像,垃圾桶的垃圾分类系统根据拍摄图像对垃圾进行分类识别。

(5)采用舵机作为垃圾桶的投放驱动模块。当明确了待投掷垃圾的所属类别后,舵机带动托盘旋转,实现垃圾识别后的投放步骤。

2.2   软件结构

(1)超声波检测

超声波检测软件模块依托超声波传感器硬件,基于GPIO框架编写超声波硬件的使用程序,判断当前是否有垃圾待投放。

(2)图像预处理

摄像头拍摄到垃圾图像后,使用OpenCV执行图像预处理算法对图像进行裁剪,去除无用的背景,便于后续的TensorFlow图像分类。

(3)舵机驱动

舵机驱动软件模块依托舵机硬件,基于GPIO框架编写双舵机硬件的使用程序,使之能够根据垃圾图像分类模块的输出驱动舵机转动合适角度,从而将垃圾投入正确的分类垃圾桶中。

(4)图像分类算法

运用TensorFlow算法完成对图像的分类处理,识别出垃圾所属的类别,并能够用此算法提升图像识别的准确率,以及实现精准分类。

3   工作原理(Operating principle)

采用计算机视觉系统识别,通过大量的垃圾图像,应用深度学习算法进行分类训练,通过树莓派上的视觉系统,检测当前拍摄的垃圾,最终用舵机将识别出的垃圾放置到不同的垃圾桶,从而实现垃圾分类的目的。

第一步,将待分类垃圾放于置物板上,摄像头检测到有垃圾待分类,智能分类垃圾桶进入工作状态。第二步,垃圾桶开始转动,转动角度由检测到的垃圾类型确定,可以旋转0°、90°、180°、270°。待对应垃圾桶转动到平台位置下方时,置物板开始转动,垃圾被周围挡板阻拦,无法移动,只能掉入下方垃圾储存区域。第三步,置物板逆方向转动,回到检测平台的位置,垃圾桶逆方向转动,回到原始位置,垃圾桶完成一次工作,等待下一次工作周期的到来,再一次进行垃圾智能分类操作。第四步,摄像头通过USB连接将识别的图像发送到树莓派核心端;舵机用于控制挡板的开启以及关闭,控制置物板的旋转,确保垃圾投放;干簧管是一个有触点的无源电子开关原件;光电反射传感器可以检测到投放的生活垃圾是否超过垃圾桶容量的75%;语音播报功能将实时播送当前的垃圾类别,从而可以在显示屏上直接显示,使用户能够方便、快捷地查阅信息。

4  基于TensorFlow的图像分类算法(Image classification algorithm based on TensorFlow)

本研究的核心是TensorFlow,用于数据集模型的训练,从而提升图像识别的准确率以及实现精准分类,包括图像随机旋转、图像随机亮度控制、图像随机平移、图像随机缩放空间维度。通过TensorFlow框架构建卷积神经网络(Convolutional Neural Network, CNN)模型并得到一个基于垃圾分类的训练模型。将需要识别的图像带入模型中配比,确定所识别图像的类型。该图像分类算法的网络主要分为五层:输入层、卷积层、池化层、全连接层和输出层[5],网络结构如图2所示。

输入(Input)层:输入要训练的图像信息。本研究中输入的图像像素为224×224,深度为3。

卷积(Convolution)层和池化(Pooling)层:卷积层和池化层的主要作用是保留主要特征的同时减少计算量和参数,防止过拟合,提高模型的泛化能力。本研究中输入图像的每个通道分别从左上角开始,并取与卷积核相同的大小后,与卷积核的对应部分分别进行内积运算,并将内积运算得到的结果相加,再加上0核的值,就可以得到特征值左上角的元素值。按照(2,2)的步长移动卷积核,直至输入图像被整个覆盖,就可以得到最终的特征值。

全连接(Fully Connected)层:将卷积层、池化层中通过运算得到的特征空间在样本中映射并标记,即将特征表示整合为一个值。在本研究中使用ReLU激活函数[6],其有以下三个优点:

(1)使用ReLU激活函数进行运算时计算量较小。因反向传播求误差梯度时,需要运用求导计算,使得计算量相较于Rule激活函数大得多,所以本研究中采用ReLU激活函数,整个过程就只需要进行加、乘和比较的操作,计算上效率更高。

(2)对于深度神经网络来说,ReLU激活函数比其他函数更适用于本研究。如Sigmoid函数在反向传播过程中,由于接近饱和区时变换速率较为缓慢,使得求导后的值趋向于0,导致信息丢失,从而较为容易出现梯度消散的情况,将会发生深度神经网络训练无法完成的情况。

(3)ReLU激活函数会使部分神经元的输出为0,可以延缓网络的拥堵,并减少相关参数的相互依存关系,从而使得过拟合问题得到缓解。

输出(Output)层:输出层主要负责输出最后的结果。本研究中,在輸出层中的计算与输入层相似[7]。两者之间的区别在于,输出层一般在拟定参数时,所输出的节点数目必须与卷积层中分类标记的数目相吻合,并且在运算处理这一过程完成后,再使用Softmax函数来得到测试图像在各个标记分类中的概率,并且各分类中的概率相加之和需要等于1[8]。

5  TensorFlow在智能垃圾分类系统中的应用(Application of TensorFlow in intelligent garbage classification system)

本研究的重点是对垃圾进行分类,研究目标和内容是辨别生活中较为常见的垃圾类别,如果蔬残渣、易拉罐、塑料瓶、金属等。因目前关于垃圾分类问题的研究中没有公开的垃圾图像库,所以该研究中所使用的图像都为手动收集并上传。因收集到的图像的像素值较小,故对每一张垃圾图像都做了处理,如图3所示。

本研究使用的深度学习网络中含有三个层,其中卷积层使用的是7×7×3的卷积核,步长为2,在池化层选用常见的最大池化max_pooling。其中算法处理部分在树莓派中进行,使用深度学习算法进行分类训练,使用全卷积网络(FCN)构建模型[9]。FCN是对图像进行像素级的分类,即对图像上的各个像素进行分类,这就需要一个上采样将最后得到的输出上采样到原图的大小,从而解决语义级别的图像分割问题。FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的特征图进行上采样,使它恢复到与输入图像相同的尺寸,并可以对每一个像素都产生一个预测,同时保留了原始输入图像中的空间信息,其原理如图4所示。

使用预训练的网络和在ImageNet数据集上训练好的模型参数进行初始化,从而训练自己的数据集。之所以使用预训练的网络来初始化而不使用随机初始化是因为预训练的网络可以加速训练,好的预训练模型可以避免陷入局部最优点或鞍点。加快梯度下降的收敛速度,更有可能获得一个低模型误差或者低泛化误差的模型,并在训练图像训练集时边训练边保存构建的模型,生成测试集。再通过树莓派上的视觉处理,在树莓派的挡板上置放垃圾,并将OpenCV的图像分析处理以及数据集的系统训练和准确辨别垃圾种类的功能模块放置在人机交互的界面如PC端进行,进一步通过树莓派上的端口相连,将训练好的数据集直接发送至树莓派上,操纵垃圾桶的转动。此外,打开树莓派的挡板,将垃圾投放在设定的垃圾桶区域中,进而完成垃圾的自动分类。

部分关键代码实例如下:

model=Sequential([

Conv2D(filters=32,kernel_size=3,padding='same',

activation='relu',input_shape=(480,480,3)),MaxPooling2D

(pool_size=2),

Conv2D(filters=64,kernel_size=3,padding='same',

activation='relu'),

MaxPooling2D(pool_size=2),

Conv2D(filters=32,kernel_size=3,padding='same', activation='relu'),

MaxPooling2D(pool_size=2),

Conv2D(filters=32,kernel_size=3,padding='same',

activation='relu'),

MaxPooling2D(pool_size=2),

Conv2D(filters=32,kernel_size=3,padding='same', activation='relu'),

MaxPooling2D(pool_size=2),

Flatten(),

Dense(64,activation='relu'),

Dense(5,activation='softmax')

])

train_datagen=ImageDataGenerator(

rescale=1./225,shear_range=0.1,zoom_range=0.1,width_shift_range=0.1,height_shift_range=0.1,horizontal_flip=True,vertical_flip=True, validation_split=0.1)

test_datagen=ImageDataGenerator(

rescale=1./255,validation_split=0.1)

train_generator=train_datagen.flow_from_directory(base_path,target_size=(480,480),batch_size=16,class_mode='categorical',subset='training', seed=0)

validation_generator=test_datagen.flow_from_directory(

base_path, target_size=(480,480),batch_size=16,

class_mode='categorical', subset='validation'seed=0)

labels=(train_generator.class_indices)

labels=dict((v,k) for k,v in labels.items())  print(labels)

Checkpoint=ModelCheckpoint(filepath='weights.

best.hdf5',monitor='acc',verbose=1,save_best_only=True,mode='max',save_freq=2)

model.compile(loss='categorical_crossentropy',optimizer=

'adam',metrics=['acc'])

6   實验结果(Experimental result)

本系统使用深度学习算法训练该项目所需要的图像数据集模型。为了验证该模型对垃圾类别的判断是否准确,本研究共收集了五类垃圾的图像,垃圾种类分别为可回收、不可回收、厨余、有害以及其他垃圾,每种类别训练34 组,每组150 次。其中可回收与不可回收垃圾的识别准确率能够达到89.7%,厨余和有害垃圾的识别准确率能够达到85.3%,其他垃圾类别的识别准确率能够达到86.3%。由图5可知,随着训练次数的增加,所拍摄的垃圾照片与图像资源库内照片的匹配度和识别准确率增加;训练次数越多,损失函数越少,垃圾种类的识别准确率越高。本实验从总体上看识别准确率较高,满足该项目设计的基本需求,实现了该项目所要达到的精准分类的要求。

7   结论(Conclusion)

本文通过树莓派平台,采用软硬件相结合的设计方法,使用深度学习算法进行垃圾图像的分类训练,设计了一款全自动垃圾分类垃圾桶。其主要采用FCN方法进行垃圾归类,通过语音播报模块来播报垃圾种类,在检测垃圾种类的同时做好垃圾分类置放。这样不仅能解放劳动力,还能在一定程度上节省财力。该新型智能垃圾桶不仅结构简单,制造成本低,而且使用便捷,适合面向广大家庭用户进行推广[10]。与此同时,我们的设计还存在一定的优化空间,后期我们将使用深度学习方法训练更多的数据集,以进一步提高垃圾分类的準确率,同时也将美化智能垃圾桶的外观,并添加太阳能供电模块以节约电力资源,为社会的环保工作贡献出自己的一分力量。

参考文献(References)

[1] 于雯,王艳,张佳佳,等.多功能智能垃圾桶结构设计和功能实现[J].工业仪表与自动化装置,2022(01):117-120.

[2] 王琪,李波涛.可持续性设计——户外智能垃圾桶设计研究[J].艺术与设计(理论),2019,2(08):111-112.

[3] 李继超,贺晓倩,权亚腾,等.一种室内智能语音识别垃圾分类系统的设计[J]自动化与仪表,2021(11):103-108.

[4] 于润滋,李丽萍.基于深度机器学习和RFID的垃圾分类系统设计[J].榆林学院学报,2021,31(04):40-43.

[5] 祝朝坤,魏伦胜.基于TensorFlow的智能垃圾分类系统的研究与设计[J].电子产品世界,2020,27(06):71-75.

[6] 江志.基于图形相似性和零件相关性的模具零件库检索技术的研究及应用[D].杭州:浙江大学,2020.

[7] 张鑫,姚庆安,赵健,等.全卷积神经网络图像语义分割方法综述[J].计算机工程与应用,2022,59(03):1-16.

[8] 毋立芳,贺娇瑜,简萌,等.局部聚类分析的FCN-CNN云图分割方法[J].软件学报,2018,29(4):1049-1059.

[9] DONG Z. Intelligent garbage classification system based on computer  vision[J]. International Core Journal of  Engineering, 2021, 7(4):147-152.

[10] 马志寅.基于树莓派和Modelarts平台智能分类垃圾桶的设计及应用[J].科技创新与生产力,2021(10):113-114.

作者简介:

金莉娟(2002-),女,本科生.研究领域:计算机科学与技术.

刘栖昌(2001-),男,本科生.研究领域:计算机科学与技术.

张许如(2001-),女,本科生.研究领域:计算机科学与技术.

刘峻杰(2001-),男,本科生.研究领域:计算机科学与技术.

猜你喜欢

树莓派垃圾分类深度学习
小学校本课程《垃圾分类》智慧教育案例研究
浅析我国农村垃圾处理难题
日本城市垃圾分类的做法
MOOC与翻转课堂融合的深度学习场域建构
大数据技术在反恐怖主义中的应用展望
智能安全防盗探测小车
高校环境教育非课堂教学模式的探索
深度学习算法应用于岩石图像处理的可行性研究
基于深度卷积网络的人脸年龄分析算法与实现
基于嵌入式技术的农村医疗系统设计