LPRNet

前言

前段时间做了一个车牌检测识别的项目, 在识别阶段用了LPRNet。今天写一篇文章来记录一下自己对LPRNet的浅显认知吧,毕竟自己也不是这个方向的,仅做大体了解。

正文

LPRNet可以说是一个端到端的车牌识别算法,并没有预先进行字符分割,这就使得车牌识别的算法实时性强,并且准确性高、支持可变长字符车牌识别。

早期的车牌识别算法主要是先进行字符分割然后在进行字符分类,但是字符分割很容易受到图像噪声以及分辨率的影响,但是在LPRNet上面,使用整张图片作为输入,输出最终的字符序列。具体而言,采用的是全连接层+CTC损失的模式。使用CTC损失来拟合CNN网络。

在最近的研究中,LPRNet可以将VGG等网络作为它的主干网络。可以自己根据时间开销。准确度进行选择。整个的LPRNet网络可以概括成以下五点:

可选择的STN定位网络

轻量级的CNN骨干网络

每个未知的字符分类头

用于序列解码的字符分类概率

后过滤处理过程

骨干网络的输入出可以看成是一个对应字符概率的系列,长度和图像长度相关。因为网络的输出编码和车牌字符的长度会不相等,在一般的字符识别的情况会将输出编码和字符长度进行对齐,但是这种对齐是非常困难的,可能会导致模型无法收敛。所以作者在这里选用免分割的CTC损失函数进行端到端的训练。CTC损失函数常用于输入和输出序列未对齐切长度可变的情况,CTC损失的原理就是将每个时间步的概率转换为输出序列的概率。具体来说给定输入序列以及对应的标签数据,我们的目的就是找到X到Y的一个映射。相比较传统的分类方法,难点如下:

  1.  X和 Y 的长度都是变化的;
  2.  X和 Y 的长度是不相等的;
  3. 对于一个端到端的模型,我们并不希望手动设计X 和 Y 的之间的对齐。 

对于这些问题CTC给出了解决方案,我们可以输出最有可能的结果的概率。即我们希望最大化Y的后验概率 ,这样我们就可以使用softmax函数对输出Y进行筛选。

你可能感兴趣的:(计算机视觉,大数据)