ctpn、east阅读要点记录

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

最近要做一些ocr的事情,阅读了文字定位的相关论文,主要是ctpn和east.下面对这两篇论文的药店进行一个记录。

CTPN

ctpn结合了卷积神经网络和循环神经网络。卷机神经网络用于提取图片特征,循环神经网络能够帮助提升对文字的定位和分类的准确度(文中对使用和不适用rnn的结果进行了对比)。

下面对网络结构进行一个介绍。

首先是通过VGG16的卷积层进行特征提取,这里使用了vgg的五层卷积。对vgg的五层卷积进行一个介绍:这五个卷积层每一层都进行了一次池化操作,池化后特征图的大小变为了原来的0.5倍。经过四次卷积层之后,特征图的大小与原图的比例为1:16.也就是说,当我们在特征图上移动一个像素位置时,在原图上则移动了16个像素位置。经过四层卷积层之后,在经过一次卷积操作,这次就不再进行池化,将得到的特征图用于之后的分类和定位。

我们得到这个特征图,假设他的shape是w*h*c,这里的w是宽度,h是高度,c是通道数。对特征图上每个位置以3*3的窗口进行滑窗,每一行都可以得到w个3*3*c的特征矩阵。我们可以知道,这里的一次滑窗(水平方向移动一个像素),在原图上对应的是在水平方向上移动16个像素。这里作者固定了水平方向上的位置,对竖直方向上的高度进行了预测。每个滑窗在原图上对应11个(可能记错了)anchor,这些anchor在水平方向上都是一样的大小和位置,但在竖直方向上的高度各不相同。这些anchor共享一个特征矩阵。

我们将得到的特征矩阵按行输入rnn中,也就是每次输入w个3*3*c的特征矩阵到rnn中,rnn输出大小为w*256的输出。将得到的输出传给全连接层进行特征的组合,再传入分类层和位置回归层。

这里的分类层将数据分为两类,分别是有字和无字。

位置回归层则根据预测的高度的偏离程度、预测的中心位置的偏离程度以及水平位置的微调进行位置回归。

损失函数的构造结合了类别分类的结果和位置偏离程度的计算。

最后将得到的宽度为16像素的框进行结合,则得到了文字的位置。

结合的判定规则比较简单,从水平距离和竖直距离上两个方向进行了判断。

注意:在训练时,输入图像的短边被resize成了600像素大小,原图像比例保持不变。

我们可以考虑调整的参数:针对具体的情景,比如如果我们要识别的文字大小是固定的,那么我们可以把anchor的高度进行调整,以更加适用于我们的具体情景。另外就是图像resize的大小,可以进行调整。其余的参数我认为没必要调整。

EAST

我认为east的思想比较简单。主要是结合了FPN的思想,将底层特征和上层特征进行了融合。据作者说,east的实验结果比之前的文字定位的效果都好,我个人还没有对训练好的结果进行实验,从思想上来说,我觉得ctpn的更加有趣些。east是一些比较经典的思想的融合,当然啦经典的常常有用。east的相比于ctpn来说,一个比较明显的优势是,它可以识别倾斜的文字,这一点ctpn是做不到的。

下面对网络结构进行一个介绍。首先是一些卷积层对特征进行了提取,然后对这些卷积得到的特征图通过上下采样的操作做融合,最后得到一个融合的特征图,这个特征图就结合了底层的细节特征,也结合了高层的语义信息。这种进行特征图融合的方式最早可以参见FPN,我在我的博客中也解读了这篇论文。融合后的特征图再输入到分类层和位置回归层中。

这里的位置回归层分为两种,分别是倾斜四边形的位置回归和矩形的位置回归。倾斜四边形的位置回归增加了一个倾角的预测。

 


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

相关文章

基于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认证,就等你来啦…

Java项目开发实战入门 PDF 扫描完整版

内容介绍 《Java项目开发实战入门》以一起来画画、通讯录系统、明日彩票预测系统、小小五子棋、企业进销存管理系统、企业QQ(局域网版)、九宫格记忆网和铭成在线考试系统8个精选项目为案例,从趣味性和实际应用角度出发,采用了当前…

全站最全实战的Java项目(附源码)

嗨喽,大家好,今天又要给大家整一波福利了! 不管我们要学习哪种语言都希望能第一时间看到成效,能做出实际的东西来,那么这里所说的实际东西当然就是项目啦!不用我说大家也知道,学编程语言不做项…

java项目实战之404错误原因总结

java项目实战之404错误原因总结 第一个原因可能是你的URL写错了,正确的URL应该这么写 localhost:8080/项目名称/对应的目录或者映射 好好检查检查是否是拼写错误,或者多了什么,少了什么 第二个原因可能是你的Spring配置文件写错了 一般都…

最牛逼的 Java 项目实战,没有之一!

想要成长为高级开发,掌握更多层面的技术,兼顾深度和广度是毋庸置疑的。你肯定认为,我要认真努力的学习技术,丰富自己的技术栈,然后就可以成为一个优秀的高级开发了。但当你真正去学习之后就会发现,技术栈异…

史上最全Java项目实战课程(含项目实战+源码)

【此文章转自乐字节】 很多小伙伴学了Java有一段时间了,想找几个项目想练练手,更有助于我们的学习和工作实践,最重要的是提高自己的项目经验,对于找工作而言有着大大的帮助,那今天UP主就来分享一些Java实战项目&#…

10套最全Java项目实战课程(附项目实战+源码)

家人们,我又来啦,今天我们来看一下学Java必练的10款游戏项目! 大家都知道学习编程必须要做的就是敲代码和做项目练手了,那项目有难有易,很多小伙伴不知道从哪里找项目来练习,今日我们来看一下初级项目中都…

8个Java实践项目:平均半个小时就可干完~

最近有很多看过Java300集小伙伴私信我说推荐几个Java实践练手项目,在这里我收集了8个可以供大家在平时学习过程中进行练手的项目!平均每个项目,半个小时即可完成!!! 最近学习Java的小伙伴们快来练练看看自己…