二次全流程合集目录:
paddleocr系统性了解
PPOCR论文,https://arxiv.org/pdf/2009.09941.pdf
数据合成工具StyleText,在此之前需要确定图片字体,可以参考我的方式:
PaddleOCR二次全流程——1. 确定字体
字体+背景生成某种风格的图片(数据合成) github链接
这个参考博客:PaddleOCR二次全流程——2.使用StyleText合成图片
半自动标注工具PPOCRLabel
是一款适用于OCR领域的半自动化图形标注工具,内置PPOCR模型对数据自动标注和重新识别,github链接
个人使用经验博客:PaddleOCR二次全流程——3.使用TextRender合成图片
FAQ
提供一些关于模型训练等的常见问题回答,一些经验之谈,结合论文有助于模型选择和数据集的整理 github链接
个人筛选之后的博客:PaddleOCR二次全流程——5.FAQ记录
模型分析
- 只分析paddleocr支持的一些模型,去看看论文,动手测一测。OCR模型列表-github链接,算法介绍-github链接
- 论文中用到的一些策略/trick/strategies收集。
- 预处理和后处理方式的收集。
迁移训练(加入自己的数据[真实或合成的],PaddleOCR二次全流程——6. finetune预训练模型来匹配自己的数据)
额外推荐,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
只摘录部分重点内容,不做全文翻译。也可以参考另一个微信文章,和我的风格不太一样,哈哈。OCR漫谈之PaddleOCR(PP-OCR)
摘要(作为一个读了三年论文的水硕,摘要一定是要好好看的!)
- OCR已经被广泛应用于办公自动化系统,工厂自动化,在线教育以及街景地图等场景。
- 然而,OCR仍然面临文本显示的多样性,以及计算效率需求等挑战。
- 本文提出了一种实用的超轻OCR系统,即PPOCR,PPOCR识别6622个汉字的模型只有3.5MB,识别63个英文数字的模型只有2.8MB。
- 我们引入了许多策略来进行模型能力的提升,或者是减小模型的大小。
- 提供了对应的真实数据上的消融实验(ablation study)。
- 同时,还发布了一些用于中英文识别的预训练模型,包括一个文本检测器(使用了97k张图),一个方向分类器(用于进行检测框矫正,使用了600k张图),还有一个文本识别器(使用了17.9M张图)。
- 除此之外,提出的PP-OCR也在包括法语、韩语、日语和德语等其他几种语言的识别任务上进行了验证。
- 上述提到的所有模型都是开源的,代码可以在Github仓库上获取
[消融实验,类似于控制变量法,为了说明单独模块确实发挥了作用,可以参考其他回答:什么是 ablation study? - SleepyBag的回答 - 知乎]
部分重点内容
主要说明目前的OCR工作存在的问题
- 文本有多种显示,比如:场景文本识别(Scene Text Recognition,STR)和文本图像分析和识别(Document Analysis and Recognition,DAR)
- 计算效率,在实际应用中,CPU的使用一定是优先于GPU,所以这就对OCR系统的运行和效率有了限制,同时OCR系统需要在嵌入式的端侧(比如:手机)等设备上运行,就需要对模型尺寸和准确率进行权衡。
- 文本检测,PPOCR使用了DB(差分二值化)作为文本检测器,其基于一个简单的分割网络,DB简单的后处理策略使得它非常有效。
此外,为了提高准确率的同时保证效率(模型尺寸),使用了六种策略,如图Figure2。
使用了97k张图训练,- 检测框矫正,主要通过几何变换实现,因为检测框就是四个点构成的。但是矫正后的图片可能是颠倒的,即水平方向正确,垂直方向相反,此时需要做进一步处理。训练了一个简单的文本方向分类器,来进行文本方向的矫正。
同样为了保证准确率和模型大小,使用了4种策略,如图Figure2
使用了600k图训练- 文本识别,PPOCR使用了CRNN作为文本检测器,其整合了特征提取(CNN)和序列建模(RNN),使用了CTC(Connectionist Temporal Classification) Loss来避免预测和标签之间不对齐的问题,换言之,其优点就是:计算一种损失值,对没有对齐的数据进行自动对齐。
同样,为了增强模型模型准确性同时减小模型尺寸,使用9种策略,如图Figure2
使用了17.9M图训练
这部分就分别介绍PPOCR三个模型优化所使用的的一些策略,主要也是引用了非常多的论文,同时为PaddleClas和PaddleSlim打了广告。
涉及到的一些策略我给出了下面一些参考网站。
最后就是实验结果比较,看看就行,主要把握整体架构和一些策略的使用。
还有一个信息:通常的文本识别方法中,常规的图像是32(高)*100(宽),但是为了保证方向分类器的识别准确率,在PPOCR中,使用的是48*192。
FPN(2017):【论文笔记】FPN —— 特征金字塔
CTC:
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 论文翻译
PACT Quantization:参考了一个大佬的博客:闲话模型压缩之量化(Quantization)篇
大概试了一下这个的ocr软件,一般般,哈哈哈,在win10上基本不可用。github地址:https://github.com/zhangming8/Dango-ocr,截止到2021.4.6 虽然显示服务器已经过期,但是还是可以下载的,就是下载之后没法使用了,因为处理模型识别部分是发送到服务器上的,如果想要使用,需要自己搭建服务器服务。
StyleText
合成文本行识别数据以及之前用过的textRender
工具。终于肯静下心来深入研究下ocr,然后发现,想要找一些关于ocr的书籍,
ocr文字识别
,也只有一本深度实践ocr-基于深度学习的文字识别
这一本虚的书(买了,写的就是深度学习,和文字识别关系真的不是很大,不会的还是不会的)光学字符识别
,搜出来国标??话说OCR这个领域,就是钱多哦,网上博客倒是很多,但是却没有一本正儿八经的书?
之前在一个介绍Halcon的OCR功能的博客上看到过类似的东西,来源:Halcon解决方案指南(18)OCR–字符识别
预训练字体 ’OCR-A’ 也有OCR-B,还有Semi等字体
下载了一波国标文件,其中字间距各种都是有规定的,不用担心字间距这些,同时,我国的这些字体国标也是参考国际标准,等效于ISOXXXX,所以即便面对的仪器大多是外国产的,也安啦!
我辈当自强!