1.项目背景
启发于 google的论文:Google’s Multi-digit Number Recognition from Street View.
这篇论文介绍了一种利用单端到端神经网络从街景图像中提取房屋编号的系统。然后,作者继续解释如何将相同的网络应用于
打破谷歌自己具有人的水平精度的验证码系统。
2.为什么设计实现类似Google论文的系统(即车牌识别系统)?
a)我应该能够使用与谷歌论文相同的(或类似的)网络架构:谷歌架构在解决Captcha问题上表现得同样出色,因此可以合理地假设它在读取车牌上也表现出色。当我学习CNN的诀窍时,拥有一个已知良好的网络架构将大大简化事情。
b)我可以轻松生成培训数据。训练神经网络的主要问题之一是对大量标记训练数据的需求。为了正确训练一个网络,通常需要数十万个贴有标签的训练图像。幸运的是,英国车牌的一致性意味着我可以合成训练数据。
c)好奇心。传统的ANPR系统依靠手写的算法进行板定位、归一化、分割、字符识别等,因此这些系统往往长达数千行。很有意思的是,我可以用最少的领域特定知识和相对较少的代码开发一个系统。
对于这个项目,我使用了python、tensorflow、opencv和numpy。
注:这是一个实验项目,在很多方面是不完整的,如果你正在寻找一个实用的车牌识别系统,这个项目不是为你。但是,如果你已经阅读了上面的博客文章,并且想修改代码,那就继续阅读吧。如果你真的很热心,你可以解决问题页面上的一些增强,以帮助使这个项目更加实用。如果您计划进行增强,请对相关问题进行评论,我们可以讨论潜在的解决方案。
输入、输出和窗口
为了简化生成训练图像和减少计算需求,我决定我的网络将在128x64灰度输入图像上运行。
选择128x64作为输入分辨率,因为它足够小,允许在合理的时间内进行适当的培训,资源有限,但也足够大,使牌照具有一定的可读性: