深度学习cptn+crnn的OCR原理

article/2025/11/1 23:00:47

CPTN

在这里插入图片描述

CRNN

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

首先我们要看ocr要做的是什么,识别一张图片里面的一行文字,输出来,
假如我一张图片里面只有一行文字,但是这一行文字只占了中间的一个区域,两边有很多空的地方,那么我怎么做呢,我首先肯定是要把这张图片中这一行文字给找到,给框出来,找到之后在去识别里面的每个文字是什么文字,也就是两个步骤
1.找到一张图片中的一行文字,就是把这行文字给框出来(ctpn)
2.找到这行文字之后,再去识别这行文字里面的每个文字是什么文字(rcnn)

cptn过程

那么ctpn是怎么把这一行文字给框出来的呢,它是首先把这一行里的每个字给框出来,然后把所有的字的框合并,就得到一行文字的框,那么它是怎么把每个字给框出来呢,这就是和目标检测一样的呢,借鉴了faster rnn的思想,也是最后一个feature map每个像素点生成若干个ancor,与真实框重合最大的ancor负责预测,然后将每个文字的预测ancor先送到lstm网络中提取特征,然后再送到全连接层,进行目标置信度分类,横向中心点偏移回归、竖向中心点、竖向长度回归,训练完了之后对每个文字的预测ancor加上训练好的偏移量就得到了每个文字修正后的预测ancor了,然后将所有修正后的ancor合并就得到了一行文字的预测框
注意:
为什么每个文字生成的预测ancor要先送到lstm网络中提取特征,然后再送到全连接层去分类和回归,而一般的目标检测网络比如faster rcnn可能是直接送到全连接层进行回归和分类的,原因是因为像一般的目标检测网络它检测图片上的某个目标都是人啊,动物啊,还有其它的目标啊,,它们之间是没有前后关系的,而一行文字里面的每个文字都是有前后关系的,所以需要将每个文字生成的ancor先送到lstm中提取特征,然后再来回归和分类

crnn过程

rcnn要做的是把一行文字的每个字给识别出来,它首先是将cptn检测到一行文字图片,送入卷积网络中去提取特征,得到n个向量,n是一个图片一行文字的最多个数,然后将这n个向量送入到lstm网络中,得到n个m维的向量,m是字典字的个数,每个位置的m维的向量,表示对应位置字是字典里面那个字的概率,每个m维的向量可以得到字典里面的一个字,注意这个时候不一定选最大softmax概率对应的字,为什么呢?因为n个m维的向量最终生成n个字,这个字和最终这一行字的标签不是一一对应的n个字生对应最终的标签是有很多中组合的,每种组合都有一种概率,把所有组合对应的概率相加起来,然后加log取负数就是最终的损失了


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

相关文章

Win10配置TensorFlow

1.下载安装Python3.5 因为3.6在windows下暂时还没提供pip的接口…… 确保环境添加好了环境变量(PowerShell不用重启) 2.安装Tensorflow 管理员打开PowerShell pip3 install --upgrade tensorflow 或者: pip3 install tensorflow pip3 inst…

翻译CTPN:Detecting Text in Natural Image with Connectionist Text Proposal Network

Detecting Text in Natural Image with Connectionist Text Proposal Network 使用Connectionist文本提议网络检测自然图像中的文本 Abstract. We propose a novel Connectionist Text Proposal Network (CTPN) that accurately localizes text lines in natural image. The C…

TensorFlow CTPN Demo Windows 无痛搭建

TensorFlow CTPN Demo Windows 无痛搭建 一原材料 PyCharm 下载地址: http://www.jetbrains.com/pycharm/TensorFlow 安装教程移步至: https://blog.csdn.net/yx123919804/article/details/84111774CTPN源码 下载地址: https://github.com/eragonruan/text-detection-ctpn/rel…

CRNN——pytorch + wrap_ctc编译,实现pytorch版CRNN

文章目录 简介CTC网络的输入CTC网络的计算过程CTC网络的输出pytorch安装warp-CTC安装Bug解决References 简介 CTC可以生成一个损失函数,用于在序列数据上进行监督式学习,不需要对齐输入数据及标签,经常连接在一个RNN网络的末端,训…

OCR文本扫描 轮廓检测 透视变换

OCR文本扫描项目实战(图像预处理,调用pytesseract.image_to_string()完成文本识别) 本项目和源代码来自唐宇迪opencv项目实战 本文是一篇OCR文本扫描项目实战的学习笔记。在opencv-python环境下对图像进行轮廓检测、透视变换等处理。调用pytesseract模块实现文本扫…

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

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

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…