建立车牌识别模型的最佳方法 (ALPR)

Posted

技术标签:

【中文标题】建立车牌识别模型的最佳方法 (ALPR)【英文标题】:Best approach to build a model to recognise licence plates (ALPR) 【发布时间】:2017-11-18 20:41:12 【问题描述】:

我正在尝试制作一个深度学习模型,以使用 CNN 等深度学习技术检测和读取车牌。我将在 tensorflow 中制作模型。但我仍然不知道构建此类模型的最佳方法是什么。

我检查过几个这样的模型 https://matthewearl.github.io/2016/05/06/cnn-anpr/

我也检查了一些研究论文,但没有一个显示确切的方法。

所以我打算遵循的步骤是

    使用opencv进行图像预处理(灰度、转换等我对这部分不太了解)

    车牌检测(可能通过滑动窗口法)

    通过构建合成数据集,使用 CNN 进行训练,如上述链接所示。

我的问题

有没有更好的方法来做到这一点?

RNN也可以在CNN之后组合变长数吗?

我应该更喜欢检测和识别单个字符而不是整个盘子吗?

还有很多老方法,他们更喜欢图像预处理和直接传递给 OCR。什么是最好的?

PS- 我想做一个商业实时系统。所以我需要良好的准确性。

【问题讨论】:

如果您希望 CNN 能够在现实生活中的光线、运动、角度和有目的的混淆下读取现实生活中的车牌,那么您将需要大量示例图像数据集。综合数据只会让你到目前为止。就像 Kathy Lee 所建议的那样,构建受约束步骤的管道可能是您最好的选择,但您的系统仅与最薄弱的环节一样强大。如果你的车牌检测只有 97%,那么 97% 就是你的准确率上限。如果你的 CNN 每个字符有 99% 的准确率并且有 8 个字符,那么你的上限准确率为 .99^8 = 92%。 是的,我明白了。我需要一种方法来确保我只从车牌中读取并忽略图像中的其他文本,如招牌或其他东西 【参考方案1】:

首先,我不认为将 RNN 和 CNN 结合起来可以实现实时系统。如果我想要实时系统,我个人更喜欢检测单个字符,因为车牌上的字符不会超过 10 个。在检测可变长度的车牌时,检测单个字符可能更可行。

在学习深度学习之前,我也尝试过使用 OCR 来检测车牌。就我而言,OCR 速度很快,但准确度有限,尤其是在印版不够清晰的情况下。即使是图像处理也无法挽救一些不清楚的情况......

所以如果我是你,我会尝试如下:

    对整幅图像进行简单的图像预处理 车牌检测(可能通过滑动窗口法) 对提取的板件进行图像处理(过滤器和几何变换),使其更加清晰。分隔字符。 为每个角色部署 CNN。 (也许我会尝试一些短的 CNN,因为它是实时的,例如 MNIST 手写数字数据中使用的 LeNet)(可能需要多线程)

希望我的回答能有所帮助。

【讨论】:

嗯...如何“分隔”字符。在我的国家/地区,数字格式不是静态的。它可以有多种形式,所以我认为滑动窗口方法不能用于检测。我想我需要以某种方式找到白色和黄色的盘子(区域)。但这会在光线较暗的情况下停止工作。 字符分离和车牌检测都需要一些图像处理技术。你可以自己搜索那些。我相信很多论文都与他们有关。可用于字符分隔的一种常用方法是连接组件标签。对于车牌检测,也要先对图像做一些预处理,比如filters,shape dection等。

以上是关于建立车牌识别模型的最佳方法 (ALPR)的主要内容,如果未能解决你的问题,请参考以下文章

深度学习实践基于深度学习的车牌识别(python,车牌检测+车牌识别)

智能驾驶 车牌检测和识别《CRNN和LPRNet实现车牌识别(含车牌识别数据集和训练代码)》

智能驾驶 车牌检测和识别《CRNN和LPRNet实现车牌识别(含车牌识别数据集和训练代码)》

车牌识别基于RGB颜色模型车牌识别matlab源码含GUI

基于颜色模型和形态学处理的车牌定位和识别matlab仿真

车牌识别算法实现的技术功能