向林浩,郑佳楠,周国豪,刘锐,刘伟建
(1.中国船级社,北京 100007;2.南京智慧水运科技有限公司,南京 210001)
随着卷积神经网络(convolutional neural networks,CNN)等深度学习方法的发展,利用其开展图像识别的效果已经超过传统的图像识别方法。无人机、机器人等新型装备在船舶检验中得到越来越广泛的应用。在长时间的作业过程中,这些设备将采集大量的图像数据,需要验船师对图像实时保持关注并判断船舶状况,易导致视觉疲劳。因此,有必要将基于深度学习的图像识别技术引入船舶检验领域,快速地识别出无人机、机器人等新型装备所采集的船体结构图像中的典型结构节点,便于后续进一步对典型节点是否存在腐蚀、裂纹、变形等缺陷开展目标检测,也便于自动保存节点图像作为检验证据留存。
为了保证典型船体结构节点检测的准确率和效率,提出开发一种基于Faster R-CNN算法的深度神经网络模型用于船舶大型肘板趾端(以下简称“趾端”)结构与纵骨贯穿结构的目标检测,建立不同类型船舶的趾端结构与纵骨贯穿结构数据集,并对样本数据进行清理和数据增强。采用迁移学习的方式训练出用于趾端结构和纵骨贯穿结构检测的Faster R-CNN算法模型,通过无人机实际拍摄的趾端与纵骨贯穿结构视频,验证该算法模型。
结合船体结构图像样本存在的结构形式及布置复杂、缺陷形态复杂、图像噪声、光照条件与拍摄角度差异性大等因素,分析船体结构图像样本采集与分类要求、数据集标准等,以保证算法模型的收敛性以及泛化能力,避免因船体结构数据集质量导致典型结构节点的目标检测算法模型训练存在欠拟合、过拟合、不收敛等问题。
采集到的趾端结构、纵骨贯穿结构图像示例见图1。
图1 数据采集示意
结合目前主流的深度学习目标识别算法对数据集的要求,利用主流的数据标注工具对典型船体结构节点开展数据标注工作。质量好的船体结构数据集应具有以下2种特征:①可供标注的船体结构样本图像正负样本比重一定,且样本量多;②船体结构节点标注质量高。标注品质取决于人工标注时对图像像素点的位置判断精准度,人工标注的像素点越接近于被标注船体结构节点的边缘像素,则标注质量就越高。需要标注者在标注工作中保持较高的专业性和专注度。若一份标注工作的精确率要求为100%,则像素点与被标注物的边缘像素点的误差应在一个像素值以内。
1)数据清洗:检查船体结构样本是否存在缺失结构数据、船舱环境噪声数据、重复结构数据等问题。
2)数据标注:分配船体结构标注任务,制定船体结构标注指南,执行标注任务。
3)标注检测:由验船师与算法训练专家交叉评审标注质量。
数据标注之后,还需结合船体结构节点检测算法模型训练过程中出现的问题,不断调整船体结构数据集以解决由于数据标注中出现的问题或者是数据集本身的问题而导致的训练问题,形成满足典型船体结构节点识别要求的数据标注标准,并转换为各类目标检测算法模型所需的数据集格式。
按照趾端结构和纵骨贯穿结构的结构特征,分别对所建立的数据集中的图像样本进行标注,示例见图2。
图2 结构标注示意
在一步检测法(one-stage)方面,Joseph Redmon等提出YOLO(you only look once)目标检测算法[1]。YOLO检测速度虽然快,但是容易出现遗漏目标的情况。针对YOLO模型的不足,Liu Wei提出SSD(single shot multibox detector)模型,融合了YOLO和Faster R-CNN优点的SSD模型,提高了检测速度和准确性。该模型以VGG16[2]为基础网络进行特征提取,在不同大小的特征图上按照比例生成不同大小的默认框(default box),从而实现了对不同大小物体进行检测,提高了整个模型的泛化能力。
而二步检测法(two-stage)是将目标识别问题分解成两个阶段性任务,首先是产生候选框,然后再对候选框进行分类以及位置精调。Ross Girshick等于2014年提出了一种区域卷积神经网络(region-based convolutional neural networks,R-CNN)[3],该算法相比于传统的目标检测方法,在准确率上有很大的提升,但因识别速度不快等缺点,导致其无法运用到实时检测系统上。针对R-CNN存在的缺点,何凯明(kaiming He)等提出了空间金字塔模型(spatial pyramid pooling net,SPP-Net)[4],该方法虽然加快了R-CNN的速度,但需要对模型进行多次训练。Ross B.Girshick提出了使用ROI Pooling的池化结构对R-CNN进行改进。何凯明(He Kaiming)等又提出了增加候选区域网络(region proposal networks,RPN)结构的Faster R-CNN检测方法[5],该网络结构通过不同大小的候选框从而实现对多尺度的目标检测的效果,使得位置检测更精准,速度更快。
综合考虑典型船体结构节点识别模型的开发难度以及模型训练效率,选择Faster R-CNN算法来训练模型来完成船体结构识别任务。
首先,采用卷积层、Relu非线性激活层与池化层的组合构建Faster R-CNN网络结构,如VGG16或Resnet101去除全连接层后的结构,提取整张图像的特征图。再将该特征图输入到区域生成网络层中提取候选框。针对各候选框,采用Softmax层判断候选框选取的正确性,进而采用边界回归算法对候选框进行修正,以获得精确的候选框。将提取的特征图与获得的精确候选框输入到池化层,提取候选特征图并进行分类,以确定最终识别的目标。Faster R-CNN结构见图3。
图3 Faster R-CNN结构示意
2.3.1 数据预处理
考虑到船体结构形式复杂、尺度差异大,采集的样本质量参差不齐,会影响模型最终的识别效果。因此,在标注完样本数据后,对样本中用于训练的图像样本和其中包含的所有目标回归框进行可视化分析。收集的图像样本大小从800像素×800像素至6 000像素×6 000像素均有分布,并且差异较大。图像样本统计见图4。
图4 图像样本统计
各区间分布比例见图5。
图5 图像样本分布
回归框尺寸极差较大,既有很小的回归框,尺寸接近0,也有超大回归框,尺寸超过3 000像素。目标回归框统计见图6。
图6 目标框统计
进一步分析回归框的具体分布,仅有2.8%的回归框尺寸大于1 000像素。
最终删除部分异常离群数据,并将图像分辨率缩放至640像素作为模型的数据集。
2.3.2 数据增强
在实际的船舶环境中,环境光照、趾端以及纵骨贯穿结构的角度变化非常复杂,为了增强模型在不同光照、拍摄角度下的泛化性,同时为了尽量避免训练过程中出现的过拟合现象,选择通过数据增强的方式来扩充与提升训练样本的数量与质量。针对船舶环境中光照变化频繁的问题,选择采用改变图像亮度的方法来模拟光照的变换。数据增强效果见图7。
图7 数据增强效果
R-CNN是双阶段检测中最具代表性的网络结构,与YOLO为代表的单阶段网络相比具有更高的检测准确率。
考虑到兼顾速度和检测精度的应用环境,对Faster-RCNN算法的网络结构进行改良与运用。改良后的Faster-RCNN网络结构见图8。
图8 改进后的Faster-RCNN的网络结构
在选择好目标检测算法之后,利用数据标注工作中形成的满足当前目标检测算法以及网络结构的船体结构节点训练数据,采用在VOC开源数据上的模型进行迁移学习,初始学习率设为0.001。同时设置学习率衰减策略,具体做法为在连续3轮迭代过程中,如果损失函数下降幅度低于0.02则学习率衰减为原来的0.5,经过50轮迭代训练后,模型精度达到90%以上。训练结果见图9。
图9 训练结果
使用训练好的模型对船舶检验无人机拍摄的船体结构视频进行验证,实验平台的硬件环境为12核CPU Intel Xeon E5-2678 v3,GPU为GTX 1080Ti,检测速度可达10.2 帧/s。
本文通过实际检测中返回的置信度来评价船体结构检测识别的准确率。置信度可以理解为框出的Box内确实有物体的自信程度和框出的Box将整个物体的所有特征都包括进来的自信程度。置信度可用来评判在实际分类任务中分类器得到的结果是否可靠。该指标与数据集无直接关联性,故可以表示实际检测任务中的检测准确率。将置信度阈值设置在90%之上进行识别,可以直观的从图中看出被识别物体的类别以及置信度,相关的检测见图10,位于类别名之后的是该类别的置信度,该指标表示模型本身对该次检测任务所返回结果的认可程度,数值越接近于1,表明其结果越可信。
图10 趾端结构识别结果
基于Faster R-CNN的算法模型可准确识别船舶大型肘板趾端与纵骨贯穿结构,模型精度达到90%以上。验证结果表明,将基于深度学习的目标检测算法应用于船舶检验领域可行。
后续研究应考虑根据船体结构检验范围,进一步开展其他类型船体结构节点以及船体结构缺陷的目标检测,同时提高模型的检测速度,对船舶检验无人机拍摄的视频进行全范围的实时检测。