PaddleOCR模型训练1-检测模型

数据集

各类公开数据集:汇总地址1
地址2和不同数据集介绍
icdar2015
在这里插入图片描述

标签处理

  1. train
python ppocr/utils/gen_label.py --mode="det" --root_path="ch4_training_images" --input_path="train_data/icdar2015/ch4_training_localization_transcription_gt" --ou
tput_label="train_data/icdar2015/train_icdar2015_label.txt"
  1. val
python ppocr/utils/gen_label.py --mode="det" --root_path="ch4_test_images" --input_path="train_data/icdar2015/Challenge4_Test_Task1_GT" --output_label="train_data/icdar2015/test_icdar2015_label.txt"

训练模型

python3 tools/train.py -c configs/det/det_mv3_db.yml -o Global.checkpoints=./pretrain_models/MobileNetV3_large_x0_5_pretrained

多个数据集合并

  • 这里我认为icdar2015数据量太少,我新增ICDAR2017-RCTW数据集(大概8000张训练图像)
  • ICDAR2017-RCTW数据集标注文件为坐标,识别难易程度,内容这里比ICDAR2015多了识别难以程度,在标准化标签处理需要进行调整
  • 修改ppocr/utils/gen_label.py代码适配ICDAR2017-RCTW
import csv
def gen_det_label(root_path, input_dir, out_label):
    with open(out_label, "w", encoding="utf-8") as out_file:
        for label_file in os.listdir(input_dir):
            img_path = os.path.join(root_path, label_file[:-4] + ".jpg")
            label = []
            with open(os.path.join(input_dir, label_file), "r", encoding="utf-8-sig") as f:
                reader = csv.reader(f)  # 使用 csv 解析,避免误拆分带引号的字段
                for row in reader:
                    if len(row) < 10:  # 确保数据足够
                        print(f"Warning: Skipping invalid data in {label_file}: {row}")
                        continue  

                    points = row[:8]  # 取前 8 个数值作为坐标点
                    transcription = row[9]  # 忽略 row[8],取 row[9] 作为文本

                    try:
                        s = [[int(points[i]), int(points[i + 1])] for i in range(0, 8, 2)]
                    except ValueError:
                        print(f"Error parsing coordinates in file {label_file}: {row}")
                        continue  # 跳过错误数据

                    label.append({"transcription": transcription, "points": s})

            out_file.write(img_path + "\t" + json.dumps(label, ensure_ascii=False) + "\n")

  • 这里得到了两个数据集放置在一个文件夹中
    在这里插入图片描述
  • txt合并train_label、test_label
cat train_data/icdar2015/text_localization/train_icdar2015_label.txt train_data/icdar2015/text_localization/train_icdar2017_label.txt > train_data/icdar2015/text_local
ization/train_icdar2015_2017_label.txt
验证集同理

在这里插入图片描述

  • 修改configs/det/det_mv3_db.yml数据集路径–略

  • 多卡训练/指定具体gpu训练

python -m paddle.distributed.launch --gpus '0,1,2,3' tools/train.py -c configs/det/det_mv3_db.yml \
       -o Global.pretrained_model=./pretrain_models/MobileNetV3_large_x0_5_pretrained

在这里插入图片描述

  • 推理
python tools/infer_det.py -c configs/det/det_mv3_db.yml -o Global.checkpoints=./output/db_mv3/best_accuracy Global.infer_img=/mnt/images/
  • 验证
python tools/eval.py -c configs/det/det_mv3_db.yml -o Global.checkpoints=./output/db_mv3/best_accuracy 
评价指标

在这里插入图片描述

  • 包含准确率、召回率、平均值、fps
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值