Published on

LPRNet:端到端车牌识别网络

LPRNet:端到端车牌识别网络

什么是 LPRNet?

LPRNet 是一种端到端的车牌识别方法,由 Intel 团队于 2018 年提出。与传统方案不同,LPRNet 直接对整张车牌图片进行识别,输出完整的字符序列,无需中间的字符分割步骤。

核心特点

特点说明
无需字符分割端到端识别,避免分割误差累积
无 RNN 设计全卷积网络,推理速度快
轻量高效计算量小,适合嵌入式部署
实时性能CPU 上毫秒级推理,GPU 上更快

背景:传统车牌识别的局限

传统车牌识别通常采用先分割后识别的策略:

  1. 车牌定位 → 2. 字符分割 → 3. 单字符识别 → 4. 后处理

这种方法存在几个问题:

  • 分割误差累积:字符分割错误会直接导致识别失败
  • 对图像质量敏感:光照不均、倾斜、污损等场景下分割困难
  • 计算开销大:多阶段处理增加延迟

LPRNet 通过端到端设计解决了这些问题。

网络设计思路

LPRNet 的核心设计围绕两个问题展开:

1. 如何在不分割字符的情况下识别?

LPRNet 使用全卷积网络处理输入图像,输出一个特征序列,每个位置对应图像中的一个局部区域。网络通过宽卷积核(1×13)捕捉字符间的上下文关系,使得每个位置的特征能够感知相邻字符的信息,从而直接预测该位置属于哪个字符。

由于输入宽度(如 94 像素)通常大于字符序列长度(如 7-8 个字符),网络输出的是一个冗余的特征序列,其中多个连续位置可能对应同一个字符。

2. 如何将冗余序列映射为真实字符?

LPRNet 采用 CTC 损失函数来解决对齐问题。CTC 的核心思想是:

  • 引入一个空白符,表示“当前位置没有字符”
  • 允许网络输出冗余的字符序列,CTC 会自动学习如何压缩重复字符、删除空白符
  • 最终输出序列通过去重 + 去空白得到真实字符

例如,网络输出 [京, 京, 空, A, A, A, 1, 1, 空, 2],经 CTC 解码后得到 京A12

关键技术创新

宽卷积替代 RNN

传统序列识别方案通常使用双向 LSTM 来捕捉上下文,但 RNN 存在以下问题:

  • 推理速度慢,难以实时
  • 对嵌入式设备不友好
  • 训练时容易出现梯度问题

LPRNet 使用 1×13 的大尺寸卷积核替代 RNN,利用卷积的局部感受野捕捉字符间的依赖关系。这种方式:

  • 计算量远小于 RNN
  • 全卷积结构便于硬件加速
  • 训练稳定,收敛速度快

Spatial Transformer 模块(可选)

LPRNet 支持在输入端加入空间变换网络,该模块可以:

  • 自动检测车牌倾斜角度
  • 通过仿射变换校正图像
  • 提升倾斜车牌的识别准确率

该模块在训练初期需要关闭,待网络稳定后再开启,否则会影响收敛效果。

网络结构概览

LPRNet 的整体结构遵循以下设计原则:

  • 轻量级 Backbone:基于卷积块堆叠的特征提取网络
  • 多阶段下采样:逐步压缩空间尺寸,减少计算量
  • 宽卷积上下文建模:替代 RNN 进行序列特征提取
  • 分类头输出:输出特征序列的字符概率分布

网络的输入尺寸通常为 94×2496×48 像素(宽×高),输出为每个位置的字符类别概率。

字符集设计

LPRNet 需要预先定义字符集,通常包含:

  • 省份简称:京、津、沪、渝、冀、晋、辽、吉、黑、苏、浙、皖、闽、赣、鲁、豫、鄂、湘、粤、琼、川、贵、云、陕、甘、青、台、蒙、桂、宁、新、藏
  • 字母:A-Z(排除 I 和 O,避免与数字混淆)
  • 数字:0-9
  • 空白符:CTC 所需的 blank 符号

不同国家/地区的字符集有所不同,需要根据实际应用场景定制。

训练策略

数据预处理

  • 图像归一化:将像素值缩放到合理范围
  • 数据增强:随机旋转(±5°)、缩放、平移、亮度调整等
  • 尺寸统一:所有输入图像缩放到固定尺寸(如 94×24)

训练阶段

训练过程分为两个阶段:

  1. 预热阶段(前约 5000 轮):

    • 不使用 STN 模块
    • 让网络先学习基础特征
  2. 联合训练阶段

    • 开启 STN 模块
    • 端到端联合优化
    • 学习率逐步衰减

优化器与损失

  • 优化器:Adam,适合稀疏梯度场景
  • 损失函数:CTC Loss,自动处理序列对齐
  • 正则化:Dropout(通常设为 0.5)防止过拟合

推理过程

LPRNet 的推理分为以下步骤:

  1. 输入预处理:车牌图像缩放到网络输入尺寸
  2. 前向推理:网络输出特征序列的概率分布
  3. CTC 解码:将概率序列转换为字符序列
    • 贪婪解码:每帧取最大概率字符
    • 去重合并:移除连续重复字符
    • 去除空白:删除 blank 符号
  4. 后处理:根据车牌规则过滤无效结果

整个过程无需任何非极大值抑制或复杂解码,非常适合实时应用。

性能表现

推理速度

  • CPU 环境:单张车牌推理约 1.3 毫秒
  • GPU 环境:单张车牌推理约 3 毫秒
  • 端到端处理:包含检测和识别的完整流程可达实时

准确率

在公开数据集(如 CCPD、CLPD)上,LPRNet 的字符识别准确率可达 95% 以上,在复杂场景(倾斜、光照变化、污损)下表现优于传统分割方案。

模型轻量

  • 计算量:约 0.34 GFLOPs
  • 参数量:约 33 万
  • 模型大小:约 1.3 MB(FP32)

这使得 LPRNet 非常适合部署在边缘设备、摄像头、嵌入式系统上。

适用场景

  • 智能交通:卡口监控、电子警察、停车场管理
  • 移动端应用:手机拍照识别车牌
  • 安防监控:门禁系统、小区管理
  • 低功耗设备:树莓派、Jetson Nano 等边缘设备

局限性

尽管 LPRNet 表现出色,但在某些场景下仍有局限:

  • 极端倾斜:超过 30° 的大角度倾斜可能影响识别
  • 严重遮挡:字符被部分遮挡时,端到端模型难以恢复
  • 超长车牌:某些特殊车牌(如拖挂车)字符数超过训练范围
  • 夜间低光照:需要配合预处理或增强模块

与其他方法的对比

方法是否分割是否使用 RNN端到端推理速度部署难度
传统分割+分类中等
CRNN+CTC中等
LPRNet

总结

LPRNet 的核心贡献在于:

  1. 证明了无需 RNN 也能进行有效的序列预测,通过宽卷积实现上下文建模
  2. 端到端设计消除了字符分割的依赖,避免了分割误差传播
  3. 轻量级架构使其适合边缘部署,在 CPU/嵌入式设备上实现实时推理
  4. CTC Loss 优雅地解决了序列对齐问题,无需人工标注字符位置

LPRNet 为车牌识别提供了一种简洁、高效、可落地的解决方案,至今仍被广泛应用于各类实际系统中。

THE END