检测模型训练
官方教程:https://codechina.csdn.net/mirrors/paddlepaddle/paddleocr/-/blob/develop/doc/doc_ch/detection.md
数据集制作:利用OCRLable
对于检测模型 det 进行训练
1. 预训练的检测det模型
Paddle项目提供了已经训练好的模型,在GitHub中可以下载,下载后放置在pretrain_models文件夹中。
cd PaddleOCR/
# 下载MobileNetV3的预训练模型
wget -P ./pretrain_models/ https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x0_5_pretrained.tar
# 或,下载ResNet18_vd的预训练模型
wget -P ./pretrain_models/ https://paddle-imagenet-models-name.bj.bcebos.com/ResNet18_vd_pretrained.tar
# 或,下载ResNet50_vd的预训练模型
wget -P ./pretrain_models/ https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vd_ssld_pretrained.tar

此处注意:
在Paddle1.7以前,模型文件是按照零散文件来存储的,在1.7之后统一了save load接口,都会保存为pdparams文件,所以在这里pretrain只需提供预训练前缀(新版预训练模型)或者文件夹(零散文件形式的预训练模型)即可。
2. 修改模型参数
用记事本打开condigs下yml文件修改

此处注意:
训练模型如果修改:./pretrain_models/MobileNetV3_large_x0_5_pretrained/ 会报错找不到模型
代码中定位到的模型文件是xxxx.pdparams
此外,原教材用的模型下载解压后都是很大的文件夹,没有pdparams文件,于是我用了服务器端的检测预训练模型:ch_ppocr_mobile_v1.1_det_train
修改内容:
1. 模型:用了ch_ppocr_mobile_v1.1_det_train/best_accuracy
2. 数据集(数据集位置和数据集标签)


3. 训练模型
位置在PaddleOCR下
```python
#单卡训练
python tools/train.py -c configs/det/det_mv3_db.yml
```
训练结果:
训练之后的模型储存在:./output/db_mv3/latest
4. 指标评估
PaddleOCR计算三个OCR检测相关的指标,分别是:Precision、Recall、Hmean。
precision是平均准确度,recall是平均召回率,hmean是这两项的调和平均。
运行如下代码,根据配置文件det_mv3_db.yml中save_res_path指定的测试集检测结果文件,计算评估指标。
评估时设置后处理参数box_thresh=0.6,unclip_ratio=1.5,使用不同数据集、不同模型训练,可调整这两个参数进行优化
python3 tools/eval.py -c configs/det/det_mv3_db.yml

问题:三个检测指标均为0
找一下此时的问题:
dataset :
data_dir : ./train_data/icdar2015/text_localization/
label_file_list : ['./train_data/icdar2015/text_localization/test_icdar2015_label.txt']
load pretrained model from ['./pretrain_models/ch_ppocr_mobile_v1.1_det_train/best_accuracy']
猜测是因为模型没更新到之前的训练模型,在参数文件添加断点训练,断点加载模型路径为之前的训练模型:
python3 tools/eval.py -c configs/det/det_mv3_db.yml -o Global.checkpoints="./output/db_mv3/latest"

测试单张图像的检测效果
python3 tools/infer_det.py -c configs/det/det_mv3_db.yml -o Global.infer_img="./doc/imgs_en/img_10.jpg"
python3 tools/infer_det.py -c configs/det/det_mv3_db.yml -o Global.infer_img="./doc/imgs_en/"

save_res_path : ./output/det_db/predicts_db.txt