1. 引言
随着城镇化进程不断推进以及人口的集聚和生活水平的提高,城市中产生的垃圾量急剧增加,城市垃圾堆积不仅影响城市景观和市容,更给环境卫生和居民生活带来了严重问题 [1] 。传统的人工巡查方式效率低下,成本高昂,而且容易忽略一些隐蔽的垃圾积累点,难以应对这一快速增长的垃圾产生情况。为提高对非法倾倒垃圾监测效率,减少人工监督或者完全取代人工监督,将深度学习技术中的目标检测(Object Detection)算法应用在垃圾堆的识别与检测中,可以实现垃圾违规倾倒自动化检测 [2] ,及时发现并处理垃圾积累点,避免其进一步扩大,有力地减轻了城市环境的压力,有助于提高城市管理的精细化水平,为城市规划和决策提供可靠的数据支持 [3] 。通过智能识别垃圾堆的分布情况,城市管理者可以更有针对性地制定垃圾清理和治理策略,优化资源配置,提高管理效能。
由于垃圾堆的多样性和环境的复杂性等问题,经常导致检测的精度的准确率不高,因此我们提出了YOLO-AF模型来实现更加准确的垃圾堆检测。该模型以YOLOv7 [4] 为基础模型,通过引入注意力机制(Attention Mechanism)和使用焦点模块(Focus Module)来解决一些垃圾堆和背景相似问题,通过对损失函数优化解决垃圾分类不平衡问题,提高了对垃圾堆检测与识别的精准性和效率。
2. 相关工作
2.1. 基于深度学习的垃圾检测
在垃圾检测领域,Mittal G等人 [5] 介绍了一款名为SpotGarbage的Android应用,用于检测和定位用户点击的地理标记图像中的垃圾,他们提出了一种名为GarbNet的CNN架构,该架构在GINI数据集上进行训练,用于实时垃圾检测。Camero等人 [6] 探索了一种深度神经演化技术,构建并训练了一个循环神经网络(RNN)。RNN预测垃圾容器的填充水平,以跟踪实际城镇产生的垃圾量。Ruiz等人 [7] 通过在Trashnet数据集上训练VGG、Inception和ResNet等几种标准CNN架构进行比较,以寻找对多种垃圾物品进行分类的最佳模型。结果表明Inception-ResNet的组合架构取得了88.6%的准确性,取得了最佳结果。Wang等人 [1] 基于深度学习的架构,提出基于Faster-RCNN以及ResNet的垃圾检测算法,用于实时检测城市中的垃圾,还采用了数据融合和增强技术,提高了精度和准确性。Anjum等人 [8] 研究了一种名为GarbConvNet (GCN)的深度CNN架构,该架构在Garbage Image Dataset (GIDset)上进行训练。GarbConvNet模型以令人期待的准确性检测、定位和分类垃圾和非垃圾图像。VJ A等人 [9] 介绍了一种名为Automatic Waste Segregator (AWS)的系统,旨在将垃圾分为三大类别:金属、有机和塑料,以实现固体废物的高效管理。
2.2. 基于物联网IoT技术的垃圾检测
超声波传感器和GSM模块也被用于跟踪整个垃圾收集过程。Singh A等人 [10] 使用一种基于物联网(IoT)的技术,通过红外传感器从垃圾桶获取实时数据。他们使用RaspberryPi2开发板,当垃圾桶满时,向垃圾管理员发送通知,并建议垃圾收集的最佳路径。Mahankali S等人 [11] 提出通过使用Haar级联分类器、轮廓和Blob创建以检测移动车辆的垃圾处理。基于车辆的车牌,识别车主的身份,使用OpenALPR库进行垃圾识别。
3. 方法
3.1. YOLOv7
YOLO [12] 具有检测速度快、精度高的特点。将目标检测任务作为目标区域预测和类别预测的回归问题。相对于其他目标检测和识别方法,如Faster R-CNN [13] ,YOLO的目标区域预测和目标类别预测被集成到单一的神经网络模型中,更适合在实际应用环境中实现高准确度的快速目标检测和识别。YOLOv7采用了扩展高效远程注意力网络(E-ELAN)、基于级联模型的模型缩放和卷积重参数化等策略,在检测效率和准确性之间取得了很好的平衡。
YOLOv7由四个模块组成,分别是输入、骨干、头部和预测。输入模块将输入图像缩放到统一的像素大小,以满足骨干网络的输入大小要求。骨干模块由若干个BConv卷积层、E-ELAN卷积层和MPConv卷积层组成,其中BConv由卷积层、批量归一化(BN)层和LeakyReLU激活函数组成,用于提取不同尺度的图像特征。E-ELAN卷积层保持了原有的ELAN设计架构,通过引导不同特征组的计算块来学习更多样化的特征,在不破坏原有梯度路径的情况下提高网络的学习能力。MPConv卷积层在BConv层上增加了一个Maxpool层,形成两个分支,以提高网络的特征提取能力。头部模块采用传统的PAFPN结构,引入自下而上的路径,便于将底层信息向高层传递,从而实现不同层次特征的高效融合。预测模块通过REPConv结构调整PAFPN输出的不同尺度的P3、P4和P5特征的图像通道数,最后通过卷积进行预测。
垃圾堆检测模型需要同时满足实时性和准确性的要求。鉴于检测精度和速度之间的良好平衡,我们选择YOLOv7作为基线模型,针对目前垃圾检测存在的问题进行改进,以实现实时准确的垃圾检测性能。
3.2. 注意力机制
在复杂的现场环境中检测垃圾需要考虑许多因素,可变照明条件、遮挡、垃圾和背景颜色相似等问题,都将导致垃圾堆检测不准确。注意力机制是指通过对网络输入部分赋予不同的权重,使模型忽略不相关的信息,专注于重要信息,可以有效提高模型在复杂背景下的特征提取能力。因此,我们将注意力机制模块SE嵌入到YOLOv7的网络结构中来学习通道间的重要性权重,以增强对特定特征的关注度,SE模块如图1所示。
SE模块主要由Squeeze和Excitation两个模块组成。Squeeze步骤通过全局平均池化将每个通道的特征进行降维,得到一个全局垃圾堆特征向量,表示了每个通道的整体贡献。Excitation模块通过学习一个激励向量,可以调整每个通道的权重,从而强化对不同通道对垃圾堆重要特征的关注度。这个激励向量的学习是通过两个全连接层来实现的,这些层可以自适应地学习权重,以适应不同任务的需要。最后,SE模块将每个通道的激励与原始垃圾特征相乘,以生成具有注意力机制的垃圾堆特征图,从而突出垃圾堆的关键特征,增强提取垃圾堆关键特征的能力,减少了复杂背景对垃圾堆检测的干扰。
在Squeeze模块 [14] 中,通过全局平均池化来压缩每个通道的垃圾堆特征图,将其降维成一个固定大小的特征向量,表示每个通道的全局重要性,即该通道在整个垃圾堆特征图中的贡献程度。Squeeze步骤的如式(1):
(1)
其中,
为
通道压缩后的特征值,
和
分别为垃圾堆特征图的高度和宽度,
为
通道在垃圾堆特征图中
位置的特征值。
在Excitation模块 [15] 中,SE模块学习一个权重向量,用于调整每个通道的特征图。这个权重向量被视为每个通道的“激励”,它决定了每个通道在最终垃圾堆特征图中的重要性。这个激励向量通过一个全连接层来学习,然后通过Sigmoid函数进行归一化,以确保权重在0到1之间。Excitation步骤的如式(2)所示:
(2)
式中,
为第
个通道的激励值,
和
为两个全连接层的权重矩阵,
为Sigmoid函数和
为ReLU激活函数。
最后,SE模块将每个通道的激励与原始垃圾堆特征映射相乘,生成具有注意机制的特征映射。如等式(3)所示:
(3)
其中,
是最终输出垃圾堆特征图中的第
通道,
是该通道的激活值,
是原始垃圾堆特征图中的第
通道。
我们将SE模块添加到YOLOv7的骨干网络(如ResNet50)的末端,以增强图像特征的表征能力。SE模块可以自动识别并增强图像中垃圾堆的重要特征,同时抑制噪声和不相关信息,从而提高垃圾堆检测准确性。
3.3. MPConv模块改进
在进行实际垃圾检测中,由于会出现垃圾堆的特征不明显,干扰检测效果。为了让模型更全面地捕捉目标的特征,提高目标检测的性能,更好地适应垃圾堆检测任务,我们通过在YOLOv7的MPConv模块中集成多个卷积核,从而扩展感受野的范围,使其能够有效地捕捉不同尺度下的特征,多尺度信息融合后有助于提高算法对垃圾堆在不同细粒度上的表示能力,增强了检测的全局感知能力。YOLOv7中MPConv模块的两个分支的下分支使用3 × 3卷积内核进行卷积操作 [16] 。如图2所示,当步长为2时,一些特征信息可能会丢失,网络中可能会出现低效的特征学习。

Figure 2. MPConv convolution process
图2. MPConv卷积过程
受YOLOv5中焦点模块的启发,我们用Focus模块 [17] 来代替MPConv下分支中的3 × 3卷积内核,如图3所示。Focus模块将对特征图进行切片操作,在一张特征图片中每隔一个像素取一个值,类似于邻近下采样,这样就得到了四张特征图片,四张图片互补,并且没有信息丢失,使得特征输出通道扩充了4倍,之后将得到的新图片再经过卷积操作,最终得到了没有信息丢失的二倍下采样特征图。通过Focus模块使得垃圾堆的特征图增加,增强了复杂背景下的垃圾检测性能,改进后的MPConv模块我们称之为F-MPConv。
综上所述,改进后的YOLOv7模型如图4所示,我们称之为YOLO-AF。

Figure 4. Schematic diagram of the YOLO-AF model
图4. YOLO-AF模型示意图
3.4. 损失函数优化
对于深度学习模型,通过损失反向传播 [18] 来训练模型中的神经网络权值,度量了模型的预测与实际标签之间的差异,损失函数的选择直接影响了检测结果。传统的损失函数,如二元交叉熵损失函数 [19] ,常用于二分类任务的损失函数,它衡量了模型的输出与真实标签之间的差异。对于每个像素,二元交叉熵损失函数如式(4)所示:
(4)
其中
为像素总数,
为真实标签,
为模型的预测。虽然二值交叉熵损失函数在大多数检测任务中表现良好,但在垃圾分类不平衡方面可能存在一些缺点。
Kullback-Leibler散度损失函数 [20] 是用于测量两个概率分布之间差异的一种损失函数。在目标检测中可以将模型的输出看作是一个概率分布,表示每个像素属于不同的类别。而真实标签也可以看作是一个概率分布,其中只有一个类别的概率为1,其余都为0。Kullback-Leibler散度损失函数如式(5)所示:
(5)
Kullback-Leibler散度损失函数的优点是能够处理类别不平衡问题,因为对于每个像素都考虑了真实标签和模型输出之间的差异。为了解决垃圾分类不平衡问题,我们综合利用了二元交叉熵损失函数和Kullback-Leibler散度损失函数的优点,将它们权重相加,并为每个损失函数分配一个权重,选择将权重均分为0.5,以平等地考虑它们的贡献。我们提出的垃圾检测模型的损失函数如式(6)所示,我们将其称之为rdrop loss。
(6)
通过将二值交叉熵损失函数的像素级预测与Kullback-Leibler散度损失函数的类不平衡处理能力相结合,我们的模型可以解决类不平衡问题,得到更准确的垃圾堆检测结果。
4. 实验
4.1. 数据集
论为了涵盖垃圾堆在不同环境和场景中的多样性,我们在城市、郊区和乡村等不同地域进行了广泛的数据采集,并标注了相应的数据集。通过高分辨率的数字相机和无人机等设备,获取了包括公共场所、居民区等不同场景下的垃圾堆图像。这些图像覆盖了垃圾的各种类型、规模和形状,确保了数据集的多样性。我们选取不同环境和不同时间的垃圾堆图片作为研究对象,图像分辨率为640 × 640像素。为了得到多样性的图像数据,采集的图像包括五个场景:生活垃圾、建筑垃圾、白天、夜晚和遮挡,垃圾堆数据图像如图5所示。

Figure 5. Examples of garbage heap images: (a) Domestic rubbish at night; (b) Domestic rubbish during the day; (c) Obscured domestic rubbish; (d) Building rubbish during the day
图5. 垃圾堆图片示例:(a) 夜晚的生活垃圾;(b) 白天的生活垃圾;(c)遮挡的生活垃圾;(d) 白天的建筑垃圾
为了增加数据集的多样性和训练算法的鲁棒性,采用随机旋转、镜像翻转、亮度调整等方式,生成更多样化的训练样本,提高算法对于光照、角度和噪声等变化的适应能力,使得垃圾堆检测在实际场景中更为可靠。整个数据集共3370张图片,划分为训练集、验证集和测试集,三者的比例为8:1:1,数据集结构如表1所示。

Table 1. Garbage heap dataset information
表1. 垃圾堆数据集信息
4.2. 实验环境及评价指标
实验配置如下:操作系统为Windows 10的64位操作系统的专业版;深度学习框架为Pytorch1.7;CUDA版本为11.1;编程语言为Python 3.9。训练时输入图片的大小为640 × 640。为了减少训练过程时间,获得更好的训练效果,将学习率设置为0.001,权重衰减系数设置为0.0005,使用Adam优化器,训练批次设置为16,迭代周期设置为300个epoch。
为了全面、客观地评估改进YOLOv7算法的性能,采用精度(P)、召回率(R)、F1得分(F1)、平均精度(AP)和mAP对检测性能进行评价,涵盖了模型在不同方面的表现 [21] 。具体公式如下(7)~(11)。
1) 精度(Precision)
精度是指模型在所有被预测为正类别的样本中,实际为正类别的比例更高的精度意味着算法更少地将负样本错误地分类为正样本,具有更好的准确性。
(7)
2) 召回率(Recall)
召回率衡量了模型能够正确检测出所有正样本的能力。高召回率表示算法对于真实存在的垃圾堆有更好的捕捉能力,避免了漏检的情况。
(8)
3) F1得分(F1 Score)
F1得分是精度和召回率的调和平均,综合考虑改进YOLOv7模型的准确性和全面性。追求更平衡的F1得分,以确保算法在准确性和召回率之间取得良好的平衡。
(9)
4) 平均精度(Average Precision, AP)
平均精度综合模型在不同类别上的精度表现,考量每个类别的精度,从而更全面地评估了算法在各类别上的性能。
(10)
5) 平均精度均值(mean Average Precision, mAP)
mAP是AP的平均值,提供对整个数据集的综合评估。mAP综合考虑了模型在不同类别上的性能,为算法的整体效果提供了直观的度量。
(11)
其中,TP是被检测为垃圾堆的垃圾堆,FP是被检测为垃圾堆的背景,FN是未被检测的垃圾堆。P和R可以从TP、FP和FN计算,F1可以从P和R计算。
4.3. 与其他算法比较
为了证明本文所提模型的优越性,利用控制变量原理进行对比实验,将所提模型与当前主流的目标检测器在相同实验环境和相同数据集上的检测性能进行了对比,在我们的数据集训练200个epoch后,训练结果显示性能趋于平稳。因此,300个epoch足以用于数据集的训练过程。表2显示了不同模型在P、R、F1、mAP和平均检测时间的训练结果,最佳结果都以粗体突出显示。

Table 2. Comparison of the detection effect of YOLO-AF with other models
表2. YOLO-AF与其他模型的检测效果比较
对比结果表明,我们的模型不仅保证了较高的检测精度,而且满足了实时检测速度要求。YOLO-AF在精度(P)、召回率(R)、F1得分(F1)、以及平均精度(mAP)上分别为91.27%、88.47%、89.85%和92.45%,都明显超过原有的算法。特别是在mAP方面,达到了92.45%,有着显著提升。YOLO-AF在垃圾堆检测方面优于表2中的其他模型,在检测速度和检测精度之间取得了良好的平衡。8个模型的检测时间均小于25 ms,YOLO-AF虽然平均检测时间略高于YOLOv7-tiny (21.95 ms对比18.54 ms),但仍满足实时性要求,考虑到性能的全面提升,这种增加是可以接受的。
4.4. 消融实验
为了验证我们的YOLO-AF模型对垃圾堆检测的优化效果,进行了多个消融实验。每个实验都使用相同的训练参数和不同的模型结构进行,分别为:实验1:嵌入SE注意力机制模块;实验2:替换损失函数为rdrop loss;实验3:添加F-MPConv模块;实验4:嵌入SE注意力机制模块及添加F-MPConv模块;实验5:嵌入SE注意力机制模块及添加F-MPConv模块和替换损失函数rdrop loss。消融试验的结果如表3所示。

Table 3. Garbage heap dataset information
表3. 消融实验结果
由表3所示,通过引入SE注意力机制,整体性能有所提升,mAP提高至91.87%,通过对通道进行加权,使网络更加关注重要的特征,有助于提升对垃圾堆的细致表达。但召回率略微下降至84.65%,而平均检测时间增加至23.37 ms。
通过优化损失函数后,mAP进一步提高至91.51%,但召回率略微降低至83.79%,而平均检测时间略有增加至21.34 ms。这是由于优化后的损失函数更加关注难以训练的样本,导致对于一些正样本的捕捉不足。增加的平均检测时间表明,引入更复杂的损失函数会带来一些计算负担。
通过使用F-MPConv模块,模型性能得到显著提升,mAP和召回率分别达到92.04%和87.56%,平均检测时间为22.45 ms。通过融合多尺度信息和增强非线性特性,使得模型更好地捕捉垃圾堆的复杂特征,使得性能明显得到提升。
通过将SE和F-MPConv模块结合使用后,mAP持续提升至92.26%,Recall稍有下降至86.46%,平均检测时间为22.63 ms。SE注意力机制对于提高精度有一定帮助,但在Recall和检测速度上有轻微的影响。
同时引入SE、优化的损失函数和F-MPConv模块后,mAP保持在92.45%,而Recall显著提高至88.47%,平均检测时间为21.95 ms。可以看出,结合SE、优化的损失函数和F-MPConv模块,整体性能相较于基准模型得到了提升,综合考虑了精度、召回率和检测速度的权衡。
4.5. 检测效果分析
为了探究YOLO-AF模型与原YOLOv7模型在不同场景下的垃圾堆检测性能的差异,从测试集中选取50张不同场景的垃圾堆图片进行测试。测试结果如表4所示。从表4可以看出,待测试的垃圾堆数量为61个生活垃圾,56个建筑垃圾,55个白天的垃圾堆,58个夜晚的垃圾堆以及60个被遮挡的垃圾堆。将YOLO-AF模型输出的检测结果与图片的标注数据进行对比,可以看出,YOLO-AF模型对五种场景的垃圾堆的检测结果优于原始模型。

Table 4. Comparison results of the YOLO-AF model and YOLOv7 in the detection of garbage heaps under different types
表4. YOLO-AF模型与YOLOv7在不同类型下检测垃圾堆的对比结果
对于不同垃圾类别,YOLO-AF模型可以准确区分生活垃圾和建筑垃圾,识别的正确率分别达到了93.44%和91.07%,相较于YOLOv7的86.89%和87.50%有明显提升。针对不同光线下的场景,在光线充足的白天,YOLO-AF模型识别的正确率为91.38%,而YOLOv7为87.93%;而在光线不足的夜晚,YOLO-AF模型识别的正确率为92.86%,而YOLOv7仅为85.71%。在遮挡情况下的检测任务中,YOLO-AF模型同样表现出卓越的性能,识别正确率达到了90.00%,相对于YOLOv7的83.33%有显著提升。
这些结果不仅显示改进后的YOLOv7模型在不同垃圾类别下的更高准确性,而且在识别错误率方面也相对较低。总体而言,YOLO-AF模型相较于YOLOv7在实际垃圾堆检测中展现了更为可靠和准确的性能,为其在实际应用场景中的广泛推广提供了有力的支持,因此,YOLO-AF更适合复杂环境中的垃圾堆检测。然而,在某些情况下,我们的算法无法成功检测,这些检测失败的主要原因是无人机拍摄的角度和距离与现实监控摄像存在一定差距,而且在现实环境中,存在可以模仿垃圾堆特征的不规律摆放的物体。这种相似性可能会导致错误检测。不同场景下垃圾堆的检测结果如图6所示。

Figure 6. Comparison of detection results: The first line is an example of YOLOv7 detection results. The second line is an example of YOLO-AF detection results
图6. 检测结果比较:第一行为YOLOv7检测结果示例,第二行为YOLO-AF检测结果示例
5. 结论
本文提出的YOLO-AF主要是实现复杂环境下对垃圾堆的高效检测。该模型使用在各种复杂环境中收集的不同类别垃圾堆作为数据集。通过增加注意力机制,对原有网络模块进行改进,优化损失函数,提高了模型的检测速度和精度。实验结果表明,本文改进的策略可以显著提高复杂环境中不同类型垃圾堆的检测精度,而不会显著影响检出率。
本文提出的模型在计算性能较强的个人计算机上表现良好,但其模型复杂度较高,在低配计算平台上无法达到实时检测的要求,在弱光条件且高度遮挡的场景中需要提高检测性能。未来,我们计划探索模型压缩和轻量级设计,目的是在移动和嵌入式设备上部署模型,同时平衡准确性和速度。我们将研究使用立体相机计算的点云图像,这可能会更准确地识别和定位垃圾堆。
NOTES
*通讯作者。