车牌识别“Towards End-to-End Car License Plates Detection and Recognition with Deep Neural Networks”

车牌检测和识别,很久没关注了。作者提出了一个一体化的深度网络,同时进行车牌的检测和识别,在识别时不需要字符分割,而是使用带有CTC的RNN网络,具体的实现细节在论文的参考论文【14】中。

模型首先使用卷积层应用到输入图像,之后提取车牌proposals,接下来使用RoI池化层和MLP进行车牌检测和bbox回归,同时使用带有CTC的RNN进行牌照识别,网络的结构如图1所示:
这里写图片描述

车牌检测网络:
车牌检测判断提供的RoIs是否为车牌,两个fc层加一个dropout层将特征图转化为向量,编码的特征用于车牌打分和bbox回归。

车牌识别网络:
为了避免进行字符分割,将车牌识别作为序列标记问题,带有CTC损失的双向RNN(BRNN),用于标记序列特征,如图2所示:
这里写图片描述
对于RoI池化后的特征,先经过两个卷积层,两个卷积层之间有一个矩形池化层,这对于识别窄字符有效,这些操作将车牌区域特征变换为序列 D×L <script type="math/tex" id="MathJax-Element-1028">D\times L</script>,D=512,L=19。使用 V=(V1,V2,...,VL) <script type="math/tex" id="MathJax-Element-1029">V=(V_1,V_2,...,V_L)</script>表示。

BRNN应用到V,两个相互分离的RNN,其中一个前向处理特征序列,另外一个后向处理序列。两个隐含的状态级联一起,输入具有37个输出的线性变换中。接下来是Softmax层,将37个输出转换到概率,对应26个字母,10个数字及一个非字符类的概率。经过BRNN编码,特征序列转换到与L具有相同长度的概率估计 q=(q1,q2,...,qL) <script type="math/tex" id="MathJax-Element-1030">q=(q_1,q_2,...,q_L)</script>,BRNN获取了丰富的上下文信息,字符识别将会更准确。为了解决RNN训练中的梯度消失问题,使用了LSTM。LSTM定义了记忆细胞,三个乘法门,可以选择性的保存信息。

CTC层被用来做序列解码,通过BRNN的输出序列寻找具有最大概率的近似最优路径,即,
这里写图片描述
π <script type="math/tex" id="MathJax-Element-1031">\pi</script>是标记的序列,B算子用于一处重复的标记及非字符标记,示例为: B(aab)=B(aabb)=(aab) <script type="math/tex" id="MathJax-Element-1032">B(a-a-b-)=B(-a--a-bb)=(aab)</script>。CTC具体的细节在论文【A novel connectionist system for unconstrained handwriting recognition】。根据CTC的损失函数,车牌识别的目标函数为网络输出正确标记的负log概率,即:
这里写图片描述
整个检测和识别网络多任务损失为:
这里写图片描述

实验结果
这里写图片描述

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页