前一篇介绍了车牌的角点定位,这一篇就到端到端识别车牌了
1.粗定位
2.角点检测矫正
3.端到端识别字符
本文介绍第三步,端到端识别车牌,思路和前一篇中的角点检测一样,通过 caffe 实现多标签分类来识别车牌
1.生成训练数据和lmdb文件
# 从项目主目录里
cd train/datasets
# 生成端到端车牌检测训练数据
python creat_e2e_data.py
# 生成端到端车牌检测lmdb文件
python creat_e2e_lmdb.py
2.启动训练
# 从项目主目录里
cd train
sh ./train_e2e.sh
以上两步就可以训练出端到端车牌检测模型,模型文件保存在 .../FakeLPR/train/e2e_snapshot
下面详细介绍一下
cd 到 train/datasets 文件夹
# 项目目录里
cd train/datasets
运行 creat_e2e_data.py 生成角点检测训练数据
# 生成角点检测训练数据
python creat_e2e_data.py
生成的数据长这样
脚本实际上就是把前一步 keypoint 得到的结果保存下来,具体的可以看代码
还可以替换成自己的角点检测模型,在 .../FakeLPR/train/datasets/models/keypoint.caffemodel
运行 creat_e2e_lmdb.py 生成角点检测训练用的两个lmdb文件
# 生成端到端车牌检测lmdb文件
python creat_e2e_lmdb.py
生成的 lmdb 文件存在 .../FakeLPR/train/datasets/lmdb 文件夹下,两个 lmdb 也是分别对应着数据和标签
因为在 keypoint 中生成的数据包含了车牌信息,我们直接读取就行了,矫正车牌的文件名没有变
和前面 keypoint 一样的,先将车牌信息生成 e2e_label.txt ,再生成 lmdb 文件
文件名和7个字符对应的类别
同样,这里也可以用你自己的真实车牌图片,生成 e2e_label.txt ,再生成 LMDB 来训练
其他说明:
类别分别是
第1个字符——省份:31类
第2个字符——城市:24类 (24个英文字符,I/O 除外)
第3-7个字符——其他字符:34类 (24个英文字符和 0-9)
启动训练
# 从项目主目录里
cd train
sh ./train_e2e.sh
模型文件保存在 .../FakeLPR/train/e2e_snapshot
模型调用和前面的差不多,代码在 .../FakeLPR/py2/e2e_char.py 中
到这里就结束,训练过程也完了,过程并不复杂,容易实现并自行修改
如果有朋友用真实车牌训练了这个项目,请告诉我一下结果怎么样
希望这个项目对你有帮助,有问题也可留言
(打赏个鸡腿吧)
(没有鸡腿也行,那就关注下我的公众号吧,不是技术号哦)