朱素杰
(1. 黑龙江科技大学 信息工程学院,黑龙江 哈尔滨 150000;2. 河南科技职业大学信息工程学院,河南 周口 466100)
卷积神经网络作为船舶纹理识别中一种较为常见的排障网络模型,可以借助噪声图像对船舶外形进行色彩通道分离,并针对船体的每处纹理在各色彩通道上进行卷积,最后经过特征识别,对噪声加以分类,从而借助网络提取出船舶存在的安全隐患,并据此进行针对性的维护[1–3]。
而在识别分类的细节上,卷积神经网络会基于不同的识别步骤形成不同的排障模型。目前最为常见的2 种模型分别为One-stage 和Two-stage。其中Twostage 算法有着较高的精确度与时间复杂度,但是在对船舶纹理图形进行分类的过程中,对计算机硬件也有着较高的要求。而One-stage 算法虽然没有形成预选框的步骤,导致其在精度上会稍逊于Two-stage,但在算法时间的占用上却较短,可以及时协助技术人员找出船舶存在的裂纹隐患,从而加快维修效率,缩短维修时间。本文从One-stage 算法入手,以民用工程船为例,通过结合实景拍摄搜集相关数据,并导入系统进行计算,搭建一个较为完整的船舶纹理图形排查模型[4–5]。
随着信息技术的发展,船舶行业在发展过程中也在“互联网+”的时代背景上进行产业升级,其中引入的深度学习框架,在对船舶进行检修的过程中可以为其提供丰富的函数库,从而协助维修人员更为高效地完成相关安全检查作业。目前关于深度学习框架的网络搭建,主要有Caffe,Tensorflow,Keras,Pytorch 四类,极大地丰富了船舶纹理的检测,让操作人员在使用的过程中可以从多元的模型里挑选出更适合针对性故障识别的工具[6]。
其中Caffe 在使用中,如果需要引入新变量,则需相适应的加入C++语言进行编程,从而增大了操作人员的工作量;Tensorflow 在功能上只支持静态计算图,因此要想对民用工程船进行纹理识别,必须先被编译才可正常运行;而Keras 在运行的过程中需要占用一定的内存,并且速度较慢,因此本文考虑深度学习框架的功能性、易操作性、效率性等综合因素,最终选择其中的Pytorch 框架来构建YOLOv5 卷积神经网络及改进卷积神经网络。
改进卷积神经网络在实际应用中具有很强的现实意义,真正起到识别民用工程船的船舶纹理效果,因此需求在进行操作之前先构建一个民用工程船纹理的可用数据库。搜集了2239 张民用工程船纹理图形样本,并将船舶纹理进行了样本分类。最终得到了正样本1121张,负样本1118 张,并录入数据库作为本次研究的依据。
借助能够兼容Python 版本的LabelImage 对其中正样本中含有噪声的图像进行标注,并由操作人员亲自编辑名称,从而保证标注的可靠性。待标注完成后,将相关信息以VOC 数据格式生成,并录入XML 文件,注明其原始图片尺寸、边界框坐标以及噪声类别等信息。
最后,将1121 张民用工程船正样本纹理图形按照9∶1 进行训练集与测试集的分类,创建Annotations 文件夹保存以上标记语言,创建JPEGImages 文件夹保存以上原始船舶纹理图像,创建ImageSets 文件夹保存训练集与测试集。
为了可以更好地体现改进卷积神经网络在船舶领域的应用功能,提升船舶纹理的识别准确度,采用Mosaic 方法对本次搜集的船舶纹理素材按照随机缩放、剪裁、排布等方式进行扩充。一方面,是为了可以丰富样本数据库,提升网络鲁棒性;另一方面,则起到平衡大小噪声比例的作用,使其更适用于不同网络的训练。
对船舶纹理进行了灰度化处理后,考虑到船舶纹理会受到诸如气候、光线、建筑遮挡等因素的影响,而致使收集的图像在灰度值上呈现出如图1(a)所示的集聚现象,因此通过灰度线性变换,对船舶纹理图像进行如图1(b)所示的处理,通过改变其灰度参数,从而防止在后续识别中因船舶纹理过亮或过暗,而干扰训练结果。
图 1 处理前后灰度值分布Fig. 1 Distribution of grayscale values before and after processing
在以上操作中,为了可以保持船舶纹理样本的特征,方便提取以及最终结果的表达,在纹理线性变换上,实施如下计算:
式中:Out(x,y)为输出船舶纹理像素,In(x,y)为输入船舶纹理像素,W为船舶纹理宽度,H为船舶纹理高度。参数a负责调节输出船舶纹理的对比度,参数b负责调节输出船舶纹理的亮度,并将以上计算结果按照归一化方法进行数据分析。
本文采用的原始船舶图片由于外部光线等原因导致噪声与背景的灰度十分接近,很难明确噪声位置与自身的轮廓。图2(a)和2(c)为原始图片,经过图像增强后的图像如图2(b)和(d)所示,灰度集聚问题得到了改善。
图 2 图像增强前后对比Fig. 2 Comparison of images before and after enhancement
为探讨其他算法在本次收集的数据库与训练参数中可以呈现出相同的结果,分别选取了Faster R-CNN与SSD 两组模型对本次收集的船舶纹理展开分别训练。
在关于Faster R-CNN 的识别中,设计区域生成网络(region proposal networks,RPN),并通过卷积操作对船舶纹理的特征进行筛选分析,最终形成候选区。分析可知,Faster R-CNN 在操作流程上较精简,因此不仅可以缩短排障的时间,并且还能提升船舶裂纹的识别效率。按照以上研究思路,通过卷积的特征进行图形分割改进,将数据库中的船舶纹理识别分为2 条路径:1)按照区域生成网络,得到候选区域;2)直接向后传播并整合船舶纹理特征,进行回归分析与分类。
依据前文创建的相关数据库进行测试,采用Tensorflow 作为本次深度学习框架,为保证输入图像的格式统一,将数据库中录入的相关图片尺寸统一按比例调整为240 mm×240 mm,并通过镜像、旋转等方式对数据库进一步扩充。待完成以上流程,再借助Faster R-CNN 对本次的船舶纹理图形数据库实施ImageNet预训练,并基于观察结果进行相关的指标评价。在网络收敛完成后识别结果,如表1 所示。借助Faster R-CNN进行的船舶纹理识别,因为焊接节点失误而造成船舶裂纹的识别精度(AP)仅有0.487,由于结构设计不精细,识别的平均精度仅有0.498,损失值为0.102。
表 1 Faster R-CNN 识别结果Tab. 1 Faster R-CNN identification results
此外,按照深度学习框架选择优劣对比可知,该检测识别耗时较长,也极大地拖慢了操作人员对船舶纹理的排障时间。由此看出,基于Faster R-CNN 的船舶纹理识别可行性不高,需要展开进一步的改进。
本文基于One-stage 算法,采取SSD(single shot multibox detector)对YOLO 算法进行改进,得出如下改进算法:
式中:Pi为计算出下一个聚类中心的概率,D(xi)为聚类中心的最短距离,n为本次收集的船舶纹理样本量。
通过对其进行浅层特征的融合,并对目标像素坐标进行求值,替换卷积方式并修改损失函数。最邻近元法计算示意如图3 所示。
图 3 最邻近元法计算示意Fig. 3 Calculation diagram of nearest neighbor element method
得出IoU 系列的损失函数:
其中,R为预测框与目标框的惩罚项,Boxgt为实际框。
按照SSD300 模型,随机抽取特征网络中6 层的特征图像,并将生成的default boxes 数据通过非极大值抑制(NMS)展开筛选,得出理想的预测框。
结果分析中,采取的是SSD 算法对之前搜集的船舶纹理进行识别测试。通过最终的结果呈现可知,因为焊接节点失误而造成船舶裂纹的识别精度(AP)为0.621,由于结构设计不精细而进水,导致表面腐蚀的识别精度则为0.578,平均损失值为0.0626。借助Onestage 算法得出的识别精度具有明显的优势,并且SSD 算法作为One-stage 算法,在操作人员的排障用时上要明显短于Faster R-CNN 模型的Two-stage 算法。可知,基于SSD 模型的One-stage 算法,无论是精准度还是排障时间,都得到了一个显著的提升,其应用效率得到了一定的改进,因此可以在后续的船舶纹理识别中使用。
民用工程船一旦出现裂纹,如不对其进行及时修补,将会给海上作业带来不可估量的危害,因此不断尝试更为先进的排障策略,降低安全隐患。因此,本文针对焊接节点以及结构腐蚀导致的船舶纹理,提出一种基于改进卷积神经网络的识别方法,并在实例结果测试中验证了其先进性及可行性。本文提出的改进措施在船舶纹理的识别过程中,与其他常用识别算法相比有着明显优势,其在应用的过程中不仅可以有效节约人力物力的运维成本,同时也可以提高民用工程船设备的安全性和稳定性。然而由于收集的相关数据量较小,因此在精准度上依旧存在一定提升的空间。