PaddlePaddle / PaddleOCR

Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)
https://paddlepaddle.github.io/PaddleOCR/
Apache License 2.0
43.9k stars 7.8k forks source link

做数字训练的图像。在把检测和识别串起来的时候,识别出来的为什么是中文? #3735

Closed shmonly closed 2 years ago

shmonly commented 3 years ago

自己训练数字模型,用到检测和识别,在转inference模型前,识别的是数字。但将检测和识别串联的时候,按照官方教程,转换成inference模型,为什么识别出来的是中文?

wawltor commented 3 years ago

自己训练数字模型,用到检测和识别,在转inference模型前,识别的是数字。但将检测和识别串联的时候,按照官方教程,转换成inference模型,为什么识别出来的是中文?

这里是一个OCR的任务?

shmonly commented 3 years ago

自己训练数字模型,用到检测和识别,在转inference模型前,识别的是数字。但将检测和识别串联的时候,按照官方教程,转换成inference模型,为什么识别出来的是中文?

这里是一个OCR的任务?

是的,paddleOCR

shmonly commented 3 years ago

目前还有个问题,已经训练好的检测模型,转inference之前,抓取的字符框是对的。转inference之后,有些没抓取到,有些抓取的有偏差。这是啥原因造成的?

LDOUBLEV commented 3 years ago

自己训练数字模型,用到检测和识别,在转inference模型前,识别的是数字。但将检测和识别串联的时候,按照官方教程,转换成inference模型,为什么识别出来的是中文?

你是不是没有修改字典文件

shmonly commented 3 years ago

是不是没有修改字典文件

现在已经修改utility下的字典,更改为ic15_dict.txt,确实可以识别成数字了。但现在又有个问题。我用到检测和识别。检测转成inference。但发现转之后,检测效果并没有转化之前好,请问大神该如何解决?识别转之后,预测效果是一致的。

shmonly commented 3 years ago

自己训练数字模型,用到检测和识别,在转inference模型前,识别的是数字。但将检测和识别串联的时候,按照官方教程,转换成inference模型,为什么识别出来的是中文?

你是不是没有修改字典文件

LDOUBLEV commented 3 years ago

是不是没有修改字典文件

现在已经修改utility下的字典,更改为ic15_dict.txt,确实可以识别成数字了。但现在又有个问题。我用到检测和识别。检测转成inference。但发现转之后,检测效果并没有转化之前好,请问大神该如何解决?识别转之后,预测效果是一致的。

你的代码是最新的不,后处理的时候 use_dilation 这个参数强制设置为False 试试https://github.com/PaddlePaddle/PaddleOCR/blob/864ad073ab02ceab5a23020a3972efd46f45346d/ppocr/postprocess/db_postprocess.py#L49

shmonly commented 3 years ago

是不是没有修改字典文件

现在已经修改utility下的字典,更改为ic15_dict.txt,确实可以识别成数字了。但现在又有个问题。我用到检测和识别。检测转成inference。但发现转之后,检测效果并没有转化之前好,请问大神该如何解决?识别转之后,预测效果是一致的。

你的代码是最新的不,后处理的时候 use_dilation 这个参数强制设置为False 试试

https://github.com/PaddlePaddle/PaddleOCR/blob/864ad073ab02ceab5a23020a3972efd46f45346d/ppocr/postprocess/db_postprocess.py#L49

PaddleOCR-release-2.1版本的,我看了db_postprocess.py,里面的use_dilation 是false d0be190b8514853177ed245ec8386f0

LDOUBLEV commented 3 years ago

https://github.com/PaddlePaddle/PaddleOCR/blob/21b9bd63646fdca95f63062d94fd62f35cfa61cc/tools/infer/utility.py#L50

parser.add_argument("--use_dilation", type=bool, default=False) 改成 parser.add_argument("--use_dilation", type=str2bool, default=False) 试试

shmonly commented 3 years ago

https://github.com/PaddlePaddle/PaddleOCR/blob/21b9bd63646fdca95f63062d94fd62f35cfa61cc/tools/infer/utility.py#L50

parser.add_argument("--use_dilation", type=bool, default=False) 改成 parser.add_argument("--use_dilation", type=str2bool, default=False) 试试

更改了后,并没有改善

det转换前测试语句如下,效果最好。 python tools/infer_det.py -c configs/det/det_mv3_db.yml -o Global.infer_img="D:\Paddle\PaddleOCR-release-2.1\train_data\5X\det_test" Global.pretrained_model="./output/det_db/best_accuracy" Global.load_static_weights=false

det转换为inference后,测试语句,会出现几个抓取不到的情况 python tools/infer/predict_det.py --image_dir="D:\Paddle\PaddleOCR-release-2.1\train_data\5X\det_test" --det_model_dir="./inference/det_db"

det+rec串行,测试语句,会出现更多抓取不到的情况 python tools/infer/predict_system.py --image_dir="D:\Paddle\PaddleOCR-release-2.1\train_data\5X\det_test" --det_model_dir="./inference/det_db/" --rec_model_dir="./inference/rec_crnn/" --use_angle_cls=false

LDOUBLEV commented 3 years ago

更改了后,并没有改善

det转换前测试语句如下,效果最好。 python tools/infer_det.py -c configs/det/det_mv3_db.yml -o Global.infer_img="D:\Paddle\PaddleOCR-release-2.1\train_data\5X\det_test" Global.pretrained_model="./output/det_db/best_accuracy" Global.load_static_weights=false

det转换为inference后,测试语句,会出现几个抓取不到的情况 python tools/infer/predict_det.py --image_dir="D:\Paddle\PaddleOCR-release-2.1\train_data\5X\det_test" --det_model_dir="./inference/det_db"

可以对齐tools/infer_det.py 预测和infer/predict_system.py 预测的前后处理,infer_det.py是把输入resize到了[736, 1280] https://github.com/PaddlePaddle/PaddleOCR/blob/21b9bd63646fdca95f63062d94fd62f35cfa61cc/configs/det/det_mv3_db.yml#L116

predict_det.py是限制了最长边:https://github.com/PaddlePaddle/PaddleOCR/blob/21b9bd63646fdca95f63062d94fd62f35cfa61cc/tools/infer/predict_det.py#L42

你可以把下面代码里的参数改成:https://github.com/PaddlePaddle/PaddleOCR/blob/21b9bd63646fdca95f63062d94fd62f35cfa61cc/tools/infer/predict_det.py#L42 {"image_shape": [736, 1280]}

并保证后处理参数是一致的;

shmonly commented 3 years ago

更改了后,并没有改善

det转换前测试语句如下,效果最好。 python tools/infer_det.py -c configs/det/det_mv3_db.yml -o Global.infer_img="D:\Paddle\PaddleOCR-release-2.1\train_data\5X\det_test" Global.pretrained_model="./output/det_db/best_accuracy" Global.load_static_weights=false

det转换为inference后,测试语句,会出现几个抓取不到的情况 python tools/infer/predict_det.py --image_dir="D:\Paddle\PaddleOCR-release-2.1\train_data\5X\det_test" --det_model_dir="./inference/det_db"

可以对齐tools/infer_det.py 预测和infer/predict_system.py 预测的前后处理,infer_det.py是把输入resize到了[736, 1280] https://github.com/PaddlePaddle/PaddleOCR/blob/21b9bd63646fdca95f63062d94fd62f35cfa61cc/configs/det/det_mv3_db.yml#L116

predict_det.py是限制了最长边:

https://github.com/PaddlePaddle/PaddleOCR/blob/21b9bd63646fdca95f63062d94fd62f35cfa61cc/tools/infer/predict_det.py#L42

你可以把下面代码里的参数改成:

https://github.com/PaddlePaddle/PaddleOCR/blob/21b9bd63646fdca95f63062d94fd62f35cfa61cc/tools/infer/predict_det.py#L42

{"image_shape": [736, 1280]} 并保证后处理参数是一致的;

牛逼啊,大神,果然一样了。by the way,rec是不需要设置imageshape的把?还有det的结果框,有可以过滤其大小,位置的参数是?

LDOUBLEV commented 3 years ago

rec是不需要设置imageshape的把?

可以看下识别的预处理代码,不需要设置image shape,会把输入的高度强制resize到32

还有det的结果框,有可以过滤其大小,位置的参数是?

没有根据位置和大小过滤文本框的参数,可以调整后处理参数进行筛选,或者你可以手动加一个逻辑根据文本框位置和大小进行过滤

另外,如果识别的置信度drop score低于某个阈值,检测框也不会在可视化出来:https://github.com/PaddlePaddle/PaddleOCR/blob/ebd266656b344b16e38a3299e3e77014aba337de/tools/infer/utility.py#L80

shmonly commented 3 years ago

rec是不需要设置imageshape的把?

可以看下识别的预处理代码,不需要设置image shape,会把输入的高度强制resize到32

还有det的结果框,有可以过滤其大小,位置的参数是?

没有根据位置和大小过滤文本框的参数,可以调整后处理参数进行筛选,或者你可以手动加一个逻辑根据文本框位置和大小进行过滤

另外,如果识别的置信度drop score低于某个阈值,检测框也不会在可视化出来:

https://github.com/PaddlePaddle/PaddleOCR/blob/ebd266656b344b16e38a3299e3e77014aba337de/tools/infer/utility.py#L80

大神,新人对于各参数含义有些懵,目前依葫芦画瓢,有没有文档及资料,介绍模型参数及程序运行逻辑的?

LDOUBLEV commented 3 years ago

参数介绍可以参考 https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.2/doc/doc_en/config_en.md

代码结构介绍参考 https://github.com/PaddlePaddle/PaddleOCR/blob/release%2F2.2/doc/doc_en/add_new_algorithm_en.md

运行逻辑看readme中的文档就行 https://github.com/PaddlePaddle/PaddleOCR#tutorials

shmonly commented 3 years ago

参数介绍可以参考 https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.2/doc/doc_en/config_en.md

代码结构介绍参考 https://github.com/PaddlePaddle/PaddleOCR/blob/release%2F2.2/doc/doc_en/add_new_algorithm_en.md

运行逻辑看readme中的文档就行 https://github.com/PaddlePaddle/PaddleOCR#tutorials

大神,再请教下,我的图像大小是固定的,408(W)243(H)。字符roi也是固定的,大小70(W)60(H)。目前rec的配置文件,image_shape是32,100。 PaddleOCR/configs/rec/rec_mv3_none_none_ctc.yml

https://github.com/PaddlePaddle/PaddleOCR/blob/ebd266656b344b16e38a3299e3e77014aba337de/configs/rec/rec_mv3_none_none_ctc.yml#L88

Q1:rec按照默认的32,100。字符缩小,会不会损失细节,影响精度? Q2:rec的改成70*60是不是更好些?对速度有无影响? Q3:rec更改成60,70,出现报错 Q4:det的configs/det/det_mv3_db.yml,与tools/infer/predict_det.py,将image_shape=[243, 408],发现可以训练,但测试的时候,会报错

zhangyingying520 commented 3 years ago

https://github.com/PaddlePaddle/PaddleOCR/blob/21b9bd63646fdca95f63062d94fd62f35cfa61cc/tools/infer/utility.py#L50

parser.add_argument("--use_dilation", type=bool, default=False) 改成 parser.add_argument("--use_dilation", type=str2bool, default=False) 试试

更改了后,并没有改善

det转换前测试语句如下,效果最好。 python tools/infer_det.py -c configs/det/det_mv3_db.yml -o Global.infer_img="D:\Paddle\PaddleOCR-release-2.1\train_data\5X\det_test" Global.pretrained_model="./output/det_db/best_accuracy" Global.load_static_weights=false

det转换为inference后,测试语句,会出现几个抓取不到的情况 python tools/infer/predict_det.py --image_dir="D:\Paddle\PaddleOCR-release-2.1\train_data\5X\det_test" --det_model_dir="./inference/det_db"

det+rec串行,测试语句,会出现更多抓取不到的情况 python tools/infer/predict_system.py --image_dir="D:\Paddle\PaddleOCR-release-2.1\train_data\5X\det_test" --det_model_dir="./inference/det_db/" --rec_model_dir="./inference/rec_crnn/" --use_angle_cls=false

麻烦问一下,我没用自己的检测模型,只用了自己的识别模型,为什么还是检测不出来,需要更改哪些参数

zhangyingying520 commented 3 years ago

更改了后,并没有改善

det转换前测试语句如下,效果最好。 python tools/infer_det.py -c configs/det/det_mv3_db.yml -o Global.infer_img="D:\Paddle\PaddleOCR-release-2.1\train_data\5X\det_test" Global.pretrained_model="./output/det_db/best_accuracy" Global.load_static_weights=false

det转换为inference后,测试语句,会出现几个抓取不到的情况 python tools/infer/predict_det.py --image_dir="D:\Paddle\PaddleOCR-release-2.1\train_data\5X\det_test" --det_model_dir="./inference/det_db"

可以对齐tools/infer_det.py 预测和infer/predict_system.py 预测的前后处理,infer_det.py是把输入resize到了[736, 1280] https://github.com/PaddlePaddle/PaddleOCR/blob/21b9bd63646fdca95f63062d94fd62f35cfa61cc/configs/det/det_mv3_db.yml#L116

predict_det.py是限制了最长边: https://github.com/PaddlePaddle/PaddleOCR/blob/21b9bd63646fdca95f63062d94fd62f35cfa61cc/tools/infer/predict_det.py#L42

你可以把下面代码里的参数改成: https://github.com/PaddlePaddle/PaddleOCR/blob/21b9bd63646fdca95f63062d94fd62f35cfa61cc/tools/infer/predict_det.py#L42

{"image_shape": [736, 1280]} 并保证后处理参数是一致的;

牛逼啊,大神,果然一样了。by the way,rec是不需要设置imageshape的把?还有det的结果框,有可以过滤其大小,位置的参数是?

可以看一下是怎么修改的吗,不知道怎么修改

zhangyingying520 commented 3 years ago

更改了后,并没有改善

det转换前测试语句如下,效果最好。 python tools/infer_det.py -c configs/det/det_mv3_db.yml -o Global.infer_img="D:\Paddle\PaddleOCR-release-2.1\train_data\5X\det_test" Global.pretrained_model="./output/det_db/best_accuracy" Global.load_static_weights=false

det转换为inference后,测试语句,会出现几个抓取不到的情况 python tools/infer/predict_det.py --image_dir="D:\Paddle\PaddleOCR-release-2.1\train_data\5X\det_test" --det_model_dir="./inference/det_db"

可以对齐tools/infer_det.py 预测和infer/predict_system.py 预测的前后处理,infer_det.py是把输入resize到了[736, 1280] https://github.com/PaddlePaddle/PaddleOCR/blob/21b9bd63646fdca95f63062d94fd62f35cfa61cc/configs/det/det_mv3_db.yml#L116

predict_det.py是限制了最长边:

https://github.com/PaddlePaddle/PaddleOCR/blob/21b9bd63646fdca95f63062d94fd62f35cfa61cc/tools/infer/predict_det.py#L42

你可以把下面代码里的参数改成:

https://github.com/PaddlePaddle/PaddleOCR/blob/21b9bd63646fdca95f63062d94fd62f35cfa61cc/tools/infer/predict_det.py#L42

{"image_shape": [736, 1280]} 并保证后处理参数是一致的;

image 是在这修改吗

paddle-bot-old[bot] commented 2 years ago

Since you haven\'t replied for more than 3 months, we have closed this issue/pr. If the problem is not solved or there is a follow-up one, please reopen it at any time and we will continue to follow up. It is recommended to pull and try the latest code first. 由于您超过三个月未回复,我们将关闭这个issue/pr。 若问题未解决或有后续问题,请随时重新打开(建议先拉取最新代码进行尝试),我们会继续跟进。