利用多个不同的模型进行训练,选择效率和准确率更高的模型。
一、PP-OCRv4-rec
这个模型是官方baseline
中使用的,但是模型比较小,表现能力有限。
%cd /home/aistudio/PaddleOCR
# 开始训练识别模型
!python tools/train.py -c ./configs/rec/PP-OCRv4/ch_PP-OCRv4_rec-sixteentang.yml \
-o Global.pretrained_model="./pretrained_models/ch_PP-OCRv4_rec_train" \
Global.pretrained_model="./pretrained_models/ch_PP-OCRv4_rec_train/student.pdparams" \
# Global.checkpoints="./output/rec_ppocr_v4/latest"
准确率不到0.1,训练效果不尽人意。
二、PP-OCRv4_rec_hgnet
使用多数据集需要指定多个标签文件
Train:
dataset:
name: MultiScaleDataSet
ds_width: false
data_dir: /home/aistudio/work/DataForCompetitor/
ext_op_transform_idx: 1
label_file_list:
- /home/aistudio/work/DataForCompetitor/train_label.txt
- /home/aistudio/work/DataForCompetitor/LabelTrain.txt
ratio_list:
- 1.0
- 1.0
标签文件的第一列中训练集图像路径必须是基于配置文件中的data_dir
的相对路径。如:
如果使用融合数据集,需要保证融合的数据集的标签文件和图像文件夹与原比赛数据集的图像文件夹及标签文件是同一个目录下的。使用融合数据集在训练的初期acc会比只用比赛数据集的acc要高大概0.1左右。
%cd /home/aistudio/PaddleOCR
!python tools/train.py -c ./configs/rec/PP-OCRv4/ch_PP-OCRv4_rec_hgnet-sixteentang.yml \
-o Train.sampler.first_bs=352 \
Train.loader.batch_size_per_card=352 \
Eval.loader.batch_size_per_card=340 \
Optimizer.lr.learning_rate=0.00034375 \
PostProcess.name="CTCLabelDecode" \
Global.pretrained_model="./pretrained_models/ch_PP-OCRv4_rec_server_train/best_accuracy.pdparams" \
# Global.checkpoints="./output/rec_ppocr_v4_hgnet/latest"
原始模型训练的准确度大概在0.10675左右,相比上一个模型识别准确率有所提高,最终我们使用了该模型。
三、导出OCR模型
%cd ~/PaddleOCR
!python tools/export_model.py -c "./configs/rec/PP-OCRv4/ch_PP-OCRv4_rec_hgnet-sixteentang.yml" \
-o Global.pretrained_model="./output/rec_ppocr_v4_hgnet/iter_epoch_10.pdparams" \
Global.save_inference_dir="/home/aistudio/infer/"
四、提交submission
把推理模型放到submission
文件夹中的model文件夹下,压缩文件包,从本地上传提交。
必须注意submission.zip
的格式必须和baseline
中给出的格式一样!