diff --git a/paddlex/configs/textline_orientation/PP-LCNet_x1_0_textline_ori.yaml b/paddlex/configs/textline_orientation/PP-LCNet_x1_0_textline_ori.yaml new file mode 100644 index 000000000..dd0a7c19e --- /dev/null +++ b/paddlex/configs/textline_orientation/PP-LCNet_x1_0_textline_ori.yaml @@ -0,0 +1,41 @@ +Global: + model: PP-LCNet_x1_0_textline_ori + mode: check_dataset # check_dataset/train/evaluate/predict + dataset_dir: "/paddle/dataset/paddlex/cls/textline_orientation_examples" + device: gpu:0,1,2,3 + output: "output" + +CheckDataset: + convert: + enable: False + src_dataset_type: null + split: + enable: False + train_percent: null + val_percent: null + +Train: + num_classes: 2 + epochs_iters: 20 + batch_size: 32 + learning_rate: 0.8 + pretrain_weight_path: null + warmup_steps: 100 + resume_path: null + log_interval: 10 + eval_interval: 1 + save_interval: 1 + +Evaluate: + weight_path: "output/best_model/best_model.pdparams" + log_interval: 10 + +Export: + weight_path: https://paddleclas.bj.bcebos.com/models/PULC/pretrained/textline_orientation_pretrained.pdparams + +Predict: + batch_size: 1 + model_dir: "output/best_model/inference" + input: "https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/img_textline180_demo.jpg" + kernel_option: + run_mode: paddle diff --git a/paddlex/inference/utils/official_models.py b/paddlex/inference/utils/official_models.py index e4a39c8c3..693572a4a 100644 --- a/paddlex/inference/utils/official_models.py +++ b/paddlex/inference/utils/official_models.py @@ -37,6 +37,7 @@ "PP-LCNet_x0_75": "https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0b1_v2/PP-LCNet_x0_75_infer.tar", "PP-LCNet_x1_0": "https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0b1_v2/PP-LCNet_x1_0_infer.tar", "PP-LCNet_x1_0_doc_ori": "https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0b1_v2/PP-LCNet_x1_0_doc_ori_infer.tar", + "PP-LCNet_x1_0_textline_ori": "https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0b1_v2/PP-LCNet_x1_0_textline_ori_infer.tar", "PP-LCNet_x1_5": "https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0b1_v2/PP-LCNet_x1_5_infer.tar", "PP-LCNet_x2_5": "https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0b1_v2/PP-LCNet_x2_5_infer.tar", "PP-LCNet_x2_0": "https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0b1_v2/PP-LCNet_x2_0_infer.tar", diff --git a/paddlex/modules/image_classification/model_list.py b/paddlex/modules/image_classification/model_list.py index 1d70f8376..41951563f 100644 --- a/paddlex/modules/image_classification/model_list.py +++ b/paddlex/modules/image_classification/model_list.py @@ -61,6 +61,7 @@ "PP-LCNet_x0_75", "PP-LCNet_x1_0", "PP-LCNet_x1_0_doc_ori", + "PP-LCNet_x1_0_textline_ori", "PP-LCNet_x1_5", "PP-LCNet_x2_0", "PP-LCNet_x2_5", diff --git a/paddlex/repo_apis/PaddleClas_api/cls/register.py b/paddlex/repo_apis/PaddleClas_api/cls/register.py index 98f321164..67535d53c 100644 --- a/paddlex/repo_apis/PaddleClas_api/cls/register.py +++ b/paddlex/repo_apis/PaddleClas_api/cls/register.py @@ -947,3 +947,14 @@ "hpi_config_path": None, } ) + +register_model_info( + { + "model_name": "PP-LCNet_x1_0_textline_ori", + "suite": "Cls", + "config_path": osp.join(PDX_CONFIG_DIR, "PP-LCNet_x1_0_textline_ori.yaml"), + "supported_apis": ["train", "evaluate", "predict", "export", "infer"], + "infer_config": "deploy/configs/inference_cls.yaml", + "hpi_config_path": None, + } +) diff --git a/paddlex/repo_apis/PaddleClas_api/configs/PP-LCNet_x1_0_textline_ori.yaml b/paddlex/repo_apis/PaddleClas_api/configs/PP-LCNet_x1_0_textline_ori.yaml new file mode 100644 index 000000000..a1f6b86db --- /dev/null +++ b/paddlex/repo_apis/PaddleClas_api/configs/PP-LCNet_x1_0_textline_ori.yaml @@ -0,0 +1,143 @@ +# global configs +Global: + checkpoints: null + pretrained_model: null + output_dir: ./output/ + device: gpu + save_interval: 1 + eval_during_train: True + start_eval_epoch: 1 + eval_interval: 1 + epochs: 20 + print_batch_step: 10 + use_visualdl: False + # used for static mode and model export + image_shape: [3, 80, 160] + save_inference_dir: ./inference + # training model under @to_static + to_static: False + use_dali: False + +# model architecture +Arch: + name: PPLCNet_x1_0 + class_num: 2 + pretrained: True + use_ssld: True + stride_list: [2, [2, 1], [2, 1], [2, 1], [2, 1]] + +# loss function config for traing/eval process +Loss: + Train: + - CELoss: + weight: 1.0 + Eval: + - CELoss: + weight: 1.0 + + +Optimizer: + name: Momentum + momentum: 0.9 + lr: + name: Cosine + learning_rate: 0.8 + warmup_epoch: 5 + regularizer: + name: 'L2' + coeff: 0.00004 + + +# data loader for train and eval +DataLoader: + Train: + dataset: + name: ImageNetDataset + image_root: ./dataset/textline_orientation/ + cls_label_path: ./dataset/textline_orientation/train_list.txt + transform_ops: + - DecodeImage: + to_rgb: True + channel_first: False + - ResizeImage: + size: [160, 80] + - TimmAutoAugment: + prob: 1.0 + config_str: rand-m9-mstd0.5-inc1 + interpolation: bicubic + img_size: [160, 80] + - NormalizeImage: + scale: 1.0/255.0 + mean: [0.485, 0.456, 0.406] + std: [0.229, 0.224, 0.225] + order: '' + - RandomErasing: + EPSILON: 0.0 + sl: 0.02 + sh: 1.0/3.0 + r1: 0.3 + attempt: 10 + use_log_aspect: True + mode: pixel + + sampler: + name: DistributedBatchSampler + batch_size: 16 + drop_last: False + shuffle: True + loader: + num_workers: 16 + use_shared_memory: True + + Eval: + dataset: + name: ImageNetDataset + image_root: ./dataset/textline_orientation/ + cls_label_path: ./dataset/textline_orientation/val_list.txt + transform_ops: + - DecodeImage: + to_rgb: True + channel_first: False + - ResizeImage: + size: [160, 80] + - NormalizeImage: + scale: 1.0/255.0 + mean: [0.485, 0.456, 0.406] + std: [0.229, 0.224, 0.225] + order: '' + sampler: + name: DistributedBatchSampler + batch_size: 128 + drop_last: False + shuffle: False + loader: + num_workers: 8 + use_shared_memory: True + +Infer: + infer_imgs: deploy/images/PULC/textline_orientation/textline_orientation_test_0_0.png + batch_size: 10 + transforms: + - DecodeImage: + to_rgb: True + channel_first: False + - ResizeImage: + size: [160, 80] + - NormalizeImage: + scale: 1.0/255.0 + mean: [0.485, 0.456, 0.406] + std: [0.229, 0.224, 0.225] + order: '' + - ToCHWImage: + PostProcess: + name: Topk + topk: 1 + class_id_map_file: ppcls/utils/PULC_label_list/textline_orientation_label_list.txt + +Metric: + Train: + - TopkAcc: + topk: [1, 2] + Eval: + - TopkAcc: + topk: [1, 2]