3

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

 2 years ago
source link: https://my.oschina.net/u/4299156/blog/5237294
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

 01 导读

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

在《Github 2020数字洞察报告》中被评为中国 Github Top 20活跃项目,

称它为 OCR 方向目前最火的 repo 绝对不为过。

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

2.检测模型优化:CopyPaste 数据增广策略;

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

4.识别模型优化:UDML 改进知识蒸馏策略;

5.识别模型优化:Enhanced CTC loss 损失函数改进。

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

    1.检测模型优化:采用 CML 协同互学习知识蒸馏策略;

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

    1.在模型效果上,相对于 PP-OCR mobile 版本提升超7%;

    2.在速度上,相对于 PP-OCR server 版本提升超过220%;

    3.在模型大小上,11.6M 的总大小,服务器端和移动端都可以轻松部署。

up-db54abfe5167bed25b919018b9893b3fba4.png

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 算法,效果和速度再升级。

up-b1b5553c66632fd44677e6888519d74eb26.pngup-778a1b9fb0d5c43c95ec63fc4df36d53561.png

 03   PaddleOCR 开源能力速览

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

up-c05db09e144f875ad1b5a5e90cad203ccbd.png

up-2e921723f075a3127d66fa0ac3f48d9b426.png

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

up-219473d1a35733d6510b49b7c97aa842dda.png

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

up-7407b063047ce95adfbea6697e7b2b6c4ff.png

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

up-6b33fdf1c50ae98ee18672fae443f601f0b.pngup-c5904872592e25730fb84f843840ded5e26.png

up-85d23e94772cb5d6dcb212380f513d0740b.png

up-d03888c668fa937bbac27ae318e067d510a.png

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

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

传送门:

Github:https://github.com/PaddlePaddle/PaddleOCR

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

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

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

up-dc063a91b33136a4b7966edcd3e2237d45b.png

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

  • 检测模型优化:采用 CML 知识蒸馏策略

  • 检测模型优化:CopyPaste 数据增广策略

  • 识别模型优化:LCNet 轻量级骨干网络

  • 识别模型优化:UDML 知识蒸馏策略

  • 识别模型优化:Enhanced CTC loss 改进

下面展开详细介绍:

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

up-74948bc1e2a9dd6caf86d885a1e44420deb.png

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

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

up-75718d7983d1216f5bc47981da502c2ba75.png

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

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

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

up-9645738739c0f3aed924b8700d06e4d7453.png

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

up-b000b96b7691007b832e56fc502edb5b9f8.png

这里,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 知识蒸馏策略

up-81e1328e0456de31c16d5b23003645f8112.png

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

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

up-f081f00c54441eee0a5ec896311d9499536.png

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

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

up-77e697f25401f5aa39f0ed58824d2ea2fd8.pngup-133acf50c843878021b07aa9091f778ff8a.png

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

up-b668d3de8425e03918a9429a955c0a8030a.png

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

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

up-ea0c5c4d479a393f309700b1b99066a3911.png

up-8cdbb222c98427d0892765f4e71ff5a7db9.png

别的不需要多说了,大家访问 GitHub 点过 star 之后自己体验吧:

https://github.com/PaddlePaddle/PaddleOCR

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK