船牌识别是深度学习技术在文字识别领域中的一种应用, 是海洋港口管理领域的核心技术. 船牌识别技术可以使海洋港口管理达到更高的效率, 节省时间的同时也缓解了人工出海巡逻执法过程中时效性差、危险性强, 难以实现对渔船有效监管的局面. 科学智能化的船牌识别方法能够为相关机构和执法人员在进行渔船监管时提供依据, 进而在一定程度上可以促进海上交通的和谐发展.
目前船牌检测与识别主要采用Faster R-CNN、卷积神经网络、EAST和CRNN等算法. 例如, 采用Faster R-CNN算法对船牌进行定位, 然后采用ResNet对船牌号进行识别[1], 虽然Faster R-CNN引入了区域建议网络, 提升了检测精度和速度, 但对长度不一的文本检测能力依然不足, 文本识别部分采用两个ResNet模型, 分别识别数字与中文, 应用过程繁琐; 采用SDD算法对船牌位置检测[2]和将MobileNet算法与SDD算法相结合对船牌位置检测[3]的方法都是通过SDD对船牌位置进行检测. SDD可以直接回归目标类别和位置, 并在不同尺度的特征图上进行预测. 但检测出的目标框为矩形, 虽然能将船牌区域框出, 但是区域内背景过多会影响后期船牌号识别的效果; 通过PDnet网络对船牌位置进行定位检测然后再采用OA-Classifier数据库的形式对船牌进行分类识别[4], OA-Classifier识别船牌号的方式依赖船舶自动识别系统 (automatic identification system, AIS)是否打开以及船牌数据库中船牌号是否覆盖所有船只等问题; 通过EAST算法对船牌进行定位然后利用CRNN对船牌号进行识别[5], 船牌由汉字与数字组成, 汉字彼此之间互相独立, EAST算法检测汉字时会出现将整个文本行分割成多个文本行的情况, 丢失完整的语义信息. 而CRNN算法对于有较大形变或自然场景变化较大的文本, 识别准确率较低; 采用基于YOLOv3对非标船牌进行检测之后设计船名有限中文库与模糊匹配机制对船牌进行识别[6], YOLOv3虽然检测速度快, 背景误检率低, 但是存在船牌位置检测精准性差, 召回率低的问题. 通过设置船名有限中文库的方式虽然一定程度上解决了模糊船牌名无法辨别的问题, 但对非入库的船牌名识别准确率较低的问题依然存在.
为了解决上述问题, 本文提出了一种DP-DBNet算法检测船牌位置和MHA-CRNN算法来识别船牌号的两阶段模型. 首先, 使用DPN能够使DBNet算法在海上环境复杂的情况下, 也能获取船牌重要特征并融合, 使船牌特征的利用更加充分, 使船牌位置检测的精准性更高. 然后, MHA更加注重字符之间的关联, 对于背景颜色变化较大的情况下, 可以抓住字符之间的特征, 使模型识别效果更加准确. 最终实验证明, 对不同背景颜色或不同位置的船牌以及多张船牌的情况下, 该模型有较强的泛化能力, 模型准确率较高.
1 改进的DBNet和CRNN模型构建 1.1 DP-DBNet文字检测模型本文基于船牌图片特点采用基于实时分割的DBNet算法, DBNet算法将二值化部分进行近似, 使其可导. 相比于基于回归的文本检测方法, DBNet算法具有不受文本形状限制, 对各种形状的文本都能取得较好检测效果的优点, 但是它的后处理比较复杂, 推理耗费的时间较多. 原始DBNet的特征提取模块采用的是ResNet18、ResNet50网络, 而ResNet网络有着计算量大参数过多的缺点, 作为特征提取层会导致DBNet算法的性能降低[7]. 因此对DBNet的特征提取层进行改进. 本文采用DPN68[8]特征提取网络作为特征提取层, 该网络既结合了ResNet可以重复使用细化特征的特点也结合了DenseNet能够将新特征加入的优点, 是典型的双路径混合网络. DPN68结合了ResNet和DenseNet网络的优点能够有效地解决深层训练时梯度消失的问题, 可以减少大量的神经网络参数, 同时计算复杂度也大大降低, 内存消耗也降低.
在DP-DBNet模型训练中, 对概率图、阈值图、二值图分别计算损失, 并求加权总损失, 得到预测结果. 损失函数定义为:
$ L = \mathop L\nolimits_s + \alpha \times \mathop L\nolimits_b + \beta \times \mathop L\nolimits_t $ | (1) |
其中,
对于
$ \mathop L\nolimits_s = \mathop L\nolimits_b = \sum\nolimits_{i \in \mathop s\nolimits_l } {\mathop y\nolimits_i } \log \mathop x\nolimits_i + \left( {1 - \mathop y\nolimits_i } \right)\log \left( {1 - \mathop x\nolimits_i } \right) $ | (2) |
其中,
$ \mathop L\nolimits_t = \sum\nolimits_{i \in \mathop R\nolimits_d } {\left| {\mathop y\nolimits_i^* - \mathop x\nolimits_i^* } \right|} $ | (3) |
其中,
图1为DP-DBNet算法结构图, 具体流程为: 首先将图片进行图像预处理转化成特征矩阵. 随后图像特征矩阵进入DPN双通道特征提取网络. 其中过渡层(transition)位于每个block的第1个单元结构之前, 它可以承接上一个block的信息, 降低数据的冗余和参数量[10, 11]. 然后经过特征提取形成特征图之后, 对特征图进行预测得到概率图(probability map)和阈值图(threshold map), 之后将概率图和阈值图通过可微分二值化(DB)计算, 得到近似二值图(approximate binary map). 最后通过公式化模块(box formulation)得到文本边界框(destination map).
图2为DPN的单元结构. DPN的主要特点为Bottleneck结构的最后一个卷积层的输出会分为两个部分: 一部分进入ResNet路径; 另一部分进入DenseNet路径; 两个路径输出的特征矩阵进入下一个单元结构前要进行合并操作, 这样的结构有利于特征的提取[10]. 如此循环, 第k个单元结构的特征映射推导过程用如下公式表示:
$ \begin{gathered} \mathop h\nolimits^k = \left( {\mathop x\nolimits^{k - 1} \oplus \mathop f\nolimits^k \left( {\mathop h\nolimits^{k - 1} } \right)} \right) \otimes \left( {\mathop y\nolimits^{k - 1} \otimes \mathop {\mathop f\nolimits^k \left( {\mathop h\nolimits^{k - 1} } \right)}\nolimits{'} } \right) = \mathop x\nolimits^k \otimes \mathop y\nolimits^k \end{gathered} $ | (4) |
其中,
1.2 MHA-CRNN文字识别模型
在广泛的文本识别方法中CRNN有模型参数少, 对识别序列不要求长度固定等特点, 在实际生活中有着很好的应用价值. CRNN网络分为3层: 卷积层、循环层和翻译层. 卷积层为提取输入特征图像的特征序列. 之后是循环层, 用来预测卷积层输出的特征序列帧数. 最后进入翻译层, 将循环层输出的特征序列帧数的每帧预测转换成标签序列的过程[12].
本文采用CRNN文字识别算法, 并对该算法的卷积层和循环层做出改进, 进而使模型的识别效果提高. 原CRNN网络卷积层采用VGG16的结构, 由于VGG16网络参数多, 训练过程中耗费大量的计算资源, 并且内存占用高, 使CRNN的性能下降. 因此本文经过实验研究选用ResNet18作为算法的卷积层, 对船牌图片进行特征提取.
循环层采用长短时记忆神经网络(bi-directional long short-term memory, BiLSTM). BiLSTM网络是循环神经网络(recurrent neural network, RNN)不断优化的结果. BiLSTM在一定程度上很好地解决了传统RNN网络中的梯度消失、梯度爆炸等问题. BiLSTM特有的门结构可以让信息有选择的通过, 决定哪些信息被保留, 哪些信息被遗忘. 为了更好地获取BiLSTM处理后输出序列中有效的局部特征, 并从序列中筛选出重要特征, 从而提升模型的整体识别效果, 本文在循环层BiLSTM后加入了多头注意力机制[13]. 加入多头注意力机制和改进特征提取网络后的CRNN网络结构图如图3所示.
具体船牌号识别流程为, 首先船牌图片进入卷积层CNN, 特征提取网络ResNet18对输入图像“鲁烟渔养68746”提取图像特征, 得到特征序列. 之后特征序列进入加入MHA的循环层BiLSTM, 产生标签分布预测. 最后通过翻译层CTC来获得最大概率, 翻译出最终的序列标签“鲁烟渔养68746”[14, 15].
对于循环层输出序列字符间距不同的特点, 选择不需要对齐的CTC作为损失函数. CTCloss的特点是引入“blank”机制, 解决重复字符输出的问题. 从循环层到翻译层, 输入序列x, 输出
$ P\left( {l|x} \right) = \sum\nolimits_{\pi \in \mathop B\nolimits^{ - 1} \left( l \right)} {P\left( {\pi |x} \right)} $ | (5) |
其中,
$ O = - \ln \left( {\prod\limits_{\left( {x, {\textit{z}}} \right) \equiv S} {p\left( {l|x} \right)} } \right) = - \sum\limits_{\left( {x, {\textit{z}}} \right) = S} {\ln } p\left( {l|x} \right) $ | (6) |
通过选用CTCloss解决了船牌号长度不统一的问题, 在船牌号字符与标签序列长度不断变化时能够在同一时间作为训练数据[16].
多头注意力机制与注意力机制的运算过程类似. 与注意力机制相比, 多头自注意力机制只关注输入序列中字符之间的注意力计算, 寻找序列中字符之间的关联, 能更加有效的获取较远距离字符之间的依赖特性[17], 能更好地筛选出船牌特征. 单个字符注意力计算公式如下:
$ Attention\left( {Q, K, V} \right) = {\textit{Softmax}} \left( {\frac{{Q\mathop K\nolimits^{\rm{T}} }}{{\sqrt {\mathop d\nolimits_k } }}} \right)V $ | (7) |
其中, Q, K, V分别代表Query矩阵、Key矩阵和Value矩阵;
进行一次单个字符注意力操作难以学习到序列中的多个特征权值. 为了能实现从不同的子空间中学习序列特征信息, 就需要进行多头注意力计算, 通过多个并行头重复多次进行Attention运算, 不同的头处理不同的信息, 这样就可以获得更丰富的长距离序列中的依赖关系. 多头注意力计算公式如下:
$ \left\{ {\begin{array}{*{20}{l}} {\mathop {head}\nolimits_i = Attention\left( {Q\mathop W\nolimits_i^Q , K\mathop W\nolimits_i^K , V\mathop W\nolimits_i^V } \right)W} \\ {MulHead(Q, K, V) = Cancat(\mathop {head}\nolimits_1 , \cdots, \mathop {head}\nolimits_h )\mathop W\nolimits^O } \end{array}} \right. $ | (8) |
其中, Attention代表注意力计算;
具体的计算过程为, 首先Q, K, V进行不同的线性变换, 计算得出各个头的注意力计算结果, 然后将获得的多个注意力计算结果进行拼接并与拼接对应的权重矩阵进行点乘, 最终获得多头注意力的结果.
本文提出了DP-DBNet和MHA-CRNN的船牌号检测和识别模型. 即基于DPN特征提取网络的DBNet船牌位置检测模型和基于多头注意力的CRNN船牌文字识别模型. 模型流程如图4所示. 具体构建过程为: 首先收集船牌检测和识别数据集, 并对数据集进行筛选、整理和标注; 其次, 构建船牌检测模型和船牌号文字识别模型; 然后利用测试集测试模型效果, 得到精度较高的船牌检测和识别模型; 最后, 选用准确率较高的船牌位置检测模型先检测船牌位置, 再利用船牌文字识别模型识别船牌文字.
2 实验结果与分析 2.1 数据集介绍
本文研究所用数据集包含两部分, 一是船牌位置检测数据集, 二是船牌文字识别数据集. 两部分数据集都是基于烟台芝罘区新型现代化智慧渔港项目通过港口周围摄像头获取的实际船牌数据. 船牌位置检测数据集如图5, 船牌文字识别数据集示例如图6.
图5数据样例包含烟台不同港口摄像头抓拍进出渔港的渔船图片. 经过筛选标注, 共筛选出9535张含有船牌的图片数据. 图6数据样例可以看出, 数据格式为汉字与数字的组合. 汉字包括: 鲁、烟、渔、养、开、海、蓬等. 数字包括0–9. 经过筛选标注后, 共选择出1.8万条数据. 两份数据集都随机以8:1:1划分, 其中80%作为训练集, 10%作为测试集, 10%作为预测集.
2.2 评价指标
本实验采用准确率(P)、召回率(R)、F1 measure(F)为评价标准. 评估公式如下:
$ P = \frac{{TP}}{{TP + FP}} $ | (9) |
$ R = \frac{{TP}}{{TP + FN}} $ | (10) |
$ F = \frac{{2 \times P \times R}}{{P + R}} $ | (11) |
其中,
实验在Linux操作系统下, 基于GPU、PyTorch和CUDA框架完成的, 具体参数见表1.
2.4 网络训练
在改进后的DP-DBNet算法模型训练中, 迭代次数设置为30次, 批训练数据量为16, 初始学习率为0.01, 训练动量为0.9, 权重衰减系数为0.0001, 优化器选用SGD, SGD可以使目标函数的收敛更加稳定, 减少在鞍点等的震荡. 训练准确率、召回率、F值变化曲线如图7所示.
模型大小如表2所示. 从表2及图7曲线图中可以看出网络较深的ResNet50网络对船牌位置定位有着很好的性能, 但同时模型大小较大. 较浅的ResNet18虽然模型小, 但是在性能上不如其他模型. 本文提出的DP-DBNet模型不仅模型大小适中, 而且在性能上也要优于其他模型.
在改进后的MHA-CRNN模型训练中, 将迭代次数设置为100次, 批训练数据量为64, 初始学习率设置为0.1, 训练动量为0.9, 权重衰减系数为0, 优化器选用SGD. 训练损失变化如图8所示.
2.5 消融实验
为了验证改进算法与原CRNN算法优化的有效性, 进行了消融实验, 实验结果如表3所示. 通过对比表3数据得出以下结果.
(1) 改进卷积层选用ResNet18的方法相比于原始CRNN算法模型中卷积层采用VGG16的方法, 识别准确率有4.11%的提升, 并且模型大小也减少了3.5 M. 采用ResNet34虽然识别准确率比ResNet18略好, 但模型大小太大, 不适宜场景应用. 因此卷积层选用ResNet18特征提取网络.
(2) 本文通过在循环层BiLSTM中加入多头注意力机制, 使得模型的识别准确率不仅比卷积层为ResNet34时的识别率提高了3.31%, 同时模型大小相比于ResNet18也只增加了1 M.
由此可见, 本文提出的MHA-CRNN模型对提高船牌号识别准确率有更好的效果.
使用未参与训练的图片对模型进行测试, 如图9所示. 本文提出的DP-DBNet和MHA-CRNN模型相结合的方法针对图片中不同背景颜色或不同位置的船牌以及有一个或多个船牌的情况都可以准确地将船牌和船牌号检测并识别出来.
3 结论与展望
本文搭建了DP-DBNet船牌位置检测模型和MHA-CRNN船牌号识别模型, 以烟台芝罘区新型现代化智慧渔港项目为根本, 通过烟台港口周围摄像头获取实际的船牌数据进行识别分析. 实验研究显示, 针对不同的船牌悬挂位置和不同背景颜色的船牌, DP-DBNet和MHA-CRNN算法模型在性能和识别准确率上都优于其他的模型, 并成功解决了传统人工方式监管渔船的中存在的耗时耗力的问题. 因此, 在港口管理工作中, 使用此模型, 能够更好地对渔船进行监控, 对港口的科学智能化管理有很大的帮助. 在未来, 将继续研究, 实现端到端的模型训练方式, 使得模型在运行速度和识别效果上都能达到更好的效果.
[1] |
宣琦, 张鑫辉, 翔云. 一种基于Faster-RCNN的船牌识别方法: 中国, 110598693A, 2019-12-20.
|
[2] |
郭强, 林盛梅. 基于SSD的船名检测方法研究. 中国水运(下半月), 2019, 19(4): 63-64. |
[3] |
吴书楷, 刘宝龙, 徐舒畅, 等. 结合深度特征迁移与融合的两阶段船牌定位算法. 计算机辅助设计与图形学学报, 2020, 32(4): 628-634. |
[4] |
李兆桐, 孙浩云. 基于全卷积神经网络的船舶检测和船牌识别系统. 计算机与现代化, 2019(12): 72-77. DOI:10.3969/j.issn.1006-2475.2019.12.014 |
[5] |
路云, 胡杰. 基于深度学习的船舶舷号检测与识别. 电脑知识与技术, 2021, 17(11): 178-180. DOI:10.14004/j.cnki.ckt.2021.0984 |
[6] |
周怡, 祝啟瑞, 谢海成, 等. 基于目标检测与模糊匹配的非标船牌识别研究. 激光与红外, 2021, 51(11): 1526-1530. DOI:10.3969/j.issn.1001-5078.2021.11.020 |
[7] |
吴鑫磊, 陶青川, 张畅. 基于DBNet网络的瓶盖文字目标检测. 现代计算机, 2021(14): 47-53. DOI:10.3969/j.issn.1007-1423.2021.14.009 |
[8] |
Chen YP, Li JN, Xiao HX, et al. Dual path networks. Proceedings of the 31st International Conference on Neural Information Processing Systems. Long Beach: Curran Associates Inc., 2017. 4470–4478.
|
[9] |
朱世闻. 基于深度学习的小学英语试卷手写体识别研究[硕士学位论文]. 南京: 南京邮电大学, 2021.
|
[10] |
牛瑞华, 杨俊, 邢斓馨, 等. 基于卷积注意力模块和双通道网络的微表情识别算法. 计算机应用, 2021, 41(9): 2552-2559. DOI:10.11772/j.issn.1001-9081.2020111743 |
[11] |
Ren FL, Zhou HB, Yang L, et al. ADPNet: Attention based dual path network for lane detection. Journal of Visual Communication and Image Representation, 2022, 87: 10357. |
[12] |
Zhang XS, Wang Y. Industrial character recognition based on improved CRNN in complex environments. Computers in Industry, 2022, 142: 103732. DOI:10.1016/j.compind.2022.103732 |
[13] |
Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need. Proceedings of the 31st International Conference on Neural Information Processing Systems. Long Beach: Curran Associates Inc., 2017. 6000–6010.
|
[14] |
辜双佳, 栗智. 基于CRNN模型的中文场景文字识别. 科技风, 2021(17): 108-110. DOI:10.19392/j.cnki.1671-7341.202117047 |
[15] |
Li XX, Duan C, Yin PP, et al. Research on the application of deep learning-based license plate computer recognition system in traffic scenarios. Journal of Physics: Conference Series, 2021, 2033: 012136. DOI:10.1088/1742-6596/2033/1/012136 |
[16] |
何伟鑫, 邓建球, 丛林虎. 基于改进CRNN的导弹编号识别算法研究. 计算机测量与控制, 2021, 29(6): 128-135. DOI:10.16526/j.cnki.11-4762/tp.2021.06.027 |
[17] |
俞海亮, 彭冬亮, 谷雨. 结合双层多头自注意力和BiLSTM-CRF的军事武器实体识别. 无线电工程, 2022, 52(5): 775-782. DOI:10.3969/j.issn.1003-3106.2022.05.011 |