苹果手写字体能变粗吗(发布苹果最新AI研究)
苹果手写字体能变粗吗(发布苹果最新AI研究)作为基准,我们评估了之前描述的CNN在CASIA基准测试任务中的实现。虽然这个任务只涵盖了1级汉字字符,但在文献中存在着许多关于字符精度的参考数据。我们使用的是基于CASIA-OLHWDB,DB1.0-1.2的相同设置,将其拆分为训练和测试数据集,产生大约一百万个训练样本。从一个卷积层到下一个卷积层,我们选择了kernel的大小和特征映射的数量,从而得出粗粒度特征。我们通过使用2×2kernel对最大池化层进行子采样。最后一个特征层通常包含大约一千个小特征映射。最后,输出层中每个类有一个节点,例如GB2312-80的1级汉字字符子集大约有3755个字符,当扩展到完整的字符库时,有接近三万个字符。考虑到键盘方法的具有相对复杂性,手写识别可以提高移动设备的用户体验,特别是对于中文输入来说。中文手写识别是一个独特的挑战,这一点主要是由于汉字的数量之多和书写方式之繁杂决定的。不同于基于字母的写作,
原文来源:machinelearning.apple
「机器人圈」编译:嗯~阿童木呀、多啦A亮
由于移动电话、平板电脑和智能手表等可穿戴设备的普及,手写识别比以往任何时候都更加重要。但在这种移动设备上支持中文手写识别所需的大型字符库,构成了独特的挑战。本文描述了我们如何在iPhone、iPad和Apple Watch(在Scribble模式下)上实现实时性能的挑战。我们的识别系统,是基于深度学习,可准确处理多达30000个字符。为了达到可接受的准确度,我们对于数据收集条件,典型字体和训练方案投入了极大的关注。我们发现,在适当的投入情况下,该系统也是能够支持更大的库存的。实验表明,只要我们使用质量足够好、数量足够多的数据,准确度就会随着库存的增加而缓慢降低。
介绍
考虑到键盘方法的具有相对复杂性,手写识别可以提高移动设备的用户体验,特别是对于中文输入来说。中文手写识别是一个独特的挑战,这一点主要是由于汉字的数量之多和书写方式之繁杂决定的。不同于基于字母的写作,通常涉及的也无非是100个符号的顺序,而在中国国家标准GB18030-2005中的一组汉字字符中就收录了27533个条目,并且在中国的其他地方,许多其他的图形字符也还在使用。
典型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万个字符的高精度手写识别系统,只要有足够数量和质量的训练数据,精度会随着库上升而缓慢下降。这对识别未来更大的字符库是很有好处的。