0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于贝塞尔曲线和RNN的手写识别新方法

nlfO_thejiangme 来源:lp 2019-03-12 09:59 次阅读

手写输入作为与设备的一种重要交互方式一直都受到各个厂商的重视,特别是对于中老年朋友来说,更喜欢通过手写而不是键盘的方式来进行输入。此外,对于一些复杂的语言、交互演示场景、试教等,手写输入扮演着不可或缺的作用。

15年时谷歌曾经推出了支持82种语言的手写输入,并在去年升级为100种语言。但随着机器学习的迅速发展,研究人员也在不断重构着以往的方法为用户带来更快更准的体验。

先前的模型基于人工设计的方法,将输入笔画切分成单个字符并利用对应的解码器进行理解。为了提高准确率和速度,研究人员开发了基于循环神经网络的端到端手写识别系统,通过将输入笔画转为贝塞尔曲线序列进行分析处理,利用RNN得到了准确率更高的识别结果。在这篇文章中,研究人员以拉丁字母为例详解了新型手写字符识别背后的故事。

触点、曲线和循环神经网络

任何手写字符识别系统都需要从识别手指/输入设备的触点。我们在屏幕或者手写板上输入的笔画可以看做是一系列包含时间戳的出触点序列。考虑到输入的设备在尺寸、分辨率上各不相同,研究人员首先对输入的触点坐标进行了归一化处理。而后利用三次贝塞尔曲线来对触点序列进行描述,以便RNN能够更好的理解笔画序列的形状。

贝塞尔曲线在手写识别中有着很长的应用历史,基于贝塞尔曲线可以对输入数据进行更加连续的表达,对于不同的采样率和分辨率更加鲁棒。在贝塞尔曲线表达中,每一条曲线可以被表示为起始点、终止点和两个控制点的多项式,较少的参数精确的表达输入笔画。

这种方法代替了谷歌先前基于分割-解码的方案,先前的方案需要先将输入的笔画分割成单个字符,而后利用解码的方式寻找最有可能的字符。使用贝塞尔曲线表达输入笔画的另一个优点在于它可以更加紧致的表述输入的触点序列,这将便于模型从输入中抽取输入的时序依赖性。上图中显示了利用贝塞尔曲线拟合“go”字符的过程。原始的输入点集包含了186个触点坐标,其中对于字母g可以用图中的黄色、蓝色、粉色和绿色点来表示四条三次贝塞尔曲线的序列,而对于字母o可以用橙色、翠绿色和白色表示的三条贝塞尔曲线序列来描述。在贝塞尔曲线序列表示的输入基础上,我们需要对序列进行解码才能得到所表示的字符。RNN是处理序列输入的有效方式,所以研究人员利用了多层RNN来对序列数据进行解码,并为每一个输入序列生成一个表示其所代表字母可能性的矩阵,从而计算出手写笔画代表的字符。

在实际过程中,研究人员选择了一种双向的准循环神经网络来作为处理模型,这种模型中具有交替的卷积和回归层在理论上具有并行处理的可能性,同时也在网络权重较少的情况下保持模型的能力。由于手写字符识别更多的是在移动设备上进行,小尺寸的模型是保持速度的关键所在。

为了对曲线序列进行解码,识别出对应的字符,循环神经网络会生成一个表示字母可能性的解码矩阵。矩阵的每一列代表了一条贝塞尔曲线,而每一行则代表了对应输入曲线对应的字母可能性。在上图中的解码矩阵中,对于每一列我们可以看到它和先前的序列一起构成了26个字母上对应的概率分布。第一到第三条曲线序列都对应着blank(代表还没有识别出字符,来自于CTC算法),而到了第四条曲线时网络在g字母处得到了较高的概率,这意味着RNN从前面的四条曲线中识别出了字母g,而后面的第八条曲线上我们又可以看到字母o对应的位置有较高的概率。通过序列处理就能将曲线解码为对应的字符。

此外还有两个有趣的现象值得注意,对于字母g的识别,在第四列中y字母(倒数第二个)对应的激活也比较高,这是因为g和y看起来比较类似。而对于o字母的识别,每一条曲线输入后o对应的概率在不断提升,这也和我们的直觉相吻合,o代表的圆圈画的越完整是o的可能性就越大。此外研究人员还引入了有限状态语言模型解码器来对网络的输出进行组合,对于某些常见的字符组合会有更大的可能性输入,这样就可以快速的将解码出的字符转换为单词输出。总结下来新方法一共分为了三个主要步骤,首先将触点序列转为紧凑的贝塞尔曲线,随后利用QRNN进行解码,最后利用字符结果组合出对应的单词。虽然看起来很简单,但这种方法相比原先的方法使得识别的错误率下降了20%-40%!

关于模型训练

模型的训练分为两部分,一部分是基于connectionist temporal classification(CTC)损失对模型进行训练,另一部分是基于贝叶斯优化的解码器调参。训练的数据主要包含了三个数据集,分别是IAM-OnDB在线手写字符数据集,IBM-UB-1英语数据集,以及ICDAR 2013的中文数据集Chinese Isolated Characters,ICFHR2018中的越南语数据集。详细的数据集链接请参看文末参考文献。

设备部署

对于手写识别来说,精确的模型没有速度的保证对于用户来说是无法忍受的。为了减小手写输入的延时,研究人员将模型在tensorflow Lite上进行了实现,通过如量化等一系列手段成功地减小了模型和最终应用安装包的大小。完善的模型加上小巧的实现将让手机更容易看懂我们笔迹。如果想要了解更多细节,请参考原文:

https://arxiv.org/pdf/1902.10525.pdf


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 解码器
    +关注

    关注

    9

    文章

    1073

    浏览量

    40158
  • 神经网络
    +关注

    关注

    42

    文章

    4572

    浏览量

    98748
  • rnn
    rnn
    +关注

    关注

    0

    文章

    67

    浏览量

    6803

原文标题:Google手写字符识别的新进展

文章出处:【微信号:thejiangmen,微信公众号:将门创投】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何停止windows的自动更新方法

    停止windows的自动更新方法:1、点击桌面左下的“开始”按钮。2、点击“设置”3、点击“控制面板”4、在控制面板当中点击“自动更新”5、选择“关闭自动更新”6、点击“确定”
    发表于 10-16 10:30

    基于LabVIEW8.2提取ECG特征点的新方法

    基于LabVIEW8.2提取ECG特征点的新方法1、引言目前的心电图(ECG)还主要依赖于人工读图,而且对相关人员所具备的专业知识水平要求很高。在计算机自动分析识别方面,虽有研究但技术尚不成熟[1
    发表于 11-30 16:52

    运用于matlab中的矩阵求逆的新方法有哪些啊(不是函数inv)

    运用于matlab中的矩阵求逆的新方法有哪些啊或者考虑矩阵的特殊性质,比如稀疏、对称性,有哪些求逆的新方法可以运用啊?求助!
    发表于 01-21 17:10

    测电阻,新方法,不加激励

    测电阻,新方法,不加激励的办法有没有。
    发表于 03-26 10:44

    一种标定陀螺仪的新方法

    一种标定陀螺仪的新方法
    发表于 08-17 12:17

    识别传感器信号的新方法

      本文介绍了一种快速识别传感器信号的新方法,即尝试对模拟信号直接进行数字化处理,用门限电平采样记数法快速、准确地识别传感器发出的信号,目的在于提高计算机控制系统对传感器信号的识别速度
    发表于 10-30 16:00

    求大佬分享按键扫描的新方法

    求大佬分享按键扫描的新方法
    发表于 01-17 06:50

    虚拟环境中软体的包围盒更新方法分析

    讲述了软体采用层次包围盒方法进行碰撞检测时,针对连续变形包围盒树的两类更新方法:静态更新和动态更新,对静态更新方法中的自上而下、自下而上和混合更新方法,动态
    发表于 08-14 08:59 8次下载

    虚拟环境中软体的包围盒更新方法分析

    讲述了软体采用层次包围盒方法进行碰撞检测时,针对连续变形包围盒树的两类更新方法:静态更新和动态更新,对静态更新方法中的自上而下、自下而上和混合更新方法,动态
    发表于 12-25 16:25 13次下载

    S曲线加减速速度控制新方法

    S曲线加减速速度控制新方法,又需要的下来看看
    发表于 05-04 14:37 15次下载

    S曲线加减速控制新方法的研究

    S曲线加减速控制新方法的研究,又需要的下来看看
    发表于 05-04 14:37 20次下载

    AD采集的新方法资料分享

    AD采集的新方法
    发表于 03-23 09:44 10次下载

    USBブート用ドライバ誤認識後のドライバ更新方法

    USBブート用ドライバ誤認識後のドライバ更新方法
    发表于 05-15 19:09 0次下载
    USBブート用ドライバ誤認識後のドライバ更<b class='flag-5'>新方法</b>

    USBブート用ドライバ誤認識後のドライバ更新方法

    USBブート用ドライバ誤認識後のドライバ更新方法
    发表于 07-11 20:20 0次下载
    USBブート用ドライバ誤認識後のドライバ更<b class='flag-5'>新方法</b>

    VLSI系统设计的最新方法

    电子发烧友网站提供《VLSI系统设计的最新方法.pdf》资料免费下载
    发表于 11-20 11:10 0次下载
    VLSI系统设计的最<b class='flag-5'>新方法</b>