热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

attention文字识别算法_OCR算法(上篇)

总体上分为两部分,detection和recognition,前者的代表是CTPN等一系列模型,后者则主要为CRNNCTCDetectio
66589531a8cea9e0d8a5d472a55d07a6.png

总体上分为两部分,detection和recognition,前者的代表是CTPN等一系列模型,后者则主要为CRNN+CTC


Detection

CTPN(1609)

https://arxiv.org/pdf/1609.03605.pdf​arxiv.org

想法:

文本不同于一般物体,是个Sequence,因而要在CNN后面加上RNN获取上下文信息。

固定宽度,找到不同高度的文字,因为文中认为预测文本竖直边界比较容易。

这是Top-down的方法。

网络结构:

038bbd5290f39ca78e128b241649fcf0.png

Feature Map是CVGG16的conv5,每个点提出10个anchor,长和高分别为

17799245e4680f96ce2ceed3e4237e01.png
92c4e4c47633a32e1a59c0cce0986c91.png

然后过BiDirectionLSTM,过FC之后得到5k个输出(分别为2k纵坐标修正,2k预测概率[相加为1],1k边界修正[在一些复现里将这里换为2k横坐标修正])

后处理很繁琐

  • score阈值设置:0.7 (+NMS)
  • 与真值IoU大于0.7的anchor作为正样本,与真值IoU最大的那个anchor也定义为正样本,这个时候不考虑IoU大小有没有到0.7,这样做有助于检测出小文本。
  • 与真值IoU小于0.5的anchor定义为负样本。
  • 只保留score大于0.7的proposal

损失函数为

17b5986562d9fb2b138b8bf3358dffbe.png

具体的可见 白裳:场景文字检测—CTPN原理与实现

EAST(1704)

https://arxiv.org/pdf/1704.03155.pdf​arxiv.org

想法:是一个简单快速的模型,只有two-stage 其实主要优势只是速度....

778ab61816b712e7b0bf661c00f2d1e7.png

模型结构:

前一部分和FPN一样,后面根据不同label生成5维(有角度的长方形)或8维(四边形)的文本框

203768fc3275d9febcd05a2b94e7921f.png

Label的生成:

对于不同的scale,生成不同的label;对于QUAR提出了一种shrink的方式

损失函数:

,文中λ设为1

其中score map loss由下式计算

83b11241c352268122bc1d0507a55fd6.png

Geometry loss 分为RBOX和QUAD两种情况

RBOX情况下Loss = -log(IOU)+λ(1-cos(θ-θ‘))

QUAD情况下,N_Q是最短边长度

0b5c711376713ce722fd8011e33364d9.png

后处理用来一种改良的NMS:先通过相近的WeightedMerge再通过标准的NMS

PSENet(1806)

https://arxiv.org/pdf/1806.02559.pdf​arxiv.org

想法:指出两个问题:1、原始方法只能处理长方形的文字;2、现有语义分割方法难以区分相临近的文字块

通过语义分割做文本检测,具体预测多个分割结果,然后用小的进行Progressive Scale(基于BFS)扩张到正常文本大小。

网络结构:

9441dd6b0df70e0b6d919fbf5c2d5d2a.png

左边就是FPN,右边是PSE。PSE的具体算法如下

736d804db77a5a4ac8dd34422d7e7980.png

即先找到连通域,然后对连通域进行扩张,由此区分临近文字。

Label生成:

对于不同scale生成不同的ground truth,具体而言就是进行shrink

1cd4a3b4b56a807e79b10f4e693b2d61.png

图中

之间的距离
,

损失函数:

其中

是text loss,定义为
,M为OHEM Mask
是shrink text loss,定义为
,

这个距离D用的是DiceDistance

实验结果:

hypermeter:lambda=0.7,OHEM=3

Augment:rescale&flip&rotation&crop

FPN的效果

5927e629731ba052db5764378d078cdd.png

关于n和m的取值

ea42569ff56a1c8bc75a3bf2ae7e425a.png

总体而言相比之前有较大提升(-4s 是指output 大小为原图1/4)

2445ba5a29e03b87c565ccaeae141482.png

Recognition

https://arxiv.org/pdf/1507.05717v1.pdf​arxiv.org

任务的输入就是识别出的文字区域,因此可以认为resize到固定高度之后,文字大小相差不大

CRNN+CTC(1507)

CRNN首先把图像resize到32*W*3,然后通过CNN后变为1*W/4*512,concat之后经过深层双向LSTM得到结果。

模型结构:

注意最后一个卷积 padding=0相当于高度2->1,Map-to-Seq就是concatenate。

5d8e89288f93e92f9159dbe329fb39a3.png

CTC:

CTC是可以认为是一种Loss function。考虑到字之间宽度不定,所以先构建函数B将预测结果转换为最终输出,比如

B maps “--hh-e-l-ll-oo--” (’-’ represents ’blank’) onto “hello"。

然后可以计算得分(y为上面的输出,D*W/4,D为要识别的字符数量)

CTC运用了backward-forward加速这一计算。

如果是lexicon-based CTC,考虑BK Tree来获得

SAR (1811)

https://arxiv.org/pdf/1811.00751.pdf​arxiv.org

想法:想要识别irregular文本

已有的方法分为三类:rectification-based,难以处理复杂形状;attention-based,需要字符级的标注来训练; multi-direction 需要encode arbitrarily-oriented text in four directions

主要贡献:1、easy and strong recognization;2、not rely on sophisticated designs to handle text distortions; 3、保证了regular text的效果

网络结构:

height 设定为 48 pixel, width限定48-160 pixel

31层ResNet + LSTM encoder-decoder + 2d attention

62dc2e6d4a896d116f7f935122c032bf.png

注意这里有个1*2的max-pooling是为了更好地处理i和l之类的

然后按列max-pooling输入LSTM(大哥:为什么能work?)

e5decb492d49ac16e59f9334fbbf8e10.png

如上,encoder是2-layer 512-hidden-state LSTM

6a9a243a670e5eb5767ea6ca893e3b98.png

如上,decoder是另一个2-layer 512-hidden-state LSTM,

LSTM的输入为 one-hot

经过线性变换

LSTM输出之后

output为94个class,包括10个数字、52个字母和31个标点

训练中input 的y被ground truth代替(能保证1-1对应?)

上图中的attention是“tailored attention” 具体流程如下

48b42dbb20e73ef0b1de2ad5f179fd8a.png

其中

是(i,j)的local feature vector,
是相邻的八个点
(其实相当于是个卷积)
406c344be7b122f9f43900867ac089ed.png

实验结果:

使用cross-entropy loss,(大哥:这里和CRNN的CTC完全)

使用几个数据集randomly sample构建distinct data groups训练

结果在irregular text方面提升较大

7044fdc9cc2ae2eb041b06f3f2042ff6.png

ablation study: Tailored Attention比传统Attention提高了约2个点

(怎么inference?)



推荐阅读
author-avatar
mobiledu2502861593
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有