PaddlePaddle飞桨OCR文本检测——检测模型训练(二)

上一篇安装https://blog.csdn.net/weixin_42845306/article/details/112688405
飞桨的OCR模型分为检测、识别和分类,先看检测。
检测就是将(可能的)文本标定好坐标,简单说就是给图中的文本画框。

数据集制作及图片标注

首先制作训练集,找很多带文字的图片,放在一个文件夹里(这里叫img_50),注意图片的名字。
虽说可以任意,但最好还是得有规律。
然后是标定标签,方法有很多,这里用自带的PPOCRLabel,用法这里有详细介绍:
https://github.com/PaddlePaddle/PaddleOCR/blob/dygraph/PPOCRLabel/README_ch.md
大概用法就是安装pyqt(一个python中的可视化库),打开软件,载入放图片的文件夹,先半自动标注,然后手动调整,保存标记结果可以保存出一个label.txt里面密密麻麻放着坐标,保存识别结果可以把图片里面所有的文字全抠出来单独放进一个文件夹crop_img,作为识别训练集,还有对应的识别标签rec_gt.txt(识别这步下次再讲)。
PaddlePaddle飞桨OCR文本检测——检测模型训练(二)_第1张图片
测试集的制作方法一模一样。

数据集安置

在PaddleOCR-dygraph根目录下建立一个文件夹"train_data",再新建一个文件夹"img_50"作为自定义数据集的位置,在img_50里放入训练集和测试集的label.txt和对应的两个文件夹的图片(只放图片)。
我偷了个懒,不弄测试集了,直接把训练集当测试集
PaddlePaddle飞桨OCR文本检测——检测模型训练(二)_第2张图片

预训练模型安置

从网上下载预训练模型,比如https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x0_5_pretrained.tar

解压一定要用这个命令:

tar -xf ./pretrain_models/MobileNetV3_large_x0_5_pretrained.tar

这样解压出来的才是很多个权值文件,右键解压会直接解压出一个大文件,无法使用。
将解压后的MobileNetV3_large_x0_5_pretrained模型文件夹放在PaddleOCR-dygraph下新建的pretrain_models文件夹中:
PaddlePaddle飞桨OCR文本检测——检测模型训练(二)_第3张图片

调参

PaddlePaddle飞桨OCR文本检测——检测模型训练(二)_第4张图片
找到det_mv3_db.yml,这是检测模型MobileNetV3的参数训练设置,记事本打开。
里面的参数看着改,主要是这几点:
pretrained_model: ./pretrain_models/MobileNetV3_large_x0_5_pretrained/
data_dir: ./train_data/img_50/
label_file_list:
- ./train_data/img_50/Label.txt
注意测试集和训练集的路径都要调整。

训练开始

在PaddleOCR-dygraph根目录打开cmd,输入以下其中之一命令即可测试

# 单机单卡训练 mv3_db 模型
python tools/train.py -c configs/det/det_mv3_db.yml \
     -o Global.pretrain_weights=./pretrain_models/MobileNetV3_large_x0_5_pretrained/
# 单机多卡训练,通过 --gpus 参数设置使用的GPU ID;如果使用的paddle版本小于2.0rc1,请使用'--select_gpus'参数选择要使用的GPU
python -m paddle.distributed.launch --gpus '0,1,2,3' tools/train.py -c configs/det/det_mv3_db.yml \
     -o Global.pretrain_weights=./pretrain_models/MobileNetV3_large_x0_5_pretrained/

其实调整了.yml文件后,-o参数可以不写

训练进行中:
PaddlePaddle飞桨OCR文本检测——检测模型训练(二)_第5张图片

站在巨人的肩膀上

其实我们可以在别人已经训练好的模型上接着我们的训练对吧?
也可以训练一段时候后,断点续……训。
我们训练的模型,默认会保存在./output文件夹下,三个主要文件:
latest.pdopt
latest.pdparams
latest.states
不管后缀名的话,这个训练的模型称之为latest

如果要接着训练的话,在刚刚设置参数的.yml文件中找到checkpoints参数,写入路径
PaddlePaddle飞桨OCR文本检测——检测模型训练(二)_第6张图片
注意后面要写上模型的名字。
然后再调用命令训练,可以看到resume from
PaddlePaddle飞桨OCR文本检测——检测模型训练(二)_第7张图片
如果使用飞桨已经训练好的模型,可以在GitHub上找到,也可以在上一篇博客中找到网盘链接,这里放上各个模型对应的类型:
PaddlePaddle飞桨OCR文本检测——检测模型训练(二)_第8张图片

一切都可以从手册学到https://github.com/PaddlePaddle/PaddleOCR/blob/dygraph/doc/doc_ch/detection.md

你可能感兴趣的:(人工智障,Python,python,深度学习,机器学习,计算机视觉)