APP下载

基于机器视觉的中继器轻量化检测方法

2022-02-10蔡向上

装备制造技术 2022年11期
关键词:中继器浅水轻量化

蔡向上

(上海交通大学 船舶海洋与建筑工程学院,上海 200240)

0 引言

具备实时视觉感知以及装配机械手的ROV(Re原motely Operated Vehicle)目前已经在渔业养殖,水下船体检测,维修以及水下搜救与取证等领域被广泛应用[1]。连接中继器TMS(Tether Management System)与ROV 本体的脐带缆可以实时传输电力以及视频信息,在大幅延长ROV 的工作时间与作业范围的同时还提升了ROV 实时高效处理视频信息并做出相应决策的能力。这使得ROV 可以完美代替人在水下复杂环境中高效地执行各种任务,既减小了人力成本又提升任务安全系数。在浅水湖泊中就可以部署ROV 监测鱼群的动向,并且实时提供鱼群的健康信息以及摄食习惯等,为专业养殖人员提供全面的信息。

ROV 在工作结束后往往会通过中继器TMS 进行回收。原始笼式TMS 回收方案中ROV 在靠近回收装置的时候会关闭推进器,然后通过绞车收缩脐带缆的方式缓慢地步进中继器。这需要有专人负责回收过程末端ROV 与中继器的对准与固定锁紧工作,效率低且失败几率高。机器视觉的发展打破了这一尴尬局面,2020年Petar Trslic[2]提出了一种基于4个引导灯进行ROV 与TMS 装置相对位姿估计的视觉方案,采集到的图像通过ROV 控制舱中计算机进行滤波、二值化阈值处理提取灯光区域,最终基于四个引导等中心点位置与相机参数得到位姿转换矩阵。这是首次实现ROV 与TMS 的自主动态对接,大西洋的对接试验证明了他们方案的有效性。然而固定阈值的二值化方式仅仅适用于深海昏暗的环境,在存在噪点光源影响环境光照或者其余杂物的遮挡的情形中,这种检测方案很可能失败。

GPU 算力的提升以及神经网络的不断完善,基于深度学习的机器视觉也成了不同领域学者的研究热点。传统视觉算法中的特征提取算子(sift/surf/orb)带来了算法的高复杂度,实时性较差。此外浅水环境存在的水草,杂质以及不均匀的光照等都会影响传统视觉算法检测精度,鲁棒性较差。基于深度学习的视觉检测算法具有较好的检测精度与强鲁棒性,在训练过程中自动提取适合检测目标的特征,但是巨大的卷积计算量以及GPU 显存消耗给嵌入式设备带来了不小的挑战。本研究基于端到端的深度学习神经网络yolov4 提出了1 种轻量化模型方案,基于tensorrt 加速以及deepstream 部署,在jetson Xavier nx 上获得了较好实时性的检测结果。为了提升算法在复杂浅水环境中提取目标特征的能力,引入了CBAM 注意力机制,这以较低的计算成本提升了模型精度。

1 轻量化目标检测

目标检测指的是对图像或者视频中的目标进行分类和定位的任务。早期目标检测模型是人为选取特征提取算子的集合,速度慢且准确度较低。卷积神经网络和深度学习的引入改变了视觉感知领域的格局,2016年Joseph redmon[3]提出的单阶段端到端的检测算法yolov1 相比于之前的RCNN 系列算法在实时性上大大提高,随后更多研究人员加入了yolo 系列算法改进更新迭代的工作中。基于Durga Nooka Venkatesh Alla 的研究成果,yolov4 算法在AUV 水下对接识别坞站上平均精度最高,本研究选取yolov4 作为轻量化模型的baseline。

1.1 原始yolov4 模型

Yolov4 模型架构如图1 所示。其主干部分通过CSPDarknet53 将输入图片进行32 倍下采样并完成特征提取,其中CSP 结引入CSPnet 的理念在减少计算量的基础上获得更丰富的特征图;Neck 部分的FPN与PAN 结构将不同尺度特征层中的信息进行融合并将这些特征分配给检测头。CBL 与CBM 都负责特征提取,分别由Conv+Batch Normalization 以及Leaky-ReLU/MISH 激活函数组成。区别在于Mish 激活函数允许负梯度区间值的流入,允许更好的信息流入神经网络;3个尺度不一的特征图则负责实现目标的检测与分类,三层检测头的设计能减小目标尺度变化对检测造成的影响。

图1 原始YOLOv4 结构图

1.2 改进的yolov4 网络

1.2.1 引入Ghost 模块

为了确保卷积神经网络对数据有深刻的理解,性能优秀的神经网络的特征层中往往包含着大量冗余重复的信息。残差结构的提出使得神经网络往更深层次,更复杂的方向发展,当然模型平均精度也大大提升。为了适应Jetson Xavier NX 有限的显存与算力,引入Ghost 模块对yolov4 进行轻量化处理。

2020年Han Kai[4]等人发现神经网络卷积层各个通道之间存在重复相似的特征图,提出了一种基于线性变换生成相似特征图以减少计算量的方法。图2 是Ghost 卷积的示意图,Ghost 卷积计算分为两部分,一部分与普通卷积完全相同,另一部分基于普通卷积的结果进行线性变换得到,最后将两部分进行通道拼接得到最终结果。Ghost 卷积思想并不在于完全去除网络中的冗余信息,而是采用廉价计算操作生成比之前更丰富且性能更好的特征映射。所实现的Ghost 卷积中普通卷积数量为50%,线性变换操作通过3*3 的depthwise 卷积实现。

图2 Ghost 卷积示意图

给定输入图片尺寸c·h·w,c代表通道数,h,w分别代表图片的高度与宽度;卷积核尺寸为c·k·k·n,其中n 代表输出卷积核数量;卷积核输出的尺寸为n·h忆·w忆。则普通卷积的浮点数计算量为:

Ghost 卷积在生成同样数量的输出特征图的情况下所需要的浮点数计算量为:

两者比值接近于s,其中d 是depthwise 卷积核的尺度,取值3;s是原始卷积与Ghost 卷积中普通卷积数量的比值,本文取为2。本文把yolov4 网络中所有的普通卷积全部替换为Ghost 卷积,因此理论上改进后的yolov4 模型大小与参数会压缩至原本的一半。

1.2.2 引入CBAM 注意力机制

浅水环境十分复杂,存在着水草、鱼群以及其余气泡等杂质等干扰中继器的检测。此外水下光线的散射与反射会使得拍摄到的图像存在失真,为了提高中继器的检测精度,本文在三个检测头部分引入了CBAM 注意力机制,在检测目标前对特征进行自适应细化处理。

CBAM 是一个轻量级的即插即用的注意力模块,可以集成到卷积神经网络结构中一起进行训练,其模块示意图如图3 所示。特征层的每个通道都相当于一个特征提取器,通道注意力使网络关注于检测目标所需要的重要特征,抑制其余干扰特征,关心的是我该“看”什么。而空间注意力则关注的是在图像二维平面中,我该“看”哪里。经过训练后,CBAM 结构能自适应地细化输入到检测头中的特征图。CBAM 结构这样的特性无疑十分适用于嵌入式jetson 主板在复杂浅水环境下检测中继器的任务场景。

图3 CBAM 结构示意图

Zhu Xingkui[5]等人将CBAM 结构插在了yolov5颈部带有残差结构的C3 模块与卷积模块之间,而本文经过实际对比发现将CBAM 模块插入到检测头前面对于map 值有更好的提升。改进后yolov4 整体结构图如图4 所示。

图4 改进后的Ghost-YOLOv4 结构图

1.2.3 损失函数调整

非极大值抑制(NMS)是一种经典的目标检测后处理技术,将得分最高的检测框与其余检测框逐一计算IOU 值,并过滤掉超过阈值的检测框。实际场景中往往存在距离很近而重合度很高的目标,YOLOv4 为了提高检测高重合目标物体的召回率,引入了DIOU-NMS 后处理方法。在ROV 浅水回收任务场景中仅存在一个待检测中继器,本文选用经典NMS 进行检测后处理。

YOLOv4 损失函数依旧由分类损失,置信度损失与边界框回归损失三部分组成。本文属于单一类别检测,参考Yang Lin 等人DONN 网络的设计去掉了分类损失的计算。为了提高检测精度,本文在经过实验测试后设定置信度损失与边界框回归损失权重比值为1颐3。边界框回归损失采用的是CIOU函数,表达式如下:

b,bgt分别代表了Anchor 框和目标框的中心点,p代表计算两个中心点的欧式距离,c代表的是可以同时覆盖Anchor 框和目标框的最小矩形的对角线距离。琢与v则考虑了预测框与拟合框的长宽比。

2 实验验证及结果分析

2.1 实验环境及硬件配置

本实验软件环境为Win11 系统、pytorch 1.10.1、cuda 11.3,训练主机CPU 型号i7-11700,显卡为Nvidia Geforce RTX 3060。ROV 嵌入式主板为JETSON XAVIER NX,配置有8 GB Nvidia Volta GPU 以及Nvidia Carmel ARMv8.2 版本CPU。

2.2 实验数据集及评估标准

ROV 水下中继器不存在公开数据集,本文采用UUV 水下对接坞站公开数据集UDID 作为评估数据集并自己基于虚幻引擎UE4.26 制作ROV 中继器数据集进行最终验证。

为了加快模型训练速度,本文采取预训练方式以VOC 2007 数据集训练权重作为初始权重。UDID 数据集12000 张以4颐1 的比例分配训练集与测试集,并基于梯度下降法训练150epoch。采用SGD 优化器并设置初始学习率0.01,学习率基于余弦退火策略进行衰减直到0.001。Batchsize 设置为32 以确保更准确的梯度更新方向。

算法主要以UDID 数据集平均精度map,模型参数量,模型计算量以及嵌入式主板运行算法时检测时间作为评估标准。本文对比了改进前后的YOLOv4 算法性能并做了消融实验以说明改进方案的有效性,具体见表1。从消融实验结果可知引入Ghost 模块后,YOLOv4 模型参数量减少了81.6%,浮点数运算量减少了89.4%,单帧图片检测时间减少了40 ms,不过在网络轻量化的同时网络平均精度有所降低。引入CBAM 注意力模块后,最终Ghost_V4-CBAM 模型平均精度仅比原始YOLOv4 模型相差不到1%。在精简网络提升实时性能的同时精度满足本次浅水回收ROV 检测中继器任务要求。

表1 网络改进前后参数对比

3 基于Tensorrt 加速以及Deepstream 部署

Nvidia TensorRT 是NVIDIA 公司发布的一个高性能的深度学习推理加速框架。可以优化深度学习模型架构,并提供高吞吐率和低延迟的推理部署,目前广泛用于大规模数据中心、嵌入式平台或自动驾驶平台进行推理加速。

原始训练好的FP32 网络模型导入到Jetson Xavier NX,检测速度为16 帧/s。这并不能满足实时性要求较高的与中继器对接任务的要求。Tensorrt 有多种输入网络模型方式,首先将pytorch 下训练好的模型转为ONNX 模型,然后导入到Tensorrt 生成engine文件,这便是加速后的可执行推理引擎。

DeepStream 应用程序将深度神经网络和其他复杂的处理任务引入到流处理管道中,以实现对视频和其他传感器数据的近实时分析。Deepstream 处理视频编码,解码的速度比传统方法要快很多,图像处理完毕后在调用引擎进行推理。浅水ROV 检测中继器依靠两个摄像头的输入,通过Deepstream 部署可以加快整个检测速度,因此,将上文Tensorrt 生成的引擎文件部署至Deepstream 中进行加速。最终Jetson XAVIER NX 执行的推理速度可以达到60 帧/s,满足浅水检测中继器任务要求。UDID 坞站公开数据集以及UE4.26 自建中继器仿真数据集上算法运行结果如图5 所示。

图5 轻量化网络模型应用于不同数据集下检测结果

4 结语

基于YOLOv4 算法模型以及轻量化网络Ghostnet 提出了一种ROV 中继器的轻量级检测模型Ghost_V4-CBAM 用于ROV 浅水回收。为了提升轻量化模型的检测精度,使网络专注于检测中继器的重要特征,在检测头前插入3个CBAM“注意力”模块,并调整了损失函数权重强调训练时的边界框定位损失。在公开数据集以及自建仿真数据集上评估了算法并基于Tensorrt 以及Deepstream 加速了嵌入式主板上Jetson Xavier NX 上算法的推理速度,能够满足ROV浅水回收时检测中继器的实时性要求。

猜你喜欢

中继器浅水轻量化
浅水区域船舶航行下沉量的数值计算
汽车轻量化集成制造专题主编
我国科学家率先实现全光量子中继
一种轻量化自卸半挂车结构设计
一种轻量化自卸半挂车结构设计
藕农水中采收忙
瞄准挂车轻量化 锣响挂车正式挂牌成立
基于LabWindows的浅水水声信道建模
用户:轻量化挂车的使用体验
基于光伏发电的物联网中继器的设计