乐趣区

关于ocr:蚂蚁自研移动端-xNNOCR-技术演进与能力开放

作者:张伟辰 (璟铭)

随着手机性能的一直晋升,在手机端进行简单的 AI 计算曾经成为各大厂商的外围倒退方向,在此之上产生了大量的端智能利用。这种端侧 AI 计算的模式,使得大量关涉时效性、老本和隐衷思考的场景实现变成了可能。在这里,咱们以宽泛应用的文字辨认技术(OCR)为例,介绍一下蚂蚁自研挪动端 OCR 技术(xNN-OCR)。

背景介绍

文字辨认技术是计算机视觉畛域中历史悠久、利用宽泛的一个钻研方向,特地是随着深度学习技术的倒退,其能力空间不断扩大。相比云端计算形式,挪动端 OCR 算法可在离线状况下实现图片中文字提取,对于实时性、隐衷爱护和老本要求高的场景,有着很大的利用价值。另一方面,基于深度学习的 OCR 模型越来越简单,通常具备几十 M 的参数量以及几百 GFlops 的计算量,如何在手机无限的计算资源下,实现 OCR 模型运行是一个极具挑战的工作。在支付宝中,咱们联合自研的端侧推理引擎 xNN 和利用算法的深度优化,研发了又小、又快、又准的 xNN-OCR 技术产品,从 2018 年上线到银行卡号辨认场景开始,陆续撑持了数十个外围业务的技术升级。本文咱们将给大家残缺的开展 xNN-OCR 的技术演进和能力凋谢状况。

xNN-OCR 技术演进

一个端侧模型研发须要经验上面的几个流程:训练数据获取和标注、网络结构设计、训练调参、端侧移植和端侧部署,各个环节互相关联也相互影响。在根底算法方面,xNN-OCR 经验了小字库、大字库到基于异构计算的三个模型研发阶段。咱们将从外围的数据、网络设计和模型压缩层面别离介绍最新成绩。

数据生成

数据像弹药一样,很大水平决定了模型的成果,特地是文字辨认场景。中文的组合变幻无穷,很多场景很难获取到足够的理论数据。针对这个问题,咱们摸索了基于 GAN 技术的文字生成技术。在网络设计上,背景提取、文本提取和字体提取的三个编码器别离提取出对应的特色信息,通过字体迁徙和背景交融,实现从源文本内容到指标字体与背景的交融。在训练过程中,除了惯例的生成和反抗损失外,还退出了辨认损失函数监督合成的内容是否正确。同时,咱们为了将已有的实在数据应用起来,在训练链路退出 Cycle-Path,晋升整体数据生成成果。采纳这种形式合成的卡证数据,只采纳本来 10% 的数据量,就能够达到采纳 100% 实在数据的辨认精度。

xNN-OCR 网络架构

有了数据之后,下一步就是模型设计,这里次要介绍 xNN-OCR 算法中次要的文字行检测、文字行辨认和结构化三个局部。

文本检测算法

相比于通用物体检测工作,文本检测工作具备大宽高比和歪斜框的特点。针对这两个问题,传统的 Anchor-based 的检测计划须要配置十分大量的 Anchor,带来计算量的回升。因而咱们设计了一个轻量级的检测网络,其中骨干网络基于 ShuffleNet 的设计思维,采纳多层 Shuffle 构造,网络头部采纳 Pixel-based 的密集预测形式,每个输入图的像素点都会输入类别和框地位回归,通过交融后处理之后失去最终检测后果。为了适应端侧计算环境,通常图输出的分辨率不会过大,带来小指标易失落和长指标边界不准的问题。咱们在训练时采纳 Instance-balancing + OHEM 的形式解决小指标失落问题,在预测时采纳加权交融 NMS 的形式解决边框预测不准的问题,获得了性能和精度的大幅度晋升。

文本辨认算法

文字行检测后,对于内容的辨认通常采纳 CRNN 的构造,在之前工作的根底上,咱们针对骨干网络和网络 head 设计做了进一步的降级。为了失去一个高性能轻量骨干网络,咱们通过 NAS 面向文本辨认场景设计了相应的搜寻策略,搜寻出指标数据集上性价比最高的网络结构参数。对于 CRNN 的构造,咱们发现模型 head 局部计算量十分大,占到整体计算量 50% 以上,这次要是因为 Softmax 分类的 One-hot 的稠密编码方式导致。咱们通过将浓密的 Hamming 编码方式与 CRNN 模型联合,Head 局部耗时相比本来的 Softmax 分类计划降落约 70%。

文字结构化

文字结构化指的是输入文字对应的构造信息,例如卡证场景中将 OCR 算法后果整顿为 Key-Value 的输入格局。传统的结构化办法通常是基于文本地位和辨认后果设计规定,调试较为简单,并且工程上须要针对不同卡证别离开发解决逻辑,部署和保护老本高。咱们从文本行检测动手,提出 Instance 检测算法进行卡证结构化。简略来讲,就是在检测网络头部减少文本框的类别信息进行学习,在结构化时间接将文本框的辨认内容与类别对应起来。这种办法能够节俭辨认运算耗时,简化上线调试部署流程,同时因为模型学习了字段间的隐含关系,晋升了整体的辨认精度。

模型压缩

为了晋升端侧模型研发性能和成果,xNN 在之前基于已有构造进行轻量化的根底上,自研了 xNAS 算法工具,提供模型构造搜寻能力。在支流 NAS 搜寻框架根底上,xNAS 扩大了端侧模型关怀的计算量和硬件耗时等因素,联合超参搜寻 (HPO)、Multi-Trial NAS、One-Shot NAS 等算法,搜寻最优的挪动端模型构造。在 OCR 的场景,咱们重点针对辨认网络应用了 NAS 的计划,通过对每个 Channel 和卷积层数进行搜寻,使模型升高了 70% 的计算量并有 2% 的精度晋升。

在模型压缩方面,剪枝、浮点量化、定点化性能对于推理性能晋升至关重要,特地是定点化能力,可无效升高模型尺寸和运行耗时。为解决在 OCR 场景中定点参数难确定导致的精度问题,xNN 联合 NAS 思维提出 qNAS 算法,无效晋升了定点化精度。咱们对文本检测和辨认模型进行了 qNAS 量化训练,在精度降落不到 1% 的状况下,模型包大小降落至本来 1 / 4 左右,端侧 CPU 上运算时耗降落约 50%。

xNN-OCR 性能精度

在根底模型研发的根底上,咱们将能力逐渐的笼罩到了大多数 OCR 利用场景,包含通用 OCR 辨认以及各种卡证类辨认,在保障较高精度的同时,能够在挪动端计算平台上达到近似实时运算的性能,具体指标如下 (耗时为高通 855 上 CPU 单线程运算耗时):

能力凋谢

xNN-OCR 作为蚂蚁自研的挪动端 OCR 技术,实现了 OCR 辨认像扫码一样顺畅。目前在支付宝端内,曾经宽泛应用在平安风控、证件上传和数字金融等外围利用场景。为了让更多用户和内部业务可能应用到 xNN-OCR,咱们在支付宝端内通过小程序插件的形式提供给内部开发者应用。支付宝外的用户能够用过蚂蚁 mPaaS 产品和阿里云视觉开放平台以离线 SDK 模式接入。

支付宝小程序接入可参考:https://forum.alipay.com/mini-app/post/29301014
支付宝外应用可通过钉钉群(23124039)征询 mPaaS 产品或者拜访阿里云视觉开放平台接入离线 SDK。

为了不便宽广开发者体验,咱们将已有的插件聚合在了“小程序体验核心“,可通过支付宝扫描上面的二维码进行体验。

关注【阿里巴巴挪动技术】,每周 3 篇挪动技术实际 & 干货给你思考!

退出移动版