Closed lyc728 closed 1 year ago
PP-OCRv3文本识别目前还不支持LMDBDataSet 数据集哈,可以用SimpleDataset
麻烦更正下说明文档,我是看到可以加载的,请不要混淆视听,谢谢!
好的,感谢反馈~
大佬,你好,svtr模型有更新相应的torch框架吗?有考虑更新吗?
无法正常返回识别结果
暂时没有torch框架的,可以自己进行复现哈
无法正常返回识别结果
请提供一下完整命令哈,用的什么模型,什么指令
python3 -m paddle.distributed.launch --gpus '6,7' tools/train.py -c configs/rec/rec_svtrnet.yml 训练命令 python3 tools/infer_rec.py -c configs/rec/rec_svtrnet.yml -o Global.pretrained_model=./output/rec/svtr/best_accuracy Global.infer_img=./doc/sign/hw-126.jpg预测命令
模型训练完成后的评估精度能有多少?
python3 -m paddle.distributed.launch --gpus '6,7' tools/train.py -c configs/rec/rec_svtrnet.yml 训练命令 python3 tools/infer_rec.py -c configs/rec/rec_svtrnet.yml -o Global.pretrained_model=./output/rec/svtr/best_accuracy Global.infer_img=./doc/sign/hw-126.jpg预测命令
训练命令没有问题,保证数据集和字典相配且模型训练正常收敛, 预测命令没有问题,如果没有给出相应的结果,请检查预测的图片是否和训练数据是同源的,且训练收敛
best metric, acc: 0.8760898118888819, norm_edit_dis: 0.9499456137766249, fps: 3656.6885505329565, best_epoch: 20 字典没有在配置文件里面。怎么看使用的那个配置文件
配置文件中这两个控制字典,请在训练的时候和预测的时候保证字典一致
character_dict_path:
character_type: en
在训练svtr模型可以用 LMDBDataSet形式,但是怎么加载多个这种数据集呢?
在训练svtr模型可以用 LMDBDataSet形式,但是怎么加载多个这种数据集呢?
把每个数据集放在同一个文件夹a下,data_dir设置为文件夹a即可
SVTR模型现在可以部署成trt进行推理吗?
大佬,你好,我在模型预测时,python3 tools/infer_rec.py -c configs/rec/rec_svtrnet.yml -o Global.pretrained_model=./output/rec/svtr/best_accuracy Global.infer_img='/data/liuyuanchao/PaddleOCR/doc/sign/hw-136.jpg' 效果很差,但是将模型进行Python推理时,python3 tools/infer/predict_rec.py --image_dir='./doc/sign/hw-136.jpg' --rec_model_dir='./inference/rec_svtr_tiny_stn_en1/' --rec_algorithm='SVTR' --rec_image_shape='3,32,512' --rec_char_dict_path='./ppocr/utils/ppocr_keys_v1.txt' 效果好了很多,这是什么原因造成的呢?
如果方便的话请提供一下训练配置,训练样本示例,测试样本示例和字典
Global: use_gpu: True epoch_num: 100 log_smooth_window: 20 print_batch_step: 10 save_model_dir: ./output/rec/svtr/ save_epoch_step: 1
eval_batch_step: [0, 2000] cal_metric_during_train: True pretrained_model: checkpoints: save_inference_dir: use_visualdl: False infer_img: doc/imgs_words_en/word_10.png
character_dict_path: ppocr/utils/ppocr_keys_v1.txt character_type: ch max_text_length: 25 infer_mode: False use_space_char: False save_res_path: ./output/rec/predicts_svtr_tiny.txt
Optimizer: name: AdamW beta1: 0.9 beta2: 0.99 epsilon: 0.00000008 weight_decay: 0.05 no_weight_decay_name: norm pos_embed one_dim_param_no_weight_decay: true lr: name: Cosine learning_rate: 0.0005 warmup_epoch: 2
Architecture: model_type: rec algorithm: SVTR Transform: name: STN_ON tps_inputsize: [32, 64] tps_outputsize: [32, 100] num_control_points: 20 tps_margins: [0.05,0.05] stn_activation: none Backbone: name: SVTRNet img_size: [32, 100] out_char_num: 25 out_channels: 192 patch_merging: 'Conv' embed_dim: [64, 128, 256] depth: [3, 6, 3] num_heads: [2, 4, 8] mixer: ['Local','Local','Local','Local','Local','Local','Global','Global','Global','Global','Global','Global'] local_mixer: [[7, 11], [7, 11], [7, 11]] last_stage: True prenorm: false Neck: name: SequenceEncoder encoder_type: reshape Head: name: CTCHead
Loss: name: CTCLoss
PostProcess: name: CTCLabelDecode
Metric: name: RecMetric main_indicator: acc
Train: dataset: name: LMDBDataSet data_dir: [ '/data/wangjieyao/dataset/common-text/text-hw/text-hw-train-9787/lmdb-9787/', '/data/wangjieyao/dataset/common-text/text-2000000/lmdb-fillen-2000000/' ] transforms:
Eval: dataset: name: LMDBDataSet data_dir: [ '/data/wangjieyao/dataset/common-text/text-hw/text-hw-val-640/lmdb-640/', '/data/wangjieyao/dataset/common-text/text-val-113982/lmdb-fillen-113460/' ] transforms:
有的图片还存在漏字的情况
应该是infer_rec.py 在中文识别进行预测,采用的是动态resize的方法,SVTR不适配这种resize方法, 两种解决方案: 1、 将infer_rec.py中的 global_config['infer_mode'] = True 改为global_config['infer_mode'] = False
2、 将./ppocr/data/imaug/rec_img_aug.py中RecResizeImg修改如下:
class RecResizeImg(object):
def __init__(self,
image_shape,
infer_mode=False,
character_dict_path='./ppocr/utils/ppocr_keys_v1.txt',
padding=True,
**kwargs):
self.image_shape = image_shape
self.infer_mode = infer_mode
self.character_dict_path = character_dict_path
self.padding = padding
def __call__(self, data):
img = data['image']
#if self.infer_mode and self.character_dict_path is not None:
# norm_img, valid_ratio = resize_norm_img_chinese(img,
# self.image_shape)
#else:
norm_img, valid_ratio = resize_norm_img(img, self.image_shape,
self.padding)
data['image'] = norm_img
data['valid_ratio'] = valid_ratio
return data
from pytorchocr.modeling.common import Activation
truncnormal = TruncatedNormal(std=.02) normal = Normal zeros = Constant(value=0.) ones_ = Constant(value=1.) 大佬,这个模型初始化怎么用torch进行操作呢?
from pytorchocr.modeling.common import Activation
truncnormal = TruncatedNormal(std=.02) normal = Normal zeros = Constant(value=0.) ones_ = Constant(value=1.) 大佬,这个模型初始化怎么用torch进行操作呢?
可以参考timm库实现的ViT
大佬,你好,我是采用自己的文本数据进行训练(手写汉字),有一下疑问,还请解答: (1)、数据多为单通道图,而模型训练并没有指定通道数,这里的操作是三通道还是什么呢? (2)、通过svtr配置脚本进行模型训练,epoch=100,acc=0.74, 还有什么方法可以进一步提高精度呢?
大佬,你好,我是采用自己的文本数据进行训练(手写汉字),有一下疑问,还请解答: (1)、数据多为单通道图,而模型训练并没有指定通道数,这里的操作是三通道还是什么呢? (2)、通过svtr配置脚本进行模型训练,epoch=100,acc=0.74, 还有什么方法可以进一步提高精度呢?
(1)inchannels=3 表示输入的数据通道为3,一般图像都为RGB三个通道。数据为单通道意思是灰度图吗?如果是灰度图,使用灰度图训练即可,不过RGB转灰度图的处理需要自己在resize方法中自己写入。 (2)尝试数据增强、分析bad case;另外不建议改动RecResizeImg中的参数,如果图像宽比较大,建议改动tps_outputsize和svtrnet中的img_size。
你好,麻烦请教一下,我的问题是模型预测效果比较好。推理预测效果很差。数据集中有些单个数字,我看有些人说的使用2.3版本以及imgW那句注释都无法得到解决。
大佬,你好,我是采用自己的文本数据进行训练(手写汉字),有一下疑问,还请解答: (1)、数据多为单通道图,而模型训练并没有指定通道数,这里的操作是三通道还是什么呢? (2)、通过svtr配置脚本进行模型训练,epoch=100,acc=0.74, 还有什么方法可以进一步提高精度呢?
(1)inchannels=3 表示输入的数据通道为3,一般图像都为RGB三个通道。数据为单通道意思是灰度图吗?如果是灰度图,使用灰度图训练即可,不过RGB转灰度图的处理需要自己在resize方法中自己写入。 (2)尝试数据增强、分析bad case;另外不建议改动RecResizeImg中的参数,如果图像宽比较大,建议改动tps_outputsize和svtrnet中的img_size。
你好,最新发现我预测使用不同脚本预测效果不一样,如python3 tools/infer/predict_rec.py python3 tools/infer_rec.py -也是按照相应的配置并将尺寸也进行修改,infer_rec识别精度比predict_rec这个高,这是为什么
建议从以下几点排查: 1、同一图片在经过这两种预测脚本的预处理后得到的数据是否一致 2、如果预处理后得到的数据相同,排查后处理的结果是否相同,尤其检查特殊字符、空格是否被过滤掉
你好,关于infer_rec脚本没有发现数据预处理部分
建议从以下几点排查: 1、同一图片在经过这两种预测脚本的预处理后得到的数据是否一致 2、如果预处理后得到的数据相同,排查后处理的结果是否相同,尤其检查特殊字符、空格是否被过滤掉
有没有相应的识别模块部署的脚本呢?(比如svtr转成trt后的)
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.
你好,我看了目前支持ch_PP-OCRv3_lmdb.yaml 中的LMDBDataSet 但是没有具体的操作文档,能不能说明下具体应该怎么操作去训练