魏海娟, 朱俊卿, 吴钧, 王刚, 阮益超, 奚延
(上海城投污水处理有限公司白龙港污水处理厂,上海 201201)
深度学习算法解决工业领域相关问题在实际应用部署时如何提高目标检测算法在工业特定目标检测任务的准确率,并在算力有限的嵌入式设备上实时部署运行是业界的研究热点。深度学习目标检测算法按照算法思想可以分为One-stage和Two-stage两类[1],其中 One-stage 模型使用卷积神经网络Backbone结构提取的卷积特征,直接回归检测目标的分类置信度和位置信息,优点是速度较快,但准确率相对而言较低。在工业级应用中,考虑到成本因素,移动端多采用算力有限的嵌入式设备,本文研究以One-stage检测算法为基础。而One-stage目标检测算法中以Yolo系列[2-5]最为经典,其中Yolov5算法融合了前人较多的目标检测算法优化思想。因此被广泛应用于交通、医疗和安防等实际应用检测任务中[6-9]。但是,该算法针对单一尺度特定小目标的检测准确率较低,同时在嵌入式设备上的实时性有待改善。
(1) 基于Yolo网络模型,在Backbone结构中引入混合域注意力机制模块CBAM,提升了模型对小目标检测的准确率。
(2) 基于Yolo网络模型,优化了Neck和Prediction结构,增加网络模型对单尺度小目标的检测,提高了模型的准确率和实时性。
(3) 使用TensorRT对优化模型进行加速,实现了一个完整的工业级目标检测系统,指示灯检测准确率达到95%,实时性符合要求。
本文以巡检机器人为平台,通过在线仿真和实际泵站出口仪器仪表检测场景下实地试验,验证了本文算法的有效性。
近年来,深度学习在目标检测任务上实现了重大的突破,卷积神经网络的性能在GPU硬件平台得到了极大的提升。但现有解决方案在实际应用中存在着不足。其一,极大多数目标检测算法对图像中较大目标有很好的识别检测效果,但机柜仪器仪表在图像中占像素点较小,属于极小目标,对常见目标检测算法提出了挑战;其二,常见目标检测算法的性能优势取决于硬件平台算力,在实际应用中由于成本的限制,移动端巡检机器人的硬件算力有限,算法的实时性和性能受到了较大的限制。
仪器仪表巡检任务中,指示灯、旋钮、夜景数显和指针表盘的检测作为主要的视觉检测任务,具有检测位置不确定、检测目标小、遮挡严重和移动端硬件算力弱等特点,这容易使检测算法在检测过程中出现误差、延迟等,在极端情况下可能会导致巡检机器人在机房的巡检时产生误报警等情况。因此,综上所述,本次目标检测任务存在以下两个主要问题。
车上,大丫对我非常亲热,我很感动。过去,我一直怀疑少年时代的友谊能否在中年时代还发挥它的影响。现在看,这反倒是我的一种不自信了。
(1) 所有待检测目标极小(不存在多尺度变化问题)、受遮挡干扰且数量位置多变。
(2) 移动端硬件计算资源有限,检测任务实时性要求高。
基于上述提到的目标检测算法、注意力机制模块在视觉领域的应用以及本文需要探究的实际问题,本文提出了一种基于深度学习注意力模块的目标检测算法,通过将CBAM模块应用于Yolo模型的网络结构中,利用注意力机制在通道维度和空间维度的关注,有效提升算法对机会仪器仪表等小目标的检测准确率,具体算法细节在后面章节详述。
2.1.1 CBAM模块
CBAM[10]是典型的混合域注意力机制,同时关注特征图在通道维度和空间维度上存在的有意义特征,通过应用通道和空间注意模块,来影响网络模型在通道和空间维度应该学习和关注哪些。
CBAM模块在通道维度上应用注意力机制的示意图如图1所示。输入特征图的每个通道都代表一个专有的特征提取器。因此通道注意力模块的作用是帮助整个检测算法关注有意义、对检测任务有帮助的特征。为了有效地计算通道注意力,首先通过全局最大池化层(maxpool)和全局平均池化层(avgpool)分别对输入特征图F进行信息提取,得到两个通道描述;然后再送入一个两层的神经网络MLP,这两层的神经网络是共享的;再将MLP输出的两个通道特征叠加;最后使用Sigmoid激活函数处理得到最终的权重系数 ,该权重系数的作用是通过与初始输入特征图F进行点乘,从而对原输入特征图产生作用,最终得到经过通道注意力机制作用过的特征图。
图1 CBAM模块通道维度注意力模块示意图
通道注意力模块的具体计算方法如式(1)所示,
Mc(F)=σ{MLP[AvgPool(F)]+MLP[MaxPool(F)]}
(1)
式中:F为输入特征图,其中F是输入特征图;MLP为多层感知机;σ为Sigmoid函数;AvgPool、MaxPool分别为平均池化和最大池化操作。该流程与图1相对应。MLP计算方法如式(2)所示:
(2)
式中:W0、W1为两层神经网络的权重。该操作将池化后的通道描述送入两层的神经网络进行特征提取得到最终的特征描述。在本文方法中,全局最大池化是指对于输入的特征图在通道维度对每一层特征图取所有点中的最大值,然后叠加成一个新的通道描述 。全局平均池化是指对于输入的特征图 ,在通道维度对每一层特征图取所有点中的平均值,然后叠加成一个新的通道描述 。
2.1.2 Backbone结构嵌入CBAM模块
注意力机制在改善深度卷积神经网络的性能方面具有巨大潜力,基于注意力机制的 CBAM的作用是增强这两个维度有意义的信息,网络结构中主干网络负责对不同图像细粒度的特征进行提取。为了增强网络模型对小目标特征的学习,本文将CBAM模块应用在了模型的主干网络,如图2所示。在原有网络模型结构的基础上,将CBAM模块嵌入到了主干网络的卷积层之后用于优化卷积层提取到的图像特征,由于CBAM模块主要涉及全局池化操作和仅含两层神经网络的MLP感知机计算,因此并没有增加较多的参数量,能够适用于本文研究目标。
图2 骨干网络改进结构图
本文研究的任务是巡检机器人实时机柜仪器仪表检测,待检测目标属于小或极小目标。为了提高模型前向推理速度,本文对Neck网络和Prediction网络进行了精简,删除了适合尺寸较大的待检测目标的特征图分支,因此Neck网络和Prediction网络相应的网络连接全部删除,该结构设计可以降低模型复杂度,并且不会影响本课题对极小目标机柜仪器仪表的检测准确率。
在本文新添加的CBAM模块里,通道注意力模块的感知机由两层组成,即隐藏层和输出层,其参数矩阵分别为全局最大池化和全局平均池化。输入为特征图经过参数矩阵后共享了感知机权重矩阵,输出为两个特征模块。特征模块叠加组成通道注意力模块,最终由感知机输出。试验发现,包含一个隐藏层的MLP模型在参数量以及检测效果上的提升最为出色,其中通道注意力模块中,感知机缩减参数r设置为2,激活函数采用Sigmoid函数,空间注意力模块中的卷积层卷积核大小为 ,卷积核个数设置为1,同时激活函数采用Sigmoid函数。
通过添加CBAM模块紧接在卷积层之后,不改变输入特征图的通道数,其他的结构不做改变,参数为(Cin,Cout),Conv层与Focus层参数为(Cin,Cout, kernel_size, stride),SPP(spatial pyramid pooling layer)层即指空间金字塔池化层,其参数为(Cin,Cout, [kernel_size1, kernel_size2, kernel_size3]),C3层参数为(Cin,Cout),上采样扩大倍数值因子为2。Neck网络和Prediction网络结构删除了大尺度预测分支,与原网络结构相比,减少了卷积层数,提高了网络前向推理的速度。
本文的改进网络模型参数量与原Yolov5-s模型参数量对比,如表1所示。可以看到本文提出的优化后的网络结构模型与原模型相比,参数量没有较大变化,在引入通道注意力模块的同时,没有带来参数量的上升,这对模型前向推理的实时性和后续模型的部署没有产生影响。
表1 网络参数量对比
3.1.1 模型训练
本文在PyTorch平台上进行训练与测试,设置训练初始学习率lr0为0.01,最终学习率lrf为0.2,batch大小为64,类别数为4(指示灯、旋钮、指针仪表、数字仪表),训练迭代次数epochs设置为300。
将原网络和本文改进算法网络模型进行同步对比训练试验,并对其损失函数进行可视化,该损失曲线包括了:① Objectness Score loss,即模型前向推理为目标的loss均值;② Box loss,模型预测框损失值,本文算法模型中采用GIoU方法计算,该值越低表示模型输出框的位置更准确;③Classification loss:模型推理目标分类损失,该值越低表明网络模型输出框对该目标的类别判定更为准确。
如图3所示,损失曲线图横轴表示训练的epoch数目,纵轴表示各自的损失值。由训练损失曲线可以看出,当epoch小于100时,模型处于训练初始阶段,此时注意力模块的通道注意模块和空间注意模块的效果还没有学习到输入特征图的关键特征和位置。随着训练轮数增加,基于注意力模块的改进算法模型相比较原网络模型训练收敛速度更快,最后当模型趋于收敛时,改进网络模型的损失在三个方面都偏小,这表明了注意力模块能够帮助模型去关注输入特征图的重要特征提取,有效增强模型的检测能力。
图3 模型训练损失变化对比
3.1.2 优化算法模型效果验证
本小节进一步从模型训练权重大小、模型检测平均准确率AP值、模型运算量即浮点计算次数以及前向推理时间来对比验证本文提出的优化算法模型的有效性。其中前向推理时间表示网络模型单张图像输入到输出结果的耗时,本文测试时使用多张图片推理的平均值来进行对比,因为是进行模型性能对比试验验证,因此运算平台保持一致即可。
整个参数实际对比如表2所示。可以看到基于注意力模块优化结构后的网络模型在权重大小和浮点计算次数上相比原模型稍小,原因是:一方面CBAM注意力模块自身参数量较少,比较适合嵌入到网络结构中优化算法性能;另一方面本文对原网络模型的输出结构进行了删减,去除了大尺度预测输出分支,从而进一步减少了模型的参数量。由表2的mAP值和模型前向推理时间可以发现,针对实际机房服务器状态灯极小目标检测应用场景,无论是算法的检测准确率还是实时性都优于原网络模型,证明了优化算法模型的有效性。
表2 训练模型指标参数对比
3.1.3 小目标检测效果验证
本文通过在实际场景中采集100张图片作为极小目标测试数据集,利用本文所提出的模型进行检测验证,结果如表2所示。该结果表明,优化后的算法模型对于极小目标的检测具有较高的准确率,满足实际应用的需求。
AGV机器人在机房巡检时,需要对机房所有机柜进行检测识别,机房机柜高度为2.2 m,有效检测高度是2.05 m,机器人中心距机柜约1 m。
机柜仪器仪表检测神经网络的计算平台采用的是Jetson Nano移动端嵌入式平台,Jetson Nano提供了包括usb 2.0和 usb 3.0的接口,其带宽分别为12 Mb/s和480 Mb/s,为了保证usb摄像头带宽不超过计算卡给定带宽,并且计算卡额外支持其他usb设备的数据传输,因此计划使用usb 2.0摄像头两个,usb 3.0摄像头一个,设置摄像头分辨率为640×360,帧率为30 fps。
巡检机器人对机柜仪器仪表的检测流程中,机器人定位与导航功能模块负责路径规划与定位导航。当到达检测点时,定位导航功能模块通过ROS通信发布开启检测通知和具体位置信息,状态灯检测模块开启检测,并实时的记录保存服务器故障信息;当检测结束时,则同样通过ROS通信发布开启导航通知,如此根据巡检机器人的规划路径完成整个出口泵站的机柜仪器仪表检测任务。
本文面向实际工业场景,针对污水处理厂出口泵站机房仪器仪表检测任务,提出了基于注意力机制的小目标检测算法适用于工业场景下多种小目标的检测,能够有效解决深度学习算法在工业嵌入式计算平台的实时性问题。在已有网络模型结构基础上进行了算法改进,并通过试验验证了在实际应用场景中对指示灯小目标检测的有效性。最终,算法实际部署后的检测准确率达到了97.8%,帧率达到了30帧,完全满足准确率和实时性要求。