冯晓晨,葛 彤,王小丹
(1. 上海交通大学 船舶海洋与建筑工程学院,上海 200240;2. 自然资源部北海局,山东 青岛 266061)
作为水下资源探索的一个重要工具,水下机器人需要承担各种各样的科研任务。由于自身携带能源的限制以及对数据传输的要求,需要及时回到母船补充能源,这种方式需要花费大量的人力和物力[1]。而且,目前大多数的AUV作业在各个流程操作方面,基本都是依赖于人员的操作。而水下对接技术能够实现对水下机器人进行充电,数据传输和扩大活动范围的功能,减少人力物力,因此如何发展自主的水下对接回收技术成为关键。
目前,在水下对接过程中,水下机器人所采用的传感器方式主要分为4种:1)电磁传感方式,2)声学传感方式,3)光学传感方式,4)视觉传感方式[2]。对于声学和电磁学导引方式,一般是用于距离较长、精度要求不是特别高的过程。光学和视觉的导引方式相对于上述2种传感器,作业的范围有限,通常在几十米的距离之内,但视觉的导引精度很高,抗外界干扰能力、鲁棒性较强,适用于多变的水下环境,常常用于短距离的水下对接[3]。基于视觉的水下对接系统主要包括对接站、安装在水下机器人上的摄像机和对接算法。国内外已经有很多科研机构对自主航行器视觉引导进行了研究、试验:1)Li et al.(2015)在一个圆锥体形状的对接台边缘放置了4个540 mm的绿灯,实现了良好的水下绿灯传播[4]。2)Maki等(2015)利用3盏绿灯和1盏红灯的三维地标进行水下对接。
水下对接引导算法主要承担检测和位置估计的作用[5],传统的水下对接检测算法主要分为两大类:1)基于二值化。Park等首先通过预先定义的固定阈值对图像进行二值化,然后使用卷积去除噪声;2)基于特征。Li等[6]以基于特征的检测方法为例,首先采用Meanshift算法提取光源面积,然后利用该算法对轮廓特征进行识别。相对于上文提到的手动或者依赖先验知识的算法,基于深度学习的目标检测算法相较于其他算法适用性更广,效果更好。所以提出一种基于卷积神经网络的目标检测算法用于水下对接,相对于传统方法,具有准确度高、鲁棒性强的优点,对对接效率来讲也有一定性的提升。水下对接引导算法的创新性如下:
1)设计一个基于神经网络的目标检测框架,用于水下对接过程。首先使用神经网络目标检测算法检测物体,获取物体的大致位置,得到感兴趣区域,然后通过分割算法得到特征点的位置,最后通过位姿估计获得对接站与水下机器人之间的相对位姿。
2)改进了YOLOv3算法的特征提取网络以及检测层,能够提高计算精度,以及准确度。
设计的水下对接引导算法流程如图2所示。
图2 水下对接算法流程图Fig. 2 Underwater docking algorithm flow chart
YOLO算法是通过将检测任务看作是回归问题来进行处理[7]。这种思想的好处是对物体的检测速度很快,算法效率高,而且能够有效的区分背景、学习物体的泛化特征。所以本文设计了一种基于YOLOv3改进的水下中继器目标检测算法,作为水下对接导引的目标检测模型。
在神经网络训练过程中,由于卷积和降采样操作的存在,特征信息会丢失,借鉴DenseNet[10]的思想,在DarkNet-53的基础上将ResNet替换成DenseNet,可以缓解由于层数过多而导致的梯度消失问题,提升网络性能。DenseBlock结构如图3所示。
图3 DenseBlock结构Fig. 3 The structure of DenseBlock
图中,X0是 输入特征,第n层的输入不但和它前一层的输出相关,而且将前面的所有输出作为这一层的输入,公式表示为:
式中:[]表 示将第0 层到第n-1层 输出的X0到Xn-1特征进行通道拼接作为第n层的输入;非线性变换Yn表示将得到的特征输入进行批量归一化操作、ReLU激活函数和卷积操作;最后得到Xn。这种方法相比ResNet结构可实现特征重用。采用DenseNet网络的改进目标检测算法模型如表1所示。
由表1可以看出,改进的算法首先将输入的416×416×3 的图片进行2次卷积,得到1 04×104的特征图,然后利用DenseBlock和Transition层交替进行提取特征,密集块的增长率设置为32,密集块中每一层的操作为:BN+ReLU+conv1×1+BN+ReLU+conv3×3,其中1 ×1卷 积层的卷积核数量为 4 ×32 , 3 ×3卷积层的卷积核数量为32。1 ×1卷积层的作用在于降低特征数量,提高效率。Transition层的具体操作为BN+ReLU+1×1conv+2×2average pooling,该层的作用主要是降低特征图的尺寸。
表1 改进的YOLOv3神经网络Tab. 1 Improved YOLOv3 neural network
通过特征网络后,分别得到1 3×13 和 2 6×26的特征图,以及 53×53特征图,3个检测层,能够很好的检测大中小物体,对中继器从远到近的对接过程有更好的保障。例如,对于分辨率为1 3×13的特征图,采用2倍上采样的方式,与提取出的 26×26特征图进行融合,更好地提取特征,增强特征表达能力[11]。预测方法与YOLOv3相似,回归来生成每个类的边界框坐标和概率。以1 3×13特征图为例,网络首先将输入图片分为1 3×13个单元格,如果带检测目标的中心落在某个单元格,那么该单元格负责预测这个目标,每个单元格预测B个边界框,根据与真实框交并比的值选择边界框,选择交并比最大的边界框。
B边界框:边界框由 (xi,b,yi,b,wi,b,hi,b) 组成,i表示第i个网格,b表示第B个边界框,其中(xi,b,yi,b)表示中心点的坐标值表示所预测边界框的宽度值以及高度值。
改进的YOLOv3的损失函数为:
损失函数主要包括坐标误差和置信度误差,主要可以为3部分,第1部分为坐标误差,具体公式为:
式中G2代表网格单元的个数,B为每个单元格所预测的边界框个数,的取值为1或0,即表示第i个单元格的第b个边界框是否存在检测目标,是则取值为1,否则取值为0。其中 (xi,b,yi,b,wi,b,hi,b)表示预测的边界框中心坐标、高度和宽度,是指实际的边界框大小。
第2部分和第3部分为置信度误差:
式中:l2(θ) 和l3(θ) 为置信度误差;Ci表示是否含有目标的真实值;表示预测值;表示边界框中含有物体表示边界框中不含有物体。因为对于采集到的中继器图像来说,大部分的区域中是不含有中继器目标物的,所以为了能够更好地表示每部分的重要性,需要设置比例系数。λ1, λ2, λ3分别表示3部分所占的不同权重。检测模块的流程如图4所示。
图4 目标检测算法流程图Fig. 4 Flow chart of target detection algorithm
在第1部分中,解释了如何利用改进的YOLOv3算法得到对接站在二维图像中的位置。在这一部分,提供一种方法用来恢复水下机器人和对接站之间的三维位置,实现对水下机器人的定位。
第1部分利用目标检测算法可以得到感兴趣区域,在提取出中继器的大致位置之后,为了进一步进行位姿估计,需要得到导引灯的坐标位置,为此采用基于阈值分割的方法进行特征点提取,阈值分割法是图像分割中最常用的办法,它是通过设定特定的阈值把图像中的像素分为若干个等级,利用需要提取的目标与背景之间的阈值差异,来进行提取目标的方法[12]。由于点光源的中心灰度值较高,其他位置的灰度值随点光源的距离增大而减少。如果图像进行分割后,恰好有4个连通域,说明满足要求。如果阈值过小,会使得连通域小于4,然后可逐步增大阈值,使条件满足。流程如图5所示。
图5 自整定分割[13]Fig. 5 Adaptive threshold segmentation
利用自适应分割方法成功的得到了4个连通域。但进行下一步位姿转换时,需要用到导引灯圆心坐标。基于形态学的角度来分析导引灯,可以得到结论:从特征点(导引灯中心)向外延伸的导引灯连通域,基本是成圆形。所以为了准确的得到圆心位置,可以把边界的统计矩作为检测边界,利用形态学方法求取[14]。
将特征点由图像坐标系转换到世界坐标系的过程,需要用到3个坐标系:1)图像坐标系,2)相机坐标系,3)世界坐标系。转换关系为:式中: (u,v)为图像坐标系原点在像素坐标系中的坐标;dx和dy是像素在图像平面x,y方向上的物理尺度。
相机坐标系{c}:坐标原点建立在摄像机的光心处,摄像机固定在水下机器人身上,只考虑刚体运动。用(Xc,Yc,Zc)表示。
世界坐标系{t}:(Xt,Yt)建立在引导灯对接口确定的平面上,Zt轴垂直于该平面向外,Xt指向对接站右 舷,Yt向 下。用(Xt,Yt,Zt)表 示。
接下来,解释在相机坐标系和目标坐标系之间的转换,图像坐标和相机坐标之间的转换关系为:
图6 坐标系Fig. 6 Coordinate system
即
其中:kx=ax f为X轴方向的放大系数;ky=ay f为Y轴方向的放大系数。(u0,v0)为相机的光轴中心点,也称相机镜头的光心。相机坐标系与目标坐标系的转换关系为:
其 中R为 3 ×3 的 旋 转 矩 阵,有RTR=RRT=I和det(R)=+1的性质。
所以图像坐标到世界坐标之间的转换关系为:
求解姿态矩阵 [R,t],有相机标定可以得到内参数矩阵,所以上式中有9个未知量,所以根据前文求得的4个导引灯的坐标信息可以得到8个方程,又因为是旋转矩阵,所以便求得姿态矩阵。根据本文设计的目标检测与分割算法,可以提取出位于4个导引灯的二维图像坐标信息以及已知的导引灯所在的世界坐标信息,从而转换为共面的P4P问题,所以采用PnP问题中的L-M迭代算法求解位姿矩阵[15]。求解后便能够根据特征点在二维图像中的坐标进行转换,进而估计中继器的位姿[16]。
为了对水下对接引导算法进行验证,设计了标定板以及引导光源作为对接装置的模拟,并在此基础上制作了DOCK数据集,用于对目标检测算法的训练、验证。按照VOC格式制作数据集。数据集分为训练集和测试集,其中训练集816张,测试集200张。如表2所示。
表2 数据集Tab. 2 Date set
对接模拟装置如图7所示,在矩形板4个角上布置LED灯模拟引导灯方案[16]。对改进的YOLOv3目标检测网络进行训练,软件配置为:GTX1050Ti,intel i5CPU,64GB内存,操作系统win10。模型训练的超参数为:批次大小为6,本次训练的迭代轮数为1 500。通过选定λ1, λ2, λ3等参数值,观察损失函数训练曲线,并参考原始YOLOv3网络参数,得到训练效果如图8所示。
图7 对接模拟装置Fig. 7 Docking simulator
由图8可知,在训练过程中,一开始损失值(loss)较高,不断波动,随着训练过程进行,损失值不断减小。到了200个epoch的附近,损失值趋于收敛,中间有小部分波动,最后loss值趋于稳定。
图8 改进的神经网络训练过程Fig. 8 Improved Neural network training process
表3 实验结果Tab. 3 Experimental result
选取200张模拟水下环境的模拟对接版的照片,进行检测,可以看出提出的改进YOLOv3模型检测准确率达到了91.5%,能够较好完成水下对接导引过程中的检测任务。而且,从图9的检测结果可以看出,检测算法对于对接模拟板有很好的检测结果。
图9 目标检测结果Fig. 9 Target detection results
为了验证水下对接引导算法的可行性,以及改进后的目标检测算法的有效性,通过模拟水下机器人与中继器从远到近的对接过程,采集模拟标定板的图片,进行自整定阈值分割算法处理,并进行与传统算法的特征点提取准确率对比。
自整定分割的效果图如图10和图11所示。可以看出能够较准确分割出特征点在图像中的位置,进而进行坐标转换,从而减少后续位姿估计的误差,并选取20张照片进行特征点提取准确率试验验证。由表4的特征提取准确率可以看出,基于YOLOv3改进的水下对接视觉引导方案能够更好减少背景信息的干扰,在准确性方面能够很好完成任务,提高特征点提取的准确率。所以设计的水下对接引导算法能够很好的应用到水下对接。
图1 水下对接方案Fig. 1 Underwater docking system
图10 自整定阈值分割Fig. 10 Adaptive threshold segmentation
图11 形态学求取坐标Fig. 11 Calculate the coordinates
表4 特征点提取成功率Tab. 4 Accuracy of feature point extraction
图12 特征点提取效果图Fig. 12 Feature point extraction effect drawing
为了更好减少无关的背景信息干扰,完成近距离水下对接,设计一种基于神经网络的水下对接引导算法。改进的YOLOv3目标检测算法很好地完成了对中继器在二维图像中的目标定位,准确分割了背景信息与感兴趣区域,具有更好的鲁棒性、准确性。然后通过特征点提取,坐标转换完成对对接板的位姿估计。实验以对接板模拟中继器,通过选取不同距离的参考点来验证方案的有效性。实验结果表明:1)基于神经网络的目标检测算法可以准确完成对中继器在二维图像中的目标提取。2)位姿估计方案能够有效准确完成特征点提取,坐标转换。未来的研究方向是基于提出的算法框架进行水下实际对接实验,并进行数据分析及算法改进,将该技术应用到实际工程中去。