「全文」发布苹果最新AI研究,看iPhone如何实时识别手写体汉字

机器人圈 / 2018年05月17日 13:52

互联网+

原文来源:machinelearning.apple

「机器人圈」编译:嗯~阿童木呀、多啦A亮

由于移动电话、平板电脑和智能手表等可穿戴设备的普及,手写识别比以往任何时候都更加重要。但在这种移动设备上支持中文手写识别所需的大型字符库,构成了独特的挑战。本文描述了我们如何在iPhone、iPad和Apple Watch(在Scribble模式下)上实现实时性能的挑战。我们的识别系统,是基于深度学习,可准确处理多达30000个字符。为了达到可接受的准确度,我们对于数据收集条件,典型字体和训练方案投入了极大的关注。我们发现,在适当的投入情况下,该系统也是能够支持更大的库存的。实验表明,只要我们使用质量足够好、数量足够多的数据,准确度就会随着库存的增加而缓慢降低。

介绍

考虑到键盘方法的具有相对复杂性,手写识别可以提高移动设备的用户体验,特别是对于中文输入来说。中文手写识别是一个独特的挑战,这一点主要是由于汉字的数量之多和书写方式之繁杂决定的。不同于基于字母的写作,通常涉及的也无非是100个符号的顺序,而在中国国家标准GB18030-2005中的一组汉字字符中就收录了27533个条目,并且在中国的其他地方,许多其他的图形字符也还在使用。

考虑到计算的难度,我们通常将重点放在有限数量的字符中,也就是大家在日常生活中使用的最具代表性的那部分。因此,标准GB2312-80集中仅收录了6763个条目(其中1级字符3755个,2级字符3008个)。中国科学院自动化研究所建立的流行的CASIA数据库中使用的紧密匹配的字符集共包含7356个条目。 SCUT-COUCH数据库中也具有类似的覆盖范围。

这些集合倾向于反映中国作家整个人群中常用的字符。然而,在个人用户级别层面上,“常用”通常因人而异。大多数人至少需要少数几个被认为是“不经常写”的字符,如一些与他们相关的专有名词等。因此,对于中文手写识别算法的理想应用至少要达到GB18030-2005的水平才可以。

虽然早期识别算法主要依赖于基于个体笔画分析的结构方法,但后来由于实现笔画顺序独立性的需求引起了专家对使用整体形状信息的统计学方法产生了兴趣。这显然使对大型字符库进行识别带来了一定的复杂性,因为在类别越来越多的情况下,对字符进行正确分类就会变得愈加困难。

在像MNIST这样的拉丁文脚本任务中,卷积神经网络(CNN)很快应运而生了。得益于给定的足够数量的训练数据,加上必要的合成样本,CNN无疑取得了最先进的结果,不过,这些研究中的类别数量却是非常少的。

其实,在我们开始研究研究中文汉字的大规模识别以前,CNN似乎就是一个显而易见的选择。但是,这种方法需要将CNN扩展到约30000个字符,同时保持在嵌入设备上的实时性能。本文重点介绍了在满足准确度、字符覆盖率和写作风格鲁棒性期望方面所面临的挑战。

系统配置

我们在此项研究中采用了一种通用的CNN架构,类似于之前在MNIST任务上的手写识别实验中使用的那种结构。整个系统的配置如图1所示。

典型CNN架构(具有两个连续卷积和子采样)

出于性能考虑,输入是一个具有中等分辨率的图像(48x48像素),表示手写汉字的大小。然后将此输入馈送到多个特征提取层,交替卷积和子采样。最后一个特征提取层通过完全连接层输出。

从一个卷积层到下一个卷积层,我们选择了kernel的大小和特征映射的数量,从而得出粗粒度特征。我们通过使用2×2kernel对最大池化层进行子采样。最后一个特征层通常包含大约一千个小特征映射。最后,输出层中每个类有一个节点,例如GB2312-80的1级汉字字符子集大约有3755个字符,当扩展到完整的字符库时,有接近三万个字符。

作为基准,我们评估了之前描述的CNN在CASIA基准测试任务中的实现。虽然这个任务只涵盖了1级汉字字符,但在文献中存在着许多关于字符精度的参考数据。我们使用的是基于CASIA-OLHWDB,DB1.0-1.2的相同设置,将其拆分为训练和测试数据集,产生大约一百万个训练样本。

值得注意的一点是,考虑到我们预先设定的产品重点,我们的目标并不是对系统进行调优,以在CASIA上实现最高的准确度。相反,我们优先考虑的是模型大小、评估速度和用户体验。因此,我们选择了一种较为紧凑的系统,可以实时工作、跨越多种风格,并且对非标准的笔画顺序具有较高的鲁棒性。从而这导致了一种基于图像的识别方法,即使我们仅仅是对在线数据集进行评估。

下表显示了使用图1的CNN的运行结果,其中缩写“Hz-1”是指1级汉字字符(3755个字符),“CR(n)”表示输入法中前n个字符的识别准确度。除了常见的“最可能字”(top-1)和top-10的准确性外,我们也特意提到了top-4的准确性,因为输入法界面一开始会显示4个可能汉字,而top-4的准确性是用户体验提升的重要指标。

表1.在 CASIA在线数据库上的运行结果,3755个字符。标准训练,相关模型大小= 1MB

表1中的数据与《2011ICDAR汉字手写识别比较》和《2013ICDAR汉字手写识别比较》中的在线结果相比,平均获得大约为93%的top-1准确度和98%的top-10准确度。因此,虽然我们的top-10准确度与文献一致,但我们的top-1的准确度略低。但是,这可能是一个较为平衡的结果,而不是一个令人满意的top-4准确度,甚至更重要的是,1 MB的模型尺寸要比《2011ICDAR汉字手写识别比较》和《2013ICDAR汉字手写识别比较》中的任何系统小得多。

表1中的系统仅针对CASIA数据进行训练,不包括任何其他训练数据。我们还对在iOS设备内部收集的额外训练数据感兴趣。这些数据涵盖了更多字体样式,并且包含每个字符更多的训练实例。表2给出了实验结果,在同一个有3775个字符测试集的训练结果如下:

表2. CASIA在线数据库的结果,3755个字符。增强训练,相关模型大小= 15MB

尽管所得到的系统具有更大的内存空间(15 MB),但准确度只是稍微提高(对于前top-4来说仅为2%)。这表明,总体上来说,测试集中出现的大多数的字体样式已经在CASIA训练集中得到很好的覆盖。也表明折叠训练数据不会使准确度有所下降,附加样式也不会对底层模型带来负面影响。

扩展到30000个字符

由于“频繁书写”字符的理想集每个用户都有所不同,所以大多数用户需要大于3755个字符的库。然而,到底选择哪些,这并不简单。用GB2312-80定义的简体中文和Big5、Big5E和CNS 11643-92定义的繁体中文字符涵盖范围很广(从3755到48027汉字字符)。最近的HKSCS-2008,额外增加了4568个字符,甚至更多的GB18030-2000。

我们希望确保用户能够以简体中文和繁体中文,以及姓名、诗歌和其他常见标记,视觉符号和表情符号来写日常通信。我们还希望支持拉丁语脚本,用于特殊的产品或商品名称,而不需要音译。我们遵循Unicode作为现行的国际字符编码标准,因为它几乎涵盖了所有上述标准。(请注意,Unicode 7.0可以在其扩展名B-D中指定超过70000个字符,更多字符被列入考虑)。因此,我们的字符识别系统集中在GB18030-2005、HKSCS-2008、Big5E、核心ASCII字符集,以及一系列视觉符号和表情符号的汉字部分,总共约30000个字符,更好地服务于中国用户。

在选择基础字符库后,对用户实际使用的写作样式进行抽样至关重要。虽然提示书写期望的字体,但仍存在许多区域变化,例如,(i)使用U + 2EBF(艹),或(ii)草书U + 56DB(四)对U + 306E(の)。渲染的字体也可能导致混淆,因为某些用户期望特定字符以特定样式呈现。随着快速的书写倾向于草书风格,它往往会增加歧义,例如 U + 738B(王)与U + 4E94(五)之间。最后,国际化程度的提高有时引发意想不到的冲突:例如,U + 4E8C(二)当用草书书写时,可能与拉丁字符“2”和“Z”冲突。

我们的基本原理是为用户提供从印刷到草书到无约束书写的全部可能的输入。为了覆盖尽可能多的变体,我们向中国几个地区的作家寻求数据。我们惊讶地发现,大多数用户从未见过很多罕见的字体。这种不熟悉会导致我们需要考虑比如下笔犹豫、笔顺错误和其他字体扭曲的情形。我们收集了来自不同年龄组别、性别以及各种教育背景的用户数据。所得到的手写数据在许多方面是独一无二的:包括数以千计的用户,用手指,而不是手写笔,在iOS设备上,存在小批量的数据。iOS设备的一个优点是,它的采样会产生非常清晰的手写信号。

我们发现了各种各样的写作风格。图2-4显示了“花”字符U + 82B1(花)的一些示例,以印刷、草书和无约束的形式展示。

字符U + 82B1(花)的印刷变体

字符U + 82B1(花)的草书变体

字符U + 82B1(花)的无约束形式变体

事实上,在日常生活中,用户经常快速而不受约束地书写,可能会导致草书字体外观非常不同。相反,有时也会让系统混淆成其他字符。图5-7显示了我们在数据中观察到的一些具体例子。请注意,具有足够的训练数据以区分草书变化尤为重要,如图7所示。

U+7684 (的)的变体

U+4EE5 (以)的变体

具有相似形状的 U+738 (王) 和 U+4E94 (五)

根据前面讨论的指导原则,我们可以收集数千万个字符的实例用于我们的训练数据。将上一节中的3755个字符系统与表3中在同一测试集上显示的结果进行比较,将可识别字符数从3,755增加到约30,000。

表3 30000个字符在CASIA在线数据库的结果

请注意,模型大小保持不变,因为表2的系统仅限于“Hz-1”字符集,但是是相同的。准确度略有下降,这是预料到的,因为覆盖范围大大增加了造成了前面提到的额外混淆,例如“二”与“Z”。

比较表1-3,你将看到乘以10倍的覆盖率不会产生10倍的误差,或10倍的存储空间。事实上,随着模型尺寸的增加,错误的数量增加得慢得多。因此,构建一个涵盖3万个字符,而不是3755个字符的高精度汉字识别是可行和实用的。

为了了解系统在整个30000个字符中的运行情况,我们还对许多不同测试集进行了评估,这些测试集支持所有字体的字符。表4列出了平均测试结果。

表4. 不同字体的30000个字符在多个内部测试集的平均结果

当然,表3-4中的结果是不可直接比较的,因为它们属于不同的测试集。尽管如此,结果显示,在整个字符库中,top-1和top-4的精度相当。这是训练方案基本平衡的结果。

讨论

由于表意文字小组(ideographic rapporteur group,IRG)不断提出来自各种来源的新增内容,Unicode中的CJK字符集(目前约为75000)未来可能会增加。无可否认,这些字符变体将是罕见的(例如,用于历史名或诗歌)。不过,对于每个名字都含有这些罕见字符的人来说,这是非常有意思的。

那么,我们期望在未来如何处理好更大的字符库呢?本文讨论的实验支持基于用不同数量的训练数据训练和测试错误率的学习曲线。因此,我们可以推断渐近值,通过更多的训练数据我们的精度是多少,以及如何转变更多的字符来识别。

例如,考虑到表1和表3之间的10倍更大的库和相应的(少于)2%的精度下降,我们可以推算出100,000个字符的库和相应增加的训练数据, top-1精度达84%左右这将成为现实,top-10精度达到97%左右(具有相同类型的架构)。

总而言之,我们在嵌入式设备上构建覆盖3万个字符的高精度手写识别系统,只要有足够数量和质量的训练数据,精度会随着库上升而缓慢下降。这对识别未来更大的字符库是很有好处的。返回搜狐,查看更多

责任编辑:

1.环球科技网遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.环球科技网的原创文章,请转载时务必注明文章作者和"来源:环球科技网",不尊重原创的行为环球科技网或将追究责任;3.作者投稿可能会经环球科技网编辑修改或补充。