01 导读

OCR 方向的工程师,之前一定听说过 PaddleOCR 这个项目,其主要推荐的 PP-OCR 算法更是被国内外企业开发者广泛应用。短短半年时间,累计 Star 数量已超过15k,频频登上 Github Trending 和 Paperswithcode 日榜月榜第一。

在《Github 2020数字洞察报告》中被评为中国 Github Top 20活跃项目,
称它为 OCR 方向目前最火的 repo 绝对不为过。

最近,由 PaddleOCR 原创团队,针对 PP-OCR 进行了一些经验性改进,构建了一种新的 OCR 系统,称为 PP-OCRv2。

从算法改进思路上看,主要有五个方面的改进:

1.检测模型优化:采用 CML 协同互学习知识蒸馏策略;
2.检测模型优化:CopyPaste 数据增广策略;
3.识别模型优化:LCNet 轻量级骨干网络;
4.识别模型优化:UDML 改进知识蒸馏策略;
5.识别模型优化:Enhanced CTC loss 损失函数改进。

从效果上看,主要有三个方面提升:

1.在模型效果上,相对于 PP-OCR mobile 版本提升超7%;
2.在速度上,相对于 PP-OCR server 版本提升超过220%;
3.在模型大小上,11.6M 的总大小,服务器端和移动端都可以轻松部署。

GitHub 项目:
https://github.com/PaddlePaddle/PaddleOCR
注:为了照顾刚了解 PaddleOCR 的新用户,在第二、三部分简单进行一些背景介绍,熟悉 PaddleOCR 的老用户可以直接跳到第四部分。

02 PaddleOCR 历史表现回顾

2020年6月,8.6M 超轻量模型发布,GitHub Trending 全球趋势榜日榜第一。
2020年8月,开源 CVPR 2020顶会算法,再上 GitHub 趋势榜单!
2020年10月,发布 PP-OCR 算法,开源3.5M 超超轻量模型,再上 Paperswithcode 趋势榜第一!
2021年1月,发布 Style-Text 文本合成算法和 PPOCRLabel 数据标注工具, star 数量突破10000+,在《Github 2020数字洞察报告》中被评为中国 Github Top 20活跃项目。
2021年4月,开源 AAAI 顶会论文 PGNet 端到端识别算法,Star 突破13k。
2021年8月,开源版面分析与表格识别算法 PP-Structure,Star 突破15k。
2021年9月,发布 PP-OCRv2 算法,效果和速度再升级。

03 PaddleOCR 开源能力速览

(1)通用文本检测识别效果:支持通用场景下的 OCR 文本快速检测识别

(2)文本合成工具 Style-Text 效果:相比于传统的数据合成算法,Style-Text 可以实现特殊背景下的图片风格迁移,只需要少许目标场景图像,就可以合成大量数据,效果展示如下:

(3)半自动标注工具 PPOCRLabel:通过内置高质量的 PP-OCR 中英文超轻量预训练模型,可以实现 OCR 数据的高效标注。CPU 机器运行也是完全没问题的。用法也是非常的简单,标注效率提升60%-80%是妥妥的,效果演示如下:

(4)文档结构分析+表格提取 PP-Structure:可以对文档图片中的文本、表格、图片、标题与列表区域进行分类,还可以利用表格识别技术完整地提取表格结构信息,使得表格图片变为可编辑的 Excel 文件。

(5)核心能力全部可以自定义训练,动静统一的开发体验:动态图和静态图是深度学习框架常用的两种模式。在动态图模式下,代码编写运行方式符合 Python 程序员的习惯,易于调试,但在性能方面,Python 执行开销较大,与 C++ 有一定差距。相比动态图,静态图在部署方面更具有性能的优势。静态图程序在编译执行时,预先搭建好的神经网络可以脱离 Python 依赖,在 C++ 端被重新解析执行,而且拥有整体网络结构也能进行一些网络结构的优化。

PaddleOCR 依赖飞桨核心框架动静统一的能力,支持用户使用动态图编写组网代码。预测部署时,飞桨会对用户代码进行分析,自动转换为静态图网络结构,兼顾了动态图易用性和静态图部署性能两方面优势。

传送门:
Github:https://github.com/PaddlePaddle/PaddleOCR

那么最近的2021年9月份更新,PaddleOCR 又给大家带来哪些惊喜呢?

04 PP-OCRv2 五大关键技术点深入解读

全新升级的 PP-OCRv2 版本,整体的框架图保持了与 PP-OCR 相同的 Pipeline,如下图所示。

在优化策略方面,主要从五个角度进行了深入优化(如上图红框所示),主要包括:

  • 检测模型优化:采用 CML 知识蒸馏策略
  • 检测模型优化:CopyPaste 数据增广策略
  • 识别模型优化:LCNet 轻量级骨干网络
  • 识别模型优化:UDML 知识蒸馏策略
  • 识别模型优化:Enhanced CTC loss 改进

下面展开详细介绍:

(1)检测模型优化:采用 CML (Collaborative Mutual Learning) 协同互学习知识蒸馏策略。

如上图所示,CML 的核心思想结合了①传统的 Teacher 指导 Student 的标准蒸馏与 ② Students 网络直接的 DML 互学习,可以让 Students 网络互学习的同时,Teacher 网络予以指导。对应的,精心设计关键的三个 Loss 损失函数:GT Loss、DML Loss 和 Distill Loss,在 Teacher 网络 Backbone 为 ResNet18 的条件下,对 Student 的 MobileNetV3 起到了良好的提升效果。

(2)检测模型优化:CopyPaste 数据增广策略

数据增广是提升模型泛化能力重要的手段之一,CopyPaste 是一种新颖的数据增强技巧,已经在目标检测和实例分割任务中验证了有效性。利用 CopyPaste,可以合成文本实例来平衡训练图像中的正负样本之间的比例。相比而言,传统图像旋转、随机翻转和随机裁剪是无法做到的。

CopyPaste 主要步骤包括:①随机选择两幅训练图像,②随机尺度抖动缩放,③随机水平翻转,④随机选择一幅图像中的目标子集,⑤粘贴在另一幅图像中随机的位置。这样,就比较好的提升了样本丰富度,同时也增加了模型对环境鲁棒性。

经过以上两个检测方向的优化策略,PP-OCRv2 检测部分的实验效果如下:

(3)识别模型优化:LCNet 轻量级骨干网络

这里,PP-OCRv2 的研发团队提出了一种基于 MobileNetV1 改进的新的骨干网络 LCNet,主要的改动包括:

① 除 SE 模块,网络中所有的 relu 替换为 h-swish,精度提升1%-2%
② LCNet 第五阶段,DW 的 kernel size变为5x5,精度提升0.5%-1%
③ LCNet 第五阶段的最后两个 DepthSepConv block 添加 SE 模块, 精度提升0.5%-1%
④ GAP 后添加1280维的 FC 层,增加特征表达能力,精度提升2%-3%

(4)识别模型优化:UDML 知识蒸馏策略

在标准的 DML 知识蒸馏的基础上,新增引入了对于 Feature Map 的监督机制,新增 Feature Loss,增加迭代次数,在 Head 部分增加额外的 FC 网络,最终加快蒸馏的速度同时提升效果。

(5)识别模型优化:Enhanced CTC loss 改进

考虑到中文 OCR 任务经常遇到的识别难点是相似字符数太多,容易误识,借鉴 Metric Learning 的想法,引入 Center Loss,进一步增大类间距离,核心思路如上图公式所示。

经过以上三个识别方向的优化策略,PP-OCRv2 识别部分的实验效果如下:

经过以上五个方向的优化,最终 PP-OCRv2 仅以少量模型大小增加的代价,全面超越 PP-OCR,取得了良好的效果。

05 良心出品的中英文文档教程

随着本次 PP-OCRv2 升级,PaddleOCR 的项目文档也全面升级,结构更清晰,内容更丰富:


别的不需要多说了,大家访问 GitHub 点过 star 之后自己体验吧:
https://github.com/PaddlePaddle/PaddleOCR

点击进入了解更多技术资讯~~

吊打一切现有开源OCR项目:效果再升7%,速度提升220%相关推荐

  1. 吊打一切现有开源OCR项目!PP-OCRv2效果再升7%,速度提升220%!

    OCR方向的工程师,之前一定听说过PaddleOCR这个项目,其主要推荐的PP-OCR算法更是被国内外企业开发者广泛应用,短短半年时间,累计Star数量已超过15k,频频登上Github Trendi ...

  2. 吊打一切现有开源OCR项目!90% +准确率,训练部署一条龙

    资源如何最大化利用是每一位企业经营者需要重要考虑的问题. 在会议室.休闲区等公共空间人员流动量大的情况下,如何实现公共空间诸如空调.灯光.新风等设备的能效管理,是每位场地管理者普遍面临的棘手问题.怎样 ...

  3. Google开源OCR项目Tesseract安装版在Windows下的使用测试记录

    开源OCR项目有很多,给大家一个链接,这个链接列出了现有的比较出名的OCR开源项目,链接如下: https://en.wikipedia.org/wiki/Comparison_of_optical_ ...

  4. Google开源OCR项目Tesseract训练(自己训练的记录,未成功)

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 本文训练Tesseract用的方法主要参考文章  ...

  5. 体积再降60%,3.5M超轻量中英文OCR模型开源,性能效果同时提升

    点击左上方蓝字关注我们 导读 不得不说,2020年绝对是OCR开源界的丰收年,各种开源repo横空出世,一次又一次的刷新开源界的baseline,小编今天再次给大家种个草,介绍今年OCR开源领域 &q ...

  6. android 马赛克 代码,Android_Android 马赛克(Mosaics)效果,前几天看见开源项目效果好赞 - phpStudy...

    Android 马赛克(Mosaics)效果 前几天看见开源项目效果好赞,看了下代码,实现大致就是在原界面之上覆盖一成自定义的View,获取到点击的那个View的内容(Bitmap),然后在覆盖的那个 ...

  7. C++开源代码项目汇总

    Google的C++开源代码项目 v8  -  V8 JavaScript Engine V8 是 Google 的开源 JavaScript 引擎. V8 采用 C++ 编写,可在谷歌浏览器(来自 ...

  8. 最新C#开源资源项目

    一.AOP框架 Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种部署方面(as ...

  9. github 开源android项目

    转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的View,包括ListView.ActionBar.M ...

最新文章

  1. RxJava2.x 萌新之路 操作符篇
  2. NET(C#)连接各类数据库-集锦
  3. VS2008中配置 Windows SDK v7
  4. mysql与oracle在软件测试_Oracle和MySQL的一些简单命令对比
  5. oracle中出现会话被锁
  6. 从月薪8K的分析师到月薪2W,只因我有了这份工具清单!
  7. 一年之计:如何构建知识体系?
  8. 想建出优质的社群,必须懂得社群的本质
  9. [转载] python的变量和C++的变量有什么区别
  10. python发邮件主机找不到_从本地主机(不登录STMP服务器)用Python发送电子邮件时,如何解决套接字错误?...
  11. Tomcat:JAVA_HOME should point to a JDK not a JRE解决
  12. Linux中常用的scree的安装和常用的screen命令
  13. 网络歌曲《丁香花》背后的真实故事
  14. 新概念英语(第一册)复习(原文及全文翻译)——Lesson 111 - Lesson 130
  15. python画图显示中文加标题控制字体
  16. 浏览器主页被搜狗劫持如何处理
  17. idea Dmaven.multiModuleProjectDirectory=$M2_HOME报错!!!
  18. 高德地图哪个语音包最好_高德地图app怎么录制语音包?高德地图将自己的语音用作导航语音包的方法介绍...
  19. 【ACWing】1540. 主导颜色
  20. 删除win7右键菜单intel的图形属性和图形选项

热门文章

  1. 解读Raw Socket
  2. php自定义中文分词方法,一个用PHP写的中文分词函数_php
  3. docker-compose部署nginx,挂载外置配置文件及项目
  4. Win10下访问linux的ext4分区文件并拷贝
  5. linux 查看namenode进程是否存活:返回namenode进程个数
  6. golang中go mod使用第三方包
  7. pyinstaller将python脚本转成exe可执行文件
  8. Feign的日志级别设置(显示feign调用服务过程中的日志信息)
  9. CPU乱序执行(指令重排序)
  10. 权限控制相关数据表分析和创建