路云 胡杰
摘要:陆地交通和水上交通是我国交通运输必不可少的两部分,而水上交通以船运为主。类似汽车车牌号,正规的船舶一般在两舷水线以上标明舷号以方便身份识别,但由于舷号命名和印刷的非标准性,其计算机的图像识别尚未进入实用阶段。本文基于EAST 的场景文本检测算法以及基于CRNN的端到端不定长文字识别算法,提出一种分阶段识别船舶舷号的解决方案。实验结果表明,该方案能较有效地对船舶舷号进行检测与识别,识别的准确率为73.06%。
关键词:深度学习;舷号检测;舷号识别;EAST;CRNN
中图分类号 TP391 文献标识码:A
文章编号:1009-3044(2021)11-0178-03
Detection and Identification of Ship's Hull Number Based on Deep Learning
LU Yun,HU Jie
(School of Computer Science, Yangtze University, Jingzhou 434000, China)
Abstract: Land transportation and water transportation are two essential parts of China's transportation, and water transportation is mainly based on shipping. Similar to car license plate numbers, regular ships generally have hull numbers above the waterline on both sides to facilitate identification. However, due to the non-standard naming and printing of hull numbers, computer image recognition has not yet entered the practical stage. Based on EAST's scene text detection algorithm and CRNN-based end-to-end variable length text recognition algorithm, this paper proposes a solution to identify hull number in stages. Experimental results show that this scheme can detect and identify ship's hull number more effectively, and the accuracy of identification is 73.06%.
Key words: deep learning; detection of hull number; identification of hull number; ESAT; CRNN
1 引言
水上交通的船運在陆地交通拥挤的情况下,以其耗能低、载量大和运费少的优点发挥着重要的交通运输作用,即使有港口调度,规定具体时间段的具体船舶通行时间及航道,但也没有发挥真正的优势,交通混乱、行驶不规范、撞击航标灯、船舶抢修不及时以及货船侧翻倾覆现象等时常发生。舷号像车牌号一样透露出该船的基本信息,例如中国海军小型舰艇和军辅船舷号命名规则如下:“1”字头为航母和驱逐舰,“2”或“3”字头为常规潜艇,“4”字头为核潜艇等[1]。运输船的舷号也有特定的命名规则,命名规则不统一,舷号位置不固定,印刷字体及大小不固定,要考虑到汉字和数字的多种组合。因此,港口调度结合船舶舷号的检测与识别可以得出该船舶的基本信息,方便事故追溯和及时抢修索赔,有利于规范行船行为,确保水上交通顺畅。
自从2012年Krizhevsky等[2]使用深度卷积神经网络在大规模视觉识别挑战(Large scale visual recognition challenge, LSVRC)上获得冠军后,深度学习在图像、文字、语音、视频等领域受到了广泛的关注[3]。海上频繁运输以及多变的天气状况使得船舶舷号清晰度、完整度略有不足,采集船舶图像时也极易受到外界环境影响,传统图像处理方法已无法满足需求,但是现在,可以通过深度学习的方法从训练数据中直接学习有效的特征,以获得泛化能力更强的高级特征属性。本文采用基于深度神经网络的EAST算法检测舷号,然后将舷号区域提取出来用CRNN算法识别舷号的具体内容,在舷号的命名多变、长度多变、字体多变、大小多变以及残缺模糊等情况下鲁棒性更强。
2 舷号检测
本文实验所用的船舶图像来源于网络上的部分SeaShips数据集,该数据集包括内河航道中通行的6种船舶图像。第一阶段在低分辨率全局船舶图像中检测出舷号区域位置,主要包括两个方面的工作,分别是框出舷号位置,并将舷号从船体中分割出来。
EAST全称是Efficient and Accurate Scene Text Detector,是一种基于单一神经网络的两阶段的端到端快速高效的文本检测算法,有效地消除了中间的候选区域聚合、字符分割、后处理等多个不同的阶段,直接检测字符区域,检测的形状可以为任意倾斜的四边形或矩形框,正好符合曲面体的舷号区域。EAST模型主要由特征提取、多尺度特征融合以及预测结果生成三部分构成,在进行训练的过程中加入数据增强,包括随机缩放,随机裁剪,裁剪的目标尺寸大小是512[×]512,随机旋转,改变明度、对比度、色调以及饱和度等,以扩充数据集。检测舷号区域经过以下几个步骤:
(1) 通过PVANet特征提取主干网络进行舷号检测,抽取不同层的feature map得到不同尺度的特征图;
(2) 利用 U-shape的思想逐步合并特征图,并且每层网络保持较少的上层采样,既利用不同级别的特征值,又节约了一定的计算成本,减少了网络层中参数的数量[4];
(3) 采用RBOX几何特征图模式输出一系列具有旋转角度的矩形检测框;
(4) 根据面积、高宽比等条件筛选满足要求的舷号区域,然后按照舷号在整个船舶图像中的先验位置信息定位到舷号区域并输出。
EAST的损失函数如公式(1)所示,Ls代表分数损失函数,Lg代表几何损失函数,λg为两个损失函数之间的重要性,一般设为1。为了简化训练过程,使用公式(2)类平衡交叉熵表示Ls,其中[Y]为预测值,[Y*]为标注值,[β为]正负样本之间的平衡因子,使用公式(3)表示Lg,总体几何损失是AABB几何形状损失和角度损失的加权和, [LAABB]部分使用 IoU损失函数使计算更加平均化。
[L=Ls]+[λgLg] (1)
[Ls=-βY*logY-1-β1-Y*log1-Y] (2)
[Lg=LAABB+λθLθ] (3)
3 舷號识别
通过舷号文本检测及提取,可获得舷号区域的图像,第二阶段在局部舷号图像中检测出舷号的每个字符,并通过字库匹配最终确定船舶舷号内容,这里不考虑字母和符号的识别。
3.1 生成数据集
实地搜集数据集具有一定困难,且可用的数据集较少,所以根据实际情况生成以扩充数据集。长江流域上行驶的运货船船体和舷号具有一定的特征,常见的船舶颜色以白色、蓝色、灰色、红色、黑色以及绿色为主,结合椒盐噪声和高斯模糊,生成相应的船体颜色,即舷号背景图。然后根据舷号的特点选用0到9十个数字以及常用的贴合舷号命名的500个汉字随机生成舷号数据集,字符大小控制在14号至30号之间。由于舷号印刷体不固定,所以搜集了微软雅黑常规、宋体常规、隶书常规、SitKa Text粗体和Times New Roman粗体等字体文件,结合字体文件通过PIL的字符生成函数生成舷号字符,舷号一般为白色或黑色。并且通过高斯模糊、适当膨胀、适当腐蚀、随即添加噪声等进行数据增强,以提高识别的准确率。生成的部分舷号数据集如图1所示。
3.2 CRNN识别
CRNN全称是Convolutional Recurrent Neural Network,是一种卷积神经网络结构,不需要分割舷号,就可以识别整个舷号的内容,网络结构从下到上依次为卷积层CNN,循环层RNN和转录层CTC,如图2所示。CRNN改进了CNN模块和RNN模块中的LSTM,显著提升了不规则文本的识别准确率,同时对较规则文本具有很好的鲁棒性。首先采用四个Conv*2-BN-MaxPool形式的块结构组成的卷积层提取图像特征并根据 Map-to-Sequence输出特征序列,双层卷积能更有效地提取图像局部特征,BN能够降低内部协变量移位造成的影响,缓解梯度消失与梯度爆炸的问题,MaxPool可以快速提取图像的深层特征,缩短训练时间。然后采用循环层的深度双向LSTM识别向量化的特征以得到每列的概率分布。最后采用CTC和前向后向算法输出最优舷号识别结果。CRNN网络由不同类型的神经网络组成,在训练的过程中,可以通过一个损失函数进行联合训练,从而做到端到端的模型训练和结果预测[5]。
4 结果分析
本文实验的开发环境,GPU 为 NVIDIA GRID T4-4Q,内存为 8GB DDR4。深度学习开发平台为 Pytorch 1.2.0版本,开发语言为 Python 3.6 版本,GPU并行开发环境为CUDA 10.0、CuDNN 7.4版本。首先基于EAST进行舷号检测训练,框出舷号,将舷号区域提取出来后基于CRNN进行端到端的字符识别,并使用matplotlib的绘图功能画框,以微软雅黑字体显示最终识别的舷号内容。
1) 舷号检测时背影易干扰。检测舷号区域时会误框无舷号的其他区域,如图3所示为正确检测和错误检测示例。这要求在检测舷号之前要做进一步的图像预处理,使舷号与其他区域区别明显,弱化背景,并扩充数据集。
2) 舷号识别准确率有待进一步提高。训练了825个epoch后,识别的准确率为73.06%。每识别出一个舷号都会计算时间,通过多次测试,计算得出识别一个舷号平均耗费67ms。如图4所示为正确识别舷号的结果图,如图5所示为舷号识别出错的部分结果图。这要求扩充真实情景下的舷号图像,在生成舷号数据集时逐渐减少与真实数据集的差距,进一步进行图像预处理和降噪处理,增加训练次数,不断调参,修改算法,优化模型结构。
5 总结与展望
为了识别运输船舶的身份信息“舷号”,本文提出检测与识别的分阶段思想,首先用EAST 网络定位到舷号区域,然后利用CRNN 网络识别舷号字符。通过大量的训练和测试,验证了该方法的有效性,在一定程度上有利于高效的水上交通管理。尽管如此,本文提出的方案仍有提高的可行性,在实验流程上进一步细化,增加图像预处理和舷号矫正,尤其是降噪处理。后期尽可能克服困难搜集更多的带舷号的船舶图像,并在生成数据集方面尽可能多的模拟真实情景中的舷号,采用迁移学习,改进算法,增加数据训练,以达到更好的训练效果,进一步提高船舶舷号检测与识别的准确率,在港口合理调度的基础上,优化水上交通环境。
参考文献:
[1] 萧萧.中国军舰舷号命名奥妙多[J].党政论坛,2013(6):46.
[2] Krizhevsky A,Sutskever I,Hinton G E.ImageNet classification with deep convolutional neural networks[C]//NIPS'12:Proceedings of the 25th International Conference on Neural Information Processing Systems - Volume 1.2012:1097-1105.
[3] LeCun Y,Bengio Y,Hinton G.Deep learning[J].Nature,2015,521(7553):436-444.
[4] Zhou X Y,Yao C,Wen H,et al.EAST:an efficient and accurate scene text detector[C]//2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR).July 21-26,2017,Honolulu,HI,USA.IEEE,2017:2642-2651.
[5] 易鑫.基于深度学习的不规则文本识别算法研究[D].成都:电子科技大学,2020.
[6] 石鑫,董宝良,王俊丰.基于CRNN的中文手写识别方法研究[J].信息技术,2019,43(11):141-144,150.
【通联编辑:梁书】