License Plate Recognition的基础介绍,以及LPRNet的解读

License Plate Recognition(车牌识别)基本介绍

车牌识别,目标是准确识别图片中所拍到的车牌的信息,现在在各大停车场已经很常见了。
在车牌识别中,比较大的挑战就在于拍摄角度的不同、距离的差异、光线的差异、包括雨雾天气等的影响会导致抓取的照片或帧的清晰度很差。
车牌的识别整体主要分为两部分,车牌的检测和牌照的识别在本文中,主要介绍牌照识别。

牌照识别

牌照识别,其实可以看做OCR(Optical Character Recognition)文字识别中的一个小类,它相比文字识别而言,简单的地方在于车牌上一共会出现的字符(文字、字母、数字)的最大长度基本固定,而且在中国包含的字符总类别也仅仅只有省会的简称文字、英文字母和10个数字。所以相比公用的OCR牌照识别中的在最后需要判断的类别信息会很少。所以在市场上,车牌识别的准确率和稳定性也高于其他场景的OCR。

基于CNN的牌照识别的基本知识

因为之前博主对其他的牌照所使用一些基本技巧没有了解过,所以本文记录的主要是LPRNet所有用的一些基本知识,主要分为LOSS的解读以及Spatial Transformer Layer。

loss

CTC LOSS(Connectionist Temporal Classification Loss)主要是为了解决不对齐的分类问题。在我们常用的多分类问题中,我们常用的loss就是softmax loss,它有一个先天的限制,就是维度对齐,例如,你在OCR中要一段图片分成4个字符,那么在你要对齐四个字符出现在图片中的位置,不然你提取的语义信息会差异很大。
如图所示:首先我们会发现,不同字符的占图片中大小的差异就比较大,如果在你不对每个单独字符进行定位的时候,在一个模型中,同一层的感受野是一致的,会导致提取的feature会过多或者过少,就会导致在序列的softmax会很难对齐。所以在面向端到端的序列的分类问题,且两端序列难对齐时,我们会尝试使用CTC loss(好吧,我之前从来没用过~)。除了在车牌识别中之外,在语音识别中CTCloss也是一个常用的loss。
在这里插入图片描述
因为CTC是在2006年出现的文章,所以,网上有很多对其原理做了深入的分析和解释,在这里做个简单介绍,如果想了解详细解析的,可以去看一下连接
CTC 原理及实现
对CTC的理解及一些公式的推导
车牌字符识别中ctc loss损失函数理解
CTC,loss的原理可以分为几块:
1.在输出端,会用空格把所有的字符给分割开来,以上图牌照为例,输出端是为[ ]京[ ]F[ ]A[ ]9[ ]1[ ]5[ ]2[ ],同理在我们OCR的索引表中,也会增加空格。
2.在解码端,相同字符会进行合并。如输出的长度为[ ]京[ ]FF[ ]AAA[ ]9[ ]1[ ]55[ ][ ]222[ ]会等同于[ ]京[ ]F[ ]A[ ]9[ ]1[ ]5[ ]2[ ]。通过这种方法,就可以对输入端和输出端长度不同是进行匹配了。

在我的理解中,CTCloss有最亮眼的两个思想:
1.它巧用了blank符号,首先把制造的groundtruth中所有的字符都是分离的,我们都知道,任何任务中离散型的数据都比连续性的数据易于分析,且通过blank,解决的长度差异的问题。
2.其见解的HMM(Hidden Markov Model)(其实我也不知道谁先提出来的),去求整体序列中出现概率最大的情况。而不是单独考虑某一个字符具体是什么。

Spatial Transformer Layer

我们知道,对于CNN来说,图片的旋转和平移是会影响模型对图片的认知的,Spatial Transformer Layer(STL)或者说是Spatial Transformer Networks(STN),是通过CNN对图片或者feature进行平移和旋转操作,得到我们需要的样子。
有关于相信介绍STN的博客先列下来
详细解读Spatial Transformer Networks
NN特殊结构(1)——Spatial Transformer Layer
我稍微整理下相关知识:
STN主要分为几块:
参数预测:Localization net
坐标映射:Grid generator
像素的采集:Sampler
Localization net:我们知道,图片的所有的平移,缩放和旋转变化,最终可以通过6个参数来确定,所以Localization net就是根据输入的feature信息去学习这6个参数。我们定义从Localization net出来的6个参数为 θ \theta θ.
Grid generator: θ \theta θ也就是去控制输入图像或者featuremap进行变化的参数。
Sampler:对输入端进行 θ \theta θ的变化,这里的输入端可以是输入的图像,也可以是featuremap。

LPRNet解读

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

网络结构
LocNet
这个就是生成 θ \theta θ的localization的网络结构,输出的一个6维的变化参数。
网络结构
上图是网络前向的整体结构,输出是一个1*13维的向量,在训练时采用了drop避免过拟合。其中的Samll basic block的模块如下图所示
在这里插入图片描述
具体的实验结果和参数可以去看原文。这篇文章两个主要特点就是通过采用CTC LOSS解决序列不对齐的问题。可以把整个车牌当做一个整体进行识别,去掉了常用车牌或者ocr识别中的文字提取的过程。

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值