【模型训练-1】【Windows-PaddleOCR-ocr模型训练(CPU)】数据标注

直跳下一节:第二节-模型训练

第一节-数据采集

使用ocr的使用对硬件设备有比较高的依赖。网上下的模型没有GPU的加持识别效率不高,完成自有模型的训练在相同硬件设备的基准上能大大提高识别效率,加速脚本执行效率。看一组数据:
在这里插入图片描述

在这里插入图片描述

训练了自己的模型识别耗时1000ms,相同的图片网上随便下的模型4000ms

接下来可以根据下面的操作手册,一步步跟着完成模型数据的准备。当日如果想急着使用,该模块的内容可以后面骨架完成搭建后再去训练自己的模型,可以先使用网上训练好的模型、自带的模型。

一、基础环境准备-制作数据集

python 3.10 --python环境安装不过多赘述

*.先安装PaddlePaddle再安装PaddleOCR
pip install PaddlePaddle
pip install PaddleOCR
*. 安装图形标注工具:pip install PPOCRLabel 或在官网下载
https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.7

安装过程如果出现:error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“ 错误。可参考:点击查看解决方案地址

1.1PPOCRLabel 拷贝到操作项目路径

在这里插入图片描述
在这里插入图片描述

我这里是新建了个ocr_ui_test的目录,将PPOCRLable拷贝了进来

1.2PPOCRLabel根目录下,终端运行: python PPOCRLabel.py --lang ch

python PPOCRLabel.py --lang ch # 启动【普通模式】,用于打【检测+识别】场景的标签
python PPOCRLabel.py --lang ch --kie True # 启动【KIE 模式】,用于打【检测+识别+关键字提取】场景的标签
运行后,稍等一会儿会有gui窗口出来
在这里插入图片描述在这里插入图片描述
这个过程可能需要几分钟的时间,编译这个gui窗口。

二、标注数据准备

2.1图片标注确认

在这里插入图片描述

自动标注完后,检查标注内容是否异常,这个时候还可以继续调整标注,接着依次确认标注图片
在这里插入图片描述

2.2导出标记

打标操作完后,点击文件->导出标记结果和点击文件->导出识别结果,完成后文件夹里多出四个文件crop_img、fileState、Label、rec_gt。
*crop_img中的图片用来训练文字识别模型
*fileState记录图片的打标完成与否
*Label为训练文字检测模型的标签
*rec_gt为训练文字识别模型的标签
在这里插入图片描述

2.3整理数据集

PPOCRLabel根目录下,终端运行:python gen_ocr_train_val_test.py --trainValTestRatio 6:2:2 –-datasetRootPath 打标导出的文件的绝对路径
参数说明:
trainValTestRatio 是训练集、验证集、测试集的图像数量划分比例,根据实际情况设定,默认是6:2:2
datasetRootPath 是PPOCRLabel标注的完整数据集存放路径。 ./train_data/
detRootPath 训练文字检测的数据集存放路径。 ./train_data/det
recRootPath 训练文字识别的数据集存放路径。 ./train_data/rec

python gen_ocr_train_val_test.py --trainValTestRatio 6:2:2 –-datasetRootPath F:\ocr_ui_test\image

执行报错
报错的是这个文件,根据错误提示在这个文件的main函数中把os包手动引入一下在这里插入图片描述在这里插入图片描述
执行成功了在这里插入图片描述这个就是执行后的输出结果
在这里插入图片描述
在这里插入图片描述

rec是用来训练文字识别的数据集,det是用来训练文字检测的数据集,

三、总结整理

遇到了几个问题:

1.PPOCRLabel 安装报错:error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“ 错误
2.整理数据集的时候,gen_ocr_train_val_test.py报错

第一个问题,我单独输出一个内容,可以直接参考,也可以在网上自行找更快的方法。直达链接
第二个问题:是os包没有办法应用,可能是路径问题,我们直接修改gen_ocr_train_val_test 文件代码即可,该文件在\PPOCRLabel目录下。在代码中可以看到detRootPath,recRootPath,recLabelFileName,recImageDirName都是有默认值的,如果需要调整的,可以自行调整。

if __name__ == "__main__":
    # 功能描述:分别划分检测和识别的训练集、验证集、测试集
    # 说明:可以根据自己的路径和需求调整参数,图像数据往往多人合作分批标注,每一批图像数据放在一个文件夹内用PPOCRLabel进行标注,
    # 如此会有多个标注好的图像文件夹汇总并划分训练集、验证集、测试集的需求
    import os #增加了它
    import shutil
    import random
    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "--trainValTestRatio",
        type=str,
        default="6:2:2",
        help="ratio of trainset:valset:testset")
    parser.add_argument(
        "--datasetRootPath",
        type=str,
        default="../train_data/",
        help="path to the dataset marked by ppocrlabel, E.g, dataset folder named 1,2,3..."
    )
    parser.add_argument(
        "--detRootPath",
        type=str,
        default="../train_data/det",
        help="the path where the divided detection dataset is placed")
    parser.add_argument(
        "--recRootPath",
        type=str,
        default="../train_data/rec",
        help="the path where the divided recognition dataset is placed"
    )
    parser.add_argument(
        "--detLabelFileName",
        type=str,
        default="Label.txt",
        help="the name of the detection annotation file")
    parser.add_argument(
        "--recLabelFileName",
        type=str,
        default="rec_gt.txt",
        help="the name of the recognition annotation file"
    )
    parser.add_argument(
        "--recImageDirName",
        type=str,
        default="crop_img",
        help="the name of the folder where the cropped recognition dataset is located"
    )
    args = parser.parse_args()
    genDetRecTrainVal(args)

参考文献

官方md

<think>好的,用户想了解如何使用PaddleOCR训练自己的模型。我需要一步步引导他们完成整个过程,确保结构清晰,并且符合他们提供的格式要求。首先,我应该回忆PaddleOCR的基本情况,确认训练流程的关键步骤。 首先,用户可能需要知道训练前的准备工作,比如数据准备。需要提到数据格式,目录结构,以及标注文件的格式。可能需要详细说明如何组织图像和标签文件,特别是txt文件的命名和内容格式。这里要注意是否需要区分训练集和验证集,还有测试集,但可能用户主要关注训练和验证。 然后,环境配置。需要指导用户安装PaddlePaddlePaddleOCR,包括pip安装命令。要区分CPU和GPU版本,提醒用户根据硬件选择。还要提到代码库的克隆,可能涉及git命令,但用户可能已经安装了git,所以需要给出克隆仓库的命令。 接下来是配置文件的选择和修改。这里可能有点复杂,用户需要选择合适的预训练模型,比如文本检测、识别或者方向分类。每个任务有不同的配置文件,需要指导用户如何找到对应的yml文件,并修改其中的数据路径、类别数等参数。可能需要举例说明,比如检测模型的配置,修改训练和验证数据路径,调整epochs和batch_size等参数。 然后是启动训练的命令,需要给出具体的命令行示例,比如使用tools/train.py指定配置文件和使用预训练模型。同时,可能需要提醒用户如果中断训练后如何恢复,使用-resume参数。 评估模型的部分需要说明如何用验证集评估,给出评估命令,并解释指标的含义,比如检测模型的hmean,识别模型的准确率。 导出模型为推理模型也是必要的一步,用户可能需要在训练完成后将模型导出以便后续使用,这里要给出导出命令,并说明输入和输出路径。 最后,模型部署部分,简要介绍如何使用导出的模型进行推理,给出Python代码示例,包括初始化预测系统和执行预测的步骤。 需要注意用户可能的疑问点,比如数据标注的具体格式,如何处理数据增强,调整超参数的注意事项,以及如何解决常见错误,比如路径错误或依赖缺失。不过用户的问题主要集中在训练流程,所以可能不需要深入每个细节,但需要确保步骤完整。 另外,需要提醒用户参考官方文档和社区支持,特别是如果遇到问题可以去GitHub提issue。可能还需要提到数据量不足时可以使用数据增强,或者使用公开数据集进行预训练。 最后检查是否符合格式要求:使用中文,行内公式用$...$,独立公式用$$...$$。不过在这个问题中可能涉及数学公式较少,但如果有的话需要正确应用。同时结构要清晰,分步骤说明,使用列表和代码块,但用户要求避免使用Markdown,所以可能需要用文字描述代码部分,比如用引号或者缩进表示命令行和代码。 总结下来,回答的结构应该是:简介PaddleOCR训练步骤分点说明,每个步骤详细说明,注意事项和常见问题,最后参考资源和社区支持。确保语言简洁,步骤明确,用户能够跟随操作。</think>以下是使用PaddleOCR训练自定义模型的步骤详解: ----- ### 一、PaddleOCR简介 PaddleOCR是基于飞桨(PaddlePaddle)OCR工具库,支持: - 文本检测(定位文字区域) - 文本识别(识别文字内容) - 方向分类(调整文字方向) ----- ### 二、训练自定义模型流程 #### 1. 数据准备 **格式要求**: ``` 数据集目录/ ├── train/ │ ├── img_1.jpg │ ├── img_1.txt # 标注文件 │ ├── img_2.jpg │ └── img_2.txt └── val/ ├── img_101.jpg └── img_101.txt ``` **标注文件示例**: - 检测任务(坐标标注): ```txt x1,y1,x2,y2,x3,y3,x4,y4,文本内容 100,200,300,200,300,400,100,400,"Hello World" ``` - 识别任务(单行文本): ```txt img_1.jpg "文本内容" ``` #### 2. 环境配置 ```bash # 安装PaddlePaddle(GPU版本需额外配置CUDA) pip install paddlepaddle # 安装PaddleOCR pip install paddleocr # 下载训练代码 git clone https://github.com/PaddlePaddle/PaddleOCR ``` #### 3. 配置文件修改 选择预训练模型对应配置文件(以`det_mv3_db.yml`检测模型为例): ```yml Train: dataset: name: SimpleDataSet data_dir: ./train_data/ # 数据集根目录 label_file_list: [./train_data/train.txt] # 训练集路径 Eval: dataset: name: SimpleDataSet data_dir: ./train_data/ label_file_list: [./train_data/val.txt] # 验证集路径 ``` #### 4. 启动训练 ```bash # 文本检测模型训练 python tools/train.py -c configs/det/det_mv3_db.yml \ -o Global.pretrained_model=./pretrain_models/det_mv3_db_v2.0_train/ # 文本识别模型训练 python tools/train.py -c configs/rec/rec_icdar15_train.yml \ -o Global.pretrained_model=./pretrain_models/rec_mv3_none_bilstm_ctc_v2.0_train/ ``` #### 5. 模型评估 ```bash python tools/eval.py -c configs/det/det_mv3_db.yml \ -o Global.checkpoints=./output/det_db/best_accuracy ``` #### 6. 模型导出 ```bash python tools/export_model.py -c configs/det/det_mv3_db.yml \ -o Global.save_inference_dir=./inference/det_db \ Global.pretrained_model=./output/det_db/best_accuracy ``` ----- ### 三、关键注意事项 1. **数据量要求**: - 检测任务:建议至少500张标注图像 - 识别任务:建议至少3000张单行文本图像 2. **配置文件调参**: ```yml Optimizer: learning_rate: # 初始学习率设置示例 value: 0.001 decay: step: 1200 gamma: 0.1 ``` 3. **常见问题处理**: - 显存不足:减小`batch_size` - 过拟合:增加数据量或添加正则化 - 训练震荡:降低学习率 ----- ### 四、推荐资源 1. 官方文档:https://github.com/PaddlePaddle/PaddleOCR 2. 预训练模型库:https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ 3. 数据合成工具:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_en/data_synthesis_en.md 建议从官方提供的预训练模型开始微调,可显著提升小数据集训练效果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hi,heng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值