当前位置:   article > 正文

paddleOcr训练一个属于自己的模型_paddleocr训练自己的模型

paddleocr训练自己的模型

自己配置开发环境的时候踩了不少坑,现在记录下来,以后需要了可以直接找到现成的代码,也希望能够帮到有需要的小伙伴

(一)、运行环境搭建

1、Anaconda部分

Anaconda安装

本站有很多安装教程,我就不再重复造车轮了,选了一个讲的比较详细的,可以参考使用Anaconda安装教程

Anaconda创建虚拟环境指令

在开始菜单搜索Anaconda,点击以下应用进入anaconda终端。

在这里插入图片描述

输入以下代码用来创建虚拟环境,Al_Ocr为虚拟环境命名,可以自己取名字,后面是要安装的python版本。

conda create -n Al_Ocr python=3.8
  • 1

如图
在这里插入图片描述

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

#进入虚拟环境指令
activate Al_Oc


#离开虚拟环境指令
deactivate
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Anaconda Prompt工作路径的切换

因为我遇到的情况需要切换代码执行路径,所以也记录一下切换方法

# 切换到根目录
cd /
# 切换到D盘
D:
# 切换到D盘指定目录
cd D:\Anaconda\envs\Al_Ocr\Lib\site-packages\PaddleOCR-release-2.5
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述

2、 PaddleOcr部分

paddleocr 安装

点击这里实现下载:

paddleocr下载

下载完成之后解压缩到当前虚拟环境中的sitepakges目录下,比如我这个目录是

D:\Anaconda\envs\Al_Ocr\Lib\site-packages\paddleocr
  • 1

paddleocr其他依赖库安装

打开anaconda终端,进入PaddleOC目录下激活环境并输入以下指令

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
  • 1

3、Paddle部分

paddle2.5.1安装CPU版本

python -m pip install paddlepaddle==2.5.1 -i https://mirror.baidu.com/pypi/simpl
  • 1

【顺利就不用看这里】如果出现以下错误可以换地址重新安装

ERROR: HTTP error 403 while getting https://pypi.tuna.tsinghua.edu.cn/packages/0
  • 1

报上面的错误信息换成下面的地址下载和安装

python -m pip install paddlepaddle==2.5.1 -i https://pypi.douban.com/simpl
  • 1

需要先升级:

python.exe -m pip install --upgrade pi
  • 1

4、 验证环境

进入以下网址下载官方模型:

https://hub.nuaa.cf/PaddlePaddle/PaddleOCR/blob/release/2.7/doc/doc_ch/models_list.md
  • 1

官网模型下载链接直达

需要下载两个模型用来进行验证,分别为文本检测模型文本识别模型,选择下载推理模型

文本检测模型

文本检测推理模型
文本识别模型

文本识别推理模型

模型下载后为两个压缩包,在PaddleOCR根目录下新建文件夹inference_model

在这里插入图片描述
将下载好的模型解压缩在刚刚新建的文件夹,处理好是这样的层级

在这里插入图片描述

打开anaconda终端激活环境Al_Ocr进入到paddleocr目录下运行以下指令,其中image_dir所要识别的图片路径det_model_dir为刚才下载的文字检测模型rec_model_dir为刚才下载的文字识别模型

python tools/infer/predict_system.py  --image_dir="D:\OCR\New_model\cut1\test.jpg" --det_model_dir="./inference_model/ch_PP-OCRv3_det_infer/" --rec_model_dir="./inference_model/ch_PP-OCRv3_rec_infer"
  • 1

原图如下:
在这里插入图片描述
在这里插入图片描述
如果出现上面的界面,说明环境搭建成功,接下来就是训练自己的模型了

(二)、训练属于自己的模型

1、数据准备

(1)、数据标注

在Anaconda Prompt终端进入paddleOC根目录下,再输入
cd PPOCRLabel 进入目录,

cd PPOCRLabel
  • 1

输入以下代码打开打标软件

python PPOCRLabel.py --lang ch
  • 1

如果报错说PPCORLabel没找到,就去安装一下PPOCORLabel库

pip install PPOCRLabel

#如果运行了这一步,后面切换执行文件时应该在.\site-packages\PPOCRLabel,而不是.\site-packages\paddleocr\PPOCRLabel,如果还想按照之前的地址执行就需要把PPOCRLabel文件夹复制到paddleocr文件夹下
  • 1
  • 2
  • 3

打开后点击文件,点击打开目录选择需要打标签的数据集文件夹,我这以刚刚的截图为例。如下图所示。

在这里插入图片描述

选择自动标注点击ok等待自动标注完成

在这里插入图片描述

然后从第一张开始检查,漏打标的按下Q框出字体,打标文字错误的,点击方框,在右边修改,并对每一个方框给出关键词列表(点击编辑点击更改box关键词信息)。最后删除无用信息,切换下一张快捷键为D,如下图所示。

在这里插入图片描述
全部打标完成之后,点击文件选择导出标记结果,再点击文件选择导出识别结果,完成后再文件夹多出四个文件fileState,Label,rec_gt, crop_img。其中crop_img中的图片用来训练文字识别模型fileState记录图片的打标完成与否Label训练文字检测模型的标签rec_gt训练文字识别模型的标签

在这里插入图片描述
打标签告一段落。下面进行数据集的制作

(2)、数据集制作

在PaddleOCR根目录下建立train_data文件夹并且将打标签生成的文件和图片放在该文件夹下
在这里插入图片描述
打开Anaconda Prompt终端进入PPOCRLabel的文件夹下,输入以下代码进行数据集的划分

python gen_ocr_train_val_test.py --trainValTestRatio 6:2:2 --datasetRootPath ../train_data/drivingData
  • 1

输入指令之后,在train_data文件夹下会出现以下文件,其中det是用来训练文字检测的数据集rec是用来训练文字识别的数据集。此时可以删去drivingData。
在这里插入图片描述

在这里插入图片描述

此时文字检测和文字识别的数据集就都制作好了。

2、训练文字检测模型

(1)、下载模型训练文件:

模型下载链接直达

https://hub.nuaa.cf/PaddlePaddle/PaddleOCR/blob/release/2.7/doc/doc_ch/models_list.md
  • 1

在上面网站下载官方训练模型,注意不是推理模型。

文本检测模型:
在这里插入图片描述

文本识别模型:

在这里插入图片描述
下载之后在paddleocr根目录下建立pretrain_models文件夹,并将训练模型解压至该文件夹下。如下图所示:

在这里插入图片描述

(2)、 配置模型文件

下面配置模型文件。

打开模型配置文件,如下图所示,我一般用ch_det_res18_db_v2.0.yml这个配置文件。

在这里插入图片描述

对于配置文件的说明可以查看官网的说明文件,链接放在这里了

配置文件说明

https://hub.nuaa.cf/PaddlePaddle/PaddleOCR/blob/release/2.7/doc/doc_ch/config.md
  • 1

我们需要手动更改的有以下几个地方:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述配置好了之后就可以开始训练了

(3)、开始训练

打开anaconda prompt终端,激活环境进入到paddleocr根目录下。输入以下指令开始模型训练。

python tools/train.py -c configs/det/ch_ppocr_v2.0/ch_det_res18_db_v2.0.yml
  • 1

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

如果报错说yaml没找到的话我们手动安装一下即可

pip install pyyaml
  • 1

(4)、测试训练模型

模型训练完之后会在文件夹下保存训练好的模型,具体保存的文件夹看配置文件,这就是模型保存的路径。

save_model_dir: ./output/ch_db_res18/
  • 1

打开文件夹,文件组成大概如下图所示。

在这里插入图片描述
我们使用best_accuracy.pdparams进行我们的模型测试。

在anaconda prompt终端中输入以下指令进行测试。 其中Global.pretrained_model是我们训练好并且需要测试的模型Global.infer_img为所要检测的图片路径

python tools/infer_det.py -c configs/det/ch_ppocr_v2.0/ch_det_res18_db_v2.0.yml -o Global.pretrained_model=output/ch_db_driving/best_accuracy.pdparams Global.infer_img="D:\Anaconda\envs\Al_Ocr\Lib\site-packages\paddleocr\train_data\det\test\1.jpg"
  • 1

测试结果图片没有

文字检测模型的训练和测试就告一段落,下面进行文字识别模型的训练和测试。

3、训练文字识别模型

(1)、 配置模型文件

    在第三节已经下载了文字识别的模型所以不再多叙述。文字识别我一般使用的配置文件为ch_PP-OCRv3_rec.yml
  • 1

在这里插入图片描述
修改的地方和文字检测修改的差不多。
在这里插入图片描述

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

(2)、模型训练

打开anaconda prompt终端,激活环境进入到paddleocr根目录下。输入以下指令开始模型训练。

python tools/train.py -c configs/rec/PP-OCRv3/ch_PP-OCRv3_rec.yml
  • 1

训练完之后模型保存路径和文件组成和文字检测差不多,不再多叙述。

(3)、模型测试

在anaconda prompt终端中输入以下指令进行测试。 其中Global.pretrained_model是我们训练好并且需要测试的模型,Global.infer_img为所要检测的图片路径。

python tools/infer_rec.py -c configs/rec/PP-OCRv3/ch_PP-OCRv3_rec.yml -o Global.pretrained_model=output/rec/best_accuracy.pdparams Global.infer_img=“D:\Anaconda\envs\Al_Ocr\Lib\site-packages\paddleocr\train_data\rec\test\3.jpg”
  • 1

文字识别模型的训练和测试就告一段落。

4、转换成推理模型

在anaconda prompt终端中输入以下指令进行测试。 其中Global.pretrained_model是我们训练好并且需要推理的模型Global.save_inference_dir为所要保存推理模型的位置。推理模型是可以直接被调用进行识别和检测。分别把训练好的文字检测模型和文字识别模型推理。

文字检测模型推理

 python tools/export_model.py -c "./configs/det/ch_ppocr_v2.0/ch_det_res18_db_v2.0.yml" -o Global.pretrained_model="./output/ch_db_driving/latest.pdparams" Global.save_inference_dir="./inference_model/det/"
  • 1

文字识别模型推理

python tools/export_model.py -c "./configs/rec/PP-OCRv3/ch_PP-OCRv3_rec.yml" -o Global.pretrained_model="./output/rec_mobile_pp-OCRv2/latest.pdparams" Global.save_inference_dir="./inference_model/rec/"
  • 1

输入上面指令后推理模型将会出现在paddleoce根目录下文件夹inference_model,他的文件结构如下图所示。

在这里插入图片描述
其中detrec即是我们的推理模型,可以用predict_system.py进行验证。打开anaconda终端输入以下指令

python tools/infer/predict_system.py --image_dir="D:\Anaconda\envs\Al_Ocr\Lib\site-packages\paddleocr\train_data\drivingData\0.jpg" --det_model_dir="./inference_model/det/" --rec_model_dir="./inference_model/rec"
  • 1

识别图片会保存到inference_results文件夹下

5、推理模型应用

把模型训练出来之后还要对其进行应用,怎么去利用模型来实现我们需要的效果也是非常关键的一部分。

通过以下代码可以将咱们训练的模型在程序中调用,file_path为所要识别的图片路径,result为识别结果,texts是将结果中的纯文字部分提取出来进行下一步处理。

from paddleocr import PaddleOCR, draw_ocr
 
ocr = PaddleOCR(use_angle_cls=True, rec_model_dir='./inference_model/rec',
                    det_model_dir='./inference_model/det')
result = ocr.ocr(file_path, cls=True)
result = result[0]
texts = [line[1][0] for line in result]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

三、总结

这一路搭建环境遇到了很多的坑,总结下来有三类:

(1)、File No found文件没找到:

01、paddleocr里面的文件没找到

有ppocr、PPOCRLabel,总之就是paddleocr下的任意文件没找到都会报错,解决办法就是去官网下载压缩包,解压

02、paddle里面的文件没找到

这个一定要根据自己机器的配置来,cpu版的装gpu版的包就会各种报错,解决办法就是卸载重装一遍

(2)Import Error:

这个一般都是因为包没找到,以及版本不兼容,建议通过requirements.txt安装

(3)Os相关的报错

这个是跟文件名以及分隔符与系统不匹配导致的,可以尝试往这个方向去解决

四、参考博客

这篇博客一来是记录了我自己实践的一些经验,踩的一些坑,为了避免后面换了一个设备搭建环境时再踩一遍,二来也做一个备份,我看到了一篇写的特别详细的教程,怕因为各种原因找不着了,所以改了改做成了自己的,方便后面找他

PaddleOCR训练属于自己的模型详细教程

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/364166
推荐阅读
  

闽ICP备14008679号