· 原文链接
该论文是2017年IEEE上的一篇论文,本论文最大的特点是在车牌识别方面把定位和识别放在了一个网络上,真正实现了一个网络端到端的车牌识别。
1.网络结构
图1:整体网络设计网络由5个部分组成(每个部分的具体设计细节请查看原文):
1. CNN layers
使用VGG-16提取feature map。
2. Region Proposal Network (RPN)
输入feature map,通过RPN提取出一些潜在可能有车牌物体的候选框(bounding box)。
3. ROI Integrating & Pooling
将1中提取的feature map通过max pooling映射成H`和W`,然后分成固定窗宽的X×Y个grids,同时把RPN得出的候选框也映射到这X×Y的girds中,方便后期的定位和识别。为了适应车牌的形状,论文设定了X=4,Y=20。
4.LP Detection Network
将从第2步得到的候选ROI的feature map作为一个向量作为输入,经过两个全连接层,得到一个新向量,然后使用softmax分类出plate/non-plate的概率,以及回归出bounding box 的top-left和right-bottom坐标。
5.LP Recognition Network
使用CRNN网络进行车牌OCR识别。该方法的优点是不需要对字符进行分割,且RNN可以考虑上下文关系,挖掘出车牌的一些上下文特征(如:一定为7个字符,第1个字是中文,第2个字是英文)
图2:CRNN网络进行车牌OCR识别流程识别过程如图2,在论文给出的这张图中,第一个Plate Proposal的图不是特别准确,它不是一张真正的车牌定位后的局部图片,而是经过第3步ROI Pooling后得到的X×Y个grids的feature map,其中C是feature map的通道数。BRNN具体使用的是LSTM。
由于定位和识别是同时进行的,因此无论该grid有没有识别到车牌,都会进行OCR识别,在整个网络输出结果中再选择识别到车牌的位置的OCR识别结果进行输出。
2.损失函数
由于定位和识别是放在一个网络的,因此损失函数的设计需要综合定位结果和识别结果。
损失函数:
其中,和沿用了RPN网络损失函数的设计。沿用了CTC的损失函数。
3.论文分析
3.1结构分析
本文最大的特点就是1中3-5模块的设计,通过共用feature map将定位和识别并行处理,去除了以往车辆定位后在原图上定位并裁剪车牌,再进行识别的步骤(图2上网络的pipeline设计)。使得通过一个网络可以实现端到端的车牌识别(图2下网络的pipeline设计)。
图2:双网络车牌识别VS单网络车牌识别该方法可行的最重要原因在于CRNN网络的特性。它不需要对车牌字符进行分割,而是将这个车牌进行输入。因此定位所用到的feature map可以共享给CRNN做识别。
3.2性能和准确率
在CARFLAG-LARGE DATASET上的测试,与一个双网络的车牌识别系统进行对比(图3),可以看出其在准确率和时间上都高于双网络车牌识别。(论文中该系统在3个数据集上进行的测试,这里就不一一列举了)
EXPERIMENTAL RESULTS ON CARFLAG-LARGE DATASET在论文的分析部分,极大值抑制(NMS)占用了整个网络预测的一半的时间,如果需要优化可以先从这方面着手。
最后,我想说的是这篇文章采用的中国车牌的数据集并识别中国车牌,但是识别结果却没有识别中文,实在有点迷。
网友评论