PaddleOCR 2.6版本 训练私人数据集详细教程

目录

前言

一、环境搭建

1.创建虚拟环境

2.安装paddlepaddle-gpu版本

二、准备数据

1.使用PPOCRLabel标注数据

2.构建数据集

三、训练文字检测模型

1.下载预训练文字检测模型

 2.修改参数配置文件

3.执行训练 

4.可视化训练过程

5.执行评估

四、训练文字识别模型

1.下载预训练文字识别模型

2.修改参数配置文件

 3.执行训练

4.可视化训练过程

5.执行评估

6.测试识别结果


前言

PaddleOCR是目前识别精度比较高的开源项目,这篇文章主要介绍如何利用私人数据集训练OCR模型,并部署到本地。


一、环境搭建

1.创建虚拟环境

conda creeate -n paddle_gpu python = 3.8

2.安装paddlepaddle-gpu版本

激活虚拟环境

activate paddlle_gpu

根据paddlepaddle版本要求,安装对应的cuda和cudnn版本。

https://www.paddlepaddle.org.cn/install/old?docurl=/documentation/docs/zh/install/pip/windows-pip.html

经过本人测试,安装低于当前电脑cuda版本的paddle,也不影响使用(本人电脑已经安装cuda11.3,没找到对应paddle版本,因此安装的是cuda11.2版本paddle)

conda install paddlepaddle-gpu==2.3.2 cudatoolkit=11.2 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/ -c conda-forge

验证安装是否成功,终端输入python,然后分别输入以下两行代码

import paddle

paddle.utils.run_check()

安装padlleocr,截至2023.06.11,GitHub上最新版本是2.6,因此按照以下命令安装:

pip install "paddleocr>=2.6"

 验证安装是否成功

from paddleocr import PaddleOCR, draw_ocr
import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'True'

ocr = PaddleOCR(use_angle_cls=True, lang="ch")
img_path = './4.jpg'
result = ocr.ocr(img_path, cls=True)
print(result)
for line in result:
    print(len(line))
    print(line)
print('图片中的第一个检测结果')
print(result[0][0])
print('图片中的第二个检测结果')
print(result[0][1])
print('图片中的第一个检测结果的框坐标')
print(result[0][0][0])
print('图片中的第一个检测结果的文字')
print(result[0][0][1][0])
from  PIL import  Image

image = Image.open(img_path).convert('RGB')

boxes = [result[0][i][0] for i in range(len(result[0]))]
print(boxes)
txts = [result[0][i][1][0] for i in range(len(result[0]))]
print(txts)
scores = [result[0][i][1][1] for i in range(len(result[0]))]
print(scores)
im_show = draw_ocr(image, boxes, txts, scores)
im_show = Image.fromarray(im_show)
im_show.save('./result.jpg')

运行结果如下:

克隆paddleocr库并解压https://github.com/PaddlePaddle/PaddleOCR/archive/refs/heads/release/2.6.zip

接着:

cd PaddleOCR-release-2.6/PPOCRLabel

PPOCRLabel文件夹如下图所示: 

 安装PPOCRLabel,为标注数据作准备,运行以下代码:

python setup.py bdist_wheel

该目录下dist文件夹中会生成一个wheel文件

接着运行:

pip3 install dist/PPOCRLabel-2.1.3-py2.py3-none-any.whl

安装完成后,启动PPOCRLabel:

PPOCRLabel --lang ch

如果提示缺少包,用pip install “packname” 即可,

注意,安装Ploygon时,用pip install Ploygon3命令安装。

二、准备数据

1.使用PPOCRLabel标注数据

运行以下代码:

PPOCRLabel --lang ch

 

提前将数据划分为训练集和测试集,再分别进行标注

点击左上角文件按钮,加载数据集目录,点击左下角自动标注,然后一幅一幅检查并修改检测框和标签,标注结束以后,点击左上角文件导出标记结果识别结果

注意,多点标注时,点击最后一个点使其和第一个点重合(这时鼠标会变成小手),即视为画完整个框,然后点击右上角重新识别按钮(多点检测框也会自动变成带角度的矩形框),检查并修改识别结果。

其中,crop_img是从整张图中裁剪的文字区域,Label.txt中每行保存的是原始图片名以及对应文字检测框的四个点坐标(文字检测模型的标签),rec_gt.txt中每行保存的是crop_img文件夹下的图片名和对应文字识别结果(文字识别模型的标签)。

2.构建数据集

在PaddleOCR-release-2.6文件夹下新建一个存放metal_parts_images(根据自己数据集命名)文件夹,目录下新建image_detimage_rec文件夹,每个文件夹下分别新建traintest文件夹。

将PPOCRLabel标注数据放到对应目录下,train和test文件夹放置图片,label文件也放到该目录下(注意,标注软件自动保存的图片路径需要修改)。

检测模型对应的训练和测试数据文件结构

 

识别模型对应的训练和测试数据文件结构: 

注意,label文件对应图片路径不要搞错。

三、训练文字检测模型

1.下载预训练文字检测模型

PaddleOCR-release-2.6目录下,新建pretrain_models文件夹。

下载预训练模型,解压到./pretrain_models文件夹。https://paddleocr.bj.bcebos.com/pretrained/MobileNetV3_large_x0_5_pretrained.pdparams

 2.修改参数配置文件

修改\PaddleOCR-release-2.6\configs\det目录下的det_mv3_db.yml,也可以复制一份,重新命名。

如果要可视化训练过程,把use_visualdl 改为True。

 

3.执行训练 

开始训练,输入以下命令:

python tools/train.py -c configs/det/det_mv3_db.yml -o Global.pretrained_model=./pretrain_models/MobileNetV3_large_x0_5_pretrained

4.可视化训练过程

训练过程中,再开一个终端,输入以下命令可视化训练过程:

visualdl --logdir "./output/db_mv3"

 

打开浏览器,输入http://localhost:8040/ 

5.执行评估

评估模型,输入以下命令:

python tools/eval.py -c configs/det/det_mv3_db.yml  -o Global.checkpoints=./output/db_mv3/best_accuracy

 

6.模型导出

输入以下命令

python tools/export_model.py -c configs/det/det_mv3_db_ocr.yml -o Global.pretrained_model=./output/db_mv3/best_accuracy  Global.save_inference_dir=./inference/det_db

7.测试检测结果

 输入以下命令:

python tools/infer/predict_det.py --det_algorithm="DB" --det_model_dir="./inference/det_db/" --image_dir="./5.jpg" --use_gpu=True

 

 也可以把单张图片的路径改成文件夹路径,这样能够检测文件夹下所有图片。

四、训练文字识别模型

1.下载预训练文字识别模型

https://paddleocr.bj.bcebos.com/PP-OCRv3/english/en_PP-OCRv3_rec_train.tar

解压到pretrain_models文件夹

2.修改参数配置文件

.\configs\rec\PP-OCRv3\en_PP-OCRv3_rec.yml

 3.执行训练

python tools/train.py -c configs/rec/PP-OCRv3/en_PP-OCRv3_rec_ocr.yml -o Global.pretrained_model=./pretrain_models/en_PP-OCRv3_rec_train/best_accuracy

4.可视化训练过程

visualdl --logdir ./output/v3_en_mobile

5.执行评估

python tools/eval.py -c configs/rec/PP-OCRv3/en_PP-OCRv3_rec_ocr.yml -o Global.checkpoints=./output/v3_en_mobile/latest 

6.测试识别结果

python tools/infer_rec.py -c configs/rec/PP-OCRv3/en_PP-OCRv3_rec_ocr.yml -o Global.pretrained_model=./pretrain_models/en_PP-OCRv3_rec_train/best_accuracy Global.infer_img=./metal_parts_images/image_rec/test/0_crop_0.jpg

  • 14
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
PaddleOCR 2.6是一个开源项目,旨在提供便捷易用的OCR(Optical Character Recognition,光学字符识别)解决方案。以下是对PaddleOCR 2.6教程的简要说明。 PaddleOCR 2.6支持多种OCR任务,包括文本检测、文本识别、关键点检测和词语领域识别。该版本还提供了预训练模型,以便用户可以快速使用。对于文本检测任务,PaddleOCR 2.6使用PaddleDetection库实现的预训练模型,该模型能够从图像中检测出包含文字的区域。对于文本识别任务,PaddleOCR 2.6使用CRNN(Convolutional Recurrent Neural Network)模型,该模型能够识别出文字内容。 在使用PaddleOCR 2.6之前,需要安装PaddlePaddle深度学习框架及其相关依赖项。然后,需要从PaddleOCR GitHub仓库下载代码并将其解压到本地。通过运行demo.py文件,可以对图像进行OCR任务的演示。API接口也提供了更多个性化定制的功能。 在使用PaddleOCR 2.6时,可以根据自己的需求选择不同的模型进行文本检测和识别任务。还可以通过调整模型超参数和预处理方法来优化模型性能。PaddleOCR 2.6还支持多种语言,包括英文、中文、韩文和日文等。 总之,PaddleOCR 2.6是一个功能强大且易于使用的OCR解决方案,它提供了多种OCR任务的预训练模型和个性化定制选项。无论是在商业应用中还是学术研究中,PaddleOCR 2.6都能帮助用户高效地处理图像中的文字内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值