diff --git "a/applications/\351\253\230\347\262\276\345\272\246\344\270\255\346\226\207\350\257\206\345\210\253\346\250\241\345\236\213.md" "b/applications/\351\253\230\347\262\276\345\272\246\344\270\255\346\226\207\350\257\206\345\210\253\346\250\241\345\236\213.md" index e3d0693ece021b61ae60cb21adbf7338504cb3e8..3c31af42ee41f6233b8ea42cf995543846c43120 100644 --- "a/applications/\351\253\230\347\262\276\345\272\246\344\270\255\346\226\207\350\257\206\345\210\253\346\250\241\345\236\213.md" +++ "b/applications/\351\253\230\347\262\276\345\272\246\344\270\255\346\226\207\350\257\206\345\210\253\346\250\241\345\236\213.md" @@ -2,7 +2,7 @@ ## 1. 简介 -PP-OCRv3是百度开源的超轻量级场景文本检测识别模型库,其中超轻量的场景中文识别模型SVTR_LCNet使用了SVTR算法结构。为了保证速度,SVTR_LCNet将SVTR模型的Local Blocks替换为LCNet,使用两层Global Blocks。在中文场景中,经过多次优化,SVTR_LCNet的最终精度为79.4%。具体的: +PP-OCRv3是百度开源的超轻量级场景文本检测识别模型库,其中超轻量的场景中文识别模型SVTR_LCNet使用了SVTR算法结构。为了保证速度,SVTR_LCNet将SVTR模型的Local Blocks替换为LCNet,使用两层Global Blocks。在中文场景中,PP-OCRv3识别主要使用如下优化策略: - GTC:Attention指导CTC训练策略; - TextConAug:挖掘文字上下文信息的数据增广策略; - TextRotNet:自监督的预训练模型; @@ -11,10 +11,11 @@ PP-OCRv3是百度开源的超轻量级场景文本检测识别模型库,其中 其中 *UIM:无标注数据挖掘方案* 使用了高精度的SVTR中文模型进行无标注文件的刷库,该模型在PP-OCRv3识别的数据集上训练,精度对比如下表。 -|中文识别算法|模型|精度| -| --- | --- | --- | -|PP-OCRv3|SVTR_LCNet|79.4%| -|SVTR|SVTR-Tiny|82.5%| +|中文识别算法|模型|UIM|精度| +| --- | --- | --- |--- | +|PP-OCRv3|SVTR_LCNet| w/o |78.4%| +|PP-OCRv3|SVTR_LCNet| w |79.4%| +|SVTR|SVTR-Tiny|-|82.5%| aistudio项目链接: [高精度中文场景文本识别模型SVTR](https://aistudio.baidu.com/aistudio/projectdetail/4263032) diff --git a/configs/rec/rec_svtrnet_ch.yml b/configs/rec/rec_svtrnet_ch.yml index b327edf499b7d8c085b2c2ad001fa968195efa6f..c4ce4ccc160ba15c3d4d21cfaca9feb96255daa0 100644 --- a/configs/rec/rec_svtrnet_ch.yml +++ b/configs/rec/rec_svtrnet_ch.yml @@ -92,9 +92,9 @@ Metric: Train: dataset: name: SimpleDataSet + data_dir: ./train_data label_file_list: - - /paddle/data/ocr_all/train_all_list.txt - data_dir: /paddle/data/ocr_all + - ./train_data/train_list.txt ext_op_transform_idx: 1 transforms: - DecodeImage: @@ -130,9 +130,9 @@ Train: Eval: dataset: name: SimpleDataSet - data_dir: /paddle/data/ocr_all + data_dir: ./train_data label_file_list: - - /paddle/data/ocr_all/val_list.txt + - ./train_data/val_list.txt transforms: - DecodeImage: img_mode: BGR diff --git a/ppocr/data/imaug/rec_img_aug.py b/ppocr/data/imaug/rec_img_aug.py index 92f7382724df3d46dcd31bbbfe1c281bf92ae621..1de8e6ee3c5c847cf4ae4ae4dd046dfa525e7821 100644 --- a/ppocr/data/imaug/rec_img_aug.py +++ b/ppocr/data/imaug/rec_img_aug.py @@ -97,7 +97,11 @@ class BaseDataAugmentation(object): class ABINetRecAug(object): - def __init__(self, **kwargs): + def __init__(self, + geometry_p=0.5, + deterioration_p=0.25, + colorjitter_p=0.25, + **kwargs): self.transforms = Compose([ CVGeometry( degrees=45, @@ -105,13 +109,14 @@ class ABINetRecAug(object): scale=(0.5, 2.), shear=(45, 15), distortion=0.5, - p=0.5), CVDeterioration( - var=20, degrees=6, factor=4, p=0.25), CVColorJitter( - brightness=0.5, - contrast=0.5, - saturation=0.5, - hue=0.1, - p=0.25) + p=geometry_p), CVDeterioration( + var=20, degrees=6, factor=4, p=deterioration_p), + CVColorJitter( + brightness=0.5, + contrast=0.5, + saturation=0.5, + hue=0.1, + p=colorjitter_p) ]) def __call__(self, data):