Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

export_model.py出来的英文模型识别模型不能运行? #5

Open
shiyutang opened this issue Aug 28, 2023 · 3 comments
Open
Labels

Comments

@shiyutang
Copy link
Owner

请提供下述完整信息以便快速定位问题/Please provide the following information to quickly locate the problem

  • 系统环境/System Environment:
  • 版本号/Version:Paddle: PaddleOCR: 问题相关组件/Related components:
  • 运行指令/Command Code:
  • 完整报错/Complete Error Message:

我们提供了AceIssueSolver来帮助你解答问题,你是否想要它来解答(请填写yes/no)?/We provide AceIssueSolver to solve issues, do you want it? (Please write yes/no): yes

请尽量不要包含图片在问题中/Please try to not include the image in the issue.

在官方下载的en_PP-OCRv3_rec_infer模型在C++里面可以运行,在官方下载en_PP-OCRv3_rec_train或者用这个模型微调出来的模型,再用export_model.py无法使用,对比发现inference.pdiparams这个文件是一样,但是inference.pdmodel这个文件大小不一样。官网下载的这个文件要小于我自己export出来的文件,这个是什么原因?提示错误:没有为 paddle_inference.dll 加载的符号文件,是不是版本不兼容呢?
Linux下面训练和导出模型使用的paddle版本:2.5.1,paddleocr版本:2.7
windows用的c++库版本: avx_mkl_cuda11.6_cudnn8.4_avx_mkl-trt8.4.1.5 | paddle_inference.zip(2.3.2) | MSVC 2019 | 8.4 | 11.6
image

@aceissuesolver
Copy link

Issue Response

  • Introduction: Thanks for opening this issue, I am the AceIssueSolver that will help you with your questoins!
  • 🎯 First round response: The answer to your question is:

根据您提供的信息,问题可能是由于版本不兼容导致的。您在Linux下使用的Paddle版本是2.5.1,PaddleOCR版本是2.7,而在Windows下使用的C++库版本是avx_mkl_cuda11.6_cudnn8.4_avx_mkl-trt8.4.1.5,paddle_inference.zip(2.3.2),MSVC 2019,8.4和11.6。

在模型训练过程中,保存的模型文件包含了前向预测和反向传播的过程。但是在实际的工业部署中,只需要前向预测过程,因此需要将模型导出为部署所需的模型格式。您可以使用以下命令导出模型:

%cd /home/aistudio/PaddleOCR/
python tools/export_model.py \
    -c configs/det/ch_PP-OCRv2/ch_PP-OCRv2_det_student.yml \
    -o Global.pretrained_model="pretrain/ch_db_mv3-student1600-finetune/best_accuracy" \
    Global.save_inference_dir="./output/det_db_inference/"

导出成功后,您会在指定目录下找到三个文件:

/inference/rec_crnn/
    ├── inference.pdiparams         # 识别inference模型的参数文件
    ├── inference.pdiparams.info    # 识别inference模型的参数信息,可忽略
    └── inference.pdmodel           # 识别inference模型的program文件

请确保您在Windows环境中使用的Paddle Inference版本与您导出的模型兼容。如果问题仍然存在,请提供完整的错误信息以便我们更好地帮助您解决问题。

根据您提供的信息,问题可能是由于模型文件大小不同导致的。您提到在C++中可以运行官方下载的en_PP-OCRv3_rec_infer模型,但是使用export_model.py导出的模型无法使用。您还提到,与官方下载的模型相比,您导出的模型文件inference.pdmodel的大小较大。这可能是由于导出时使用了不同的参数或配置导致的。

另外,您还提到了一个错误提示:没有为paddle_inference.dll加载的符号文件,这可能是由于版本不兼容导致的。

为了解决这个问题,我建议您尝试以下步骤:

  1. 确保您的PaddlePaddle和PaddleOCR版本与训练和导出模型时使用的版本匹配。您提到在Linux下使用的是Paddle版本2.5.1和PaddleOCR版本2.7,在Windows下使用的是C++库版本avx_mkl_cuda11.6_cudnn8.4_avx_mkl-trt8.4.1.5 | paddle_inference.zip(2.3.2)| MSVC 2019 | 8.4 | 11.6。请确保这些版本是兼容的。

  2. 检查导出模型时的参数和配置是否与官方下载的模型相同。确保使用相同的参数和配置导出模型。

  3. 如果问题仍然存在,您可以尝试使用官方下载的模型进行推理,并检查是否存在其他问题。

如果以上步骤都无法解决问题,我建议您在GitHub上提交一个issue,提供更多详细的信息和错误日志,以便开发人员能够更好地帮助您解决问题。

How to use

To invoke the AceIssueSolver, add a comment using one of the following commands:
@Ace-issue-solver <QUESTION>: Pose more questions on AceIssueSolver.

@hanliangwei
Copy link

我也遇到了同样的问题

m
在windows下cmake编译了cpp_infer,然后下载上图中的推理模型,是可以正常使用的
然后下载上图中的训练模型,并直接使用命令
python tools/export_model.py -c configs/rec/PP-OCRv3/ch_PP-OCRv3_rec_distillation.yml -o Global.pretrained_model=./ckpt/best_accuracy Global.save_inference_dir=./inference_model/ch_PP-OCRv3_rec/
推理出来后,在python中是可以推理的,但是在cpp中推理就会crash,crash在paddle_inference.dll里的识别接口中。
同样也是.pdmodel的文件比较小,请问该如何处理呢
n

@Unlicensed-driver-ljx
Copy link

ch_db_mv3-student1600-finetune在哪里下载

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants