APP下载

基于YOLOv8的可回收垃圾识别方法及工程化应用研究

2024-07-24罗倩倩彭威杨国华

电脑知识与技术 2024年17期

摘要:为了加强生活垃圾分类管理、节约资源,生活垃圾分类引起了社会高度重视。文章基于YOLOv8深度学习框架进行可回收垃圾识别,随后将开发环境中训练好的垃圾分类模型,根据生产环境边缘侧硬件需求进行模型适配,并在边缘侧进行实时垃圾检测推理,以实现工程化落地应用。文章通过在垃圾分拣生产环境仿真平台对本文提出的方法进行验证。在传输轨道上方安装固定光源及工业摄像头,边缘设备JetSon Nano装载开发环境下训练好的垃圾分类模型,负责对传送带上的垃圾进行实时检测推理。实验证明,生产环境边缘侧进行垃圾检测推理实时性高,准确率达88%以上,满足工程应用需求。

关键字:深度学习模型;可回收垃圾识别;YOLOv8;边缘设备JetSonNano

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

文章编号:1009-3044(2024)17-0029-04 开放科学(资源服务)标识码(OSID) :

1 研究背景

随着城市化步伐的加快,生活垃圾的数量急剧增加,通过深度学习技术自动有效地进行垃圾分类可以减少垃圾回收任务中的巨大劳动力。由于人工智能垃圾分拣系统通常在垃圾分拣生产环节安装多个智能检测设备,实时对传送带上的垃圾进行检测识别,并依据检测结果通知机械臂进行自动垃圾分拣。

然而,在这样的生产环境边缘侧,边缘设备通常只配置有限的计算资源,无法满足存储和运行复杂神经网络模型的要求。因此,需要借助云计算中心来完成这些任务,但云协同会引发响应延时和网络带宽消耗的增加,并带来用户隐私数据泄露等潜在风险[1]。

为了满足生产环境边缘侧人工智能项目的部署应用,设计高效、高性能的轻量级神经网络成为解决问题的关键[2]。然而,为了提升模型的准确度,深度神经网络往往采用更深、更大的架构,这导致了模型参数的显著增加、存储需求的上升和计算量的增大[3]。受限于物联网边缘设备在计算能力、存储空间和能源资源方面的局限,深度神经网络难以被直接部署到这些设备上[3]。因此,需要部署低内存、低计算资源、高准确度且能实时推理的轻量级深度神经网络到边缘设备。

为了应对这一重要任务,我们设计和实现一个能够在生产环境边缘设备上实时进行垃圾检测识别的系统,以实现工程化落地应用。首先,在开发环境下,我们在高性能PC服务器上对基于YOLOv8的垃圾模型进行训练、验证、评估和测试。随后,我们将训练好的模型根据生产环境边缘侧硬件进行适配,本文系统中所用的是来自英伟达的Jetson Nano边缘计算盒子。最后,我们将适配后的模型部署在边缘侧硬件终端,实现对垃圾的推理检测,并将检测结果作为后续机械臂进行垃圾分拣的依据,从而在生产环境边缘侧实现了工程化落地应用。

2 相关技术

2.1 目标检测

作为计算机视觉最重要的领域之一,随着深度学习的发展,目标检测在过去几年中取得了巨大进展。目标检测算法可分为两类。第一类算法是基于递归CNN模型设计的,该模型通过选择性搜索或CNN网络产生区域建议,然后进行分类和重划分。这些算法准确得多,但效率低下。另一种算法仅使用CNN网络来直接预测不同目标的类别和位置,其中成功的例子包括YOLO 和SSD。 其中,YOLO (You Only LookOnce)系列模型是一类广泛应用于目标检测的深度学习模型,其独特的特点是端到端地检测,能够在一次前向传播中同时完成目标检测和定位,具有高效性和准确性的优势[4]。

YOLO是目前比较流行的目标检测算法,速度快结构简单,只需要一次CNN运算,提供end-to-end的预测, YOLO算法不断改进,产生了YOLO9000 算法、YOLOv3、YOLOv5 以及较新的YOLOv8算法。YOLOv3 是有着较大改进,它相对于YOLO 和YOLO9000的改进之处在于采用多尺度检测和darknet53网络结构,对象分类用Logistic取代了softmax,在一定程度上缓解了小目标检测不到的问题以及多个框叠在一起只能画出一个框的问题。后续的YOLO 算法都是在此基础上做不断地改进和提升。

2.2 YOLOv8模型

YOLOv8 是于2023年1月10日推出的。截至目前,它是计算机视觉领域中用于分类、检测和分割任务的最先进模型。该模型在精度和执行时间方面都优于所有已知模型。YOLOv8是YOLO系列模型的最新王者,各种指标全面超越现有对象检测与实例分割模型,借鉴了YO⁃LOv5、YOLOv6、YOLOX等模型的设计优点,全面提升改进YOLOv5 的模型结构基础上实现,同时保持了YOLOv5工程化简洁易用的优势。YOLOv8的特点在于融合了许多实时目标检测中优异的技术,仍然采用了YOLOv5中的CSP(跨阶段局部网络)思想、特征融合方法(PAN-FPN)和SPPF模块[5]。YOLOv8除了支持姿态评估以外,通过模型结构的修改还支持了小目标检测与高分辨率图像检测。如图1所示官方对YO⁃LOv5和YOLOv8在 COCO Val 2017数据集上训练的结果对比。每张图的识别准确性、训练速度上,YO⁃LOv8n模型均取得更好的mAP。

YOLOv8主要的创新点包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数,可以在从 CPU 到 GPU 的各种硬件平台上运行,具体变化为:

1) 第一个卷积层的 kernel 从 6x6 变成了 3x3。

2) 所有的 C3 模块换成 C2f,结构如下所示,可以发现多了更多的跳层连接和额外的 Split 操作去掉了Neck 模块中的 2 个卷积连接层。

3) Backbone 中 C2f 的 block 数从 3-6-9-3 改成了 3-6-6-3。

4) N/S 和 L/X 两组模型改了缩放系数。

5) Head 部分变化最大,从原先的耦合头变成了解耦头,并且从 YOLOv5 的 Anchor-Based 变成了Anchor-Free,而且不再有之前的 objectness 分支,只有解耦的分类和回归分支。

基于YOLOv8工程化简洁易用的优势,本系统采用YOLOv8 对垃圾进行检测识别。YOLOv8 模型由Backbone、Neck 和 Head 三个关键部分构成。Back⁃bone主要用于提取图像特征。 Neck 通常由多个卷积层和特定的激活函数组成,可以对提取的特征进行进一步的加工处理。Head 由多个卷积层、激活函数和上采样等组成,生成检测目标的位置、类别和置信度等关键信息。 Head 模块的设计和优化,对于模型的检测精度和泛化能力起至关重要的作用[6]。

3 系统框架

本文中设计并实现了一个基于EdgeAI的可回收垃圾检测与识别系统。如图2所示,主要由三个部分构建组成:边缘检测设备、边缘AI计算盒子和高性能PC服务器或中央云。

1)高性能PC服务器。由于训练YOLOv8模型通常需要大量的计算资源,因此有必要求助于高性能PC服务器来训练图像分类模型、存储图像或视频数据集。本系统中首先将在高性能PC服务器完成垃圾分类模型的训练、验证和评估,生成准确率、性能较好的模型。

2)终端检测设备。边缘检测设备由一台工业摄像机构成,用于实时采集垃圾传送带上的垃圾图像,并发送给边缘AI计算盒子进行识别。

3)边缘AI计算盒子。将高性能PC服务器生成的模型,依据边缘AI计算盒子硬件要求,进行模型适配,转化为轻量级模型,然后应用该模型在生产环境边缘侧进行垃圾推理检测。最后,根据垃圾检测结果,边缘AI计算盒子向机械臂发送控制信号,将垃圾放入其正确的容器中。

4 实验应用和验证

4.1 系统准备

1)硬件平台设备准备。垃圾分拣系统生产环境仿真平台硬件设备主要包括终端检测设备、边缘AI计算盒子、垃圾传送带和分拣机械臂。其中终端检测设备配备了工业摄像机、光源。mvubs500c的工业相机负责使用稳定的光源进行传送带上垃圾图像捕获。边缘AI 计算盒子 JetsonNano 主要负责垃圾实时推理检测。2)官网下载YOLOv8预训练模型。

4.2 数据集准备

我们收集了2 500 多张图片垃圾图片,图像数据示例如图3所示。随后,使用LabelImg 标注工具对每张图片中的垃圾进行标注,分为湿的(wet) 、其他的(other)、有害的(hazardous)和可回收的(re⁃cycle) ,并进行数据集划分,其中训练集包含2 192张图片,验证集包含200张图片,测试集包含108 张图片。

4.3 模型的训练和评估

1)模型训练。我们设定训练的轮数200,训练的批次为4。需要新建一个yaml文件用于存储训练数据的路径及模型需要进行检测的类别。YOLOv8在进行模型训练时,会读取该文件的信息,用于进行模型的训练与验证。yaml 文件参数修改的具体内容如下:包括对train、val、test三个数据集路径的修改、分类数和分类标签值的修改。经过200次训练后,我们看到各类垃圾的mAP50 都达到了0.85 以上,平均值为0.884,训练数据的总体准确率高于88%,且每张图片预处理时间0.9ms,推理时间为2.8ms,性能较好,如图4 所示。

2)模型评估。在深度学习中,我们通常用损失函数下降的曲线来观察模型训练的情况。YOLOv8在训练时主要包含三个方面的损失:定位损失(box_loss)、分类损失(cls_loss)和动态特征损失(dfl_loss) 。定位损失box_loss:预测框与标定框之间的误差,越小定位得越准;分类损失cls_loss:计算锚框与对应的标定分类是否正确,越小分类得越准;动态特征损失(dfl_loss) :用于回归预测框与目标框之间距离的损失函数,越小越准。本文在模型训练结束后,通过可视化损失函数可见模型收敛好,准确率约在85%以上,如图5所示。

3)模型测试和验证。在测试集合上对实物图片进行测试和验证,在四类垃圾上获得较好的识别效果,如图6所示。模型训练完成后,可以得到一个最佳的训练结果模型.pt文件,可以使用该文件进行后续生产环境边缘侧的推理检测。

4.4 工程化落地应用

生产环境边缘推理测试主要是在英伟达Jetson⁃Nano边缘设备上运行。英伟达JetsonNano边缘设备搭载四核Cortex-A57 处理器,128 核Maxwell GPU 及4GB LPDDR内存,有足够的AI算力,支持NVIDIA Jet⁃Pack,其中包括用于深度学习、计算机视觉、GPU计算、多媒体处理、CUDA,cuDNN 和TensorRT 等软件库。首先将PC机测试通过模型训练完成后,我们可以得到一个最佳的训练结果模型.pt文件。由于深度学习框架中,TensorRT对Pytorch的支持更为友好,因此我们转换为TensorRT部署文件格式,实现模型优化和加速目标,达成更高推理速度。具体先将Pytorch模型文件.pt 模型转换为权重文件 .wts ,最后转换为TensorRT引擎文件.engine,JetsonNano边缘设备中运行的核心命令如下:

1)进入/jetson/yolov8目录,运行命令“cd /jetson/yo⁃lov8”和“python3 gen_wts.py yolov8s.pt”,将.pt转换为.wts;

2)将前面生成的wts文件从/jetson/yolov8复制到jetson/tensorrtx/yolov8里,运行命令“sudo ./yolov8 -s ../yolov8s.wts yolov8s.engine s”生成.engine文件。

本文将JetsonNano 边缘计算盒子部署到垃圾分拣系统生产仿真平台,对经由终端设备工业摄像头采集的图像进行实时检测推理,由于考虑到摄像头采集图像频率和传送带速度的协调性问题,如果传送带速度慢而摄像头采集速度快,有可能会重复发送图像分类数据,因此添加图像采集延时功能,如下所示:

#如果图像已经存在并且允许识别

if show_raw is not None and self.runClassify:#对图像进行分类

category, cls_name, rate, image = self.yolo.predict(show_raw)

current_time = time.time()

inf = (current_time - self.last_time)

if inf >= self.ui.spb_time.value(): #超过指定的时间间隔

self.ui.lbl_msg.setText(′识别中...′)

if cls_name != ′′ and self.ui.slider_conf.value() <=rate * 100 and inf >= self.ui.spb_time.value():

# 发MQTT消息

if self.client is not None:

config = self.config[′mqtt′]

try:

self. client. publish(config[′topic′], str(category). en⁃code(encoding="ascii"))

show_image = ImageQt.ImageQt(image)

self. ui. lbl_classify. setPixmap(QtGui. QPixmap. fro⁃mImage(show_image))

self.ui.lbl_category.setText(cls_name)

self.ui.lbl_rate.setText("{0:.2f}".format(rate))

self.last_time = current_time

self.ui.lbl_msg.setText(′等待分类...′)

except IOError as err:

print(err)

else:

pass

最后,在垃圾分拣生产环境仿真平台边缘侧进行垃圾检测识别验证。实验证明可以实时有效检测识别传送带上的垃圾,并通知分拣小车将垃圾送入相应装置。边缘侧垃圾检测识别效果如图7所示。实验证明系统检测速度快,准确性高,满足工程化应用需要。

5 总结

在本文中,我们基于YOLOv8模型对垃圾图像进行检测识别,并将在开发环境下训练好的垃圾分类模型,适配到生产环境边缘侧JetsonNano硬件中,进行边缘侧实时检测推理,从而实现人工智能项目的工程化落地应用。系统集成了终端检测设备、边缘AI计算盒子和高性能PC机,为处理繁重的计算任务提供了出色的平台。

参考文献:

[1] 谭郁松,李恬,张钰森.面向边缘智能的神经网络模型生成与部署研究[J/OL].计算机工程,2024.DOI:10.19678/j.issn.1000-3428.0068554.

[2] 葛道辉,李洪升,张亮,等.轻量级神经网络架构综述[J].软件学报,2020,31(9):2627-2653.

[3] 徐小华,周长兵,等.轻量级深度神经网络模型适配边缘智能研究综述[J].计算机科学,2024(5).

[4] 马冉,顾宏.基于改进YOLOv8的火灾目标检测系统[J].人工智能与机器人研究,2024(1):56-65.

[5] 雷源毅,朱文球,廖欢.复杂场景下的改进YOLOv8n安全帽佩戴检测算法[J].软件工程,2023,26(12):46-51.

[6] 王宏宇,韩笑,宋席发,等.基于YOLOv8的路面病害识别方法研究[J].工业控制计算机,2024,37(5):98-99,101.

【通联编辑:光文玲】