Replies: 1 comment 1 reply
-
根据你提供的信息,可以归纳出以下两个主要问题: 一、CPP 推理比 Python 慢,差异很大(156s vs 93s) ▍一、CPP 推理比 Python 慢很多的可能原因
config.SetCpuMathLibraryNumThreads(10); 此外,建议查看是否在 config 中启用了 config.EnableMKLDNN(),确保 MKL-DNN 被合理使用。
config.SwitchIrOptim(true);
▍二、识别结果不一致的可能原因分析 部分字符差异较大,如 Code:Z00MCD 识别为 Code:Z0eMCD,可分为以下几类原因:
例如,PaddleOCR Python 中采用了 align_img() 和 padding64 方法确保图像切片为宽高的倍数,这部分有条件剪裁: https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/tools/infer/utility.py#L278 C++ 实现中如果未严格对齐,则释出图片质量或清晰度可能下降,影响识别精度。
建议:可以将 Python 中识别前的输入图像保存下来(paddleocr/tools/infer/predict_rec.py 中),与 C++ 中送入 rec 的图片逐像素对比来看是否一致。
可参考 PaddleOCR Issue #14027:https://github.com/PaddlePaddle/PaddleOCR/issues/14027,类似的问题显示了“不同推理系统抽取的切图看似相同,但识别结果不同”的现象,跟裁剪精度、预处理差异高度相关。 ▍建议解决方案总结:
如果上述方法仍无法解决识别差异较大的问题,建议使用 Python 模型导出中间输入、输出数据,再在 C++ 中用相同数据跑通,以实现 byte-level 对齐验证。 如有进一步追溯需要,建议参考官方文档的 C++ inference API 文档及 Demo: https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.6/deploy/cpp_infer 希望这些信息能帮助你定位问题。如仍未解决可考虑提供 rec 输入图像数据对照分析。 Response generated by 🤖 feifei-bot | chatgpt-4o-latest |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
环境:win10 pro,未使用gpu, cpp_infer: v2.10, paddle_inference: CPU-vs2019-mkl
模型:检测:ch_PP-OCRv4_det_server_infer, 识别:ch_PP-OCRv4_rec_server_infer
在使用python脚本推理的时候:检测+识别耗时:93s左右
在使用cpp_infer推理的时候:检测+识别耗时:156s左右
python 推理脚本:
cpp_infer推理 c++代码:
python 推理结果:
cpp_infer推理结果:
可以看到第15个字符识别的结果差异很大
识别的图片请见附件

可以解释一下造成这种差异可能的原因吗?谢谢
Beta Was this translation helpful? Give feedback.
All reactions