[深度学习 - 实战项目] CRAFTCRNN_seq2seq图片文字提取
图片文字提取项目
检测网络:CRAFT,基于字符区域感知的文本检测;
CRAFT源码:https://github.com/clovaai/CRAFT-pytorch
识别网络:crnn+seq2seq,编解码结构,文字识别;
crnn+seq2seq源码:https://github.com/bai-shang/crnn_seq2seq_ocr_pytorch
1. 写在最前面
项目花了一个星期,基本上也是去github上拿现有得模型拼凑起来得项目。
效果也达不到商业级别。只可供学习交流,也欢迎各位大佬大神交流学习,批评指教。
附上我在github上上传的代码。https://github.com/ooooxianyu/craft_rcnn_forch
检测部分,即问文字检测。本来想自己用yoloV5试着自己训练做一下,但是文本检测和物体检测还是很不同的。比如文字的长短,方向……查了查网上基于yoloV3的文本检测,看了有一个用的CTPN对训练数据的标注信息做预处理的,先做文本分割,检测时候检测的文本也是分割一块一块的,在进行合并。附上这一篇,有兴趣的可以看看。自然场景OCR检测(YOLOv3+CRNN)
(内心:劝退,这有没有简单的方法。)
后来就找到现成的文本检测项目CRAFT。(连权重包都给我了,而且效果还贼好,那我还自己搞个啥子。(′д` )…彡…彡)
识别部分:之前整过验证码识别。然后那时候也学了RNN的一些实用操作。当然也了解了,文本识别为什么这么难。就比如,我们检测出来一行文字,但是却不知道它由多少个字符组成。也就是长短不一。
网上大部分的文本识别,基本上也都是基于CRNN的,大同小异,不同的模型之间顶多就是主干网络换一换啥的。
找了一篇CRNN+CTC的讲解:https://zhuanlan.zhihu.com/p/43534801
然后代码实现的话我自己选的是crnn&seq2seq,为什么选这个呢?(我是不会告诉你们,github的其他代码都好**的长,只有这个才几个代码几百行代码。d=====( ̄▽ ̄)b)另外,源码的权重包emmmm,识别特别差。所以我自己跑了训练集,训练集在这里拿,https://github.com/chineseocr/chineseocr,非常大的文本数据集。我也只用了里面的十几万张。(而且跑的时间很短,就几轮,跑了我半天 /(ㄒoㄒ)/~~)
事先说明,识别效果不是很好,还需要后续优化。比如训练久一点,提高一下数据集的多样性啥的。
而且,只能识别正图,就是图片文字是正方向的而且一行一行识别的,旋转和翻转以及竖着都会识别不出来。
接下来直接上干货。
2. CRAFT文本检测
CRAFT的基本原理看这里。我也只是大概看了一下,大概的意思就是说,这个算法就是基于字符的,我们一个一个字符检测,通过精确地定位每一个字符,然后再把检测到的字符连接成文本目标。我们只需要关注字符以及字符之间的距离,不需要关注整行文本,所以不需要很大的感受野。阿巴阿巴阿巴……
然后就git一下代码,然后上谷歌上下载下权重包。然后放进去权重,再把要测试的图片放进去,改改配置文件。跑一下test.py,就……出来了。
输出的结果由三个啊。我们只需要box的信息,然后再原图上进行裁剪,之后放入识别网络。
下面两张测试图片。(第一张是自己的车票,第二张是百度直接找的。)总体效果还是不错的嘛。好的,那就进入下一步识别!( •̀ ω •́ )y
3. CRNN&seq2seq文本识别
(1)啥是CRNN?
CRNN就是一个CNN加一个RNN组合起来就是CRNN。。。ㄟ( ▔, ▔ )ㄏ
(2)CRNN有啥用?
我们知道文本识别最大的问题就是,不知道文本的长度和大小,CRNN就可以解决这样的问题。只要把图片缩放成它输入的格式,网络是端到端的,就直接输出结果。(也就解决了文本长短大小不一的问题)而且这个网络小,速度快啊。
流程:
首先CNN提取图像卷积特征
然后seq2seq进一步提取图像卷积特征中的序列特征。
训练集,https://github.com/chineseocr/chineseocr,非常大的文本数据集。我自己在他模型的基础上跑了这个数据集。(样本标签为两个文本文件train.txt和test.txt,格式为:图片路径 文本)注意代码里面需要打开txt 文本的代码都要加上encoding=“UTF-8” 如下:(然后基本上没其他问题就能跑得通了)
with open('', encoding="UTF-8") as f:
把权重包放进去,(decoder和encoder)然后运行detect.py 。(修改好配置文件)
然后看看结果哈:(以上面那个我的火车票为例……emmmm部分没啥问题嘛反正,效果确实也看得出来不好。还得优化,等我挂个几天再看看效果。)
——————————————————————————————————————————————————————
又跑了10多个小时。至少把我名字和身份信息打对了哈(所以就马赛克一下)。不过还是有错误。(可能就是数据集中有很多字体样式不一样,具体到商业项目的话可以根据场景收集数据集,训练效果应该也不会那么差。)
[深度学习 - 实战项目] CRAFTCRNN_seq2seq图片文字提取相关推荐
- 深度学习实战项目:速算题目批改
深度学习实战项目:速算题目批改 前言 一.摘要 二.项目框架 三.项目步骤 1. 数据处理 1.1 数据收集 1.2 数据打标 1.3 数据预处理 2. 模型训练 2.1 目标检测 2.1.1 模型介 ...
- 【功能超全】基于OpenCV车牌识别停车场管理系统软件开发【含python源码+PyqtUI界面+功能详解】-车牌识别python 深度学习实战项目
车牌识别基础功能演示 摘要:车牌识别系统(Vehicle License Plate Recognition,VLPR) 是指能够检测到受监控路面的车辆并自动提取车辆牌照信息(含汉字字符.英文字母.阿 ...
- 最适合入门的100个深度学习实战项目
前言 大家好,我是阿光. 本专栏整理了<PyTorch深度学习项目实战100例>,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集. 正在更新 ...
- Pytorch深度学习实战项目回顾
1.前言 很久没有碰Pytorch了,准备以实战项目代码回顾的方式进行复习. 2.Pytorch安装 现在我又切回了ubuntu系统,里面没有Pytorch,所以顺便从Pytorch最新版安装开始讲起 ...
- 深度学习实战14(进阶版)-手写文字OCR识别,手写笔记也可以识别了
大家好,我是微学AI,今天给大家带来手写OCR识别的项目.手写的文稿在日常生活中较为常见,比如笔记.会议记录,合同签名.手写书信等,手写体的文字到处都有,所以针对手写体识别也是有较大的需求.目前手写体 ...
- 深度学习实战1-(keras框架)企业数据分析与预测
大家好,我是微学AI,今天给大家带来深度学习框架keras的实战项目,用于基本的企业数据分析,预测企业净利润情况,并利用灰色预测函数GM11进行预测模型.我们拿到企业数据,这里参数抽象成x1-x9,y ...
- 深度学习实战3-文本卷积神经网络(TextCNN)新闻文本分类
文章目录 一.前期工作 1. 设置GPU 2. 导入预处理词库类 二.导入预处理词库类 三.参数设定 四.创建模型 五.训练模型函数 六.测试模型函数 七.训练模型与预测 今天给大家带来一个简单的中文 ...
- 深度学习实战2-(keras框架)企业信用评级与预测
深度学习框架如果仔细研究,其实难度没有想象中的那么大,今天我给大家带来一个深度学习框架keras简单的实战项目:企业信用评级与预测. 企业信用评级目前是一个完整的体系,包括信用评级的要素和指标.信用评 ...
- 深度学习实战6-卷积神经网络(Pytorch)+聚类分析实现空气质量与天气预测
文章目录 一.前期工作 导入库包 导入数据 主成分分析(PCA) 聚类分析(K-means) 二.神经网络模型建立 三.检验模型 大家好,我是微学AI,今天给大家带来一个利用卷积神经网络(pytorc ...
最新文章
- java 的回调函数
- CentOS Linux 7 安全基线设置
- 解决 yum时 Error: Protected multilib versions报错
- 精读《React PowerPlug 源码》
- gVim 中文内容显示为乱码的解决办法
- SpringMVC框架的介绍
- mysql安装、导入数据脚本
- Java多线程学习三十:ThreadLocal 适合用在哪些实际生产的场景中
- 通过kubeadm的方式以及二进制包的方式安装k8s的对比总结---K8S_Google工作笔记0016
- ZTE Unveils World's First WiMAX Mobile Video Surveillance Terminal
- Jetty使用教程(四:24-27)—Jetty开发指南
- JAVA数组——二分查找
- 杂项-TMod:常见错误
- 【渝粤教育】广东开放大学 电算化会计 形成性考核 (44)
- 10 款富有创意的博客名片设计
- SR505人体感应模块
- SAP中供应商清单输出方法
- python的链式操作及类型推断(filter/map/find) 摘自国产开源库pyiter库
- 软考-架构师-第七章-系统规划 第二节 可行性研究与效益分析 (读书笔记)
- CV之FR:基于cv2和dlib库自带frontal_face_detector(人脸征检测器)利用landmarks.dat文件实现人脸检测与人脸标记之《极限男人帮》和《NBA全明星球员》案例应用