github地址
一、视频教程
视频1 开源最强OCR系统PP-OCRv3揭秘
视频2 云边端全覆盖的PP-OCRv3训练部署实战
视频3 OCR产业应用全流程拆解与实践
视频4 车牌识别
二、Paddlehub模型实战
2.1、旧版本
chinese_ocr_db_crnn_server 一键使用
chinese_ocr_db_crnn_mobile 手机端一键使用
2.2、最新版本
2.3、数据集说明
2.3.1、文本检测
标注文件格式如下,中间用’\t’分隔:
" 图像文件名 json.dumps编码的图像标注信息"
ch4_test_images/img_61.jpg [{“transcription”: “MASA”, “points”: [[310, 104], [416, 141], [418, 216], [312, 179]]}, {…}]
json.dumps编码前的图像标注信息是包含多个字典的list,字典中的 points 表示文本框的四个点的坐标(x, y),从左上角的点开始顺时针排列。 transcription 表示当前文本框的文字,当其内容为“###”时,表示该文本框无效,在训练时会跳过。
2.3.2、文本识别
注意 PP-OCRv3的识别模型使用的输入shape为3,48,320, 如果使用其他识别模型,则需根据模型设置参数–rec_image_shape。此外,PP-OCRv3的识别模型默认使用的rec_algorithm为SVTR_LCNet,注意和原始SVTR的区别。
标注文件的格式如下, txt文件中默认请将图片路径和图片标签用’\t’分割,如用其他方式分割将造成训练报错。
" 图像文件名 图像标注信息 "
train_data/rec/train/word_001.jpg 简单可依赖
train_data/rec/train/word_002.jpg 用科技让复杂的世界更简单
…
2.3.3、方向检测
文本方向分类器主要用于图片非0度的场景下,在这种场景下需要对图片里检测到的文本行进行一个转正的操作。在PaddleOCR系统内, 文字检测之后得到的文本行图片经过仿射变换之后送入识别模型,此时只需要对文字进行一个0和180度的角度分类,因此PaddleOCR内置的 文本方向分类器只支持了0和180度的分类。如果想支持更多角度,可以自己修改算法进行支持。
0和180度数据样本例子:
预测图片:
得到输入图像的预测结果:
infer_img: doc/imgs_words/ch/word_1.jpg
result: (‘0’, 0.9998784)
2.3.4、目标检测评估指标
2.3.5、知识蒸馏,互学习的模型训练
知识蒸馏
深度神经网络一般有较多的参数冗余,目前有几种主要的方法对模型进行压缩,减小其参数量。如裁剪、量化、知识蒸馏等,其中知识蒸馏是指使用教师模型(teacher model)去指导学生模型(student model)学习特定任务,保证小模型在参数量不变的情况下,得到比较大的性能提升。
此外,在知识蒸馏任务中,也衍生出了互学习的模型训练方法,论文Deep Mutual Learning中指出,使用两个完全相同的模型在训练的过程中互相监督,可以达到比单个模型训练更好的效果。
无论是大模型蒸馏小模型,还是小模型之间互相学习,更新参数,他们本质上是都是不同模型之间输出或者特征图(feature map)之间的相互监督,区别仅在于 (1) 模型是否需要固定参数。(2) 模型是否需要加载预训练模型。
对于大模型蒸馏小模型的情况,大模型一般需要加载预训练模型并固定参数;对于小模型之间互相蒸馏的情况,小模型一般都不加载预训练模型,参数也都是可学习的状态。
在知识蒸馏任务中,不只有2个模型之间进行蒸馏的情况,多个模型之间互相学习的情况也非常普遍。因此在知识蒸馏代码框架中,也有必要支持该种类别的蒸馏方法
三、案例
十分钟完成 PP-OCRv3 识别全流程实战
基于PaddleOCR的轻量级车牌识别范例
基于PP-OCRv3实现PCB字符识别
四、服务化部署
PPOCR paddleserving服务化部署
AIstudio服务化部署案例
部署精度问题