论文笔记:Learning to Read Irregular Text with Attention Mechanisms

最近在接触一些复杂环境下的字符识别任务的相关论文,准备把看论文时候的一些理解记录下来,方便遗忘的时候去翻阅。所以,今天想仔细的记录一下自己对于Learning to Read Irregular Text with Attention Mechanisms这篇论文的理解,方便自己以后查看,也希望能给大家带来一些方便,相互探讨嘛。

首先,这篇论文暂时不太好下载,有的一些文库的链接,但是下载需要金币。百度学术上也没有,说不定科学上网的话可以很方便下载有渠道的可以试一试。推荐大家去作者的个人主页上下载,百度一下链接即可,主页上还有好多作者的论文。论文不会大幅笔墨的进行翻译,但是会简要的介绍一下。

首先,是一贯的论文套路,指出的字符识别的广泛应用和广大前景、当前一些技术取得的效果,存在的漏洞、本文的目的(旨在识别出哪些非正常字符,非正常指字符区域有着扭曲,旋转,弯曲等问题),以及本文取得的一些效果。下图给出了非正规字符的情形。
在这里插入图片描述
首先,作者在介绍中指出,文章的结构是用一个深度卷积神经网路去提取出图像的高等级特征表示,然后使用注意度RNN去预测出字符序列。但是,不规则的字符区域会导致训练的困难,所以作者提出了一个辅助任务——an auxiliary dense character detection task。旨在解决训练难的问题。文中描述如下:
在这里插入图片描述
文中提出之前的字符识别方法都采用了流水线式的工作方式:首先,不管是利用手工方式(计算纵横比)得到的低级特征,还是用神经网络(CNN)提取的高级特征,去定位出每个单独字符的区域,进行裁剪操作;然后去进行单个字符的识别。但是这种方法在每个字符的间距,因为扭曲、旋转或者弯曲,而不是那么平衡且充分的情况下,效果会很差。还有人提出了直接使用CNN+RNN,将字符识别当做一个序列问题,RNN后使用CTC去计算损失函数,得到最终的预测。但是CTC的损失函数值定义了1维的序列问题,这种模型是不适用于识别那些非规则区域文本的。也有的方法是先将不规则的文本区域转换成近似规则的(规则指水平的,正面的),STN空间变换网络就是旨在解决这个问题。而作者指出,他们设计的网络就完全不需要这一步。

首先贴出作者设计的网络图,大家要记住下面的三种符号表示的对应子网络:
在这里插入图片描述
我用了两种颜色的笔把网络图分成了四个部分,其中特征提取网络(绿色1)我们用f表示;全卷积字符(像素区域)检测网络(绿色2)用g表示,字符识别循环神经网络(绿色3)用r表示。黄色4画出的区域代表为了让特征更加丰富,作者还提出了一个坐标映射,将坐标映射与特征映射concatenation起来(类似于Tensorflow中的tf.concate函数)。那么要记住的符号有三个:
f——特征提取网络
g——全卷积字符检测网络
r——字符识别注意度循环网络

总览整个处理流程:将一幅W x H的image作为输入(记image:x),端到端的输出预测出的字符序列插入图片描述
C——预测出的字符序列

输入图像进入特征提取网络——f 后,得到了最终的特征映f(x);接着进入全卷积字符检测网络——g 去预测每个像素点是否属于某个字符 y(预测) = g(f(x)),属于则等于1,不属于则等于0,在这里插入图片描述
我们可以看到i,j是遍历一幅图像的宽和高的,就是对每个像素点都进行是否属于某个字符的预测;最后送入一个字符识别注意度循环网络——r 进行识别操作,为了让注意力的移动更加准确,作者将坐标映射M也加入到了特征中。
坐标映射——M
在这里插入图片描述
M是两个通道的,上图作者给了一个求取一幅30 x 30 x 3 彩色图像坐标映射M的例子。公式如下:
在这里插入图片描述
w——特征映射和坐标映射M的宽
h——特征映射和坐标映射M的高
其中u,v代表某个通道上的M矩阵的每一个点的坐标的行列表示,w和h是特征提取网络的输出f(x)的宽高,M和f(x)有着相同的宽高。很方便理解,M就驱动着注意力往最佳的方向移动。这样就会得到,图像中哪些像素点是属于,或者可能属于字符区域的呢。
在这里插入图片描述

接下来就是关于识别字符的一大串公式了(头疼看着都)
我们的识别网络(解码器) r 每个时间点t识别一个字符Ci(不用分割),从而分解生成字符序列C的概率为:
在这里插入图片描述
C<t代表在Ct上一时刻字符,V是一个concatenation操作后的特征表示
,代码操作类似于 tf.concate(f(x),M.T)。我们想求等式左边,就要求等式右边的那个条件概率,我们想求等式右边的,可以用下面的公式来求解:
在这里插入图片描述
T可以是一个前向传播神经网络,ht是循环网络r 某一时刻t的隐藏层状态,我们想求ht,可以用下面的公式来求解:
在这里插入图片描述
GRU代表RNN的一个变种,后面的参数中的未知参数是在这里插入图片描述
求解方式如下:
在这里插入图片描述
可以清晰的看出V是特征表示,遍历的是每个w和h,就是特征矩阵上的每个元素,α很自然就是每个元素的权重,那么ctxt就代表特征的加权和。α可由下式子求出:
在这里插入图片描述
参数e作者叫做:alignment score——比对的得分,那么就是特征表示V的每个元素点,解码出是否属于某一时刻的字符Ct的相关性。所以我们只用求在这里插入图片描述
计算公式如下:
在这里插入图片描述
上面的公式中 vT,W,U都是权重矩阵,是学习来的,我们只需要附上初值,网络就会在训练中不断地迭代生成最合适的权重矩阵。

整个网络的损失函数由三部分组成:
r识别网络的识别损失——L(dec) = -logP(C|x)
r识别网络的比对误差——L(att) 需要乘上一个系数λ2
g字符检测(像素级别)网络——L(fcn) 需要乘上一个系数λ1,而这个损失就是作者开始讲到的,为了方便训练而设计的的一个辅助密集字符检测网络的损失。(位置可见本博客第二幅图片的上的解释文字)。
那么总的损失就是:
L = L(dec) + λ1L(fcn) + λ2L(att)

下面作者单独分出两个小节来具体解释了L(fcn) 和L(att)的意义。(说实话每太看懂)
L(fcn)代表,某个像素点属于字符区域/不属于字符区域的误差损失函数。y(i,j) = g(f(x)),g和f的意义上面我写的很清楚,定位(i,j)属于groundtruth则y(i,j) = 1,y(i,j) = 0。又因为感受野的空间信息在pooling操作的时候可能会丢失,所以作者又加上了unpooling操作,会在upscaling的同时保留你的空间信息(图片上没个像素点的位置信息)。
(upscaling的理解:首先FCN网络旨在有效的解决语义分割的问题,一个非常广泛的设计模式是:首先我们编码(相当于卷积操作)出主要的特征信息,然后我们解码出(相当于反卷积操作)与输入维度相同的一个结果图片,这样就会将图片上主要信息的特征,通过反卷积这个“恢复”操作,显示在结果图片上。那么我们反卷积的时候,就是低分辨率的特征表示,upscaling成原始的一个高分辨率的图片)

L(att):作者人为的为每个特征表示矩阵的元素V(i,j)的权重α(i,j),订做了一个标准(label.ground truth):字符C的bounding box用中心点坐标xb,yb,和宽高来表示wb,hb。作者假定了一个截断的高斯分布α(gt) = {α(gt)(i,j)}
在这里插入图片描述
公式中的w和h代表提出的特征映f(x)的宽和高。

而每个特征表示矩阵的元素V(i,j)的权重α(i,j)在每一个时间点t上的分布显然是一个离散分布(每一个时间点有一个不同的权重嘛,肯定是离散的),因此L(att)可以通过衡量这两个分布之间的差异:
在这里插入图片描述
衡量差异的标准有很多,最简单的L1和L2还有相对熵(KL),总之就是计算二者的差距/距离
在这里插入图片描述
作者还列举出了一个衡量差距的公式——WD进而提出了它在2D空间上的改进版。
在这里插入图片描述
在这里插入图片描述

这个我没有仔细看,因为想着反正是计算两种分布间的差距的,实在不行用L1和L2也行。后面最好还是花时间研究一下。这里留个标记!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

另外还有一点没搞懂,为什么L(att)可以用一个截断的正态分布(高斯分布),和我们计算出的元素权重的离散分布的差距来衡量呢?可能是自己哪里遗漏了,可能要研究一下高斯分布的知识了。以后如果懂的话,会在博客上加上自己的理解的。

论文后面的部分就给出了实验的结果之类的东西,就不再记录。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值