车牌字符识别HyperLPR中端到端的字符识别方法
项目主页:https://github.com/zeusees/HyperLPR
1 C++中端到端的字符识别方法
此部分C++代码在HyperLPR-master\Prj-Win中test_segmentationFree.cpp、SegmentationFreeRecognizer.h、SegmentationFreeRecognizer.cpp、Pipeline.h,模型文件是\HyperLPR-master\Prj-Linux\lpr\model中SegmenationFree-Inception.caffemodel、SegmenationFree-Inception.prototxt。
1.1 模型网络结构
C++代码中的模型是用caffe实现的,在现有代码中,没有模型网络结构和模型训练,只给出了训练好的模型文件,所以如果要重新训练,需实现模型网络结构。模型网络结构详见SegmenationFree-Inception.caffemodel,模型的输入shape为 3 * 160 *40,输出shape为1 * 84 * 20(此模型能够识别长度可变的车牌字符,且python中端到端的字符识别采用ctc loss作为损失函数,后处理过程与ctc loss也极为相似,但没看见此模型的训练代码,只能猜测此模型是用ctc los训练)。如图:
1.2 测试结果
经过测试,该模型能够识别蓝牌和绿牌等长度可变的车牌,性能较好。用CCPD数据集测试结果如下:
2 python中端到端的字符识别方法
此部分测试的python代码在HyperLPR-master中demo.py、HyperLPRLite.py;此部分训练的python代码在hyperlpr-train-master中main.py。
2.1 模型网络结构
python代码中端到端的字符识别方法有两种:第一,ocr_plate_all_w_rnn_2.h5模型,此模型有训练代码(详见main.py,用keras实现),模型的输入shape为? * 160 * 40 * 3,输出shape为? * 16 * 1 * 84,损失函数为ctc loss。第二,ocr_plate_all_gru.h5模型,此模型是在ocr_plate_all_w_rnn_2.h5模型的基础上加入GRU单元,性能最好但无法转换成tensorRT模型。ocr_plate_all_w_rnn_2.h5模型的网络结构如下所示:
'''
功能:构建端到端车牌识别的网络结构
参数:width 输入图像宽度,模型中取160num_channels 通道,模型中取3
return:模型的输入和输出tensor
'''
def build_model(width, num_channels):input_tensor = Input(name='the_input', shape=(width, 40, num_channels), dtype='float32')x = input_tensorbase_conv = 32for i in range(3):x = Conv2D(base_conv * (2 ** (i)), (3, 3), padding="same")(x)x = BatchNormalization()(x)x = Activation('relu')(x)x = MaxPooling2D(pool_size=(2, 2))(x)x = Conv2D(256, (5, 5))(x)x = BatchNormalization()(x)x = Activation('relu')(x)x = Conv2D(1024, (1, 1))(x)x = BatchNormalization()(x)x = Activation('relu')(x)x = Conv2D(NUM_CHARS+1, (1, 1))(x)x = Activation('softmax')(x)y_pred = xreturn input_tensor, y_pred
2.2 ocr_plate_all_w_rnn_2.h5模型训练
以CCPD数据集作为训练数据集,目前得到ctc loss的值为0.01,训练速度很慢。
车牌字符识别HyperLPR中端到端的字符识别方法相关推荐
- 基于深度学习的端到端的车牌检测与识别
论文题目:Towards End-to-End Car License Plates Detection and Recognition with Deep Neural Networks 摘要: 对 ...
- 基于u-net,cv2以及cnn的中文车牌定位,矫正和端到端识别软件
本文链接:https://blog.csdn.net/qq_32194791/article/details/106748685,转载请注明出处 完整项目已上传至github: https://git ...
- FakeLPR车牌识别(3) ----- 车牌端到端识别
介绍 前一篇介绍了车牌的角点定位,这一篇就到端到端识别车牌了 1.粗定位 2.角点检测矫正 3.端到端识别字符 本文介绍第三步,端到端识别车牌,思路和前一篇中的角点检测一样,通过 caffe 实现多标 ...
- 利用 AssemblyAI 在 PyTorch 中建立端到端的语音识别模型
作者 | Comet 译者 | 天道酬勤,责编 | Carol 出品 | AI 科技大本营(ID:rgznai100) 这篇文章是由AssemblyAI的机器学习研究工程师Michael Nguyen ...
- 端到端加密(E2EE)技术分析:在移动应用中实现安全通信的利器
什么是端到端加密? 实际上,我们可以将端到端加密(E2EE)视作一种目前比较安全的通信系统.在这个系统中,只有参与通信的双方用户可以读取通信数据.不仅网络犯罪分子无法窃听到这种通信信息,甚至连互联网服 ...
- flask项目中无法更改端口号
flask项目中无法更改端口号 app.run(port=8000) 问题 启动后是 127.0.0.1:5000 解决方法
- 独家 | 构建端到端数据科学项目,从我的Data Scientist Ideal Profiles项目中学习(附链接)...
翻译:张睿毅 校对:吴金笛 本文约1500字,建议阅读5分钟. 本文为你介绍了构建数据科学项目中重要的思维能力及训练建议. Joseph Barrientos 拍照于 Unsplash (链接:htt ...
- Qt中TCP服务端编程
文章目录 1 Qt中的TCP服务端编程 1.1 TCP服务端编程介绍 1.2 Qt中的TCP服务端编程 1 Qt中的TCP服务端编程 1.1 TCP服务端编程介绍 网络中的服务端: 服务端是为客户端服 ...
- 机器学习中什么是端到端的训练方法(端到端学习)?(end2end learning)
相对于深度学习,传统机器学习的流程往往由多个独立的模块组成,比如在一个典型的自然语言处理(Natural Language Processing)问题中,包括分词.词性标注.句法分析.语义分析等多个独 ...
最新文章
- ASP绕过防注入的新思路
- python课程水平测试成绩查询_学业水平测试成绩查询
- latex强调/重音符号
- 记录SpringBoot集成Shiro使用Redis作缓存遇到的一个问题(Key-Value)互换
- java虚拟机性能监控调优及原则
- java 关闭语句_java.sql.SQLRecoverableException: 关闭的语句
- 2019蓝桥杯省赛---java---C---5(最大降雨量)
- 【英语学习】【Daily English】U14 Transportation L03 Sorry for keeping you waiting
- [Ext JS]5.8 Group Grid-分组网格
- 三调 图斑地类面积_关于三调,国土空间规划中至少需要这些知识
- 电流(或电压)的平均值与有效值
- 聊一聊,android程序员前景如何
- pythonscrapy爬虫ip代理池_Scrapy 框架插件之 IP 代理池
- Nginx 400 Bad Request: The plain HTTP request was sent to HTTPS port
- 如何应对微软的强制黑屏(转)
- ctf题库--天下武功唯快不破
- R语言 重命名指定列
- 汽车充电桩的功能有哪些
- 【iOS】Sign in with Apple
- 时尚新享受,告别鼠标手