PaddleOCR —— 动态图训练

官方repo:github地址
可以star代码关注更新情况,最近在迁移代码到动态图,可能更新较频繁~

下载代码

https://github.com/PaddlePaddle/PaddleOCR.git

切换分支

git checkout dygraph

在这里插入图片描述

创建训练的配置文件

Global:
  use_gpu: true
  epoch_num: 500
  log_smooth_window: 20
  print_batch_step: 10
  save_model_dir: ./output/rec_french
  save_epoch_step: 3
  # evaluation is run every 5000 iterations after the 4000th iteration
  eval_batch_step: [0, 2000]
  # if pretrained_model is saved in static mode, load_static_weights must set to True
  cal_metric_during_train: True
  pretrained_model:
  checkpoints: 
  save_inference_dir:
  use_visualdl: False
  infer_img: doc/imgs_words/ch/word_1.jpg
  # for data or label process
  character_dict_path: ppocr/utils/french_dict.txt
  character_type: ch
  max_text_length: 25
  infer_mode: False
  use_space_char: False


Optimizer:
  name: Adam
  beta1: 0.9
  beta2: 0.999
  lr:
    name: Cosine
    learning_rate: 0.001
  regularizer:
    name: 'L2'
    factor: 0.00001

Architecture:
  model_type: rec
  algorithm: CRNN
  Transform:
  Backbone:
    name: MobileNetV3
    scale: 0.5
    model_name: small
    small_stride: [1, 2, 2, 2]
  Neck:
    name: SequenceEncoder
    encoder_type: rnn
    hidden_size: 48
  Head:
    name: CTCHead
    fc_decay: 0.00001

Loss:
  name: CTCLoss

PostProcess:
  name: CTCLabelDecode

Metric:
  name: RecMetric
  main_indicator: acc

Train:
  dataset:
    name: SimpleDataSet
    data_dir: ./train_data/
    label_file_list: ["./train_data/french_train_list.txt"]
    transforms:
      - DecodeImage: # load image
          img_mode: BGR
          channel_first: False
      - RecAug: 
      - CTCLabelEncode: # Class handling label
      - RecResizeImg:
          image_shape: [3, 32, 320]
      - KeepKeys:
          keep_keys: ['image', 'label', 'length'] # dataloader will return list in this order
  loader:
    shuffle: True
    batch_size_per_card: 256
    drop_last: True
    num_workers: 8

Eval:
  dataset:
    name: SimpleDataSet
    data_dir: ./train_data
    label_file_list: ["./train_data/french_val_list.txt"]
    transforms:
      - DecodeImage: # load image
          img_mode: BGR
          channel_first: False
      - CTCLabelEncode: # Class handling label
      - RecResizeImg:
          image_shape: [3, 32, 320]
      - KeepKeys:
          keep_keys: ['image', 'label', 'length'] # dataloader will return list in this order
  loader:
    shuffle: False
    drop_last: False
    batch_size_per_card: 256
    num_workers: 8

注意修改:

  • save_model_dir: ./output/rec_french
  • character_dict_path: ppocr/utils/french_dict.txt
  • character_type: ch # 这里最好都设置ch,目前代码没有添加其他语种的type,不过没啥影响
  • data_dir: ./train_data/
  • label_file_list: ["./train_data/french_train_list.txt"] # 动态图没有了reader.yml文件全集成到lite_train.yml文件里了
  • data_dir: ./train_data
  • label_file_list: ["./train_data/french_val_list.txt"] # 动态图没有了reader.yml文件全集成到lite_train.yml文件里了

准备训练集

如果磁盘上已经有训练测试数据,直接用ln -s dir/ 命令创建软连接免得挪动数据:

cd PaddleOCR/train_data/
ln -s /workspace/data/text_render/french_word_img/
ln -s /workspace/data/text_render/french_img

然后将数据的标签文件放在同一个目录下即可:
在这里插入图片描述

启动训练

python3 -m paddle.distributed.launch --selected_gpus '0,1,2,3'  tools/train.py -c configs/rec/xxxxx.yml
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 黑客帝国 设计师:上身试试 返回首页