Intel论文揭示自家车牌识别算法:LPRNet

来自工业界的最佳实践。
车牌识别是一个老生常谈的话题,在工业界已经得到广泛应用。当深度学习在各种视觉识别任务上刷新更高精度的时候,却常常被认为计算量远大于传统方法。Intel公司俄罗斯IOTG计算机视觉组的工程师最近发布了一篇论文,揭示了自家已经商用的车牌识别算法,使用轻量级深度神经网络进行车牌识别,达到快准狠的新高度,即速度超快、精度超准、硬件利用率超狠。
本文来自于论文《LPRNet: License Plate Recognition via Deep Neural Networks》。

文章的的第一作者已经离开Intel,这篇论文是他们17年的工作,通过Linkedin得知,两位作者来自Intel收购的Itseez公司,也就是之前维护OpenCV的俄罗斯公司。
该文提出了LPRNet – 自动车牌识别的end-to-end方法,识别之前无需进行初步的字符分割。该方法使用了深度神经网络,能够实时运算,在中国车牌识别准确度上高达95%,速度上在nVIDIA GeForce GTX 1080显卡运算每个车牌3ms,在英特尔酷睿i7-6700K上每个车牌1.3ms。LPRNet由轻量级卷积神经网络组成,因此可以端到端的方式进行训练。论文称,LPRNet是第一个不使用RNN的实时车牌识别系统。因为速度快,LPRNet算法可用于自动车牌识别的嵌入式解决方案,即使在具有挑战性的中国车牌上也具有高精度。
需要说明的是,LPRNet解决的是识别的问题,文中车牌检测使用的是LBP-cascade。

LPRNet特性
1.实时、高精度、支持车牌字符变长、无需字符分割、对不同国家支持从零开始end-to-end的训练;
2.第一个不需要使用RNN的足够轻量级的网络,可以运行在各种平台,包括嵌入式设备;
3.鲁棒,LPRNet已经应用于真实的交通监控场景,事实证明它可以鲁棒地应对各种困难情况,包括透视变换、镜头畸变带来的成像失真、强光、视点变换等。

车牌识别的挑战
图像模糊、很差的光线条件、车牌数字的变化(比如中国和日本的车牌有一些特殊字符)、车牌变形、天气影响(比如雨雪天气)、车牌上的字符个数有变化。

空间变换预处理LocNet
这是对检测到的车牌形状上的校正,使用 Spatial Transformer Layer[1],这一步是可选的,但用上可以使得图像更好得被识别。

LPRNet的基础构建模块
LPRNet的基础网络构建模块受启发于SqueezeNet Fire Blocks[2]和Inception Blocks[3],如下图所示。

特征提取骨干网架构
骨干网将原始的RGB图像作为输入,计算得到空间分布的丰富特征。为了利用局部字符的上下文信息,该文使用了宽卷积(1×13 kernel)而没有使用LSTM-based RNN。骨干网络最终的输出,可以被认为是一系列字符的概率,其长度对应于输入图像像素宽度。
由于解码器的输出与目标字符序列长度不同,训练的时候使用了CTC Loss[4],它可以很好的应对不需要字符分割和对齐的end-to-end训练。

为了进一步提高性能,使用了论文[5]中global context嵌入。
推理阶段对上述一系列字符的概率进行解码,使用beam search[6],它可以最大化输出序列的总概率。
后过滤(post-filtering)阶段,使用面向任务的语言模型实现作为目标国家车牌模板的一组集合,后过滤阶段是和beam search 结合一起用的,获得通过beam search找到的前N个最可能序列,返回与预定义模板集合最匹配的第一个序列,该模板取决于特定国家的车牌规则。

识别实验结果
训练时,使用一个来自监控场景的中国车牌的私有库,总共有11696幅经过LBP级联检测器检测出来的车牌,并进行了数据增广(data augmentation)即随机旋转、平移、缩放,下图报告了上述各种tricks对识别精度的影响。

最大的识别精度增益来自于global context(36%),其次是data augmentation(28.6%),STN-based alignment即预处理也带来了显著提高(2.8-5.2%),Beam Search联合post-filtering进一步提高了0.4-0.6%.

识别速度
Intel将LPRNet在CPUGPUFPGA上都进行了实现,每个车牌的识别时间如下:

这里GPU用的是nVIDIA GeForce1080, CPU是Core i7-6700K SkyLake, FPGA是Intel Arria10,推断引擎IE来自Intel OpenVINO.

虽然这篇文章本身没有什么新的发明,但52CV还是认为非常值得推荐给大家的,它绝不属于水文,因为Intel已经将其商用了,足以证明它的优势和价值。

该文没有开源代码,论文地址:
https://arxiv.org/abs/1806.10447v1
在“我爱计算机视觉”公众号后台回复“lprnet”可以直接获取论文的百度网盘下载地址。

参考文献
[1]“Spatial Transformer Networks,”arXiv:1506.02025
[2]“SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5mb model size,”arXiv:1602.07360
[3]“Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning,” arXiv:1602.07261
[4]Connectionist temporal classification:labelling unsegmented sequence data with recurrent neural networks. ICML 2006:369-376
[5]“ParseNet: Looking Wider to See Better,” arXiv:1506.04579
[6]Supervised Sequence Labelling with Recurrent Neural Networks, 2012th ed. Heidelberg ; New York:Springer, Feb. 2012.

转载来源:《快准狠!Intel论文揭示自家车牌识别算法:LPRNet

推荐文章

    自江森自控(Johnson Controls Inc.)的软件工程师Aditya Vora分享了一种快速精准的人头检测(head detector)算法并开源了代码。    看起来还是不错的!人头检测在视频监控中非常重要,而公交车、商场或者大型场馆的拥挤人群计数则是其重要应用场景。 算法思想作者称拥挤人群计数目前主要有两种实现路径:1.使用回归的算法思路,直接根据图像回归出拥挤人群密度热图,它的缺点是只能得到场景整体的一个拥挤指数,不能获知人群个体的具体位置,而且这种方法对图像分辨率很敏感。2.使用目标检测的方法,比如直接使用Faster RCNN检测人,检测后数目标为“人”的个数。这种方法的缺点是在人物相互遮挡的情况下往往性能较差,而人群越拥挤相互遮挡的可能性越大,导致算法使用受限。该文作者希望设计更有针对性的精准的人头检测,实现更加精准的人群计数。作者创新的两点,轻量级人头检测网络和anchors尺度的选择。网络架构:从上图可知,网络的前半部分是VGG16特征提取网络,经过一次卷积,然后分开分别使用1*1卷积进入Regression head(用于回归人头的位置信息)和Classification head(用于分类是否为人头)。在检测网络中,anchors是很重要的概念,是一组预定义的包围框,在对象检测系统中预测尺度和位移。作者认为普通目标识别中anchors的尺度定义过大,应该根据“有效感受野”(effective receptive field)的思想,减小尺度(直观上“人头”目标比“人体”目标也要小)。实验结果作者在BRAINWASH数据库上做了实验,打败了三个基线算法,并取得了与最好结果算法“可比较“的性能。提出的算法比较快,使用Quadro M1000M显卡(仅有512 CUDA核心)速度达到5fps,使用Jetson TX2(仅有256 CUDA核心)速度1.6fps。相比以往算法更加适合于嵌入式边缘计算平台。论文地址:https://arxiv.org/abs/1809.08766v1代码地址:https://github.com/aditya-vora/FCHD-Fully-Convolutional-Head-Detector

热门文章

        对数据标注行业稍微有些了解的人都知道数据标注进入门槛低,适合很多人兼职也适合创业。        正是因为数据标注行业的门槛低这个特点最近两年从事数据标注的小公司小工作室如雨后春笋般的遍布全车大大小小的县城。        但是目前有个有趣的现象,那就是有很多进入数据标注行业做了一段时间的人慢慢的感觉数据标注行业就是个坑?为什么有些人会说数据标注就是个坑呢?        其实对与有上述问题认识的人我们认为,这些人多数都是有于对这个行业对自身条件的不了解,盲目的开始进入数据标注行业的。为什么我们会这样说呢?下面就给给大家来分析下到底有哪几方面的原因:        一、有相当一部分人是听了朋友或者网上消息说这行很火爆,好做,门槛低,也有一部分人了因此租办公室买电脑招人,然后就去群里面找分发项目的人就开张干起来了。可实际上这些人他们大多数都没有充分了解数据标注行业,更没有认真仔细得去调查分析,到底自己能不能做好一个项目,到底自己能不能有质有量按时交付的完成一个项目,到底自己有没有这个能力来管理项目。更多的人也没有去用长远的眼光去考虑数据标注项目。        二、数据标注项目虽然入门门槛低,但是相当一部分有于理解认知应变能力上都不能保证去做好数据标注项目,还有一部分人由于自己对标注项目重视程度不足接到项目之后呢?不仔细认真的去阅读理解项目规则,更没有很好的对规则质检标准去培训员工,而对员工的要求主要看重每天的产出效率,从而导致接到手的项目做的质量很差,频繁的返工,有提项目甚至因为质量太烂项目方不给结算或者是结算比例很少,最终的结果就是做好些个项目但基本都是赔钱。        三、虽然业内人都 说数据标注简单,但是标注项目他也是一个系统性的工程,一个项目能不能做好并不简单的看项目好做就能赔钱。实际上决定项目赚不赚钱考验的是一个团队的项目管理水平,质量管理能力,运营能力各方面因素的。一句话再好赚钱的项目也照样有人赚钱也有人赚钱,要赚钱不是那么简单的。        四、还有些工作室 、小公司因为对行业不够了解等他们做了一段时间后发现,自己团队经常会没有项目做,而自己团队接项目的业务能力又不具备,甚至有的时候为了员工有活干去接一些价格极低根本就不赚钱的标注项目,时间稍微一长这些工作室团队就会赔上很多钱最终关门倒闭。        五、下来要说的就是一部分人人兼职人员由于认识不到位,对项目的规则质量要求 文件不认真阅读消化理解导致做的项目质量差返工有的甚至最后不结算,最终退出这行。更有一些人由于经验不足被标注行业的项目骗子给忽悠到辛苦劳动到最后结算时找不到人。        标注行业本身由于进入门槛低,做的人很行业内盲目打价格战,导致很多转手二手三手的项目在质量工期的要求下根本就不赚钱甚至赔钱,所以在这里也提醒大家做任何事都要谨慎而行。