文献阅读——(第十三篇)ASTER:An Attentional Scene Text Recognizer with Flexible Rectification

一、文献梳理

1、文献背景

近几十年来,一种流行的方法是定位单个字符并将其分组为单词。最大稳定极值区域(MSER),极值区域(ER)和笔画宽度变换(SWT)等利用文本的纹理或者形状特征。其他人采用基于学习的方法并使用滑动窗口技术定位字符。一些方法使用卷积神经网络(CNNs)来定位和识别字符。有的方法使用两个CNN来分别定位和识别字符。有的方法只使用一个CNN同时执行定位和识别这两个任务。文本识别也可以建模为结构化学习问题。有人把文本识别当作是序列识别问题,用循环神经网络RNNs来识别,有人用CNN和LSTM结合来识别文本。

2、研究成果

1)模型意义

本文方法主要解决不规则排列文字文字识别问题,论文为之前一篇CVPR206的paper(Robust Scene Text Recognition with Automatic Rectification,方法简称为RARE)的改进版(journal版)。本文的方法属于结构化学习的范畴。它基于注意力序列 - 序列学习模型。这样的模型学习从输入序列预测输出序列。

2)实验及其结果

对检测结果可以微调,可以让检测结果更好,这里提高原因有两个,1是因为通过识别把噪声过滤掉了, 2是位置更准确

二、文献核心思想

方法ASTER全称为Attentional Scene TExt Recognizer with Flexible Rectification,包括两个模块,一个用来矫正(rectification network),另一个用来识别(recognition work),如下图所示。

  • 针对不规则文字,先矫正成正常线性排列的文字,再识别;
  • 整合矫正网络和识别网络成为一个端到端网络来训练;
  • 矫正网络使用STN,识别网络用经典的sequence to sequence + attention

三、文献重点

1、Rectification Network

1)框架

矫正网络框架图如下图,基本上是用STN的框架,包含三个部分:Localization Network用来检测图中的那些Control Points;Grid Generator通过这些Control Point来计算要生成的新图中每个点在原图中的点位置的映射关系;Sampler在原图上采样那些Grid Generator计算出的点位置,生成校正后的图。

2)Localization Network

  • 定位网络(已经训练完进行测试时)的输入是待识别的未矫正前图像,输出是K个控制点的位置。
  • 该定位网络训练时没有用K个控制点作为annotation进行训练,而是直接接入后面的Grid Generator + Sample利用最后的识别结果,连成一个end-to-end的框架进行训练。
  • 网络结构采用一个自己设计的普通的卷积网络(6层卷积 + 5个max-pooling + 2个全连接)来预测K个control point的位置(K= 20)

3)Grid Generator

  • 网格生成器的输入是已有的Control point点集 + 矫正后的图(还未生成,但给定图大小可以取点)上的某个点坐标,输出是该点在矫正前(原图)上的点坐标位置

  • 网格生成器可以看成是一个矩阵变换操作(变换的几个参数a0-a2, b0-b2可以通过Control point位置利用优化问题求解方法求出,因为Control Point在矫正前后的图上的位置都是已知的,故可以计算出对应关系),实际做预测时也是计算该待测点与已知的control point的位置关系,通过一系列对应关系算出在原图的位置。贴个图感受一下这个对应关系如下,p为矫正后的点位置,C为矫正后的Control point的点位置,p'为矫正前的点位置,C’为Control point在矫正前的点位置:

 4)Sampler

该Sampler就是给定点映射关系及原图,生成一张新的矫正后的图,用到了简单的插值,以及当超出图外时直接clip掉。另外,Sampler采用可微的采样方法,方便梯度的bp。输入是原图 + 矫正后的图上的点在原图上的对应位置关系, 输出是矫正后的图。

2、Recognition Network

1)思路

识别网络采用当前识别的一般思路:sequence-to-sequence (encoder/decoder框架)+ attention + beam search。网络主要分为两部分,ConvNet + 双向LSTM的encoder模块,和LSTM + attention的decoder模块。

2)框架

损失函数如下,需要计算left-to-right的decoder以及right-to-left的decoder损失。除Location Network的FC层权重初始化为0(防止矫正后的图distort非常厉害),其余所有网络层都采用随机初始化。

               

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
OCR(Optical Character Recognition)是一种将图像中的文字转换为可编辑文本的技术。在PyTorch中,有两个常用的OCR识别模型:ASTER和CRNN。 ASTER是一种基于注意力机制的场景文本识别模型,它可以对不同形状和方向的文字进行准确的识别。官方论文《ASTER: An Attentional Scene Text Recognizer with Flexible Rectification》提供了详细的算法描述和实验结果。你可以在GitHub上找到ASTER的PyTorch实现代码\[1\]。 CRNN是一种端到端可训练的神经网络,用于基于图像的序列识别,包括场景文本识别。官方论文《An End-to-End Trainable Neural Network for Image-Based Sequence Recognition and Its Application to Scene Text Recognition详细介绍了CRNN的结构和性能。你可以在GitHub上找到CRNN的PyTorch实现代码\[2\]。 除了这两个模型,还有其他OCR识别模型可供选择,例如PaddleOCR。PaddleOCR是基于CRNN的文本字符识别模型,支持多种任务,包括车牌检测与识别、中文场景文字识别、手写汉语拼音识别等\[3\]。 希望这些信息对你有帮助! #### 引用[.reference_title] - *1* *2* *3* [OCR项目实战(一):手写汉语拼音识别(Pytorch版)](https://blog.csdn.net/qq_36816848/article/details/128951065)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v4^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值