车牌识别: pytorch车牌识别项目

您所在的位置:网站首页 yolov5识别车牌号 车牌识别: pytorch车牌识别项目

车牌识别: pytorch车牌识别项目

2023-07-07 14:05| 来源: 网络整理| 查看: 265

车牌识别 写在最前面

项目有很多未完善的地方,我自己在写bug代码的时候也很苦恼,因为自己对yolo这个框架了解不够深入,也没有复现过相关代码,用别人的项目实现去做整合的时候出现了很多问题,代码也比较冗长,所以在阅读notebook的时候你可能会有许多的疑惑,希望你少喷我能多留言,一起分享经验,我有时间一定会加以完善

介绍 pytorch车牌识别项目,项目也是作者踩坑的过程,分为V1和V2两个版本,实现方式分别为ResNet和小型网络+CTC_loss V1 版本略显笨重,有接近400MB的网络参数,训练速度慢,收敛困难,且单一模型只能识别固定位数,识别准确率按位置单独计算,最低接近80%,但是从整个车牌角度看,准确率较低 V2 CTC版本借鉴了这位大佬的LPRNet,具有极小的参数(只有不到2MB的权重文件!!!),更好的性能,同时支持7-8位多类型车牌识别,在车牌生成器生成的图片训练下准确率有62%左右(其实也不是很高,主要是因为生成器的噪声给的很多,后期打算去用CCPD做一个参考,进行测试,基本上可以以那个准确率为准) 其实我也想了一下,为什么ResNet参数那么多,效果还没有CTC的版本号,目前总结下来主要有两个原因 ResNet会把图片resize成正方形,会损失很多原始数据信息,而CTC使用了较宽的卷积核,并将输入resize成(24, 94)可以很好的适应长方形的车牌,保留了很多原始信息 ResNet就是很传统的目标分类,CTC版本进行了多尺度融合,可以很好的学习到大小不同的图片细节,且使用了CTC loss作为输出,很适合这种输出序列问题 计划 模型搭建 优化网络结构 数据集过少,皖A车牌过多,模型泛化能力有待提高 实现全类型车牌识别,CTC版本已经实现 进一步提高准确度 添加绿牌数据集 整合yolov5模型,做出一个完整的目标检测+车牌识别的项目 项目对字符的识别能力比较弱,有待改善 听说RNN可以实现全类型的车牌识别,就不知道效果如何,如果有机会就实现一下=.=(使用了CTC实现了) 踩坑记录 巨坑,HW搞反了,在opencv中是(H,W),但是在pytorch中的transform是(W,H),导致最后resize的图片与实际图片相反,网络train不出结果,收敛速度很慢 测试了几个数据,数字都完全没问题,字符识别出现了错误,而且错误率挺高的,我觉得可能是因为1. 字符结构本来就比数字和字母复杂;2. 生成数据集噪声过多,与实际场景有出入 说明 本项目在colab上实现,打开jupyter即可进行查看 CCPD有35w张图片,占用空间极大,于是我自己切分了20%出来做训练集,10%做测试集,这里把数据集分享出来google drive 训练模型参数文件 ResNet模型的最终训练参数google drive CTC模型的最终训练参数google drive(在CCPD[因数据集过大,只抽取了20%训练]中训练39个epoch,最终准确率达到83.9%) YOLOV5模型的最终训练参数google drive 使用的数据集 参考了网上的CCPD数据集,发现数据集过于庞大,且皖A车牌较多,因此使用了车牌生成器生成训练图片进行训练 在CTC文件中还有一个车牌生成程序,也是github中的项目,需要可自取,感谢大佬的付出~ 如何运行我的文件 项目可运行在colab环境,调用的是colab的服务器资源,如果你看不到下面的小图标,那就说明你需要“特殊方式”上网 步骤: 点击打开colab,进入我分享的项目文件Open In Colab 运行构建网络代码块 运行图片 导入测试模块 测试代码 导入yolov5的项目包 运行图片 最后,运行这个看起来很变扭,一点没有美感的代码就可以实现检测了 输入图片说明 需要注意这两个参数,分别可以配置权重文件的位置和图片的位置 输入图片说明


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3