[论文阅读] Drawing and Recognizing Chinese Characters with Recurrent Neural Network

Pre

title: Drawing and Recognizing Chinese Characters with Recurrent Neural Network
source: TPAMI 2018
paper: https://arxiv.org/abs/1606.06539
code: https://github.com/YifeiY/hanzi_recognition
ref: https://blog.csdn.net/qq_35337126/article/details/83787766

关键词: RNN, discriminative model, generative model, handwriting trajectory
阅读理由: 对笔迹序列点的处理,为何标准化,GMM

Motivation

  1. 先前的研究主要集中在识别手写的汉字上,但理解一种语言还有另一个具有挑战性和有趣的任务:教机器书写
  2. 先前的方法通常用CNN,要求先将在线手写轨迹转换为图像的表示

Idea

聚焦于在线手写汉字,将循环神经网络(RNN)用于汉字识别以及手写绘制(生成)。

Background

在人类智能的发展过程中,阅读与书写技能是相辅相成的。为了实现机器智能,将这两种任务置于统一框架中处理是非常有趣的。

据记载的汉字数量超过十万之多。大多数人能够很好地识别其中的大多数字符。然而,在当今社会,由于过度依赖键盘或触摸屏输入方法,人们正确书写汉字的难度越来越大。与阅读相比,汉字书写技能正逐渐成为被遗忘或缺失的技能。

手写汉字自动识别主要分为两大类方法:在线和离线方法。

  • online:在线识别,记录和分析笔尖运动轨迹,识别语言信息
  • offline:离线识别,对字符(灰度或二进制)图像进行分析和分类

本文是第一项使用RNN进行端到端在线手写汉字的任务。

DCGAN可以生成逼真的汉字。然而,生成的字符是离线的图像,忽略了书写动态(时间顺序和轨迹)。

Method(Model)

REPRESENTATION FOR ONLINE HANDWRITTEN CHINESE CHARACTER

图1 三个在线手写中文汉字的插图。每种颜色代表一笔,数字表示书写顺序。本文的目的是在基于循环神经网络的单一框架下自动识别和绘制(生成)真实和草书的汉字。

与离线手写汉字基于静态图像的表示不同,对于在线手写汉字而言,能够在书写过程中收集到丰富的动态(空间和时间)信息,这些信息可以用一个可变长度的序列来表示:

\[[[x_1, y_1, s_1], [x_2, y_2, s_2], ..., [x_n, y_n, s_n]], \tag{1} \]

其中x_i和y_i分别是笔划的运动xy坐标,s_i表示点i属于第几画。如图1所示,汉字通常包含多个笔划,每个笔划由许多点组成。除了字形信息之外,在线序列数据还保留了书写的顺序,这在静态图像中很难恢复。因此,为了捕获动态信息以提高识别的准确性并改善生成汉字的自然度,直接使用原始的连续数据而不是将其转换为类似于图像的表现形式。

图2 (a) 去除多余点。(b) 坐标归一化。(c) 预处理前的字符。(d) 预处理后的字符。

Removing Redundant Points 对于笔画的中间点(xi,yi,si),假设 \(si = si-1 = si+1\),有两条规则关于是否去掉该点:

  1. 离前一点太近
  2. 离点i−1和i+1的连线太近(几乎三点同线)

公式2,公式3

两条规则对应上面的公式2,3,其中公式3基于余弦相似性(公式结果为1表明三点在同一条线上),\(\Delta x_i = x_{i+1} - x_i \And \Delta y_i = y_{i+1} - y_i\)

Coordinate Normalization 不同设备或不同人书写时字符捕捉的坐标值的大小或绝对数值不同,必须将xy坐标规范化到一个标准区间内。如图2(b)所示,考虑一条连接两个点(x1,y1),(x2,y2)的直线L,该直线在x轴、y轴的投影分别为:

公式4

len(L)表示L的长度,\(\Omega\)表示同一笔画内任意两相邻点的所有直线集合,可以估计出将所有线投影到x,y轴的均值:

公式5

看不懂公式4,感觉可以理解成两个点的中点乘上一个相当于权重的线段长度,然后公式5算出所有点的均值点?总之可以继续算出某条线段的方差,和总体的标准差:

公式6,7

最终对坐标进行标准化,这里没有估计y轴的标准差,y坐标也通过δx进行标准化。这是为了保持字符原有高宽比以及各笔画的方向性:

公式8

Illustration 图2(c),(d)分别展示了预处理前后的字符示例。结果表明,字符形状得到了很好的保留,冗余的点已经被去除。原始字符包含96个点,而处理后的字符仅有44个点。如图2(d)所示,在新坐标系中,(0, 0)的位置位于字符的中央部分,xy轴上的偏差也被规范化。

DISCRIMINATIVE MODEL: END-TO-END RECOGNITION WITH RECURRENT NEURAL NETWORK

公式9 每条直线的表示,其中 \(\Delta x_i = x_{i+1} - x_i, \Delta y_i = y_{i+1} - y_i,\; and\quad \mathbb{I}(\cdot)=1\)

在每个L_i中,前两项是线的起始位置,而第3,4项表示笔的运动方向,最后两项则表明笔的状态,[1,0]落笔而[0,1]提笔。利用这种表示方法,等式(1)的字符被转换成一个新的序列\([L_1, L_2, ..., L_{n-1}]\)。为了简化后续各节中使用的符号,使用\([x_1, x_2, ..., x_k]\)来泛指一个一般序列,每一个x_i实际上是等式(9)所示的六维向量。

介绍RNN、LSTM、GRU,略

Stacked and Bidirectional RNN \([x_1, x_2, ..., x_k]\)正反输入图3的模型,得到\([h_1, h_2, ..., h_k]\)\([h^\prime_1, h^\prime_2, ..., h^\prime_k]\),通过公式21得到最终特征,然后过全连接和softmax去分类。

图3 用于端到端识别的堆叠双向RNN

公式21

Regularization and Data Augmentation 深度神经网络成功的另一个关键因素是大量的训练数据,研究表明dropout可以被视为一种数据增强方法。本文应用dropout,称之为顺序dropout(sequential dropout)。

图4 输入序列上的顺序dropout数据增强示例。第一列显示原始字符,其余列为随机丢弃后产生的字符,概率为0.3。

如图4所示,给定一个序列,可以通过随机移除原序列中某些项而生成多个子序列,每次移除的概率是已知的。这一做法对于某些分布的数据而言更加合理,并且在我们数据上表现得很好。为了使其有效,保留的子序列必须仍然包含足够的信息进行分类,如图4所示。该方法是简单且普遍适用,不需要任何领域特定知识(如笔画/段检测)来识别要移除的片段。

GENERATIVE MODEL: AUTOMATIC DRAWING RECOGNIZABLE CHINESE CHARACTERS

给定一个输入序列x及其对应的字符类别y,判别模型(如第三节所述)的目的是学习p(y|x)。另一方面,生成模型的目的在于学习p(x)或p(x|y)(条件生成模型)。

\[[[d_1, s_1], [d_2, s_2], ..., [d_k, s_k]], \tag{23} \]

换了一种表示方式(公式23),其中\(d_i = [\Delta x_i, \Delta y_i] \in \mathbb{R}^2\),称作行笔方向(pen-direction) 。而s(pen-state,这里的s跟公式1的不同,但可由公式1的表示转换得来)是三种书写状态:

公式24

这里\(d_i\)是相对位置表示,当前点与上一个点的偏差值,可以理解成一条线段。配合s的三种状态分别是这条线段要写下(pen-down)、两点没连线,该线段忽略(pen-up)、字符结束

Conditional Generative RNN Model 考虑到中文汉字数量众多,使用字符嵌入,它是一个矩阵\(E \in \mathbb{R}^{d×N}\),其中N是字符类别数,d是嵌入维度,其中的每一列代表某类字符的嵌入向量。后面用\(c \in \mathbb{R}^d\)表示一个字符的嵌入

先前实验表明,GRU和LSTM的表现相似,但GRU的计算更为高效,因此基于GRUs构建生成式RNN模型。

公式25-31

字符嵌入c作为生成条件,动态的书写信息通过RNN的隐藏状态进行编码,这些隐藏状态自动更新并由GRU(记住或忘记)根据门控策略控制。在每个时间步,基于新的隐藏状态产生输出\(o_t\),如公式31所示。从该输出中,应推断出下一个笔方向和笔状态以继续自动绘制的任务。

GMM Modeling of Pen-Direction: From \(o_t\) To \(d_{t+1}\) 采用高斯混合模型(GMM)来处理笔画方向(也是作者根据其他论文采用的)。

假设用的GMM有M个成分(component),通过\(o_t\)可以得到\(5\times M\)维的矢量:

公式32-37

公式32中每组5个矢量都有下标t+1,但省略了。这5个矢量分别表示权重(和为1)、两个均值、两个标准差。下一个行笔方向\(d_{t+1} = [\Delta x_{t+1}, \Delta y_{t+1}]\)的概率密度\(P_d(d_{t+1})\)可定义为:

公式38-39

本研究假设每个混合成分的X轴和Y轴是独立的,这简化了模型并保持了与完全双变量高斯模型(full bivariate Gaussian model)相似的性能。所以通过两组正态分布来预测两个轴。

SoftMax Modeling of Pen-State: From \(o_t\) To \(s_{t+1}\)

公式40-42

\(o_t\)拿去过线性层,然后分类

Training of the Generative RNN Model

图5 在RNN中时间步t的示例:(a)训练过程的说明,(b)绘制/生成过程的说明。

公式43

将概率密度函数负对数作为损失,但直接最小化这个损失函数会导致性能不佳,因为三种笔状态在训练过程中概率不等。pen-down过于频繁,通常主导了损失,尤其是在与end-of-char状态相比较时,后者每个字符才会出现一次。为了减轻这种不平衡问题的影响,使用了一个基于成本的策略来定义一个新的损失函数:

公式44

其中\([w_1, w_2, w_3] = [1,5,100]\)是权重,这里log直接换到内层去了,值应该不等,但可能不影响优化?

Automatic Drawing of Recognizable Characters 描述了图5b的生成过程

Experiment

RECOGNIZING CHINESE CHARACTERS

对应《DISCRIMINATIVE MODEL: END-TO-END RECOGNITION WITH RECURRENT NEURAL NETWORK》

Settings

每个字符通过公式1所示的序列来表示

超参数分别为\(T_{dist} = 0.01 × \max{H, W},\; T_{cos} = 0.99\)

如图3所示,为了提高泛化性能,对均值池化层和全连接层使用了概率为0.1的dropout操作,输入序列中也应用了dropout(概率为0.3)用于数据增强

批大小为1000,学习率为0.001,当训练损失或准确性停滞时,再减小至原值的30%。每经过一个epoch后,我们对训练数据进行洗牌以生成不同的批次。

Theano和NVIDIA Titan-X 12G GPU

Dataset

ICDAR2013,OLHWDB1.0和OLHWDB1.1的中文手写数据集(CASIA数据集)。总共有2,693,183个样本用于训练,以及224,590个样本用于测试。训练数据与测试数据分别由不同的书写者提供。字符类别总数为3755(GB2312-80一级集合)。

经过预处理后,每个字符序列的平均长度约为50个单位。

Results

表I 在线手写汉字识别中不同网络架构的比较。

表III ICDAR-2013竞赛数据库在线手写汉字识别结果。

LSTM和GRU在分类任务上的预测准确度相当,通常LSTM的训练准确率更高,但不一定测试准确率也高。

DRAWING CHINESE CHARACTERS

对应《GENERATIVE MODEL: AUTOMATIC DRAWING RECOGNIZABLE CHINESE CHARACTERS》

Settings

超参数分别为\(T_{dist} = 0.05 × \max{H, W},\; T_{cos} = 0.9\),字符嵌入的维度为500,GMM的混合成分数为30。

也应用了dropout(概率为0.3),批大小为500,学习率为0.001。

利用Theano和NVIDIA Titan-X 12G GPU,生成RNN模型的训练大约需要50小时才能收敛。

Dataset

还是OLHWDB1.0和OLHWDB1.1。

经过预处理后,每个字符序列的平均长度约为27个单位,比前一个实验短,因为去掉更多点,防止噪音笔画影响训练。

Results

Illustration of the Training Process

图6 训练过程不同时期单个特定字符的生成/绘图说明。

为了监控训练进度,图6展示了在每个epoch生成的字符(属于3755个类别的第一个字符)。在前三个epoch内,生成的字符看起来像是不同字符的随机混合(组合),这些字符是无法辨认的。直到第10个epoch,这个特定字符才出现了一些初步结构。此后,随着训练过程的进行,生成的字符变得越来越清晰。在第50个epoch,所有生成的字符都可以被轻松识别。

此外,所有生成的字符都是连笔字,不同的书写风格在这些字符中都有所体现。这验证了训练过程的有效性。实验中的另一个发现是,对于RNN,Adam优化算法相比传统的带有动量的随机梯度下降(SGD)表现更好。使用Adam算法,模型在大约60个epoch内就收敛了。

Property of Character Embedding Matrix

图7 字符嵌入矩阵及从其中计算出的最近邻(部分代表性字符)。

在图7中展示了字符嵌入矩阵(500×3755),具有相似书写轨迹(或类似形状)的字符应该在嵌入空间中彼此接近。字符关系是自动从每个字符的手写相似性中学习的,验证了字符嵌入和生成式RNN模型的联合训练的有效性

Illustration of Automatically Generated Characters

图8 自动生成的不同字符。每行代表一类特定的字符。为了更清楚地展示,每一条直线都用一种颜色(随机选取)表示。

所有生成的字符都是全新的,与训练数据中的不同。但只控制了字符类型,没有控制风格。同时如图8所示,最后几行中的字符缺少一些笔划,有一定不足。

Quality Analysis: Recognizable or Not?

图9 3,755类自动生成字符的分类准确性。(a)图展示了整体分类结果;(b)图展示了识别率较低的字符;而(c)图则展示了识别率达到100%的字符。

为了进一步分析生成的字符质量,使用前面的判别RNN模型来检查生成字符是否可识别。每个类别都随机生成了100个字符,总共产生了375,500个测试样本,将这些样本输入到判别RNN模型中进行评估。图9(a)展示了生成字符在不同类别上的分类准确率。

如图9(a)所示,某些特定类别的识别率显著低于50%。图9(b)中展示了错误分类的字符通常来自易混淆的类别,即形状略有微妙差异的汉字。在这种情况下,生成RNN模型无法捕捉到准确绘制特定汉字所需的重要但细微的细节。如图9(c)所示,对于与其他类别没有混淆的字符类别,生成的字符可以轻松以100%的精度被分类。

一种解决方案是修改损失函数,以便强调对这些容易混淆的对类进行训练。另一种策略是将注意力机制和记忆机制与生成RNN模型结合起来,使模型在书写过程中能够动态地记住并专注于特定汉字的敏感区域。

Conclusion

本文研究了两个紧密耦合的任务:自动阅读和书写(automatically reading and writing)。

高字符识别精度对文本识别至关重要,因此判别式RNN模型可望与CTC结合。另一个潜在的研究方向是将CNN强大的图像处理能力与RNN的序列处理能力结合起来,以进一步提高字符识别精度。

联合训练的条件生成RNN模型结合了字符嵌入,使得模型能够正确地书写数千个不同的汉字。高斯混合模型(GMM)被用来建模笔划方向,确保了模型在生成不同书法风格时的多样性。基于RNN的生成模型可以根据三种离散的笔画状态自动决定何时以及如何完成绘制过程。

另一个重要的未来拓展是对生成RNN模型进行条件化,使其基于一张静态图像(结合卷积),然后自动根据静态图像恢复动态书写轨迹(顺序),这是一个难题,但在实际应用中具有巨大的价值。

Critique

本来没打算认真读完,但写得确实不错。章节组织与常看的那些会议论文不同,但也很清晰,公式推导都有一步步讲解,还挺友好的。贡献似乎在于第一个直接用RNN生成笔迹序列点。

posted @ 2024-07-07 17:07  NoNoe  阅读(41)  评论(0编辑  收藏  举报