LPRNet: License Plate Recognition via Deep Neural Networks

LPRNet是英特尔发布的端到端的纯卷积神经网络架构的车牌识别算法。

论文:LPRNet: License Plate Recognition via Deep Neural Networks

摘要

This paper proposes LPRNet - end-to-end method for Automatic License Plate Recognition without preliminary character segmentation. Our approach is inspired by recent breakthroughs in Deep Neural Networks, and works in real-time with recognition accuracy up to 95% for Chinese license plates: 3 ms/plate on nVIDIA GeForce GTX 1080 and 1.3 ms/plate on Intel Core i7-6700K CPU. LPRNet consists of the lightweight Convolutional Neural Network, so it can be trained in end-to-end way. To the best of our knowledge, LPRNet is the first real-time License Plate Recognition system that does not use RNNs. As a result, the LPRNet algorithm may be used to create embedded solutions for LPR that feature high level accuracy even on challenging Chinese license plates.

本文提出了LPRNet,一种无需初步字符分割的车牌自动识别的端到端方法。我们的方法受到了近年来突破的深度神经网络的启发,能够在实时状态运行,并且针对中国车牌的识别准确率高达95%:nVIDIA GeForce GTX 1080上为3毫秒/车牌,Intel Core i7-6700K CPU上为1.3毫秒/车牌。LPRNet由轻量级的卷积神经网络组成,因此可以进行端到端的训练。据我们所知,LPRNet是第一个不使用RNN的实时车牌识别系统。因此,LPRNet算法可作用于嵌入式解决方案,即使在充满挑战性的中国车牌数据集上也能达到高精度。

概述

现实场景中车牌识别充满各种挑战,包括模糊图像、低照明条件、车牌数字变化、车牌变形以及气候影响。本文提出的LPRNet,不需要额外的字符分割和识别,就能够在自然条件下满足车牌识别任务的精度和速度要求。它具有以下优势:

  1. LRPNet是一个实时的车牌识别框架,支持可变长度(variable-length)车牌识别并且不需要字符预分割,支持端到端训练;
  2. LPRNet是第一个没有使用RNN模块的车牌识别算法,模型本身足够轻量,能够应用于各种平台,包括嵌入式设备;
  3. LPRNet能够处理各种困难场景,包括摄像头相关的失真、困难照明条件、视角变化等。

LPRNet

LPRNet设计了一个轻量级Backbone,参考了当时最新的轻量级模块Squeeze Fire Blocks和Inception Blocks。整体架构如下:

在Backbone的最后一层,使用\(1\times 13\)大小的卷积核模拟基于LSTM的RNN模块,建模当前层卷积特征和前后层卷积特征之间的关系。另外,论文还保留了中间卷积层输出的特征,经过扩充后编码到最后卷积层的输出特征中,具体实现细节论文并没有给出。

Backbone最后的输出可以看成逐个特征层的标签预测,最后输入到CTC模块进行标签解码和端到端训练。

LocNet

LocNet是论文提供的一个可选模块,它作为一个空间转换层(Spatial Transformer Layer)插入到LPRNet的输入端。LocNet首先通过卷积层和池化层对输入图像进行特征提取,然后通过全连接层预测出一个3x2的仿射变换矩阵,最后对输入图像进行空间变换(注:不改变图像大小)。

模型设计

论文是在Reading Car License Plates Using Deep Convolutional Neural Networks and LSTMs的基础上逐步进行改造,将该论文提出的网络称为LPRNet baseline,主要由Inception blocks和biLSTM构成。首先,移除RNN模块并且进行部分Backbone改造得到LPRNet basic,也就是LPRNet;然后,为了进一步提高推理速度,将所有池化层设计为\(2\times 2\)大小的步长,称为LPRNet reduced

实验

论文在Chinese License Plates dataset进行实验,该数据集包含11696张车牌图片,按照9:1方式进行训练数据和验证数据的划分。

论文测试了LPRNet在不同硬件平台上的推理速度,包括CPU、GPU和FPGA。

小结

就论文而言,我并不觉得LPRNet写的非常好,没有详细的模型定义,实验细节也不完善。当然它也有优点,一个是首次提出了纯卷积网络架构的车牌识别算法;第二个是证明了车牌识别算法可以做到实时推理和部署。它更像是英特尔发布的一篇宣传文章,一个是证明自己的研发实力,另一个是证明自家CPU芯片(Intel CoreTMi7-6700K SkyLake)和推理框架(Intel OpenVINO)的强大性能(每张车牌图片的LPRNet推理仅需1.3ms)。

总的来说,我觉得LPRNet架构大体上还是遵循CRNN框架:CNN模块、RNN模块和转录层,优化的地方在于

  1. 尝试了更加轻量级别的卷积算子,LPRNet参考的是当时最新的SqueezeNet和Inception Blocks,那么后面推出的MobileNet系列、ShuffleNet系列和GhostNet等轻量级网络同样可以发挥作用;
  2. 使用大卷积核的卷积模块替代RNN模块,实现纯卷积网络架构,那么更新的基于注意力机制的Transformer Block可以胜任这份工作。

在CCPD(中文车牌识别数据集)上比较了LPRNet和CRNN的效果(zjykzj/crnn-ctc),确实在参数量和模型大小上减少了很多,但是准确率还有进一步优化的空间:

ModelARCHInput ShapeGFLOPsModel Size (MB)ChineseLicensePlate Accuracy (%)Training DataTesting Data
CRNNCONV+GRU(3, 48, 168)4.05882.147269,621149,002
CRNN_TinyCONV+GRU(3, 48, 168)0.34.076.590269,621149,002
LPRNetPlusCONV(3, 24, 94)0.52.363.546269,621149,002
LPRNetCONV(3, 24, 94)0.31.960.105269,621149,002
LPRNetPlus+STNetCONV(3, 24, 94)0.52.572.130269,621149,002
LPRNet+STNetCONV(3, 24, 94)0.32.272.261269,621149,002

相关