搭建CRNN模型(基于windows与tensorflow)

article/2025/11/1 23:02:16

3.1.1.CRNN介绍

通过CNN将图片的特征提取出来后采用RNN对序列进行预测,最后通过一个CTC的翻译层得到最终结果。说白了就是CNN+RNN+CTC的结构。
Git 地址https://github.com/bgshih/crnn
论文:paper http://arxiv.org/abs/1507.05717.

3.1.2.CNN介绍

CNN结构采用的是VGG的结构,并且文章对VGG网络做了一些微调
在这里插入图片描述

3.1.3.RNN介绍

RNN网络是对于CNN输出的特征序列,每一个输入都有一个输出yt。为了防止训练时梯度的消失,文章采用了LSTM神经单元作为RNN的单元。文章认为对于序列的预测,序列的前向信息和后向信息都有助于序列的预测,所以文章采用了双向RNN网络。LSTM神经元的结构和双向RNN结构如下图所示。

在这里插入图片描述

3.1.4.CTC翻译层

测试时,翻译分为两种,一种是带字典的,一种是没有字典的。

带字典的就是在测试的时候,测试集是有字典的,测试的输出结果计算出所有字典的概率,取最大的即为最终的预测字符串

不带字典的,是指测试集没有给出测试集包含哪些字符串,预测时就选取输出概率最大的作为最终的预测字符串。

3.1.5.调试基于tensorflow的crnn

1.首先从git下载
Git地址:https://github.com/MaybeShewill-CV/CRNN_Tensorflow
2.下载预训练好的模型,自己训练的话,就不用下载了,训练数据几个GB呢。
The pretrained crnn model weights on Synth90k dataset can be found here

3.下载完就可以直接使用了,使用下面命令:
python tools/test_shadownet.py --image_path data/test_images/test_01.jpg --weights_path model/crnn_synth90k/shadownet.ckpt --char_dict_path data/char_dict/char_dict_en.json --ord_map_dict_path data/char_dict/ord_map_en.json
4.一些坑
(1)修改tools的py文件,添加下面代码。我是windows直接运行,主要是为了找到相关目录。
os.getcwd() 方法用于返回当前工作目录。
在这里插入图片描述

2.windows创建进程没有fork方法,默认是spawn,而linux创建进程默认是fork方法。会报下面错误:
The “freeze_support()” line can be omitted if the program
is not going to be frozen to produce an executable.
在这里插入图片描述
修改data_provider/tf_io_pipline_fast_tools.py文件,添加“if name == ‘main’:”,如下所示。

if name == ‘main’:
_SAMPLE_INFO_QUEUE = Manager().Queue()
_SENTINEL = ("", [])

3.1.6.英文OCR运行成功

python tools/test_shadownet.py --image_path data/test_images/test_01.jpg --weights_path model/crnn_synth90k/shadownet.ckpt --char_dict_path data/char_dict/char_dict_en.json --ord_map_dict_path data/char_dict/ord_map_en.json

在这里插入图片描述
发现只有用训练数据,识别才好。
在这里插入图片描述

3.1.7.中文OCR运行成功

1.下载预训练好的模型
I have uploaded a newly trained crnn model on chinese dataset which can be found here. Sorry for not knowing the owner of the dataset. But thanks for his great work. If someone knows it you’re welcome to let me know. The pretrained weights can be found here
2.修改配置文件config/global_config.py:

__C.ARCH.NUM_CLASSES = 5825 # cn dataset
#__C.ARCH.NUM_CLASSES = 37 # synth90k dataset

3.运行demo
python tools/recongnize_chinese_pdf.py -c ./data/char_dict/char_dict_cn.json -o ./data/char_dict/ord_map_cn.json --weights_path model/crnn_chinese/shadownet.ckpt --image_path data/test_images/test_pdf.png --save_path data/test_images/pdf_recognize_result.txt

在这里插入图片描述

我的识别效果没有git上显示的好。自己准备数据,自己训练就更好吧。
在这里插入图片描述


http://chatgpt.dhexx.cn/article/isGJANbI.shtml

相关文章

CTPN训练集准备

去down vgg_16.ckpt预训练模型准备一堆你需要训练的图片,使用labelme进行标注,得到一堆json文件 json文件大致如下: {"flags": {},"shapes": [{"label": "str","line_color": null,"…

【项目实践】中英文文字检测与识别项目(CTPN+CRNN+CTC Loss原理讲解)

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达本文转自:opencv学堂 OCR——简介 文字识别也是图像领域一个常见问题。然而,对于自然场景图像,首先要定位图像中的文字位置&#xff0…

『工程项目实践』银行卡识别(CTPN+CRNN)

银行卡识别 前言一、数据预处理1.1 数据准备1.2 数据增强 二、训练(CRNN)三、需要修改的内容3.1 数据增强3.2 训练 四、CRNN 结构说明4.1 CNN4.2 BiLSTM4.3 CTC 五、卡号检测六、BIN码校验参考链接 前言 对各种银行卡进行卡号识别,CTPN 进行文…

【深度学习】YOLOv5 中使用的 CSPNet 是怎么回事

论文:https://arxiv.org/pdf/1911.11929.pdf CSPNet全称是Cross Stage Partial Network,主要从一个比较特殊的角度切入,能够在降低20%计算量的情况下保持甚至提高CNN的能力。 跨阶段局部网络(CSPNet)是 Wang 等人于 20…

Opencv多语言自然场景文本识别系统(源码&教程)

1. 研究背景 人类在自然场景中可以快速定位并识别看到的文字信息,但是想要计算机做到和人类一样是比较困难的。开发人员一直想要让机器也能识别图像中的文字信息。当然,对于自然场景来说,图像中的信息复杂甚至是低效的,文字旁的物体﹑光影,以及字体颜色、大小、书写…

深度学习CTPN+CRNN模型实现图片内文字的定位与识别(OCR)

1:样本获取 **算法论文:** Synthetic Data for Text Localisation in Natural Images Github: https://github.com/ankush-me/SynthText **词库:** https://pan.baidu.com/s/10anmu 英文词汇 经过处理后得到大约500兆 6000万词组 **字体:** ubntu系统下支持中文的字体&…

ctpn、east阅读要点记录

最近要做一些ocr的事情,阅读了文字定位的相关论文,主要是ctpn和east.下面对这两篇论文的药店进行一个记录。 CTPN ctpn结合了卷积神经网络和循环神经网络。卷机神经网络用于提取图片特征,循环神经网络能够帮助提升对文字的定位和分类的准确…

基于CTPN(tensorflow)+CRNN(pytorch)+CTC的不定长文本检测和识别

文章主要是为了说明在windows平台下调试遇到的问题。 代码地址:https://github.com/Aurora11111/chinese-ocr-pytorch 按照相关说明,安装相关的pytorch和tensorflow,我使用的是python3.7 下载代码后,需要进行修改才能在windows…

OCR文字识别项目(原理)

参考视频: OCR文字识别原理 OCR光学字符识别:提取图像中的文字,并转换为文本形式,供后续NLP使用。 一、CTPN算法:文字检测 二、CRNN算法:文字识别 池化此时为12。才能把特征变为适用于输入到RNN中。

CTPN+CRNN算法端到端实现文字识别的实战开发

本文分享自华为云社区《CTPNCRNN 算法端到端实现文字识别》,作者:HWCloudAI。 OCR介绍 光学字符识别(英语:Optical Character Recognition,OCR)是指对文本资料的图像文件进行分析识别处理,获取…

OCR入门教程系列(五):OCR实战代码解析

👨‍💻作者简介: CSDN、阿里云人工智能领域博客专家,新星计划计算机视觉导师,百度飞桨PPDE,专注大数据与AI知识分享。✨公众号:GoAI的学习小屋 ,免费分享书籍、简历、导图等,更有交流群分享宝藏资料,关注公众号回复“加群”或➡️链接 加群。 🎉专栏推荐: ➡️ …

制作自己的ctpn数据集

制作自己的ctpn数据集 1、利用label-image标注自己的数据集,保存为.txt文件,结果如下: 上图第一列 0:标签 后面的小数是label—image标注的坐标框位置(归一化后的结果) 2、ctpn数据集的格式:…

CTPN文本检测与tensorflow实现

1. 引言 近年来,随着人工智能的发展,文本检测在很多任务中都是一项基本任务,比如广告牌中文字识别、智能驾驶路牌的检测、身份证识别、快递地址识别等。这些任务中首先的一项就是文本检测,即检测出文本在图像中的位置,…

制作自己的CTPN训练集

制作自己的CTPN训练集 使用labelimg工具制作YOLO格式再将其转为CTPN中需要的8个坐标 1.标注框 2.代码生成坐标并保存 import cv2 import os def change_labelimage_to_cptn_data(pictures_file_path, txt_file_path, cptn_data_labels_path):list os.listdir(txt_file_pat…

【文本检测与识别-白皮书-3.1】第四节:算法模型 2

CTPN CTPN,全称是“Detecting Text in Natural Image with Connectionist Text Proposal Network”(基于连接预选框网络的文本检测)。CTPN直接在卷积特征映射中检测一系列精细比例的文本建议中的文本行。CTPN开发了一个垂直锚定机制&#xf…

CPTN代码运行报错

Windows10 系统运行 github上给的是linux操作系统指令 因为我是Windows10 的系统,不能通过setup的指令得到所需文件,后面根据https://github.com/eragonruan/text-detection-ctpn/issues/359的方法到第4步报错 错误1: 找不到cl.exe&#x…

JAVA项目实战开发电商项目案例(十)订单与支付模块

文章目录 1项目架构2项目采用技术3订单与支付模块功能演示4如何开发支付宝的支付模块以及订单模块4.1首先需要编写前端页面以及JS文件4.2其次需要编写JAVA后台接口4.3支付模块分析4.4订单模块分析5代码分析6个人说明7 [我的个人网站](http://www.liph.fun)8获取源码 此次电商系…

Java 项目实战 坦克大战 (0)--前言

做了有一个星期了,java语言太强大了,也算是学得最认真的一门语言了,本次课设花的心思也就比较多了。关键总是追求完美总是想原创,最终做出来效果不错,但感觉代码逻辑很乱,今天开始就好好整理一番&#xff0…

Java项目实战第11天:搜索功能的实现

目录 一、sql语句动态拼接二、前后台代码编写三、搜索框数据回填最后 今天是刘小爱自学Java的第110天。 感谢你的观看,谢谢你。 话不多说,开始今天的学习: 事先说明:关于今天的搜索功能实现。 并没有使用到倒排索引这样的主流搜…

【CSDN最全java项目实战500篇】练手/项目经验/毕设刚需

免费精选!强烈建议收藏!学完这一套直接进大厂(附配套源码&资料) C站(CSDN)软件工程师能力认证,已上线70天,下图300所高校的小伙伴们都已经预约、完成C认证,就等你来啦…