A376-基于OCR的“水位检测”项目
【购买前必看】
1、关于我们
深度学习乐园是由python哥全职技术团队组建运营【团队成员为:复旦大学博士、华东理工爱丁堡博士、格拉斯哥博士、纽约大学硕士、浙江大学硕士】。
我们只做python业务,精通sklearn机器学习/torch深度学习/django/flask/vue全栈开发。
2、关于项目
我们从2018年开始,就专注于深度学习sci、ei、ccf、kaggle等,至今已有7年,共发表过10多篇顶刊顶会。
官网累积了数百个项目,已有3000多学员付费购买,圈子内有口皆碑:www.zzgcz.com (更多高级私密项目无法对外,联系微信定制:zzgcz_com)
3、售后承诺
包远程安装调试,所有项目均在本地运行通过,大部分都有截图和录屏。
支持二次修改,所有项目都是我们自己写的,改起来也非常容易。
加急定制1-2天可完成,这就是实力证明,远程验收满意后再付全款!
所有客户终身售后。兼职的人家都有主业,谁愿意持续服务你?
环境需求
-
Windows or Linux
-
Python >= 3.5
-
tensorflow-gpu >= 1.14.0
-
cuda >= 10.0
代码目录结构
plain text
├── Hough(霍夫变换检测直线)
├── LSTM-OCR(基于LSTM模型的OCR方法,包含部分权重)
├── Number_detect_dataset(用于训练数字检测模型YOLO v3的数据集)
├── Post_Process_Result(OCR模型输出)
├── data_for_ocr_train(用于训练OCR模型的数据集)
├── demo(演示系统源码与可执行文件下载地址)
├── TPS(模糊文本识别模型)
├── creat_dataset(用于生成合成数据集,训练TPS模型)
项目技术方案

-
调整摄像头至仅拍摄水位尺区域,使用训练好的目标检测模型检测数字区域(如图1左),根据bounding box的位置关系(主要基于Y轴,根据实际情况需要分别讨论(1)),确定检测区域1和检测区域2,其中,检测区域1代表最下方的刻度区数字,精度为0.1,经过OCR模型识别数字,得到值L2(数值);检测区域2为最下方的较长数字,精度为1,经过OCR模型识别数字,得到值L1(数值),检测区域1和检测区域2由bounding box的宽度区分(如图1中);另外,检测区域1的bounding box下边界至水面为检测区域三,通过霍夫变换检测直线数目,精度为0.01,得到值L3(直线条数);最终,通过计算式L1-(10-L2·0.1)-0.25·L3(1),获得最终水位(如图1右)。
-
其中(1)中的讨论主要指较长数字区域(L1值)和刻度区数字区域(L2值)的位置关系,实际数据中,二者并不总是呈现L1在L2上方的情况。所以需要分情况确定加减号,详见附录。

- 为了减少环境干扰,首先对所有数据进行筛选并提取出感兴趣区域,该区域为方案的原始输入。

- 随后,开始标注数据,数字检测基于YOLO v3模型,标注为YOLO格式,类别仅有number一类。其中,每一个数字都应该被标注,被水浸没或环境遮挡的数字不标注,标注框覆盖数字但要尽可能的小,刻度区尽量不要包含到刻度,否则会影响到OCR模型的准确度。


- 训练完成后,使用目标检测模型(YOLO v3,其权重文件位于dist\detect.weights)检测其中的数字,根据bounding box的宽度划分为刻度区数字和较长数字,根据bounding box右下角点的Y轴分别确定检测区域2和检测区域1,为可辨识的最下方刻度区数字、较长数字,用于输入OCR模型。对于OCR模型,承接上一步的工作,使用数字检测模型检测所有数据,根据bounding box信息裁剪出所有的数字区域并另存为图片,作为OCR模型的训练集,经人工标注,形成数据集于文件夹LSTM-OCR-Test\tmp\lstm_ctc_data,共1673张。

- 为了保障运行速度,OCR模型采用LSTM模型,基于tensorflow框架,权重位于dist\ recognition系列。经训练,承接数字检测模型的输入,输出该区域的数值,具体地,由于输入区域本身存在较多噪点和污染,为了减少错误率,OCR模型并未学习小数点“.”的表示,因此对于例如“22.00”的区域会识别为“2200”,只需要添加部分后处理(除以100,保留两位有效数字)即可变成正确值。

- 至此,综合(1)的分情况处理,已经完成了0.1的识别精度。最后0.01的精度基于霍夫变换,其结果如下,受参数和环境因素影响大,较为不稳定。
演示系统
-
以下为演示系统效果展示(基于PyQt,CPU-only)
-
本系统设置了授权限时,如需运行需要手动更改系统时间为2020年10月1日以前
-
系统ui


