基于深度学习的集装箱编号识别
2021-12-07姚砺李莉莉万燕
姚砺 李莉莉 万燕
摘 要: 针对集装箱编号图像存在光照不均、背景复杂、模糊、污损、断裂等问题,本文提出,先采用基于深度学习的目标检测算法(YOLOv4)来实现集装箱编号区域定位,接着对定位后的集装箱编号图像进行预处理,采用连通域分割法分割字符,然后把一个个的字符送入模板匹配算法中进行字符识别。通过理论分析以及实验证明了本文方法的有效性,识别准确率相比其他方法明显提高。
关键词: 集装箱编号; 字符识别; 深度学习; 模板匹配; 编号区域定位
文章编号: 2095-2163(2021)07-0095-07中图分类号:TP391文献标志码: A
Container number recognition based on deep learning
YAO Li, LI Lili, WAN Yan
(School of Computer Science and Technology, Donghua University, Shanghai 201620, China)
【Abstract】In order to solve the problems of uneven illumination, complex background, blur, stain, fracture and so on in the container number images, this paper firstly uses the object detection algorithm based on deep learning (YOLOV4) to locate the container number area, preprocesses the located container number image, and uses the connected domain segmentation method to segment the characters. Then the characters are sent to the template matching algorithm for character recognition. Through theoretical analysis and experiments, the effectiveness of this method is proved, and compared with other methods, the recognition accuracy is significantly improved.
【Key words】container number; OCR; deep learning; template matching; location of numbering area
0 引 言
随着国内进出口业务量的迅猛增长,集装箱的需求量也日益增大,已然成为全球最大的运输载体。在2020年全球集装箱吞吐量排名前25位的港口中,中国港口位列前茅,在前8位中占据了6个席位。其中,上海为全球最大集装箱港口[1],尽管受到近期疫情影响,港口的总体增长依旧持平、甚至略有上涨。集装箱的巨大吞吐量无疑会对港口造成严重堵塞,因此需要快速识别集装箱编号的系统,从而完成对集装箱的调度及排放。传统集装箱运输主要靠人工识别集装箱编号,存在易出误差、影响进出口速率引发港口集装箱堆积等众多缺点,为了解决这些问题,智能集装箱编号识别系统即已成为时下这一领域的热门研究方向。但由于集装箱编号图像与普通的文字识别不同,存在光照不均、编号的偏转、倾斜、扭曲、断裂和模糊等因素,给编号的识别研究带来不小的影响。
为了使得物流集装箱在流通以及利用的过程中便于识别管理、单据编制和信息传输,国际标准化组织采用ISO6346(1995)标准,制定了集装箱的标记、即集装箱编号,典型的集装箱编号图像如图1所示。由图1可知,集装箱编号是由4位字母和7位数字组成的,一个集装箱只有一个编号,相当于人的身份证,即一箱一号,独一无二,可以在后期运输过程中通过编号来查找集装箱目前的物流情况,与现如今利用快递单号查询快递是一个道理。
现阶段,集装箱编号识别的关键技术一般包括3个部分,分别是:集装箱编号的区域定位、集装箱编号字符的分割、集装箱编号的识别。众多学者根据这3个部分展开了相关的研究,并取得了不错的效果。其中,集裝箱编号的区域定位是整个识别的关键。目前,集装箱编号区域定位分为3个方法,即:基于数学形态学[2]、基于连通域分析的方法[3]、基于边缘与滑动窗[4],但这些方法都会受到光照、阴影、背景复杂等的影响,导致集装箱编号区域定位不够准确。
近年来,深度学习发展迅速,卷积神经网络在图像处理中展现出了独特的优势,通过学习海量的训练数据,逐层提取有用的特征,并自动将低层特征组合形成对数据有着更本质刻画的高层特征,从而有利于可视化或分类[5]。Wang等人[6]采用了基于深度学习的目标检测算法Faster-RCNN对集装箱编号进行检测和识别;Wang等人[7]利用改进的Faster-RCNN和区域生成网络(RPN)实现编号检测和识别。以上的研究成果表明,采用深度学习的目标检测算法可以准确地定位出集装箱编号区域,不会受到光照、背景等的影响,且定位准确率高,但基于深度学习的字符识别方法却会因为编号断裂或者背景复杂以及字符间距长短不一等因素影响识别率。
为此,本文结合集装箱编号自身的特点对图像进行标注,为了增强定位的鲁棒性,采用深度目标检测算法YOLOv4[8]对集装箱编号区域进行定位,再进行预处理,为了提高识别准确率,文中又采用了模板匹配方法来识别编号字符。实验结果表明,本文方法能准确快速地定位出集装箱编号的位置,并准确识别出编号字符,抗干扰能力强。
1 基于深度学习的集装箱编号识别方法
集装箱编号识别系统的难点在于定位和识别上,如图2所示,主要有以下几点:
(1)集装箱编号没有明显的边缘特性,不像车牌有较清楚的边缘,所以集装箱编号定位比车牌定位要更加困难。
(2)集装箱编号字符是喷刷的印刷体字符,其大小、颜色、字体以及排列方式各不相同,都会影响到字符识别的准确性。
(3)光照条件以及背景颜色的复杂性都不利于集装箱编号的定位。
(4)集装箱编号周围存在大量的噪声干扰,例如锈蚀、断裂、污损等。
(5)集装箱编号的周围还存在着其他干扰,例如门锁杆、集装箱型号以及集装箱大小代码等。
基于以上问题,本文提出了基于深度学习的集装箱编号识别的方法,取得了理想的识别效果。设计流程如图3所示。
由图3可知,整个流程分为3部分:编号区域定位、编号字符分割、编号字符识别。在定位阶段,采用深度学习方法,此方法准确率高、速度快且具有很强的抗干扰能力。首先采集大量带有集装箱的图像,然后对这些图像中的编号区域打上标签,做好标注作为训练的样本,把这些样本送入目标检测算法YOLOv4的网络中进行训练,得出适应集装箱编号检测的模型,用于集装箱编号区域的定位。在分割阶段,采用连通域分割法,此方法对断裂、模糊以及倾斜等字符能准确分割,先对定位后的图像进行预处理,利用连通域分割法分割集装箱编号字符,然后对分割后的字符进行去留白处理。在字符识别阶段,采用模板匹配方法,此方法准确率高,速度快,且对硬件要求不高,即把分割后的字符分成2类,字母送入字母模板中进行匹配,数字送入数字模板中进行匹配,从而完成整个编号字符的识别。
1.1 基于深度学习的集装箱编号定位
现实中采集到的集装箱编号图像会受到光照不均、编号有污渍、破损以及编号倾斜等众多因素的影响,此时提取集装箱编号字符的信息有难度。
传统定位方法分为3种,即:基于边缘和滑动窗、基于数学形态学、基于连通域分析。其中,基于边缘与滑动窗的定位方法是用边缘检测算子检测出图像中编号字符的边缘,再结合滑动窗来找到有高区分度的字符特征实现集装箱编号的区域定位。基于数学形态学的定位方法更适合用在码头或者堆场等背景复杂的地方。基于连通域分析的定位方法是通过最大稳定极值(MSER)去粗区分编号字符和箱体背景,再用连通域分析筛选出编号字符所在的区域。以上3种传统定位方法在清晰简单的集装箱图像上,对编号定位取得不错的效果,但当有光照影响或复杂背景影响时,都会导致定位失败。鉴于此,本文采用基于深度学习的YOLOv4集装箱编号定位,其技术路线如图4所示,YOLOv4的网络结构图如图5所示。
由图4可知,YOLOv4定位需要训练模型,但在训练深度学习的模型时,需要有大量的带标注的样本图像输入网络中,由于目前没有公开的集装箱数据集,所以需要拍摄采集大量集装箱图像,并对图像进行标注。由集装箱图像可知,其编号具有特殊性,前面四个英文字母和后面七位数字相隔较远,有时喷画在两行,字母一行,数字一行,故在进行数据标注时,把英文字母和数字分开标注,英文字母的标签为letter,数字的标签为number。
由于拍摄的集装箱图像比较大,且经过实验证明输入图像规格为608×608的定位效果较好,所以本文选择使用608×608的规格把图像输入网络进行训练,且由标注步骤可知,网络训练的类别选取参数为2,即letter和number,把字母和数字分开定位,能更准确地定位出集装箱编号区域。本文基于YOLOv4的集装箱编号定位的基本思想是:首先,会对输入的集装箱图像进行一系列的卷积和残差堆叠操作来提取集装箱编号的特征。其次,对最后一个特征层进行三次卷积,分别利用4个不同尺度的最大池化(13×13、9×9、5×5、1×1)进行处理,此步骤能极大地增大感受野,分离出集装箱图片上编号区域和背景的特征。然后,对提取出的3个有效特征层上进行上采样后、又进行下采样,而与此同时则进行特征的融合,产生3个不同尺寸像素的输出层,分别为(19,19,21)、(38,38,21)、(76,76,21),最后一个维度为21是因为针对集装箱图像的特殊性,类别设为2,即letter和number。随后对3个输出层进行解码操作,即把集装箱图像分为19×19、38×38、76×76的网格,每个网格点负责检测一个区域。若集装箱编号的中心落在这个区域,则集装箱编号的位置就由该网格点来确定,且每个网格点都会生成3个先验框,对先验框进行调整,并利用得分排序和非极大值抑制法来筛选候选框,由于集装箱图像上对定位编号产生干扰的字符很多,所以在非极大值抑制法中的参数设置为0.2,使筛选条件更加严格,得到更加准確的预测框。定位结果如图6所示。
1.2 集装箱编号字符分割
常用的字符分割算法为投影直方图法、边界跟踪法、连通域分割法等。其中,直方图分割法[9]是计算字符图像的投影直方图,选取直方图中高度小于某个阈值的点作为分割点,此方法具有局限性,对有倾斜度的集装箱编号图像的分割准确率较低。边界跟踪法[10]是寻找字符的边界来分割字符,此方法具有很大的不确定性。
综合前文所述,针对集装箱编号字符图像存在着的倾斜、字符间距长短不一等现象,本文选用连通域分割法对集装箱编号字符进行分割,具有较好的准确率。
连通域分割法有2种分割方法:基于4连通域和基于8连通域。由于集装箱编号字符会出现缺损、倾斜等影响分割的因素,为了更好地找全整个字符区域,本文采用8连通域的分割法。8连通域分割法是对二值化后的集装箱编号图像进行深度遍历,首先找到一个黑色像素,然后对此像素周围的8个像素进行判断,是否被访问过,如果没有被访问过,就保存到一个数组中,最后这个数组的最小X和最大X就是横轴X上的切割位置,对不合理的切割位置进行筛选,随后依次进行分割,得到分割后的集装箱编号单个字符图像,再次对单个字符图像进行判断筛选,是否为11个字符图像,如不是,则统计高度的最大值,把异常高度的干扰物图像去掉,留下正确的字符图像。具体流程如图7所示。与垂直分割法进行对比后可知该方法的优点是可以分割倾斜的集装箱编号图像。
1.3 集装箱编号字符识别
由于集装箱编号区域定位成功,且对集装箱编号图像进行一系列预处理后的图像具有简单特征,故采用准确率高的模板匹配。字符识别时,最先想到的就是近年来流行的深度学习算法,包括CRNN、Faster-RCNN、CNN等,但由于有些字母和数字存在相似性,例如:6和G;8、0和D、C;7和1等,这些深度学习方法在识别时会有误差。BP神经网络也是字符识别常用方法之一,但其识别的关键在于网络参数取值比较敏感以及字符识别前的图像处理效果,故本文采用准确率高的模板匹配算法,实验表明本文方法识别速度快。研究得到的识别流程如图8所示。
模板匹配是通过现有的模板与图像进行比较找出所匹配的圖像,顾名思义就是模板在待检测的集装箱编号字符图像左上角开始,每次都以模板左上角像素点为单位,从左到右,从上向下滑动,每次到达一个像素点,就会以该像素点的左上角为顶点从待检测的集装箱编号字符图像上截取出与模板一样大小的图像与模板进行像素的比较运算,两者匹配程度越高,相同的可能性越大。模板在滑动匹配的过程中,把模板和当前截取到图像的比较结果储存在一个矩阵R(x,y)中。设输入图像的大小为W×H,模板的大小为w×h,则输出图像的大小为(W-w+1,H-h+1)。R中的每一个位置(x,y)的值都表示以这个点为左上角顶点截取到的图像和模板像素计算后的计算结果。
本文采用的模板匹配算法为相关系数匹配,此方法是把模板图像和其均值的相对值,与输入的集装箱编号字符图像和其均值的相关值进行匹配,1表示匹配程度高,-1表示匹配程度低,0则表示没有任何相关性。此方法计算公式如下:
在此基础上,研究得到算法的伪代码参见如下。
算法:基于模板匹配的集装箱编号字符识别算法
Begin
输入 单个集装箱编号字符图像,模板
If R(x,y) = -1则两者匹配度低
If R(x,y) = 0 [DW]则两者没有相关性
If R(x,y) = 1 [DW]则两者匹配度高
输出 识别结果
End
由集装箱编号定位时的标注可知,本文方法一开始就把字母和数字分开,防止字母和数字存在相似性从而引起识别错误。在进行模板匹配前,建立模板库,并对模板进行归一化处理,对字母和数字分开匹配,缩短了每个字符匹配的时间,从而提高了模板匹配的速度。由于在分割后进行字符图像的处理时,研究发现1的宽高比特殊,所以1不放入识别,直接就能判断,此方法避免了7和1的识别错误。本文的识别算法解决了集装箱断裂、部分缺失对识别的影响,且避免了因字母和数字的相似性而发生识别错误,提高了集装箱编号字符识别的准确率。识别结果如图9所示。
2 实验结果和分析
2.1 实验环境
本文的实验平台采用的是Linux操作系统Ubuntu18.04,GPU为2*NVIDIA GeForce RTX 2080 Ti,32 G内存,512硬盘,CUDA的版本为10.2,集成开发环境使用PyCharm,集成包使用的是Anaconda3,Python的版本是3.6.0。
2.2 数据集
由于目前国际上还没有公开的集装箱数据集,并且国内也没有建立相关统一的集装箱图像样本库,因此,本文需要自行收集并制作出可用于集装箱编号区域检测网络训练的数据集。本文数据集包含各种复杂条件下拍摄到的图像,能满足研究的需求。拍摄所使用的设备有所不同,其分辨率也会有所不同,本文使用了包括Olympus相机、iphone5c、平板、vivo手机、台电平板以及小米手机在内所拍摄的集装箱图像。这些图像中含有编号字符单行排列、编号区域被瓦楞部分遮挡、箱体倾斜、编号竖直排列、分辨率低、编号多行排列以及编号字符断裂等各种场景下拍摄的图像,如图10所示。
由于采集到的图像有编号字符不完整的图像,所以经过筛选后共得到253张图像,对这些图像通过数据增强的方式来扩张数据集。数据增强的方法为:增强图像的亮度、降低图像的亮度、改变图像的色度、改变图像的对比度以及改变图像的锐度,最终得到的数据集为7 590张集装箱图像。
在进行训练前,需要对集装箱数据集图像标注,本文采用LabelImg对集装箱图像进行编号区域标注,由于集装箱编号的特点是前4位字符为字母,后7位字符为数字,因此本文有2个标注类别:字母和数字。标注图像如图11所示。
2.3 实验结果与分析
2.3.1 定位分析
虽然本文的数据集量少,但包含了各种条件下的集装箱图像,例如集装箱编号不同排列方式、喷刷位置的不同、光照不均、图片像素低、箱体表面有污损干扰、集装箱倾斜以及集装箱编号被瓦楞所遮挡等等。经实验证明,本文算法对不同排列方式的集装箱编号区域定位准确,并且对倾斜的以及分辨率低的集装箱编号区域也能获得准确定位,甚至还能准确定位出被箱楞遮挡的集装箱编号区域。此算法为后续的识别奠定了良好的基础。
为了验证本文算法在集装箱编号的定位性能,文中又与多特征箱号定位算法、Faster R-CNN以及MSER算法与本文提出的算法进行对比,虽然数据集不同,但都包含各种条件下的集装箱图片。实验结果对比见表1。
由表1可知,相比其他的定位算法而言,本文算法的准确率较高,而且定位时间快,说明本文定位算法有较好的抗干扰能力,但仍然存在一些错误,没有达到百分百的准确率。定位错误是因为有部分采集的集装箱图像被强光照射,以至于人眼都无法准确地看见编号的位置,如图12所示。
2.3.2 识别分析
在集装箱编号识别阶段,本文采用改进的模板匹配算法,解决了集装箱字符断裂、部分缺失等因素对编号识别的影响,提高了识别的准确率。本文识别算法与模板匹配法、特征匹配算法、BP神经网络、SVM算法[11]的比较结果见表2。虽然数据集不同,但都包含各种条件下截取的集装箱编号图像。
由表2可知,本文识别算法的识别准确率达到了96.1%,比原始模板匹配算法、特征匹配算法、BP神经网络以及SVM算法的准确率都要高。但识别速度没有特征匹配算法快,还有待改进。
3 结束语
本文针对集装箱采集环境以及集装箱自身特点,研究了集装箱编号识别的关键技术,并最终采用YOLOv4对集装箱编号区域进行定位,解决了集装箱编号图像光照不均、背景复杂等问题,达到精准定位,接着对图像进行预处理,最后采用改进的模板匹配算法对集装箱编号进行字符识别,解决了相似字符的干扰性。实验测试结果表明,本文提出的基于深度学习的集装箱编号识别算法准确率高,鲁棒性好,具有较好的实用价值。
参考文献
[1]中国港口协会集装箱分会. 中国主要港口集装箱码头吞吐量快报(2020年1月)[J]. 集裝箱化, 2020,32(3):2-25.
[2]王炎,贺俊吉. 基于数学形态学的集装箱箱号快速定位算法[J].计算机工程与设计,2015,36(8):2162-2166.
[3]WENG Maonan, LIU Qing, GUO Jianming. MSER and connected domain analysis based algorithm for container code locating process[C]// 2017 International Conference on Industrial Informatics - Computing Technology, Intelligent Technology, Industrial Information Integration (ICIICII). Wuhan, China:IEEE, 2018.
[4]KOO K M , CHA E Y . A novel container ISO-code recognition method using texture clustering with a spatial structure window[J]. International Journal of Software Engineering & Its Applications, 2013, 7(3):51-62.
[5]丁小虎. 基于深度学习的集装箱立体识别与定位技术[D]. 厦门:集美大学,2019.
[6]WANG Zhiming, WANG Wuxi, XING Yuxiang. Automatic container code recognition via faster-RCNN[C]//2019 5th International Conference on Control, Automation and Robotics (ICCAR). Beijing, China:IEEE, 2019: 870-874.
[7]WANG Zhenpeng, WANG Yongli. FRCA: High-efficiency container number detection and recognition algorithm with enhanced attention[C]// Eleventh International Conference on Graphics and Image Processing. Hangzhou China:SPIE,2020:1137306.
[8]BOCHKOVSKIY A, WANG C Y, LIAO H Y M. YOLOv4: Optimal speed and accuracy of object detection[J]. arXiv preprint arXiv:2004.10934,2020.
[9]李丰林,毕训银. 基于BP神经网络的集装箱箱号识别[J].淮海工学院学报(自然科学版),2010,19(1):24-27.
[10]唐晓东. 基于BP神经网络的集装箱箱号识别研究[D]. 武汉:武汉理工大学,2007.
[11]安博文, 李丹, 庞然. 基于SVM分类器的集装箱箱号识别法[J]. 上海海事大学学报, 2011, 32 (1) :25-29.
[12]黄深广,翁茂楠,史俞,等. 基于计算机视觉的集装箱箱号识别[J]. 港口装卸,2018(1):1-4.
[13]曹林根,宓超. 集装箱箱号字符识别算法研究[J/OL]. 计算机工程与应用:1-11[2021-08-25].http://kns.cnki.net/kcms/detail/11.2127.TP.20200805.1034.004.html.
[14]沈寒蕾, 徐婕, 邹斌. 基于MSER的集装箱号低秩矫正研究[J]. 工程数学学报, 2018,35 (2) :123-136.
[15]崔循,景文博,于洪洋,等. 基于改进Faster R-CNN的集装箱箱号定位算法[J]. 长春理工大学学报(自然科学版),2020,43(1):45-50.
[16]谷秋頔. 基于模板匹配的车牌字符识别及其判别函数的研究[D]. 太原:中北大学, 2012.
[17]张金凤. 基于MATLAB的车牌识别系统设计[J]. 信息与电脑(理论版),2021,33(2):153-155.
[18]MUOZ-GEA J P, MANZANARES-LOPEZ P, MALGOSA J,et al. Design and implementation of a P2P communication infrastructure for WSN-based vehicular traffic control applications[J]. Journal of Systems Architecture, 2013, 59(10): 923-930.
[19]CHEN Honglong, MA Guolei, WANG Zhibo, et al. Probabilistic detection of missing tags for anonymous multi-Category RFID systems[J]. IEEE Transactions on Vehicular Technology, 2017,66(12):11295-11305.
作者简介: 姚 砺(1967-),男,博士,副教授,主要研究方向:图像处理; 李莉莉(1996-),女,硕士研究生,主要研究方向:图像处理; 万 燕(1970-),女,博士,教授, 主要研究方向:图像处理。
通讯作者: 李莉莉Email:18790465812@163.com
收稿日期: 2021-04-27