基于PP-PicoDet技术的智能垃圾分类
2023-10-28倪吴广汪朵拉
倪吴广,汪朵拉,张 卓
(河海大学 物联网工程学院,江苏 常州 213002)
0 引言
不正确的垃圾分类不仅会增加垃圾处理的成本和工作量,还会导致可回收资源的浪费,影响资源的回收利用,甚至带来环境污染等问题。如何引导人们正确地进行垃圾分类,从源头上减轻垃圾分类的工作负担,提高垃圾分类的智能化程度,是解决垃圾分类问题的关键。
近年来,随着深度学习技术的高速发展,相关技术被应用到了垃圾分类领域中,如文献[1]设计了一种基于视觉感知的智能扫地机器人,通过YOLOv2目标检测算法,引导扫地机器人对垃圾进行自动识别与按类处理;文献[2]设计了一种基于深度学习的智能垃圾桶,通过语音识别技术与图像识别技术,帮助用户正确分类垃圾;文献[3]设计了一种可回收垃圾的视觉检测系统,采用YOLOv5目标检测算法,检测和识别垃圾的类别。这些应用不仅提高了垃圾分类的智能化程度,同时也表明深度学习技术在垃圾分类任务中是一种有效的方法[4]。
目前深度学习技术应用在垃圾分类领域,主要有图像分类与目标检测技术。PP-PicoDet是百度飞桨提出的一种轻量级目标检测技术[5],本文主要研究基于PP-PicoDet技术的智能垃圾分类算法。该目标检测算法模型相对于其他深度学习网络,不仅计算量小、延迟低、精度高,同时支持多种硬件环境部署,在垃圾智能分类中有着较强的实用性。
1 目标检测在垃圾分类上的研究现状
作为计算机视觉领域中的一个重要研究方向,目标检测又叫目标提取,就是将待处理图片或视频中所需要识别的对象有效地提取分割出来,得出目标的类别、位置、匹配率等相关信息[6]。近年来,随着计算机性能的不断提升,深度学习技术高速发展,新的目标检测算法层出不穷。按照完成目标检测任务的步骤划分,主流的目标检测算法可以大致分为两个类别:Two-stage与One-stage[7]。
Two-stage目标检测算法可以简单地理解为两步走算法:首先需要找出候选区域,然后对其进行调整分类。代表算法为R-CNN系列算法,包括Mask R-CNN、Fast R-CNN等。
One-stage目标检测算法则无需先生成候选区域,而是直接在网络中提取相关特征来预测目标的类别和位置。代表算法为YOLO系列算法,如:YOLOv4、YOLOv5、YOLOX、YOLOv6等。
目前在垃圾目标检测实际应用中,大多采用了YOLO系列算法,如文献[1]设计了一种基于YOLOv2的智能扫地机器人;如文献[8]设计了一种基于YOLOv3的地面垃圾检测与清洁度评定方法;如文献[9]设计了基于YOLOv5s网络的垃圾分类和检测模型。
文献[10]对几种YOLO系列算法的数据对比,如表1所示。
表1 几种YOLO系列算法的数据对比
表1中所有模型均在COCO 2017数据集上进行训练与测试,采用的GPU均为Tesla T4,并且所有的模型都没有经过预训练,都在数据集上训练了300个epoch。
从表1中可以看出,如果要满足较高的精度值,就需要较多的参数,从而使得模型的推理速度变慢。因此,模型在实际应用中往往精度可以达到需求,但推理速度较慢,难以实际应用。
文献[11-12]对人工智能在垃圾分类中实际的应用展开了相关研究,结果表明:大多数智能垃圾分类硬件设备,存在着技术研发阶段投入资金多,实际应用与后期维护时成本高等问题。因此,大多数居民区难以对这些智能化设备进行采购和使用,导致垃圾分类硬件设施的智能化程度较难在短时间内提升。
智能手机的普及,使得在移动端部署智能垃圾分类算法模型,拥有以下优点:
1)技术研发成本相对较低,投入应用后便于管理;
2)便于推广和宣传垃圾分类相关知识,提高居民垃圾分类的自主意识;
3)便于溯源不文明投放垃圾行为,实施相关处罚;
4)易于根据居民正确投放垃圾的数量给与居民相应的奖励;
5)可以在短时间内大面积使用,提升正确垃圾分类的效率。
从这些优点可以看出,推进移动端智能垃圾分类应用的部署有着重要的意义。
常见的YOLOv5系列算法在移动端实际部署时的推理结果帧率较低,较难满足用户对低时延的需求,所以在移动端部署方面仍面临较大困难。
在移动端部署目标检测相关模型,面临轻量化、速度高、精度高等需求。百度飞桨设计的轻量级目标检测算法PP-PicoDet[5],对模型的速度、精度、部署友好性进行了优化,可以较好地解决这些问题。百度飞桨在Github上给出的部分测试数据如表2所示。
表2 部分PP-PicoDet算法的测试数据
表2中时延测试环境:英特尔酷睿i7 10750H CPU(4线程,FP16预测,采用OpenVINO)。PP-PicoDet模型是在COCO train2017上训练,并且在COCO val2017上进行验证。
上述数据中,PP-PicoDet在较少参数量的情况下可以实现较高精度和较高速度,基本可以满足在移动端部署的需求。
本文研究了基于PP-PicoDet模型的智能垃圾分类,并将其与常用的YOLOv5算法做一个详细的对比测试。
2 算法结构
2.1 YOLOv5整体网络结构
如图1所示,以YOLOv5s为例,讲解YOLOv5的整体网络结构。YOLOv5是在YOLOv4[13]提出后一个多月内就提出的,所以模型的网络结构上与YOLOv4十分相似,仍分为4个部分,分别为input、Backbone、Neck和Prediction。
图1 YOLOv5s整体网络结构图
2.1.1 Input
Input端由Mosaic数据增强、自适应图片缩放、自适应锚框计算3部分组成。
将4张图片随机排布、随机裁剪、随机缩放进行拼接,得到新的图片,实现Mosaic数据增强。通过数据增强,不仅可以对原有的数据集进行扩充,还能提高对小目标的检测能力,使得该模型的鲁棒性得到提高。
自适应图片缩放是指通过计算得出图片所需要添加最少的黑边。因为不同大小的图片统一到规定的尺寸后,将会出现需要增加黑框的情况,如果增加的黑边较多则会增加信息的冗余,增加所需要的推理时间,所以要通过自适应计算的方式以获得最少的黑边添加量。
自适应锚框是指在网络训练过程中通过计算输出的预测框与初始给定的锚框之间的距离,进而反向更新初始锚框,优化调整网络模型的参数。
2.1.2 Backbone
YOLOv5s的Backbone部分由两个部分组成,分别是Focus结构和CSP结构。首先是Focus结构,Focus结构在YOLOv5中被首次提出,其中最为重要的部分为切片操作,即将特征图划分为不同区域,进行分割,然后将相同的区域重新拼接,就可以得到新的特征图。然后是CSP结构,YOLOv5在Backbone和Neck模块上分别设计了一种CSP结构,应用在Backbone上的是CSP1_X结构,应用在Neck部分上的是CSP2_X结构。
2.1.3 Neck
YOLOv5刚出来时,Neck部分仅有FPN结构[14],在后面又增加了PAN结构,其中FPN采用的方式是自上而下的上采样以实现特征信息的传递融合,PAN采用的方式是自下往上的下采样以形成特征金字塔。FPN+PAN结构如图2所示。
图2 FPN+PAN结构示意图
2.1.4 Prediction
Prediction部分,一般由非极大值的抑制操作NMS和Bounding box损失函数所构成。关于边界框无法重合的情况,YOLOv5建议选用GIOU_Loss作为损失函数的解决方案。NMS操作实现了局部极大值的搜索,与此同时抑制了非极大值元素,从而消除冗余边界框,保留最优目标框,并检测出较多的目标。
2.2 PP-Picodet整体网络结构图
如图3所示,PP-PicoDet算法模型整体上可分为:基干网络模块、特征融合模块、网络输出模块。
图3 PP-Picodet整体网络结构图
2.2.1 基干网络模块
PP-PicoDet的基于网络模块,是在原SHuffleNetV2[15]的基础上,在MobileNetV3添加的SE功能块,该模块内包含了ReLU和H-Sigmoid两层激活函数,经过改进后所产生的一种对移动端友好的羽量级的ESnet。
ESnet的两个基本模块如图4所示,由基础的深度可分离卷积(pw conv,dw conv)、Ghost block、SE block和channel shuffle模块组成[5]。
图4 PP-Picodet基干网络结构图
2.2.2 特征融合模块
为从总体上大幅度减少神经网络的参量,并增加可观性能,PP-PicoDet改变了一直被广泛应用的CSP-PAN[5],进行了自上而下和自下而上二路特征的整合,通过采用1×1卷积的方法统一每层的宽度、增加特征尺度,提高了在大目标情况下系统的检测能力。
2.2.3 网络输出模块
PP-PicoDet将CSP-PAN层的输出进行两次DW-PW卷积,再将结果进行分类。在标签分配时,没有采用在全局训练过程中是不可改变的固定标签分配策略,而是采用了随着训练过程不断变化的标签分配策略SimOTA[16]。同时,为了与SimOTA中的代价矩阵和目标函数一致,采用了Varifocal Loss(VFL)[17]和GIoU loss[18]的加权和作为代价矩阵,公式如下:
cost=lossvfl+λ·lossgiou
2.2.4 PP-PicoDet轻量化网络的创新点与优势
1)采用CSP结构构建CSP-PAN作为特征融合模块。CSP-PAN将所有分支的输入通道数统一为1×1卷积,显著提高了特征提取能力,降低了网络参数。将3×3深度可分离卷积扩大到3×3深度可分离卷积来扩展感受野。
2)采用SimOTA动态标签分配策略,并对一些计算细节优化。用Varifocal Loss(VFL)和GIoU loss的加权和作为代价矩阵,在不损害效率的情况下提高精度。
3)进一步增强了网络结构,并提出了一种新的主干网,即增强ShuffleNet(ESNet),它的性能优于ShuffleNetV2。
4)改进了NAS模型,可以自动查找最佳体系结构以进行对象检测,实现了更好的效率和准确性的权衡。
3 实验设置与结果分析
3.1 实验设置
3.1.1 实验数据
通过搜集网上各种垃圾分类公开数据集,以及采用网络爬虫等技术爬取图片,再结合相关程序与人工对获得的数据进行高质量清洗和筛选,最终得到本次实验所用的数据集。该数据集共14 964张图片,包含44种类别垃圾,完全覆盖可回收垃圾、厨余垃圾、有害垃圾、其他垃圾这四种常见的垃圾分类类别。在数据集划分上,采用8:1:1随机划分的方式,即:训练集11 972张,测试集1 496张,验证集1 496张。
数据集标注方法为:先使用LabelImg工具对数据集图像进行目标位置及类别标注,以PASCAL VOC格式保存为XML文件,然后通过自主设计的相关程序将其转换成COCO数据集格式以及YOLO数据集格式。标注文件中包含了最小外接矩形框的长和宽、垃圾中心坐标及其所属类别等相关信息。
数据集中的部分内容如表3所示,部分图片如图5所示。
图5 部分数据图片展示
表3 实验数据集部分内容展示
3.1.2 对比算法
YOLOv5系列算法中,YOLOv5s是目前被用在垃圾分类方面较多的模型,而YOLOv5l在目标检测任务中具有更高的精度和更强的鲁棒性,因此本次实验选择YOLOv5_s_640和YOLOv5_l_640这两种具有代表性的YOLOv5系列算法与PP-PicoDet系列算法进行对比分析。具体的算法介绍如下:
1)YOLOv5_s_640:其主要特点是网络结构比较轻量级,适合在计算资源有限的情况下进行目标检测任务。该模型使用了一系列卷积层、池化层、上采样层等基本的神经网络组件,并且采用了PaddleYOLO在COCO train2017训练集上训练得到的YOLOv5_s_640模型作为网络预训练模型,能够高效地实现对图片或视频中的物体进行实时检测和识别。其中,640表示输入图片的大小为640×640像素。
2)YOLOv5_l_640:采用了PaddleYOLO在COCO train2017训练集上训练得到的YOLOv5_l_640模型作为网络预训练模型。和YOLOv5_s_640相比,YOLOv5_l_640模型的网络结构更加深层,拥有更多的卷积层和更大的感受野,因此在目标检测任务中具有更高的精度和更强的鲁棒性。YOLOv5_l_640需要更多的计算资源,但是在一些对精度要求比较高的场景下,YOLOv5_l_640能够取得更好的检测效果。其中,640表示输入图片的大小为640 640像素。
3)PP-PicoDet_s_320:该模型基于anchor-free的目标检测算法,使用了十分轻量的基干网络预训练模型PPLCNet_x0_75_pretrained,利用了一系列轻量级的卷积层和池化层等基本神经网络组件来实现目标检测和识别任务。其中,320表示输入图片的大小为320 320像素。与YOLOv5_s_640相比,PP-PicoDet_s_320模型的网络结构更加轻量级,但是在一些对计算资源要求比较苛刻的场景下,PP-PicoDet_s_320能够取得更好的检测效果。
4)PP-PicoDet_m_320:和PP-PicoDet_s_320相比,PP-PicoDet_m_320模型网络结构更加深层,并且拥有更多的卷积层和更大的感受野,因此在目标检测任务中具有更高的精度和更强的鲁棒性。该模型同样基于anchor-free的目标检测算法,网络预训练模型为PaddleDetection官方发布的预训练模型PP-PicoDet_m_320_coco_lcnet[19],采用了一系列卷积层、池化层等基本的神经网络组件来实现目标检测和识别任务。其中,320表示输入图片的大小为320 320像素。PP-PicoDet_m_320相比PP-PicoDet_s_320需要更多的计算资源,但是在一些对精度要求比较高的场景下,PP-PicoDet_m_320能够取得更好的检测效果。
5)PP-PicoDet_m_416:网络预训练模型为PaddleDetection官方发布的预训练模型PP-PicoDet_m_416_coco_lcnet[19]。和PP-PicoDet_m_320相比,PP-PicoDet_m_416模型的输入图片大小更大,为416416像素。这意味着该模型能够检测到更多的细节和目标,从而在一些对检测精度要求较高的任务中表现更好。PP-PicoDet_m_416模型采用了一系列卷积层、池化层等基本的神经网络组件,并且基于anchor-free的目标检测算法,能够快速、准确地检测和识别图片或视频中的目标物体。相比较PP-PicoDet_m_320,PP-PicoDet_m_416模型需要更多的计算资源,但是能够取得更好的检测效果。
6)PP-PicoDet_l_640:使用了较大的基干网络预训练模型PPLCNet_x2_0_pretrained。相比于PP-PicoDet_m_416,PP-PicoDet_l_640模型的输入图片大小更大,为640 640像素。这意味着该模型能够检测到更多的细节和目标,从而在一些对检测精度要求较高的任务中表现更好。PP-PicoDet_l_640模型采用了一系列卷积层、池化层等基本的神经网络组件,并且基于anchor-free的目标检测算法,能够快速、准确地检测和识别图片或视频中的目标物体。相比较PP-PicoDet_m_416,PP-PicoDet_l_640模型需要更多的计算资源,但是能够取得更好的检测效果。PP-PicoDet_l_640还拥有更深的网络结构和更大的感受野,因此在一些复杂场景下,会具有更强的鲁棒性和精度。
通过采用相同的数据集、训练环境、训练方式与评估指标,比较以上这些算法,最终筛选出最适合用于移动端部署垃圾目标检测的算法模型。
3.1.3 部署环境
实验训练的环境为远程连接云计算服务器搭建。服务器配置:CPU处理器为16核Intel(R)Xeon(R)Platinum 8350C CPU @ 2.60 GHz,显卡为NVIDIA RTX 3090,显卡内存为24 GB,操作系统为Ubuntu18.04,CUDA版本为11.2,Python版本为3.8,PaddlePaddle版本为2.2。
3.1.4 评估指标
本次算法实验使用训练过程中的loss和全部目标的mAP作为评估指标。
训练时loss值的计算公式如下:
loss=lossbbox+lossdfl+lossvfl
loss值计算公式中,lossbbox为预测值与检测目标真实位置之间的损失,其中lossvfl为Varifocal Loss,lossdfl为Focal Loss。
在对目标检测算法的性能进行评估过程中,有如下相关概念:True Positive(TP)是IoU超过预先给定的阈值的检测框数量(同一个真实框只统计一次);False Positive(FP)是IoU小于等于预先给定的阈值的检测框总量,简单点说就是检测到对于同一个真实框的剩余检查框的总的数量;False Negative(FN)是指检测过程中无法检查到的真实框的总量。于是有:
式中,all detctions和all ground truths,分别表示了全部预测框和全部真实框的总量。而PR曲线一般指的是用Precision和Recall绘制的曲线。在特定类别目标的PR曲线上,该类别的AP值得计算公式如下:
上述计算公式中,r1,…,rn是按升序进行排列的Precison插值段的第一个插值处对应的Recall值,在本次实验中,我们所选取的是0,0.1,…,1这44个Recall值。各类别AP的平均数就是mAP:
式中,k为目标类别数[20]。
3.2 实验过程
将各模型依次在划分好的数据集上进行训练,分析模型训练过程中相关参数的变化情况,并综合比较各模型训练效果、导出模型的性能。
在模型训练策略方面,所有算法都训练100个epoch,每5个epoch进行一次验证,训练时小模型设置batch_size为32,大模型设置batch_size为16,验证时batch_size为8;测试时batch_size为1;初始LearningRate设置为0.002,在steps为300时达到最大值0.08,然后随着训练步数增加慢慢递减至趋于0。训练完成后保存在验证集上表现最好的模型,并在测试集上进行最终评估。
3.3 实验结果
3.3.1 训练过程曲线图对比
各模型训练完成后的mAP曲线对比如图6所示。从图中可以看出,各个模型训练过程中,在验证集上的mAP(0.5:0.95)值变化曲线未出现明显的过拟合现象。
图6 各模型mAP曲线对比图
总体上来看,在相同训练轮数的情况下,PP-PicoDet系列算法的mAP(0.5:0.95)值远高于YOLOv5系列算法。其中,较小的模型PP-PicoDet_s_320和较大的模型PP-PicoDet_l_640的验证结果虽然相对较低,但也都接近0.5,而PP-PicoDet_m_320和PP-PicoDet_m_416得出的结果大致相同,且表现较好。
各个算法模型在训练过程中的loss曲线如图7所示。
图7 各模型loss曲线对比图
从图中可以看出,模型PP-PicoDet_s_320和模型PP-PicoDet_m_320训练时收敛速度相对较快,而较大的模型PP-PicoDet_l_640和YOLOv5系列模型在训练过程中收敛速度较慢,且最终计算出的loss值的效果较差。在所有模型中,PP-PicoDet_m_416的loss值下降的最低,并且训练时间也相对较快,是综合表现较好的模型。
3.3.2 模型评估效果对比
我们对上述各个算法在100个epoch训练过程中保存下来的最好的模型,在验证集上进行评估,评估结果如表4所示。
表4 模型训练结果评估
从评估表格中可以看出,除了模型PP-PicoDet_l_640之外,其他模型的训练时间都较快,并且预测速度达到了100 FPS以上,相比于同类型的其他算法,其检测速度和精度均显著提升。相比之下,YOLOv5系列算法在精度和速度上都处于明显的劣势。因此,可以看出在训练相同轮数的情况下,PP-PicoDet系列算法可以更快地达到较高的精度,而且训练的速度较快,能够节约计算成本,更加适合移动端应用的部署。
3.3.3 模型测试
与模型评估相同,在测试集上进行测试,测试结果如表5所示。
表5 模型训练结果测试
从测试表格中可以看出,YOLOv5系列算法的推理速度较慢,并且准确率也相对较低。相比之下,PP-PicoDet系列各个模型的泛化性较好、准确率较高,测试效果都和验证集上的验证效果相差不多。其中,模型PP-PicoDet_m_416的mAP(0.5:0.95)值和mAP(0.5)都到了0.6以上,属于较高水平,并且在检测速度上达到了111 FPS,在总体上和PP-PicoDet_m_320表现的都较好。
3.3.4 实验结果分析
经过实验验证,可以看出相比于目前常见的用于垃圾分类目标检测的YOLOv5系列算法,基于PP-PicoDet的垃圾分类目标检测算法能够在较少参数量的情况下实现较高的检测速度和检测精度,并且减少了训练时间。总体上基本能够满足在移动端部署垃圾分类目标检测算法模型的需求,对于提高垃圾分类目标检测的智能化程度有较大的帮助。
4 软件测试
4.1 软件系统设计框图
如图8所示,软件系统主要由四大部分组成:MySQL数据库、目标检测算法、Python Flask框架、前端页面。其中,MySQL数据库采用的是MySQL8.0版本,目标检测算法由上述实验训练所得,Flask框架是Python中一种常用的小型后端框架,前端页面采用HTML、CSS、JavaScript三种网页设计基本语言进行设计,并使用了开源的前端UI组件库Layui。
图8 软件系统设计框图
4.2 前后端框架介绍
首先是前端框架,由HTML、CSS、JavaScript三种网页基本语言、开源的前端UI组件库Layui组成。其中,HTML语言用于创建网页的结构和内容,是网页制作的基础。CSS语言用于表示组件的样式,通过CSS语言可以美化网页,增加用户的体验感。JavaScript语言为控制语言,语法上富有逻辑性,通过JavaScript语言可以在网页中添加控制行为,增强网页的动态性和交互性。Layui组件库是一个基于浏览器端原生态模式,面向全层次的前后端开发者,易上手且开源免费的Web界面组件库,里面有许多常用的Web组件,基本满足简单的Web开放需求。
其次是后端框架,采用的是Python中的Flask框架,一种轻巧方便的小型后端框架。它的WSGI工具箱选用的是Werkzeug,模板引擎选用的是Jinja2。Werkzeug库十分强大,其功能相对完备,不仅支持对URL路由请求的集成,而且还支持Cookie、会话管理、交互式Javascript调试等服务。Jinja2库不仅可以较好地防御外部黑客的脚本攻击,还可以提高系统的运行速度。相较于其他同类型框架而言,Flask框架能够较好地结合MVC开发模式,更加轻便、快捷、安全且易于掌握。使用Flask框架能够在短时间内实现功能丰富的Web系统设计。
Flask框架工作原理如图9所示。
图9 Flask框架工作原理图
设计出的算法测试软件系统运行页面,如图10所示。
4.3 垃圾分类目标检测算法测试
通过选择100张图片对各个训练出的算法模型进行测试,平均速度测试结果如表6所示。
表6 模型训练结果测试
通过对软件系统的多次测试,可以大致发现,在仅使用4核Intel(R)Core(TM)i5-10300H CPU @ 2.50 GHz 2.50 GHz处理器的情况下,PP-PicoDet系列算法的速度远高于YOLOv5系列,最快的PP-PicoDet_s_320的速度几乎是YOLOv5s的8倍,表现较好的PP-PicoDet_m_416也大约是YOLOv5s的5倍,速度提升较为明显。测试结果表明,PP-PicoDet系列目标检测算法在实际应用场景下,具有较高的实用性,有助于推动垃圾分类向智能化方向发展。
5 结束语
通过实验对比PP-PicoDet目标检测算法和YOLOv5系列目标检测算法的性能,并测试PP-PicoDet目标检测算法在垃圾分类目标检测上的具体应用,根据实验结果可以看出基于PP-PicoDet技术的智能垃圾分类,相比于目前常用的同类型算法,具有以下优点:
1)模型参数量小,训练速度较快,且泛化能力较强;
2)在相同参数量情况下可以实现较高的检测精度和检测速度;
3)具有较强的实际应用意义,能够助力提高我国垃圾分类智能化程度,改善垃圾处理效率。
通过人工智能技术,能够给人们带来一定的便利,但也会让人们逐渐淡化对垃圾分类的主动意识。如何建立健全垃圾分类智能化管理机制,对正确分类给予奖励,对错误投放能够做到溯源,并进行合理惩罚,还是需要不断地去研究和完善,这样才能够真正地解决垃圾处理难题[21]。