设计一款基于GPU的车牌识别系统

目前车牌识别在监控监控的应用较为广泛,在只能停车场,小区门禁等经常被采用,传统车牌识别已经做到了很好地准确度,随着硬件设备的发展,基于GPU运算的车牌识别系统同样具有开发的必要性,例如在智能交通监控中,一台设备需要运行多种算法,导致CPU的占用率很高,进程之间的调度也会增加CPU的压力,如果能够把部分算法移植到GPU可以降低CPU的负载。对于TX,NANO等设备,自身具有较好的GPU运算能力,进一步挖掘板子的性能可以降低硬件部署的成本。

算法的整体设计

为了能够完整的基于GPU运行,我们首先需要弄清楚车牌识别有那几个模块。

1.首先是车牌检测模块;
2.另外是车牌校准算法,将检测到的车牌矫正;
3.接下来是车牌颜色识别模块;
4.最后是车牌识别模块。

每一步的高精度,才会得到一个整体高精度的车牌识别系统。

1.1 车牌检测模块设计

基于深度学习的检测算法已经比较丰富,为了能适应小物体,以及复杂场景,我们推荐采用mtcnn或者ssd算法,SSD具体的训练步骤可以参考我们之前提到的:https://blog.csdn.net/lsy17096535/article/details/78687728。
mtcnn算法思路简单,但是训练过程比较麻烦,困难样本的挖掘不容易,大家可以多收集一些数据进行训练。

1.2 车牌校准模块

如果采用MTCNN算法,校准的过程可以直接利用最后的onet输出四个交点,然后进行仿射变换。或者利用角点检测算法,找到车牌的四个角点,进行校准。

1.3 车牌颜色识别

这部分我们用深度学习的多任务模式,在进行检测的同时,直接输出这牌的颜色,当然,大家也可以训练一个自己的颜色分类器,进一步提高颜色的识别准确率。基于HSV颜色空间的车牌颜色判断存在一定得误报,需要多种场景的判断,结合文字颜色和底色,才能得到较高的准确率。

1.4 车牌识别

对于识别系统,可以利用cnn+ctc loss进行文字识别,大概采用了不同省份一共30万的数据集,准确率高于99%。ctc在ocr系统中确实好用,大家可以借鉴。

结语

车牌识别发展已经较为完善,目前更多是做差异化,能够适应不同的场景也是目前车牌识别发展的一个方向,大家感兴趣可以参考开源的车牌识别系统HyperLPR和车牌检测模块。

参考

  • HyperLPR车牌识别开源实现
  • Mobilenet-SSD车牌检测开源实现

你可能感兴趣的:(开源,深度学习)