做了一个车牌识别系统,就叫 FakeLPR 吧,我是作者罗百万
github地址 :https://github.com/millionsofluo/FakeLPR
环境: ubuntu16.04 python2.7 opencv 3.4
特点:
1.所有训练数据都是生成的,没有真实数据,训练结果非常好,精度0.95以上,对真实场景也有一定效果
2.方法简单适合新手学习,只要会用跑 caffe 的 mnist 分类,会用基本的 opencv,就可以看懂,然后自己训练
3.深度学习方法实现,区别于传统方法,不做分割直接端到端识别,主要是用 caffe 做多标签分类
4.基于caffe训练的两个模型,每个的 fps 都在150左右,模型小而且还有压缩空间
5.依赖少,虽然全是 python2 写的,但是调用caffe模型不需要装 caffe,有opencv3.4就行,所以要转C++也方便(训练还是要 caffe 的)
效果:
真实场景
生成图片
检测方法:
用了类似级联的方法
1.传入一张图片,粗略识别出车牌部分
2.将粗定位部分截取,按比例扩大,用模型检测出车牌的4个角点
3.利用检测出的4个车牌角点,用透视变换的方法矫正成矩形
如生成图
——>
4.用字符检测模型直接检测矫正后的车牌,得到结果
(结果保存在文件名最后)
调用方法:
在 ubuntu 环境下,下载代码
没有 opencv3.4 的直接 pip install opencv-python
进入主目录,执行 py2_demo.py
cd FakeLPR
python py2_demo.py
测试结果保存在 test_tesult 文件夹
也可以更换测试图片文件夹
主目录下打开 py2_demo.py 找到 main() 函数
def main():
test_result_dir = 'test_result'
tool.mkdir_dir(test_result_dir)
#################### 测试图片路径 ########################
# test_img_path = 'test_images/real_all_image'
# test_img_path = 'test_images/real_crop_image'
# test_img_path = 'test_images/creat_image'
test_img_path = '你的图片文件夹'
##########################################################
test_img_path 改成你自己的测试图片路径即可
缺陷:
1.没有真实数据,对真实场景支持差,主要是我懒得弄,车牌还好说,车牌角点简直太难了,所以索性全部生成
2.因为是两个模型顺序工作,若其中一个没有检测好,结果必定不准,必须两个模型都检测准确,结果才准,整体鲁棒性差(重要)
3.只支持蓝牌7个字符,带‘学’都不行,不过在生成数据的时候改一下也可以支持
4.代码没有优化过,虽然训练的两个模型都比较快,但整体跑下来一张图片只有8fps左右,优化一下再写个c++版本可能快一点
下一篇:FakeLPR车牌识别(2) ----- 车牌角点定位
妈的csdn真烦,上传个图麻烦的要死,还非要强制水印
排版这么傻,添加代码也是这么反人类
算了,我还是去用简书写吧
嗯,我又回来了,简书更水,代码块都没有
(用惯了还行)
嗯 。。。。。。。。。。。真香