1. 引言
近年来,随着经济水平的发展,无论是城市还是农村的生活水平均有大幅提高,垃圾的分类、清运和资源化利用成为一个亟待研究的课题。在目前的实际生产生活当中,广泛应用的仍然是人工分类垃圾,尤其是在初步分选当中。这既会增大人力成本,也会影响工人的身心健康。针对垃圾的初步分选问题,由于工业相机在采集图像的精度提升的同时成本有所降低,提高了目标检测技术在垃圾目标的识别分类上的实用价值。同时计算机CPU和GPU的性能有了很大的提升,在基于深度学习的目标检测算法的训练速度得到提高的同时,也使训练好的模型能更快地处理工业相机采集的图像,并计算出目标的位置,控制执行机构实现对垃圾目标的抓取 [1] [2] [3] 。
基于深度学习的目标检测是指从输入图像中识别出感兴趣目标并将目标类别以及在图像中的位置作为结果进行返回的技术。根据目标检测实现步骤的不同,深度学习目标检测算法可分为基于候选区域的二阶段算法以及基于边框回归的一阶段算法。基于候选区域的目标检测算法有:R-CNN、Fast R-CNN [4] 、Faster R-CNN [5] 等。基于边框回归的检测算法有:YOLO [6] 系列、SSD [7] 等。相较于二阶段算法,YOLO (You Only Look Once)等一阶段算法模型结构简洁,检测速度快的同时保证了足够的准确率,在工业界得到了广泛的应用。YOLOv1算法于2015年被提出,在随后的研究中,不同的研究者通过改进网络结构、添加数据增强模块等方式,提出了YOLOv2、YOLOv5、YOLOX、YOLOv7等各个改进版本(见图1)。在工业生产当中,YOLO系列算法是较为成熟且应用广泛的一种目标检测算法。

Figure 1. The time when the YOLO series algorithm was proposed
图1. YOLO系列算法被提出的时间
2023年1月10号,曾于2020年提出过YOLOv5算法的Ultralytics公司发布了最新的YOLOv8算法。本文首先以YOLOv5算法为例,简述了YOLO系列算法的原理,分析了YOLOv8算法的改进之处;然后基于该算法,在自行收集的可回收垃圾数据集上训练目标检测模型,分析了训练好的模型的识别结果;最后和基于YOLOv5算法的识别结果进行对比,实验表明YOLOv8算法对可回收垃圾有更好地识别和检测能力。
2. YOLO算法原理
2.1. YOLO算法简述
YOLO系列算法首先在目标图像上划分S × S个网格,每个网格预测B个边界框及相对应的置信度,对于预测同一个目标的冗余边界框,算法通过非极大值抑制算法消除多余的边界框,得到检测结果。
2.2. YOLOv5算法的框架和功能
YOLOv5算法的主要框架由如图2所示的几个结构组成。

Figure 2. YOLOv5 algorithm frame diagram
图2. YOLOv5算法框架图
1) 输入端通过Mosaic数据增强、自适应锚框计算、自适应图片缩放对输入的图片进行初步处理。Mosaic数据增强能够将四张图片通过随机缩放、裁剪和拼接后再进行训练,能够在提高检测效果的同时减少GPU算力的使用。自适应的锚框计算用于提高定位精度和收敛速度。自适应图片缩放能根据输入到网络的图片大小,计算原始图片应缩放的比例和为了补足尺寸所添加的边框粗细,有效地提高了训练速度。
2) Backbone部分对接收到的图像进行特征提取。它采用了Focus结构,CSP (Cross Stage Partial)结构(CSPNet的跨阶段局部融合网络),减少梯度信息的重复,降低计算量,提高神经网络的学习能力。
3) Neck部分对特征图进行多尺度特征融合,并把这些特征传递给预测层。同样通过CSP结构的使用,提高了网络特征融合的能力。
4) Prediction部分进行最终的回归预测,三个检测头用于检测不同大小的目标。
2.3. YOLOv8算法的改进
1) 将CSP模块替换为C2f模块,通过并行更多的梯度流分支,在保证轻量化的同时获得更加丰富的梯度流信息。
2) Neck部分中的CSP模块同样被替换为C2f模块,同时将不同阶段Backbone输出的特征直接送入上采样操作。
3) Prediction部分的目标分类和检测框目标回归两个任务解耦,分别进行预测,可以加快模型收敛速度和提高检测精度;分类损失为VFL Loss,主要特点是正负样本非对称加权、突出正样本为主样本,解决了正负样本不平衡的问题。回归损失引入了DFL模块,让网络快速聚焦于和目标位置距离近的位置的分布。
图3为官方在COCO数据集上训练的结果对比,各个字母代表模型的参数量和规模,其中n最小,x最大。由左半部分参数与mAP所绘制的折线可见YOLOv8n权重与YOLOv5n权重相比,在参数基本不变的情况下mAP得到了较大提升,其余规模的模型也有类似的较好效果。由右半部分每张图的训练时间与mAP所绘制的折线可见在训练速度上,YOLOv8n模型也能在计算速度大体相当的情况下取得更好的mAP。

Figure 3. Comparison of the YOLOv8 algorithm with other algorithms on the COCO dataset
图3. YOLOv8算法在COCO数据集上与其他算法的对比
3. 实验结果与分析
3.1. 实验环境配置和参数设置
本文实验在Windows10操作系统下进行,GPU为Geforce RTX 2070,CPU为R5-3600,内存为16 GB,CUDA版本为12.0,使用开发环境软件为Pycharm,语言为Python3.8,深度学习框架为Facebook开源的Pytorch。实验的迭代参数epochs设为50,批样本数量batch size为16,采用随机梯度下降法,权重衰减weight decay为0.0005。
3.2. 实验结果分析和结论
本文采用的模型评价标准为平均精度值mAP。对于某一个类别目标,它的检测精度可以由P-R曲线得出,其中P代表精确率Precision,指在预测为正的样本中实际为正样本的概率,计算公式如(3-1)式:其中TP代表实际为正,且被预测为正的样本个数,FP代表实际为负,但被预测为正的样本个数。
(3-1)
R代表召回率Recall,指实际为正的样本中预测为正样本的概率,计算公式如(3-2)式:其中FN代表实际为正,但被预测为负的样本个数。
(3-2)
这两个指标度量的维度不同,所以引入了AP (Average Precision),即不同召回率上的精度值的平均。AP越高,说明检测失误越少。对所有类别目标的AP取平均值就得到了mAP。表1为基于YOLOv5算法的模型和基于YOLOv8算法的模型对四种不同种类可回收垃圾的检测结果,YOLOv8模型的mAP值比YOLOv5模型提高了约4%;在玻璃瓶和利乐包的识别上两个模型的检测结果相似,但在易拉罐的识别上YOLOv8模型的准确率提高了6.1%,在塑料瓶的识别上准确率提高了8%。可见对比基于YOLOv5算法训练的模型,基于YOLOv8算法的模型能够更好的识别和分类垃圾目标。

Table 1. Test results for four types of recyclable waste
表1. 四种可回收垃圾的检测结果
实际检测图像如图4(a)至图4(c)所示,左侧图片为YOLOv5算法训练的模型,右侧为YOLOv8算法训练的模型的检测结果。从图4(a)中可以看出,YOLOv5模型识别被遮挡的塑料瓶时,置信度较低,即认为该目标为塑料瓶的可能性较小;在图4(b)中,YOLOv5模型将双面胶识别成了易拉罐;在图4(c)中,YOLOv5模型预测的边界框未能完全包含垃圾目标,同时置信度也较低。从不同情况下的检测结果对比可以看出,YOLOv5模型有一定的漏检和误检情况发生,在图片中目标较多的情况下检测效果有所欠缺,而同时YOLOv8模型能够较好地应对这些情况,定位也更为准确。
(a)
(b)
(c)
Figure 4. (a) Detection result 1; (b) Detection result 2; (c) Detection result 3
图4. (a) 检测结果1;(b) 检测结果2;(c) 检测结果3
4. 结论与展望
可回收垃圾的识别与分类是垃圾分类当中较有价值的一部分,有利于资源的回收,也具有一定的经济意义。本文针对可回收垃圾数据集进行模型训练,将YOLOv8算法训练的模型与YOLOv5模型进行比较,训练结果表明在同一数据集上,YOLOv8模型比YOLOv5模型的识别准确率更高,预测的目标框也更为准确,可见将YOLOv8系列算法应用到实际的垃圾分类当中能够比使用其他算法减少漏检和误检,具有很大的意义和实用价值。