基于改进YOLOv8 模型的巡检机器人目标检测方法研究
2024-05-16殷北辰王子健徐新喜
殷北辰,王子健,程 智,徐新喜
(军事科学院系统工程研究院,天津 300161)
0 引言
生物安全实验室也称生物安全防护实验室,是通过防护屏障和管理措施来避免或控制被操作的有害生物因子危害,达到生物安全要求的生物实验室和动物实验室。诸多新发未知和突发烈性病原体研究需要在高等级生物安全实验室中进行[1]。目前实验室的安全监测主要依赖设备层人工巡检的方式,该方式存在安全风险,且无法实时保障巡检质量。将智能机器人技术引入实验室设备层是现阶段满足高等级实验室安全管控要求的最佳选择[2]。采用智能机器人技术进行设备层巡检,既具有人工巡检的灵活性和智能性,同时克服和弥补了人工巡检中人员工作环境危险、压抑,并且工作质量无法保证等缺陷和不足。运用目标检测方法对设备层目标仪表进行识别能实现巡检机器人对目标的准确识别[3],从而提高巡检机器人工作的效率并缩短巡检时长。
近年来,许多学者提出了不同的目标识别检测模型[4]。比如以区域卷积神经网络(region covolutional neural networks,R-CNN)系列为代表的两阶段算法模型[5],该算法模型采用区域提取操作,首先利用卷积神经网络(covolutional neural networks,CNN)骨干网提取图像特征,然后从特征图中找出可能存在的候选区域,最后在候选区域上进行滑动窗口操作,进一步判断目标类别和位置信息。为进一步提高目标检测的实时性,一些学者提出将目标检测转化到回归问题上的简化算法模型,如YOLO 系列和单发多框检测器(single shot multibox detector,SSD)系列基于位置回归的单阶段目标检测模型[6],在提高检测精度的同时提高了检测速度。
Li 等[7]提出了一种新的目标检测框架,通过增加多角度锚框来处理目标的多尺度问题,设计了双通道特征融合网络,沿着2 个独立的路径学习局部和上下文属性,以解决目标外观模糊问题。Zhu 等[8]在YOLOv5 的基础上采用增加一个检测不同尺度的物体的预测头、用变形预测头(transformer prediction heads,TPH)替换原有的预测头、整合卷积块注意力模型(convolutional block attention module,CBAM)的方式使无人机检测的平均准确率(average precision,AP)提高了7%。Zhai 等[9]使用空间深度转换卷积(space-to-depth convolution,SPD-Conv)代替卷积提取多尺度特征,对YOLOv8 模型进行改进,更好地保留了微小目标的特征,并去除了大目标检测头,使模型大小减小了57.9%。
针对巡检机器人仪表识别过程中存在巡检机器人主动识别仪表时采用复杂模型准确率较高但速度慢,而采用简易模型速度快但准确率较低的问题,本文拟构建基于改进YOLOv8 模型的巡检机器人识别目标仪表方法,通过选择不同的模型结构、引入注意力机制、改进损失函数和采用柔性非极大值抑制(soft non-maximum suppression,Soft-NMS)函数,提升巡检机器人在运动过程中对仪表的识别精度和速度,实现巡检机器人的工程应用。
1 YOLOv8 模型
2023 年1 月,Ultralytics 团队在YOLOv7 的基础上提出一种识别速度更快、性能更强的YOLOv8 模型,其引入了新的Pytorch 训练和部署框架,使得自定义模型的训练变得更加方便[10]。
YOLOv8 算法共有5种网络结构,分别是YOLOv8n、YOLOv8s、YOLOv8m、YOLOv8l 和YOLOv8x,5 种网络结构的区别在于Backbone(骨干网络)及Neck(多尺度特征融合模块)部分卷积的次数和残差块的数目不一样,但基本原理相同[11]。YOLOv8 网络结构图如图1所示[12],其网络模型分为3 个部分,分别为Backbone、Neck 和Head(预测端)。
图1 YOLOv8 网络结构图
(1)Backbone:采用一系列卷积和反卷积层来提取特征,同时使用残差连接和瓶颈结构来减小网络的大小并提高性能。该部分采用C2f 模块作为基本构成单元。Backbone 部分由5 个CBS 模块、4 个C2f模块和1 个快速空间金字塔池化(spatial pyramid pooling-fast,SPPF)模块组成。
(2)Neck:采用多尺度特征融合技术,将来自Backbone 不同阶段的特征图进行融合,以便更好地捕捉不同尺度目标的信息,从而提高了目标检测的性能和鲁棒性。
(3)Head:负责最终的目标检测和分类任务,设有3 个检测头,用于在不同的尺寸信息下检测目标信息。检测头包含一系列卷积层和反卷积层,用于生成检测结果。
尽管YOLOv8 相较于YOLOv1~YOLOv7 已经具有了良好的检测性能和推理速度,但针对巡检机器人的工作环境,仍然存在以下问题:
(1)在YOLOv8 模型中,结构越复杂,深度越深,检测效果越好。但是相应的越复杂的模型其参数也就越多,训练效率越低且权重越高,检测时需要更多的运算资源,严重降低了目标检测实时性,不适于在机器人端部署。
(2)在巡检机器人运动过程中,采集的视频信息绝大部分为无用信息,大量的视频信息输入占用大量的运算资源,降低了目标检测的实时性和稳定性。
(3)当预测框在目标框内部且预测框大小一致时,边界框回归损失函数将由完整交并比(complete IoU,CIoU)损失函数退化为简单的IoU 损失函数,无法实现准确预测框的定位和更好地对模型进行优化;且训练过程中应用CIoU 损失函数预测框在水平或垂直方向上优化困难,收敛较慢,降低了训练效率[13]。
(4)在目标检测的后处理过程中,针对很多目标框的筛选,通常采用非极大值抑制(non-maximum suppression,NMS)算法操作。NMS 算法对于重叠阈值设定敏感,设定过低会导致漏检,设定过高会导致误检,对于部分重叠目标的识别仅能检测出未被遮挡目标,而对于被部分遮挡目标则不会输出检测结果[14]。
2 模型改进策略
2.1 选取合适模型
本研究中目标检测对象为体积较小的指针式仪表,为了设计出适用于本文应用环境的模型,综合考虑训练效率和检测精度等问题,将YOLOv8 的5 个预训练模型采用仪表数据集进行训练。对训练后的模型通过测试数据集进行检测,选出最优模型。
2.2 引入注意力机制
注意力机制主要用于解决小目标检测问题,与本文的应用场景非常匹配,注意力机制的引入能很好地解决巡检机器人在运动过程中目标检测的实时性和稳定性问题。
坐标注意力机制是一种用于加强深度学习模型对输入数据的空间结构理解的注意力机制。先前的轻量网络的注意力机制大多数采用了压缩和激励(squeeze-and-excitation,SE)模块,仅考虑了通道之间的信息,忽略了位置信息[15]。尽管后来的CBAM 尝试在降低通道数后通过卷积来提取位置注意力信息,但卷积只能提取局部信息,缺乏对长距离关系提取的能力。为此,有学者提出了新的高效注意力机制,能够将横向和纵向的位置信息编码到通道注意力中,使得移动网络能够在关注大范围位置信息的同时不会带来过多的计算量[16]。注意力机制的结构如图2 所示。
图2 注意力机制结构图
设输入的特征图通道数为C,图像纵向高度为H,横向宽度为W,注意力机制首先对输入特征图[C,H,W]进行2 次全局平均池化,一次在宽度方向上,一次在高度方向上。这2 次操作分别得到2 个特征映射:在宽度方向上的平均池化得到的特征映射[C,H,1]和在高度方向上的平均池化得到的特征映射[C,1,W]。这2 个特征映射分别捕捉了在宽度和高度方向上的全局特征。这2 个特征映射也允许注意力模块捕捉到沿着一个空间方向的长期依赖关系,并保存沿着另一个空间方向的精确位置信息,这有助于网络更准确地定位感兴趣的目标。将上述2 个特征映射合并,通过简单的堆叠操作,得到一个新的特征层,尺寸为[C,1,H+W],在宽度和高度2 个方向上的维度合并在一起。然后对合并后的特征层进行卷积操作、标准化和激活函数操作来进一步处理特征,最后分离得到在宽度和高度维度上的注意力向量[17]。
在巡检机器人运动过程中,使用注意力机制可以从相机获取的视频信息提取注意区域,使得YOLOv8目标检测过程中能够关注更多待检测信息[18]。
2.3 EIoU 损失函数改进
YOLOv8 原算法中采用CIoU 损失函数[19],CIoU虽然提高了边界框宽高比的尺度信息权重,增加了检测框尺度以及长和宽的损失[20],但由于宽高比描述的是相对值,所以有研究[21]在CIoU 的基础上计算纵横比,提出了高效交并比(efficient IoU,EIoU)损失函数。
EIoU 的惩罚项在CIoU 的惩罚项基础上将纵横比的影响因子拆分后分别计算目标框和预测框的长和宽,该损失函数包含重叠损失、中心距离损失、宽高损失3 个部分。前2 个部分延续CIoU 中的方法,但是宽高损失直接使目标框与预测框的宽度和高度差达到最小,使得收敛速度更快。EIoU 惩罚项计算公式如下[22]:
式中,cw和ch分别表示覆盖2 个检测框的最小外接框的宽度和高度;b和bgt分别表示预测框和真实框的中心点;w和wgt分别表示预测框和真实框的宽;h和hgt分别表示预测框和真实框的高;ρ 表示2 个中心点间的欧式距离。将YOLOv8 中原本的损失函数CIoU 改为EIoU,可能会使YOLOv8 的目标检测取得更好的效果。
2.4 预测框改进
Soft-NMS 是一种改进的目标检测算法,用于在NMS 过程中更加平滑地抑制冗余的边界框[23]。
传统的NMS 方法是通过设置一个固定的阈值来判断2 个边界预测框是否重叠并进行抑制[24]。然而,固定的阈值可能无法很好地适应不同目标之间的交叠情况[14,25],导致一些具有较低置信度但与真实目标高度重叠的候选框被错误地排除[26-27]。
Soft-NMS 通过引入一个衰减函数来解决这个问题,将重叠区域的置信度进行衰减,而不是直接舍弃[28]。通过引入衰减函数,Soft-NMS 可以更加灵活地调整候选框的权重,对于与已选择框高度重叠但置信度较低的候选框,仍有机会被保留下来[29-30],从而提高了目标检测的准确性。
3 实验与分析
3.1 设置数据集
本文在研究过程中采集的图片数据分为2 个部分,一部分为指针式仪表静态拍摄图片数据,一部分为巡检机器人工作过程中摄像头录制的视频截图获得的图片数据。统一对图片进行命名,最终选取1 000 张图片作为目标检测训练的总数据集,如图3所示。将数据集分为训练集800 张、测试集200 张,训练集与测试集彼此独立,内容无交叉。
图3 目标检测训练总数据集中部分图片
使用Labelimg 工具选取YOLO 格式对数据集中的每一张图片进行标注,标注过程中锚框要完全覆盖待检测目标,如图4 所示。Labelimg 会在图像中生成边界框形式的外接框,并在手动标注结果保存后自动生成与标注图像同名的txt 文件。
图4 Labelimg 进行数据集标注示意图
3.2 YOLOv8 现有模型对比分析
为选取最有利于巡检机器人进行仪表识别的目标检测模型,应考虑训练效率和检测精度等综合因素。首先使用YOLOv8 现有的5 种预训练模型进行训练,相关参数见表1。然后再通过实验对比分析选出最适合本文应用场景的模型结构。
表1 5 种不同模型训练参数
本文操作系统为Ubuntu 20.04,基于Pytorch 框架,CPU 为Intel Core i9-10900k,GPU 为NVIDIA RTX TITAN,内存为24 GiB。本次训练预设训练次数为300 次,批次为16,学习率为0.01,动量项为0.937,衰减正则项为0.000 5。
将表1 中5 个模型均按照上述训练参数进行训练,获得5 个训练后模型。为了对比不同模型的检测效果,本文采用以下4 个指标[30]作为模型评估指标:
(1)准确率(Precision,Pre),即标出的正确目标个数除以标出的目标总个数,越接近1,准确率越高,计算公式如下:
式中,TP 表示真正为正的样本预测为正;FP 表示真正为负的样本预测为正。
(2)召回率(Recall,Rec),即标出的正确目标个数除以需要标出的目标总个数,越接近1,召回率越高,计算公式如下:
式中,FN 表示真正为正的样本预测为负。
(3)mAP_0.5:平均准确率均值(mean average precision),即将IoU 设为0.5 时,计算每一类所有图片的AP,然后对所有类别求平均值。
(4)mAP_0.5:0.95:表示在不同IoU 阈值(从0.5到0.95,步长0.05)上的平均mAP。mAP 的计算公式如下:
式中,AP 表示平均精度;p表示准确率;r表示召回率;K表示检测类别数,本文中为1。
训练后的5 个模型参数对比如图5 所示。从图5 可以看出,训练次数达到100 次后,各项数值趋于平稳,随着训练次数达到300 次,曲线均取得了较好的拟合效果。通过训练结果对比图可以发现准确率和召回率随着训练次数增加逐渐稳定,趋近于1,这表明5 种模型训练均取得了较好的效果;mAP_0.5也随着训练次数增加稳定于1,mAP_0.5:0.95 在前100 次训练缓慢上升,随后趋于稳定缓慢接近于1。可以发现对于不同的训练模型,最终的稳定值虽有一定差距,但总体结果均>0.9,且趋势稳定,整体呈现随着模型复杂程度越高mAP_0.5:0.95 值越大。
图5 YOLOv8 5 种模型训练结果对比图
为进一步分析模型训练效果,对训练后的5 种模型进行测试集检测对比实验,训练后的5 种模型性能指标和在同一个测试集上的检测结果见表2。
表2 5 种不同模型训练后性能指标和检测结果
由表2 可知,模型结构越复杂、参数越多,相应的训练耗时越长、训练后模型泛化能力越强。从不同模型训练后的性能指标和检测结果对比可以看出,相对复杂的预训练模型如YOLOv8s、YOLOv8m 训练后得出的模型检测准确率不如相对简单的YOLOv8n,最复杂的YOLOv8x 检测准确率与其他模型差距不明显,因此可以得出复杂的模型训练后得出的模型在实际情况下检测效果不一定更好。YOLOv8n 预训练模型深度和宽度最小,得出的训练后模型层数、参数量最小,检测时间也最短,非常有利于部署在巡检机器人上;相较于其他更复杂的模型YOLOv8m、YOLOv8l 和YOLOv8x,其准确率与之相近,且检测时间仅为5.4 ms,远少于复杂模型(10 ms 以上)的检测时间。YOLOv8n 训练结果如图6 所示。
图6 YOLOv8n 训练结果
图6中,位置损失表示预测框与标定框之间的误差,值越小代表预测框定位得越准;分类损失用于衡量锚框与对应的标定分类是否正确,值越小代表分类越准确;分布焦点损失用于校正模型在预测物体边界框时的误差,值越小代表模型在预测边界框方面的性能越好。由图6 可以看出,模型损失值随训练次数增加而不断减小并趋于稳定,曲线拟合状态好,准确率、召回率、mAP_0.5 和mAP_0.5:0.95 均趋向于1 并保持稳定。综合考虑模型的检测准确率、检测时间以及模型权重大小,最终选择YOLOv8n 作为检测模型。
3.3 改进模型实验
为解决巡检机器人在目标检测过程中存在的问题,进一步提升模型检测性能,本文将YOLOv8n 模型继续进行改进优化。由在模型主干结构中引入注意力机制,将损失函数由CIoU 改为EIoU,并将预测框的选取由普通的NMS 改进为更合理的Soft-NMS。改进后的YOLOv8nxt 和YOLOv8n 模型训练的位置损失值和mAP_0.5:0.95,如图7 所示。
图7 2 种模型的训练结果对比图
由图7 可知,改进模型YOLOv8nxt 和YOLOv8n的位置损失值均随着训练次数增加而不断下降,并逐渐趋于稳定。改进后的YOLOv8nxt 的位置损失值相较于改进前的YOLOv8n 降低1.3%,实现了改进策略所提出的要求,证明改进策略使改进模型具有更高的定位精度。如图7(b)所示,YOLOv8nxt 和YOLOv8n在整个训练过程中mAP_0.5:0.95 逐渐接近于1,并在300 次训练后趋于稳定,训练模型达到拟合,改进后的YOLOv8nxt 相比于改进前的YOLOv8n,其mAP_0.5:0.95 提高了1.9%,说明改进模型取得了较好的训练结果。
为进一步评价改进模型YOLOv8nxt 和未改进模型YOLOv8n 的性能,将YOLOv8nxt 和YOLOv8n在测试集上进行实验,2 种模型的性能指标和检测结果比较见表3,2 种模型检测结果对比如图8所示。
表3 2 种模型的性能指标和检测结果比较
图8 2 种模型检测结果对比
由表3 可知,改进的YOLOv8nxt 模型相较于YOLOv8n 模型检测准确率提高接近1%,检测时间仅增加0.2 ms,改进后模型尺寸也较接近,仍然适合部署在巡检机器人上。由图8 单仪表图像对比可知,YOLOv8nxt 相较于YOLOv8n 不仅检测结果置信度更高,检测框的尺寸也更小,更加贴合仪表的实际位置,证明了引入注意力机制和改进损失函数对于提高目标检测能力的有效性;由图8 多仪表图像对比可知,对于被部分遮挡的仪表,YOLOv8nxt 模型在YOLOv8n 模型漏检的情况下仍能顺利检测到目标,证明NMS 的改进可以增强算法对被遮挡目标的识别能力。
4 结语
本文针对巡检机器人在仪表检测阶段存在的识别精度不足和受遮挡时识别效果较差等问题,同时考虑目标检测模型在巡检机器人的部署,首先通过实验在YOLOv8 的5 个预训练模型中选择适合本文的预训练模型YOLOv8n,其次通过增加注意力机制、替换损失函数为EIoU 和替换NMS 函数为Soft-NMS 3种方式对原模型进行改进。实验结果表明,通过实验选取的YOLOv8n 模型更适合巡检机器人的目标任务,且改进后的目标检测模型YOLOv8nxt 与改进前的YOLOv8n 相比,位置损失值降低1.3%,mAP_0.5:0.95提高了1.9%,检测准确度率提高了0.87%,证明改进后的模型对目标的检测能力有显著提升,鲁棒性强;在改进模型的性能后,模型大小仅为6.2 M,检测时间也仅增加了0.2 ms,说明该模型既能满足识别精度要求,又同时满足检测速度要求,能有效解决巡检机器人在目标检测阶段存在的问题。本文改进的仪表检测模型虽然在检测效果方面表现良好,但对指针式仪表的具体朝向没有明确的感知,在算法检测到仪表的条件下,还需要额外输入表盘角度信息才能保证后续仪表读数工作的顺利开展。今后的工作将围绕3D 目标检测方向开展,在检测仪表的同时判断仪表的倾斜角度,以提升研究的实用价值。