作者:张伟辰(璟铭)

随着手机性能的不断提升,在手机端进行复杂的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算法中主要的文字行检测、文字行识别和结构化三个部分。

1文本检测算法

相比于通用物体检测任务,文本检测任务具有大宽高比和倾斜框的特点。针对这两个问题,传统的Anchor-based的检测方案需要配置非常大量的Anchor,带来计算量的上升。因此我们设计了一个轻量级的检测网络,其中骨干网络基于ShuffleNet的设计思想,采用多层Shuffle结构,网络头部采用Pixel-based的密集预测方式,每个输出图的像素点都会输出类别和框位置回归,经过融合后处理之后得到最终检测结果。为了适应端侧计算环境,通常图输入的分辨率不会过大,带来小目标易丢失和长目标边界不准的问题。我们在训练时采用Instance-balancing + OHEM的方式解决小目标丢失问题,在预测时采用加权融合NMS的方式解决边框预测不准的问题,取得了性能和精度的大幅度提升。

2文本识别算法

文字行检测后,对于内容的识别通常采用CRNN的结构,在之前工作的基础上,我们针对骨干网络和网络head设计做了进一步的升级。为了得到一个高性能轻量骨干网络,我们通过NAS面向文本识别场景设计了相应的搜索策略,搜索出目标数据集上性价比最高的网络结构参数。对于CRNN的结构,我们发现模型head部分计算量非常大,占到整体计算量50%以上,这主要是由于Softmax分类的One-hot的稀疏编码方式导致。我们通过将稠密的Hamming编码方式与CRNN模型结合,Head部分耗时相比原本的Softmax分类方案下降约70%。

3文字结构化

文字结构化指的是输出文字对应的结构信息,例如卡证场景中将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。

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

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

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

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

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

蚂蚁自研移动端 xNN-OCR 技术演进与能力开放相关推荐

  1. 阿里移动|《蚂蚁金服移动端高可用技术实践》

    摘要:对于移动技术而言,2017年是继往开来之年.一方面是移动技术领域进入深水区,另一方面移动技术边界和内涵被不断重塑.阿里巴巴希望进一步推动移动应用研发事实标准落地,从而赋能整个行业开发者.在201 ...

  2. QoE驱动的端到端视频直播技术演进

    从ROI视频编码.网络自适应,到海量多媒体存储,以及高可用CDN网络架构,这些关键技术决定了视频服务的用户体验.京东云蛰伏多年,在5G和AI时代蓄势待发,剑指视频云价值链上的新领导者. 8月23日·北 ...

  3. OCR技术在爱奇艺的应用实践及演进

    随着人工智能的热度上升,图像识别这一细分领域也渐渐被人们所关注.在很多公司的业务中,有很多需要对图片进行识别的需求.为了帮助业务实现对这些图片.文档的识别和结构化,业界进行了一系列的实践和探索,最终确 ...

  4. 宜信OCR技术探索与实践​|直播速记

    宜信OCR技术探索与实践|宜信技术沙龙第12期 导读:随着人工智能的热度上升,图像识别这一分领域也渐渐被人们所关注.在公司的业务中,有很多扫描.拍照单据.凭证等进行识别的需求.为了帮助业务实现这些图片 ...

  5. ocr移动端车牌识别技术特点

    目前很多地方都会用到移动端前端车牌识别OCR技术,停车场出入口.路边停车.汽车保养维修.尤其是移动警务等,无论是手机的,还是PDA的,甚至的IOS的苹果手机都能用,通过车牌识别这个技术,实现快速对车辆 ...

  6. 安卓Android、iOS移动端车牌识别OCR技术原理

    核心内容:移动端车牌识别.安卓端车牌识别.Android车牌识别.iOS端车牌识别.OCR识别技术 一.安卓Android.iOS移动端车牌识别OCR技术识别流程 安卓Android.iOS移动端车牌 ...

  7. VIN码识别又叫车架号识别,OCR技术深度应用

    什么叫VIN码? VIN码又叫车架号也叫车辆识别代码,是制造厂为了识别而给一辆车指定的一组编号.由于VIN码的数字和英文字母是不断切换,共有十七个数字及字母组成的编码. 现在,通过自主研发的OCR技术 ...

  8. 腾讯数平精准推荐 | OCR技术之识别篇

    腾讯数平精准推荐(Tencent-DPPR)团队一直致力于实时精准推荐.海量大数据挖掘等领域的技术研发与落地. 在社交广告推荐领域,团队自研的深度在线点击率预估算法及全流程实时推荐系统,持续多年提升社 ...

  9. 独家揭秘阿里自研飞天操作系统洛神平台如何支撑起 2684 亿全球大促!| 问底中国 IT 技术演进...

    作者 | 宗志刚 阿里云资深技术专家 责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 2019年双11当天总成交额2684亿,交易峰值54.4万笔/秒,成交量背后是单日970PB的数据处 ...

最新文章

  1. ASP.NETCore学习记录(一)
  2. python中匿名函数的作用_Python 中的匿名函数,你会用吗
  3. MySQL全文索引应用简明教程
  4. Kafka学习 之 第一个例子(一)
  5. i 智慧 | 深度广度并举,AWS容器服务再推利器!
  6. MXNet的Model API
  7. 我被喷了:这样写代码是多此一举?
  8. HDU4474_Yet Another Multiple Problem
  9. 30岁学编程python_我30岁了,转行学编程可以吗? 排除法告诉你答案
  10. andrew ng 机器学习笔记_所有笔记目录 | 数据分析 | 机器学习 | 深度学习等
  11. 【Java】Java-XML解析利器-SAX-高性能-易用
  12. SVN下载及语言包安装
  13. 各代iphone尺寸_Iphone 历代 参数
  14. PAT 甲级 1118 Birds in Forest (25 分)
  15. centos7 yum 配置阿里云镜像
  16. Oracle-11:联合查询
  17. 思科—三层交换机实现不同vlan的PC互通
  18. Matlab矩阵论矩阵分析计算实现(四)求史密斯标准型和约当标准型
  19. 键盘return按键及事件
  20. hibernate 学习 并且与spring 整合

热门文章

  1. 一元二次不等式和一元三次不等式解法的思考
  2. 神仙传服务器修改,神仙传
  3. 你的代码值多少钱 ?你算过吗
  4. 机器学习驱动的语言测试
  5. 阵列相机-光场相机-AI双目测温相机-红外AI识别相机
  6. (转载)你好,C++(6)2.3 C++兵器谱
  7. 不同坐标系下角速度_悠悠球的物理学原理(下)
  8. python 英语翻译_python 中英文翻译
  9. 教育行业如何做好数据治理?
  10. docker:安装tomcat