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

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

3天内不再提示

基于本地TensorFlow Lite和AI云服务的文档矫正功能

Tensorflowers 来源:YXQ 2019-06-14 11:35 次阅读

什么是文档图片弯曲矫正?

用户有时候会有这种需求痛点:看书时特别喜欢其中的某些段落,想摘抄下来,但发现篇幅很长,用手机拍摄的话书本又不能完全铺平。

手持一份装订过的合同,着急发给老板,却没有工具拆开装订钉。拍出来的图里页面是弯曲的,里边的文字看起来很费劲...

你也不可能随时随地带着扫描仪。那该怎么办呢?市面上大部分 APP 是把视角歪掉的图片矫正为正视图,如下图:

在很多场合确实可以帮助到用户。但是它只是解决了透视变化的问题。如果是弯曲的页面,还是不能很好的矫正。

WPS 对这个需求很上心,希望可以让用户做到随手一拍就获得完美铺平的电子文档。历经几个月的开发周期,结合了本地 AI 和云端 AI 能力打造了一个功能:文档矫正。这个贴心的功能能让刚才那些棘手的问题轻松被稿定。直接看效果吧。还是刚才那张拍摄的书本照片,经过文档弯曲矫正后。就可以立刻得到铺平的图片,甚至连页面区域都给你自动裁剪好了,背景干扰全无,完美!

这个弯曲矫正对于 OCR 识别也有很大的帮助,因为很多 OCR 识别对于文本弯曲的情况下识别会有很多乱码,经过弯曲矫正变成规规整整的文本行后,OCR 识别准确度会大大提高。

以上就是我们新推出的这个功能的应用场景和使用效果。那么下面我们就来聊一聊为什么这个功能背后是本地 AI 和云端 AI 的结合。

云+端 AI ,共建文档矫正功能

目前其他第三方以及我们 WPS 里上一个版本的文档矫正都是通过检测出文档的边缘或者四个角,然后施行透视变化进行矫正的。其中的计算量虽然也会比较大,但现在的移动端计算能力还能够覆盖,实时检测预览起来也还比较流畅。然而弯曲矫正背后的计算量非常大,我们不得不将其部署在计算集群上,通过网络传输压缩和加密的原图以及相应的参数到服务器上进行计算,然后将计算结果传输回用户的手机端再呈现。这个过程原本也可以设计成全部在云端计算,那样我们的工作量就会少很多,但是为了获得更好的用户体验,能够让用户直观的看到实时检测的文档区域,我们将文档检测的部分放在了本地。在用户开启相机进行预览时我们的深度学习模型就在后台进行运行,逐帧去检测文档区域,并将检测结果渲染在屏幕上。为了实现准确稳定的文档区域检测,我们将传统的边缘检测算法升级为深度学习模型,随着模型的不断迭代,虽然识别效果越来越好,但模型体积也越来越大,计算量也越来越大。为了兼顾中低端手机的运算能力,我们在网络模型设计时做了相应的优化,参考 SqueezeNet 的结构设计了一个 7 层的卷积神经网络替代最初采用的更深的开源预训练网络,虽然网络变浅导致准确度上稍微有些损失,但速度有大幅提升,内存占用也减少不少,这使得低端手机也能达到每秒数帧的速度,而高端手机则可以达到每秒 30 帧满帧的速度。同时为了弥补准确度损失带来的检测不准而引起的抖动,我们在网络外边增加了滤波器,让检测结果在视觉上看起来更稳定。

整套网络和代码完成后,我们发现其实 SDK 包的体积已经有一些大了,除了对代码和依赖库的精简,我们还需要对推理框架进行精简。我们需要一套速度快而又轻量级的移动端推理框架。我们当时做了很多选择和尝试,最后选择了 Tensorflow Lite。Tensorflow Lite 是 Google 出品的对移动端非常友好的深度学习框架,其架构设计和训练部署思路都和 Tensorflow 非常相像,同时又非常小巧,容易上手。我们直接在 PC 架构的训练机器上训练好模型,经过 Google 提供的工具 TOCO 进行转化,即可获得一个体积很小而且速度很快的手机端模型,而运行的效果和准确度却没有打多少折扣。从模型训练到移动端部署的流程非常通畅,这让我们非常喜欢 Tensorflow Lite 这个框架,毕竟我们可以减少工程部署的时间,而把精力更多放在算法优化和模型优化上。

除了获取文档区域,为了实现弯曲矫正,我们还设计了一整套复杂的算法系统,经过评估,我们确定很难在移动端进行那样高强度的计算,于是我们选择了计算能力更强的云服务方案。核心算法部署在计算集群上可以获得更充沛的算力,同时也为该业务算法的优化和升级预留了比较大的空间,毕竟现在只是第一版,以后我们还会对其进行持续升级和优化。

目前我们的整体设计框架是将本地相应的 AI 能力封装成一个 SDK 提供给业务方的客户端,客户端通过 API 接口调用 SDK 里相应的能力,数据和参数也是通过 API 接口和 SDK 进行交互,同时 SDK 也接管了访问云服务器的能力,统一的进行管理,在保障了信息安全的同时也有相应的容错和异常处理能力。这套系统的流程图如下所示:

云和端的选择以及未来的期许

因为需求的特殊性和不同算法的复杂程度以及平台的计算能力评估,我们因地适宜的选择了让一部分计算在本地利用 TensorFlow Lite 进行,一部分计算放在云端计算集群上进行。相信随着手机算力不断的提升,以后也许单纯依靠端上的算力就能完成如此复杂程度的计算。那一天应该很快到来。当然,随着 5G 的普及,也许以后云端的计算借助更高带宽极快速的网络传输能力也能够体验到端上的体验。到时候普通用户再也感受不到云和端的区别,那将会给更复杂更强大的算法更多落地的机会。我们很期待这些条件更快满足,我们也会努力带给大家更多强大好用的算法功能。

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

    关注

    87

    文章

    30919

    浏览量

    269170
  • 云服务
    +关注

    关注

    0

    文章

    820

    浏览量

    38924
  • TensorFlow Lite
    +关注

    关注

    0

    文章

    26

    浏览量

    634

原文标题:金山WPS:基于本地TensorFlow Lite和AI云服务的文档矫正功能

文章出处:【微信号:tensorflowers,微信公众号:Tensorflowers】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    在阿里Kubernetes容器服务上打造TensorFlow实验室

    的定义和训练的收敛趋势。总结我们可以利用阿里Kubernetes容器服务,轻松的搭建在云端搭建TensorFlow的环境,运行深度学习的实验室,并且利用TensorBoard追踪训练效果。欢迎大家使用阿里
    发表于 05-10 10:24

    使用RTL8722DM运行 TensorFlow Lite Hello World 示例

    开发人员可以轻松构建和部署学习驱动的应用程序。TensorFlow Lite而管理微控制器的 TensorFlow Lite (TFL) 专注于机器电脑数据记忆的微控制器和其他设备上运
    发表于 06-21 15:48

    如何将TensorFlow Lite应用程序移植到Arm Cortex-M55系统上

    Fast Model系统上运行TensorFlow Lite应用程序ARM Fast Model是ARM CPU和系统IP的快速、功能精确的程序员视图模型。在任何硬件可用之前,您就可以使用Fast
    发表于 03-31 10:40

    tensorflow lite上的未定义引用是怎么回事?

    我在 LPC55S69 上构建了一个 cifar-10 tensorflow lite 项目,在那里我得到了很多与 TensorFlow lite 相关的未定义引用。在附件里(请用no
    发表于 04-04 08:09

    是什么导致TensorFlow Lite的NNAPI Delegate被弃用?

    Delegate 和 ONNX Runtime 的 NNAPI Execution Provider 已弃用,未来将被移除。要利用 ML 模型加速,请改用 VX Delegate。是什么导致 TensorFlow Lite 的 NNAPI Delegate 被弃用?是否
    发表于 04-07 10:25

    tensorflow-lite可以通过NPU加速运行吗?

    你能帮我确定构建/安装所需的最小包,以便 tensorflow-lite 可以通过 NPU 加速运行吗?我知道 NPX 将它捆绑为 packagegroup-imx-ml - 但它包含的内容远远
    发表于 04-14 08:17

    如何使用meta-imx层中提供的tensorflow-lite编译图像?

    我们正在尝试使用 meta-imx 层中提供的 tensorflow-lite 编译图像。我们没有任何 自定义更改/bbappends (Highlight to read)sources
    发表于 05-29 06:55

    如何使用pycoral、tensorflow-lite和edgetpu构建核心最小图像?

    如果您能告诉我们如何使用 pycoral、tensorflow-lite 和 edgetpu 构建核心最小图像,我们将不胜感激。
    发表于 06-05 10:53

    TensorFlow Lite 微控制器

    TensorFlow Lite for Microcontrollers 是 TensorFlow Lite 的一个实验性移植版本,它适用于微控制器和其他一些仅有数千字节内存的设备。
    的头像 发表于 08-05 10:11 5w次阅读
    <b class='flag-5'>TensorFlow</b> <b class='flag-5'>Lite</b> 微控制器

    谷歌推出TensorFlow Lite,可为AI调整最新模型

    谷歌今天发布了TensorFlow Lite Model Maker,该工具使用一种称为转移学习的技术,将最先进的机器学习模型应用于自定义数据集。
    的头像 发表于 04-15 21:21 3229次阅读

    TensorFlow Lite 构建的无人驾驶微型汽车

    今天在 Tensorflow公号看到推文Pixelopolis:由 TensorFlow Lite 构建无人驾驶微型汽车 ,作者介绍了他们在今年Google I/O大会上展示的TensorFlot
    的头像 发表于 10-19 11:27 2128次阅读
     <b class='flag-5'>TensorFlow</b> <b class='flag-5'>Lite</b> 构建的无人驾驶微型汽车

    本地服务将成为未来服务的重要选择

    近日,IDC正式发布《分布式之 -- 本地服务市场研究》报告,从概念与特征、产品与模式、应用场景及发展趋势等多个方面,对分布式组合中的
    的头像 发表于 01-12 15:02 2579次阅读

    基于TensorFlow Lite的几项技术更新

    TensorFlow Lite 版本现已在 TensorFlow Hub 上推出。我们对该版本进行了一些可提升准确率的更新,并使其与硬件加速器兼容,其中包括 GPU 和获得 Android NN API 支持的其他
    的头像 发表于 09-23 15:38 2197次阅读

    Tensorflow Lite 使用与优化

    Tensorflow Lite 的基本框架如上。数据存储的结构是Flatbuffer。执行上次结构支持Keras 和Estimator和Legacy等等。而下层支持NN API、GP...
    发表于 01-25 17:48 2次下载
    <b class='flag-5'>Tensorflow</b> <b class='flag-5'>Lite</b> 使用与优化

    本地服务器与服务器哪个好?

    本地服务器和服务器是企业可以使用的两种不同的服务器设置。主要区别在于本地
    的头像 发表于 05-17 16:56 1745次阅读