简介

车牌识别(License Plate Recognition)是一种通过计算机视觉技术识别和提取车辆车牌上字符信息的技术。它在交通管理、智慧停车、安防监控等领域有着广泛的应用。

本项目将带完整的了解车牌识别系统设计思路,以及实现流程。

算法部分应用的是当前主流的算法,并在此基础上进行优化设计;部署阶段包括windows和linux pc端、andriod移动端、nvidia端、rk边缘设备端的部署解决方案,也支持rtsp流处理。

下面开始介绍车牌识别系统。

一个完整的车牌识别系统包括拉流、预处理、车辆检测、车辆定位、车牌矫正、字符识别、车牌信息输出等七个部分。如下图所示:

车牌识别系统完整商用级别设计流程-LMLPHP

 其中图像获取一般在实际应用中通过摄像头拉流的方式进行视频流读取,图像预处理一般是根据不同的场景进行图像平滑去噪的方式进行处理,获取显著信息方便进行车牌检测和识别等。这里我们不在详细赘述。

本文主要介绍的是车辆检测、车牌定位以及车牌识别三大核心步骤。

车辆检测

正常行驶中,车牌只会在车辆区域内部,因此车辆检测在车牌检测中是必不可少的流程,它可以帮助我们摒弃车牌系统中的背景干扰,让车牌识别专注于车辆本身。

优势

支持多种车辆属性识别,包括汽车、卡车、政府车辆等类别识别。我们使用更加轻量化的模型进行检测,并再次基础上进行剪枝量化处理,速度提升的同时,模型精度同样达标,自然场景精度可达95%,在特定场景精度可以达到99%。

车牌检测

不同与传统目标检测,我们不在单单使用矩形框的方式进行回归,我们在传统目标检测的基础上加上了车牌四个关键点回归的分支。这样在车牌检测的时候我们可以定位到更加紧凑的车牌区域,减少了车牌识别的可能出现的情形,大大降低了车牌识别的难度。项目实际应用中,这种关键点回归的方式至少提高2-3个点的车牌识别准确度。

车牌识别

这里我们还是基于crnn的基础上进行的模型优化,实际应用中crnn中的双向lstm比较耗时,这里我们去掉了双向lstm并在backbone部分进行了优化,大致是参考了mobilenet中的深度可分离卷积以及残差的一些思想,模型比最终的实验结果模型比mbv3更加准确和轻量化。

在字符识别后,我们还会对识别结果进行后处理,如字符序列的校验纠错,车牌号格式化等,目的是为了提升识别系统的稳定性。

最终的识别结果也可以输出到各种应用场景中,比如交通安防系统等。

部署

在实际应用过程中,算法部署大致包括win和linux pc端、arm端、nvidia端以及瑞芯微等边缘设备上的部署。如下是我们的演示结果。

整体识别结果

车牌识别系统完整商用级别设计流程-LMLPHP

 大致效果如上,车辆检测车牌检测,车牌识别目前的算法都能够很好的收敛。后续每个部分的算法详情我会通过一个专栏进行详细介绍。

05-03 13:15