用于车牌识别的预训练 LeNet 模型
Posted
技术标签:
【中文标题】用于车牌识别的预训练 LeNet 模型【英文标题】:Pre Trained LeNet Model for License plate Recognition 【发布时间】:2018-11-20 11:25:19 【问题描述】:我已经通过 tensorflow 和 python 为 车牌识别系统 实现了 LeNet 模型的一种形式。我的模型仅在我的训练数据上进行了训练,并在测试数据上进行了测试。 我的数据集包含分段图像,其中每张图像中只有一个字符。这就是我的data 的样子。我创建的模型表现不佳,所以我现在正在寻找可以通过迁移学习使用的模型。由于大多数模型已经在庞大的数据集上进行了训练,因此我查看了一些模型,例如 AlexNet、ResNet、GoogLeNet 和 Inception v2。这些模型中的大多数都没有接受过我想要的数据类型的训练,字母和数字。
问题:我应该继续使用其中一种模型并在我的数据集上训练它们,还是有更好的模型可以提供帮助?对于这样的模型,keras 会是更好的选择,因为它比 Tensorflow 更高级别吗?
问题:我更喜欢使用 LeNet 模型本身,因为我的笔记本电脑规格不足,训练其他模型肯定需要很长时间。那么有没有使用机器打印的字符图像来训练模型的模型的实现,我可以用它来训练模型的最后一层在我的数据上?
【问题讨论】:
【参考方案1】:要获得好的结果,您应该使用专门为文本识别设计的模型。 首先,(粗略地)将输入图像裁剪到文本周围的区域。 然后,将文本图像输入神经网络 (NN) 以检测文本。 用于文本识别的典型 NN 提取相关特征(使用卷积 NN),通过图像传播这些特征(使用循环 NN),最后预测图像中每个位置的字符分数。 通常,这些网络使用 CTC 损失进行训练。
作为起点,我建议查看 CRNN 实现(它们还提供预训练模型)[1] 和相应的论文 [2]。据我所知,github 上还有一个 TensorFlow 实现。 您可以使用任何您喜欢的框架(例如 TensorFlow 或 CNTK 或 ...),只要它具有卷积和循环 NN 以及 CTC 损失即可。 我曾经参加过一个关于 CNTK 的演讲,他们声称他们有一个非常快速的循环 NN 实现——所以也许 CNTK 对你的慢速计算机来说是一个不错的选择?
[1] CRNN 实现:https://github.com/bgshih/crnn
[2] Shi - 基于图像的序列识别的端到端可训练神经网络及其在场景文本识别中的应用
【讨论】:
嗨,我正在使用 python。有没有 CRNN 的 python 实现?我的数据集包含分段图像,其中每张图像中只有一个字符。你说的是注意力ocr吗? (张量流实现?)我认为我目前不需要 RNN。我很困惑如何进行。 您必须修改您的问题并添加有关数据的更多信息。我以为你想检测车牌上的文字,但是,你真正想要的只是一些数字分类器,由更多类扩展为你需要的任何字符。 所以我的模型是一个车牌文本识别器,它给出了存储在该车牌中的文本。我已经编辑了这个问题。此外,我还添加了指向我的另一个问题的链接,该链接显示了我正在使用的数据类型。我会将分割的字符图像作为输入输入到我的模型中。让我知道是否需要更多数据? 你分两步做:1.分割,2.字符分类。通常避免分割(因为它容易出错)是一个好主意,而是训练一个直接从板块中检测完整文本的单个 NN。您的分割代码依赖于几乎无噪声的图像,这在现实生活中很少见。另一方面,CRNN 不需要分割字符,这是一个很大的好处。所以我至少会试一试,在 github 上搜索“CRNN TensorFlow”并根据你的数据对其进行训练。以上是关于用于车牌识别的预训练 LeNet 模型的主要内容,如果未能解决你的问题,请参考以下文章
智能驾驶 车牌检测和识别《CRNN和LPRNet实现车牌识别(含车牌识别数据集和训练代码)》