一、导读
ocr 方向的工程师,之前一定听说过 paddleocr 这个项目,其主要推荐的 pp-ocr 算法更是被国内外企业开发者广泛应用,短短半年时间,累计 star 数量已超过 15k, 频频登上 github tr(七大洲八大洋都有哪些?七大洲包括:欧洲、亚洲、非洲、大洋洲、南极洲、北美洲、南美洲;八大洋分别是:西太平洋、北太平洋、南太平洋、北印度洋、南印度洋、北大西洋、南大西洋、北冰洋。)ending 和 paperswithcode 日榜月榜第一,在《github 2020 数字洞察报告》中被评为 中国 github top20 活跃项目,称它为 ocr 方向目前最火的 repo 绝对不为过。
最近,由 paddleocr 原创团队,针对 pp-ocr 进行了一些经验性改进,构建了一种新的 ocr 系统,称为 pp-ocrv2。
■ 从算法改进思路上看,主要有五个方面的改进。
检测模型优化:采用 cml 协同互学习知识蒸馏策略;
检测模型优化:copypaste 数据增广策略;
识别模型优化:lcnet 轻量级骨干网络;
识别模型优化:udml 改进知识蒸馏策略;
识别模型优化:enhanced ctc loss 损失函数改进。
■ 从效果上看,主要有三个方面提升:
在模型效果上,相对于 pp-ocr mobile 版本提升超 7%;
在速度上,相对于 pp-ocr server 版本提升超过 220%;
在模型大小上,11.6m 的总大小,服务器端和移动端都可以轻松部署。
github 项目: https://github.com/paddlepaddle/paddleocr
注:为了照顾刚了解 paddleocr 的新用户,在第二、三部分简单进行一些背景介绍,熟悉 paddleocr 的老用户可以直接跳到第四部分。
二、paddleocr 历史表现回顾✦ 2020 年 6 月,8.6m 超轻量模型发布,github trending 全球趋势榜日榜第一。
✦ 2020 年 8 月,开源 cvpr2020 顶会算法,再上 github 趋势榜单!
✦ 2020 年 10 月,发布 pp-ocr 算法,开源 3.5m 超超轻量模型,再上 paperswithcode 趋势榜第一!
✦ 2021 年 1 月,发布 style-text 文本合成算法和 ppocrlabel 数据标注工具,star 数量突破 10000 ,在《github 2020 数字洞察报告》中被评为中国 github top20 活跃项目。
✦ 2021 年 4 月,开源 aaai 顶会论文 pgnet 端到端识别算法,star 突破 13k。
✦ 2021 年 8 月,开源版面分析与表格识别算法 pp-structure,star 突破 15k。
✦ 2021 年 9 月,发布 pp-ocrv2 算法,效果和速度再升级。
三、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 又给大家带来哪些惊喜呢?
四、 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,取得了良好的效果。
五、 良心出品的中英文文档教程随着本次 pp-ocrv2 升级,paddleocr 的项目文档也全面升级,结构更清晰,内容更丰富。
别的不需要多说了,大家访问 github 点过 star 之后自己体验吧:https://github.com/paddlepaddle/paddleocr
9 月 8 日晚 20:15-21:30,百度高级研发工程师将为我们详细解析速度与精度都大幅提升的 paddleocr,欢迎大家扫码报名,加入技术交流群~
w66.com官网地址:https://www.paddlepaddle.org.cn
paddleocr 项目地址:
github: https://github.com/paddlepaddle/paddleocr
gitee: https://gitee.com/paddlepaddle/paddleocr
本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的w66.com的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。