热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PaddleOCR二次全流程——1.PPOCR论文介绍

文章目录0.💖合集目录1.👓读PPOCR论文:PP-OCR:APracticalUltraLightweightOCRSystem1.

文章目录

    • 0. 💖合集目录
    • 1. 👓 读PPOCR论文:PP-OCR: A Practical Ultra Lightweight OCR System
      • 1.1 🙄摘要
      • 1.2 😎其他部分
      • 1.3 👀涉及的知识点
    • 2. 🐱‍🚀关于把握整体流程的推荐读物
    • 3. 🕶 题外话
      • 3.1 🎇光学识别字符集 OCR字符集印刷图像


0. 💖合集目录

二次全流程合集目录:

  1. paddleocr系统性了解

    PPOCR论文,https://arxiv.org/pdf/2009.09941.pdf

  2. 数据合成工具StyleText,在此之前需要确定图片字体,可以参考我的方式:
    PaddleOCR二次全流程——1. 确定字体

    字体+背景生成某种风格的图片(数据合成) github链接
    这个参考博客:PaddleOCR二次全流程——2.使用StyleText合成图片

  3. 半自动标注工具PPOCRLabel

    是一款适用于OCR领域的半自动化图形标注工具,内置PPOCR模型对数据自动标注和重新识别,github链接
    个人使用经验博客:PaddleOCR二次全流程——3.使用TextRender合成图片

  4. FAQ

    提供一些关于模型训练等的常见问题回答,一些经验之谈,结合论文有助于模型选择和数据集的整理 github链接
    个人筛选之后的博客:PaddleOCR二次全流程——5.FAQ记录

  5. 模型分析

    1. 只分析paddleocr支持的一些模型,去看看论文,动手测一测。OCR模型列表-github链接,算法介绍-github链接
    2. 论文中用到的一些策略/trick/strategies收集。
    3. 预处理和后处理方式的收集。

    迁移训练(加入自己的数据[真实或合成的],PaddleOCR二次全流程——6. finetune预训练模型来匹配自己的数据)

  6. 额外推荐,github上的awsome系列:https://github.com/kba/awesome-ocr



从PaddleOCR的说明手册:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.0/README_ch.md

近期更新中,看到:

2020.9.22 更新PP-OCR技术文章,,

直接进入论文地址:https://arxiv.org/pdf/2009.09941.pdf

1. 👓 读PPOCR论文:PP-OCR: A Practical Ultra Lightweight OCR System

只摘录部分重点内容,不做全文翻译。也可以参考另一个微信文章,和我的风格不太一样,哈哈。OCR漫谈之PaddleOCR(PP-OCR)

1.1 🙄摘要

摘要(作为一个读了三年论文的水硕,摘要一定是要好好看的!)

  1. OCR已经被广泛应用于办公自动化系统,工厂自动化,在线教育以及街景地图等场景。
  2. 然而,OCR仍然面临文本显示的多样性,以及计算效率需求等挑战。
  3. 本文提出了一种实用的超轻OCR系统,即PPOCR,PPOCR识别6622个汉字的模型只有3.5MB,识别63个英文数字的模型只有2.8MB。
  4. 我们引入了许多策略来进行模型能力的提升,或者是减小模型的大小。
  5. 提供了对应的真实数据上的消融实验(ablation study)。
  6. 同时,还发布了一些用于中英文识别的预训练模型,包括一个文本检测器(使用了97k张图),一个方向分类器(用于进行检测框矫正,使用了600k张图),还有一个文本识别器(使用了17.9M张图)。
  7. 除此之外,提出的PP-OCR也在包括法语、韩语、日语和德语等其他几种语言的识别任务上进行了验证。
  8. 上述提到的所有模型都是开源的,代码可以在Github仓库上获取


[消融实验,类似于控制变量法,为了说明单独模块确实发挥了作用,可以参考其他回答:什么是 ablation study? - SleepyBag的回答 - 知乎]


1.2 😎其他部分

部分重点内容

在这里插入图片描述
图自论文(Figure2)

  1. Introduction部分:

主要说明目前的OCR工作存在的问题

  1. 文本有多种显示,比如:场景文本识别(Scene Text Recognition,STR)和文本图像分析和识别(Document Analysis and Recognition,DAR)
  2. 计算效率,在实际应用中,CPU的使用一定是优先于GPU,所以这就对OCR系统的运行和效率有了限制,同时OCR系统需要在嵌入式的端侧(比如:手机)等设备上运行,就需要对模型尺寸和准确率进行权衡。
  3. 文本检测,PPOCR使用了DB(差分二值化)作为文本检测器,其基于一个简单的分割网络,DB简单的后处理策略使得它非常有效。
    此外,为了提高准确率的同时保证效率(模型尺寸),使用了六种策略,如图Figure2。
    使用了97k张图训练,
  4. 检测框矫正,主要通过几何变换实现,因为检测框就是四个点构成的。但是矫正后的图片可能是颠倒的,即水平方向正确,垂直方向相反,此时需要做进一步处理。训练了一个简单的文本方向分类器,来进行文本方向的矫正。
    同样为了保证准确率和模型大小,使用了4种策略,如图Figure2
    使用了600k图训练
  5. 文本识别,PPOCR使用了CRNN作为文本检测器,其整合了特征提取(CNN)和序列建模(RNN),使用了CTC(Connectionist Temporal Classification) Loss来避免预测和标签之间不对齐的问题,换言之,其优点就是:计算一种损失值,对没有对齐的数据进行自动对齐。
    同样,为了增强模型模型准确性同时减小模型尺寸,使用9种策略,如图Figure2
    使用了17.9M图训练


  1. Enhance or Slimming Strategies

这部分就分别介绍PPOCR三个模型优化所使用的的一些策略,主要也是引用了非常多的论文,同时为PaddleClas和PaddleSlim打了广告。
涉及到的一些策略我给出了下面一些参考网站。
最后就是实验结果比较,看看就行,主要把握整体架构和一些策略的使用。
还有一个信息:通常的文本识别方法中,常规的图像是32(高)*100(宽),但是为了保证方向分类器的识别准确率,在PPOCR中,使用的是48*192。




1.3 👀涉及的知识点


  • FPN(2017):【论文笔记】FPN —— 特征金字塔

  • CTC:

    • 白话CTC(connectionist temporal classification)算法讲解
    • CTC Algorithm Explained Part 1:Training the Network(CTC算法详解之训练篇)
    • CTC(Connectionist Temporal Classification)介绍
  • SE(2017/2018):如何评价 Squeeze-and-Excitation Networks ?

  • cosine learning rate decay:Tensorflow 中 learning rate decay 的奇技淫巧
    在这里插入图片描述
    此外,关于这个东西,还有个论文,Don’t Decay the Learning Rate, Increase the Batch Size,以及一个知乎讨论:深度学习中的batch的大小对学习效果有何影响?

  • Learning Rate Warm-up(2019年):神经网络中 warmup 策略为什么有效;有什么理论解释么?,另外一个博客:预热学习率的作用warmup_proportion

  • FPGM Pruner:模型剪枝,作者本人的知乎文章:【CVPR 2019 Oral】利用几何中位数(Geometric Median)进行模型剪枝

    • 这个过程还看到了一个很有意思的话题,回答也很好玩:卷积神经网络有哪些大胆又新奇的网络结构?
  • Data Augmentation:数据增强中,说到了百度的论文SRN:《Towards accurate scene text recognition with semantic reasoning networks.》,可以看看翻译:Towards Accurate Scene Text Recognition with Semantic Reasoning Networks 论文翻译

    • 另外,还说到了一个专用于文本识别的数据增强方式:TIA,论文Learn to Augment: Joint Data Augmentation and Network Optimization for Text Recognition
    • TIA的意思大概就是:对每个输入图像配置一些控制点(贝尔赛曲线,角点类似),让这些角点变化一个特定的分布(简单来说,就是让文本变形,背景图不变)
  • PACT Quantization:参考了一个大佬的博客:闲话模型压缩之量化(Quantization)篇

    • 这个人的博客写的都不错,还有一个讲为什么现在要压缩模型,是为了进行端侧部署的文章,浅谈端上智能之计算优化
    • 另外,原来PaddlePaddle在知乎上有专栏文章:模型精度不降反升!飞桨是这样改进PACT量化算法的!
    • 另外,关于MobileNetV3中的激活函数:MobileNet V3激活函数之h-swish

2. 🐱‍🚀关于把握整体流程的推荐读物


  • PaddlePaddle知乎专栏:https://www.zhihu.com/column/c_1102261020604628992
  • PaddlePaddle微信部分有关OCR的问题:
    • 2020-08-17:GitHub Trending第一之后,PaddleOCR再发大招:百度自研顶会SOTA算法正式开源!
    • 2020-08-31 百家桨坛 | 第一期:OCR文字识别专题100问
    • 2021年1月28日 手把手教你用PaddleOCR与PyQT实现多语言文字识别的程序,

      大概试了一下这个的ocr软件,一般般,哈哈哈,在win10上基本不可用。github地址:https://github.com/zhangming8/Dango-ocr,截止到2021.4.6 虽然显示服务器已经过期,但是还是可以下载的,就是下载之后没法使用了,因为处理模型识别部分是发送到服务器上的,如果想要使用,需要自己搭建服务器服务。

    • 三年磨一剑——微信OCR轻松提取图片文字。可以看到,微信这个ocr小程序,用的都是百度提出的StyleText 合成文本行识别数据以及之前用过的textRender工具。

3. 🕶 题外话

终于肯静下心来深入研究下ocr,然后发现,想要找一些关于ocr的书籍,

  • 在百度上搜索:ocr光学字符识别 pdf书籍 没有结果
  • 在当当上搜索,ocr文字识别,也只有一本深度实践ocr-基于深度学习的文字识别 这一本虚的书(买了,写的就是深度学习,和文字识别关系真的不是很大,不会的还是不会的)

    换了个关键字光学字符识别,搜出来国标??
    在这里插入图片描述

话说OCR这个领域,就是钱多哦,网上博客倒是很多,但是却没有一本正儿八经的书?


3.1 🎇光学识别字符集 OCR字符集印刷图像

之前在一个介绍Halcon的OCR功能的博客上看到过类似的东西,来源:Halcon解决方案指南(18)OCR–字符识别

预训练字体 ’OCR-A’ 也有OCR-B,还有Semi等字体

在这里插入图片描述
下载了一波国标文件,其中字间距各种都是有规定的,不用担心字间距这些,同时,我国的这些字体国标也是参考国际标准,等效于ISOXXXX,所以即便面对的仪器大多是外国产的,也安啦!

我辈当自强!


推荐阅读
author-avatar
milksoul
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有