[PaddlePaddle/PaddleOCR]pgnet印章弯曲文字训练问题

2024-05-14 124 views
9

训练开源电子印章数据,刚开始几个epoch正常下降,训练13轮之后loss明明下降了却出现出现recall=0,percision=0.请问是什么问题,如下图。尝试训练pgnet好几次了,就没有正常过。。。。求大佬指点。

1d0baeebdcb41f5852cb23bc10c0f092 config如下 Global: use_gpu: true epoch_num: 600 log_smooth_window: 20 print_batch_step: 10 save_model_dir: ./output/0227seal_public/ save_epoch_step: 300 eval_batch_step:

  • 0
  • 400 cal_metric_during_train: false pretrained_model: ./pretrained_models/PGNet/best_accuracy checkpoints: null save_inference_dir: null use_visualdl: false infer_img: null valid_set: totaltext save_res_path: ./output/pgnet_r50_vd_totaltext/predicts_pgnet.txt character_dict_path: ppocr/utils/ppocr_keys_v1.tt character_type: CN max_text_length: 50 max_text_nums: 10 tcl_len: 64 load_static_weights: false Architecture: model_type: e2e algorithm: PGNet Transform: null Backbone: name: ResNet layers: 50 Neck: name: PGFPN Head: name: PGHead Loss: name: PGLoss tcl_bs: 32 max_text_length: 50 max_text_nums: 10 pad_num: 6623 Optimizer: name: Adam beta1: 0.9 beta2: 0.999 lr: name: Cosine learning_rate: 0.001 warmup_epoch: 50 regularizer: name: L2 factor: 5.0e-05 PostProcess: name: PGPostProcess score_thresh: 0.5 mode: fast Metric: name: E2EMetric mode: A gt_mat_dir: ./train_data/total_text/gt character_dict_path: ppocr/utils/ppocr_keys_v1.tt main_indicator: f_score_e2e Train: dataset: name: PGDataSet data_dir: /data/wxz/dataset/train/ label_file_list: [/data/wxz/dataset/train/train.tt] ratio_list:

    • 1.0 transforms:

    • DecodeImage: img_mode: BGR channel_first: false

    • E2ELabelEncodeTrain: null

    • PGProcessTrain: batch_size: 5 min_crop_size: 24 min_text_size: 4 max_text_size: 512

    • KeepKeys: keep_keys:

      • images
      • tcl_maps
      • tcl_label_maps
      • border_maps
      • direction_maps
      • training_masks
      • label_list
      • pos_list
      • pos_mask loader: shuffle: true drop_last: true batch_size_per_card: 5 num_workers: 0 Eval: dataset: name: PGDataSet data_dir: /data/wxz/dataset/test/ label_file_list: [/data/wxz/dataset/test/test.tt] transforms:
    • DecodeImage: img_mode: BGR channel_first: false

    • E2ELabelEncodeTest: character_dict_path: ppocr/utils/ppocr_keys_v1.tt

    • DetResizeForTest: image_shape:

      • 512
      • 512 padding: true
    • NormalizeImage: scale: 1./255. mean: [ 0.485, 0.456, 0.406 ] std: [ 0.229, 0.224, 0.225 ] order: 'hwc'

    • ToCHWImage: null

    • KeepKeys: keep_keys:

      • image
      • shape
      • polys
      • texts
      • ignore_tags
      • img_id loader: shuffle: false drop_last: false batch_size_per_card: 1 num_workers: 0 profiler_options: null

回答

6

+1

放弃吧。。。我训练了五天公开数据集合。loss 10.+ 最后推理什么都没有。。。。。。完全就是废的

7

+1

放弃吧。。。我训练了五天公开数据集合。loss 10.+ 最后推理什么都没有。。。。。。完全就是废的

别再搞中文的的弯曲文字识别了,没有预训练模型是训练不出来的。

2

我有百度放出来的预训练模型。也用来初始化了。用的也是百度放出来的开源电子印章数据集合,结果还是很拉胯。。。废了大量时间精力。。。。真的是搞死人啊。。。。。。。。。。。。。。。

5

我有百度放出来的预训练模型。也用来初始化了。用的也是百度放出来的开源电子印章数据集合,结果还是很拉胯。。。废了大量时间精力。。。。真的是搞死人啊。。。。。。。。。。。。。。。

这个模型很拉胯的,本身训练的数据量就不大。

0

我有百度放出来的预训练模型。也用来初始化了。用的也是百度放出来的开源电子印章数据集合,结果还是很拉胯。。。废了大量时间精力。。。。真的是搞死人啊。。。。。。。。。。。。。。。

这个模型很拉胯的,本身训练的数据量就不大。

有道理。这模型loss越低效果越差,用来训练检测还是可以的。我把那个ctc参数置为0,边框学习的还挺好。

9

我有百度放出来的预训练模型。也用来初始化了。用的也是百度放出来的开源电子印章数据集合,结果还是很拉胯。。。废了大量时间精力。。。。真的是搞死人啊。。。。。。。。。。。。。。。

这个模型很拉胯的,本身训练的数据量就不大。

有道理。这模型loss越低效果越差,用来训练检测还是可以的。我把那个ctc参数置为0,边框学习的还挺好。

如果只是识别印章文字,可以换一种方法,只需要训练一个印章检测模型就可以了,后面使用坐标变换将文字拉直,再使用官方的ocr模型识别文字,效果更好。

3

我有百度放出来的预训练模型。也用来初始化了。用的也是百度放出来的开源电子印章数据集合,结果还是很拉胯。。。废了大量时间精力。。。。真的是搞死人啊。。。。。。。。。。。。。。。

这个模型很拉胯的,本身训练的数据量就不大。

有道理。这模型loss越低效果越差,用来训练检测还是可以的。我把那个ctc参数置为0,边框学习的还挺好。

如果只是识别印章文字,可以换一种方法,只需要训练一个印章检测模型就可以了,后面使用坐标变换将文字拉直,再使用官方的ocr模型识别文字,效果更好。

大佬666,是这样滴。

0

坐标变换将文

看看大佬的代码?

9

如果只是识别印章文字,可以换一种方法,只需要训练一个印章检测模型就可以了,后面使用坐标变换将文字拉直,再使用官方的ocr模型识别文字,效果更好。

那PGnet作为e2e算法, 还有啥意义, 直接DBnet加Sing Visual model更好?

9

如果只是识别印章文字,可以换一种方法,只需要训练一个印章检测模型就可以了,后面使用坐标变换将文字拉直,再使用官方的ocr模型识别文字,效果更好。

那PGnet作为e2e算法, 还有啥意义, 直接DBnet加Sing Visual model更好?

不是没有意义,你有大量的训练数据完全可以用PGnet去训练啊

7

如果只是识别印章文字,可以换一种方法,只需要训练一个印章检测模型就可以了,后面使用坐标变换将文字拉直,再使用官方的ocr模型识别文字,效果更好。

那PGnet作为e2e算法, 还有啥意义, 直接DBnet加Sing Visual model更好?

我不确定数据量上去了能不能训练出来,公开数据集5000张是不行。而且结果诡异,loss很低,test结果很差,按道理讲表明过拟合,但是测试tran过得也是效果很差。。。。所以慎重使用。业界大部分也是二阶段,这样好优化。

9

我有百度放出来的预训练模型。也用来初始化了。用的也是百度放出来的开源电子印章数据集合,结果还是很拉胯。。。废了大量时间精力。。。。真的是搞死人啊。。。。。。。。。。。。。。。

这个模型很拉胯的,本身训练的数据量就不大。

有道理。这模型loss越低效果越差,用来训练检测还是可以的。我把那个ctc参数置为0,边框学习的还挺好。

如果只是识别印章文字,可以换一种方法,只需要训练一个印章检测模型就可以了,后面使用坐标变换将文字拉直,再使用官方的ocr模型识别文字,效果更好。

大佬666,是这样滴。

我有百度放出来的预训练模型。也用来初始化了。用的也是百度放出来的开源电子印章数据集合,结果还是很拉胯。。。废了大量时间精力。。。。真的是搞死人啊。。。。。。。。。。。。。。。

这个模型很拉胯的,本身训练的数据量就不大。

有道理。这模型loss越低效果越差,用来训练检测还是可以的。我把那个ctc参数置为0,边框学习的还挺好。

如果只是识别印章文字,可以换一种方法,只需要训练一个印章检测模型就可以了,后面使用坐标变换将文字拉直,再使用官方的ocr模型识别文字,效果更好。

请问下把文字拉直有什么好方法推荐吗?感谢

1

我有百度放出来的预训练模型。也用来初始化了。用的也是百度放出来的开源电子印章数据集合,结果还是很拉胯。。。废了大量时间精力。。。。真的是搞死人啊。。。。。。。。。。。。。。。

这个模型很拉胯的,本身训练的数据量就不大。

有道理。这模型loss越低效果越差,用来训练检测还是可以的。我把那个ctc参数置为0,边框学习的还挺好。

如果只是识别印章文字,可以换一种方法,只需要训练一个印章检测模型就可以了,后面使用坐标变换将文字拉直,再使用官方的ocr模型识别文字,效果更好。

大佬,如果印章背景中出现干扰文字的话,该怎么去除干扰文字呢?

0

极坐标变换还有薄板法,前提是你的坐标点按照阅读顺序,不然容易乱。

6

极坐标变换还有薄板法,前提是你的坐标点按照阅读顺序,不然容易乱。

感谢大佬的回复,我的意思是比如说像下面这种图片有什么办法可以去除印章的背景文字呢,如果印章中有背景文字的话,拉直了后也会干扰ocr的识别 294

9

极坐标变换还有薄板法,前提是你的坐标点按照阅读顺序,不然容易乱。

感谢大佬的回复,我的意思是比如说像下面这种图片有什么办法可以去除印章的背景文字呢,如果印章中有背景文字的话,拉直了后也会干扰ocr的识别 294

您好这个就需要你有足够的数据取训练或者微调识别模型了。如果字都是统一的黑的可以使用传统算法给他去掉。

6

极坐标变换还有薄板法,前提是你的坐标点按照阅读顺序,不然容易乱。

感谢大佬的回复,我的意思是比如说像下面这种图片有什么办法可以去除印章的背景文字呢,如果印章中有背景文字的话,拉直了后也会干扰ocr的识别 294

您好这个就需要你有足够的数据取训练或者微调识别模型了。如果字都是统一的黑的可以使用传统算法给他去掉。

那大佬这里的传统算法有什么方法吗,我之前有根据rgb通道去除黑色字体,但是效果不太好

8

极坐标变换还有薄板法,前提是你的坐标点按照阅读顺序,不然容易乱。

感谢大佬的回复,我的意思是比如说像下面这种图片有什么办法可以去除印章的背景文字呢,如果印章中有背景文字的话,拉直了后也会干扰ocr的识别 294

您好这个就需要你有足够的数据取训练或者微调识别模型了。如果字都是统一的黑的可以使用传统算法给他去掉。

那大佬这里的传统算法有什么方法吗,我之前有根据rgb通道去除黑色字体,但是效果不太好

可以试试用opencv轮廓检测去掉黑色背景文字

9

This issue has been automatically marked as stale because it has not had recent activity. It will be closed in 7 days if no further activity occurs. Thank you for your contributions.