CRAFTS阅读笔记

Character Region Attention For Text Spotting
典型的结构将识别和检测模块作为两个分支,使用RoI pooling共享视觉特征。然而,存在一种建立更好的连接方式,使用基于attention的解码器的识别器和表示字符区域空间信息的检测器。这是可能的因为两个模块共享一个共同的子任务:定位字符区域的位置。基于这个视角,我们提出了紧耦合的单通道模型。这个架构通过在识别器中利用检测阶段的输出并且在检测阶段传播识别误差行程。character score map帮助识别器更好的关注字符中心点,识别去查传播到检测模块增强了检测区域的位置。并且,一个加强的共享阶段允许特征矫正,和任意形状文本区域的边界定位。
介绍:
一个统一的模型不仅可以提升模型的效率和速度,还可以使模型学得共享特征,提高整体性能。为了从中获益,许多尝试用于使用end to end模型解决弯曲文本实例。然而,大多数方法只采用一个RoI pooling共享低层特征层在检测和识别分支。在训练阶段,不是训练整个网络,而是只有共享特征层使用检测和识别loss进行训练。
如图1所示,我们提出了一个新的端到端Character Region Attention For Text Spotting字符区域注意力用于文本检测和识别的模型,简称为CRAFTS。代替用两个分支隔离检测和识别模块,我们通过在两个模块间建立互补连接形成一个单通道。我们观察到使用基于注意力机制解码器的识别器和封装字符空间信息的检测器共享一个共同的子任务,即定位字符区域。通过紧密的整合两个模块,检测阶段的输出帮助识别器更好的注意字符中心点,识别器的loss传播到检测阶段增强字符区域的定位。此外,这个网络能够最大程度的提升用于共同子任务的特征表示的质量。据我们所知,这是第一个end to end工作建立了更紧密地耦合误差传播。
我们的贡献总结如下:(1)提出了一个端到端网络检测和识别任意形状文本。(2)我们通过在改善和识别模块利用检测器得到的空间字符信息建立一个相关关系。(3)建立了一个单通道通过传播识别loss到网络中所有特征上。(4)在IC13,IC15,IC19MLT,Total-Text实现最好的表现。
相关工作:
检测网络使用基于回归或基于分割的方法产生文本边界框。一些现最近的方法使用Mask-RCNN作为基础网络并采用多任务学习获得检测和回归方法的优势。根据文本检测的单位,所有方法也可以被子分类为基于单词或基于字符的预测。
文本识别通常采用基于CNN的特征提取器和基于RNN的序列生成器,可以通过他们的序列生成器进行分类,分为连接主义时间分类connectionist temporal classification(CTC)和基于注意力的序列解码器。检测模型提供文本区域的信息,但是对于识别器来说,在任意形状的文本中提取有用的信息仍然是一个挑战。为了帮助识别网络处理不规则文本,一些研究者利用spatial transformer network(STN)空间转换网络。文章[11,46]通过迭代矫正扩展了STN的使用。这些研究证明递归运行STN有助于识别器在极弯曲的文本中提取有用的特征。在[27]中,循环RoIWarp层被提出用于在识别前裁剪独立的字符。工作证明寻找字符区域的任务于在基于注意力机制的解码器中的注意力机制紧密相关。
一个建立文本识别模型的方法是顺序放置检测和识别网络。一个著名两阶段架构组合了TextBox++检测器和CRNN识别器。该方法简单易行,实现了良好的效果。
端到端使用基于RNN的识别器:EAA[14]和FOTS[29]是基于EAST检测器的端到端模型。不同之处在于识别器:FOTS模型使用CT

### PyCharm 打开文件显示全的解决方案 当遇到PyCharm打开文件显示全的情况时,可以尝试以下几种方法来解决问题。 #### 方法一:清理缓存并重启IDE 有时IDE内部缓存可能导致文件加载异常。通过清除缓存再启动程序能够有效改善此状况。具体操作路径为`File -> Invalidate Caches / Restart...`,之后按照提示完成相应动作即可[^1]。 #### 方法二:调整编辑器字体设置 如果是因为字体原因造成的内容显示问题,则可以通过修改编辑区内的文字样式来进行修复。进入`Settings/Preferences | Editor | Font`选项卡内更改合适的字号大小以及启用抗锯齿功能等参数配置[^2]。 #### 方法三:检查项目结构配置 对于某些特定场景下的源码视图缺失现象,可能是由于当前工作空间未能正确识别全部模块所引起。此时应该核查Project Structure的Content Roots设定项是否涵盖了整个工程根目录;必要时可手动添加遗漏部分,并保存变更生效[^3]。 ```python # 示例代码用于展示如何获取当前项目的根路径,在实际应用中可根据需求调用该函数辅助排查问题 import os def get_project_root(): current_file = os.path.abspath(__file__) project_dir = os.path.dirname(current_file) while not os.path.exists(os.path.join(project_dir, '.idea')): parent_dir = os.path.dirname(project_dir) if parent_dir == project_dir: break project_dir = parent_dir return project_dir print(f"Current Project Root Directory is {get_project_root()}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值