Closed lanybass closed 3 years ago
不同的模型的预处理、数据格式和后处理不同,需要针对适配一下,识别的模型目前只支持了CRNN,推荐使用CRNN系列模型~
不同的模型的预处理、数据格式和后处理不同,需要针对适配一下,识别的模型目前只支持了CRNN,推荐使用CRNN系列模型~
也就是说全部模型是支持c++环境 inference的,只不过需要适配后处理代码,是吧,大佬
恳请大佬适配其他模型~ 我最后测试了rec_mv3_none_bilstm_ctc,只有use_mkldnn 0的时候正确,开启mkldnn出来的结果就完全不对
0
你好,如果需要使用mkldnn的话,建议设置use_zero_copy_run=0, 同时使用Paddle1.8.4及以上版本
0
你好,如果需要使用mkldnn的话,建议设置use_zero_copy_run=0, 同时使用Paddle1.8.4及以上版本
换1.8.4了。不管usemkldnn开不开,DBDetector::LoadModel就报错: `this->predictor = CreatePaddlePredictor(config);`
Error: Note: Each config can only be used for one predictor. at (D:\1.8.4\paddle\paddle\fluid\inference\api\analysis_predictor.cc:508)
===========================
好吧,我追了源码,然后自己把config.is_valid()打出来看,他莫名其妙就又不报错了。
把zeroCopyRun改成run依然错乱。 后来看了有几个配置选项,改成如下就出结果了: ··· // false for zero copy tensor config.SwitchUseFeedFetchOps(true); // true for multiple input config.SwitchSpecifyInputNames(false);
config.SwitchIrOptim(false);
//config.EnableMemoryOptim(); config.DisableGlogInfo();
this->predictor_ = CreatePaddlePredictor(config); ··· 然而,我的内心毫无波澜(推理速度丝毫没提高),甚至有点想笑(甚至还更慢)
恳请大佬适配其他模型~ 我最后测试了rec_mv3_none_bilstm_ctc,只有use_mkldnn 0的时候正确,开启mkldnn出来的结果就完全不对
你可以先试下官网的Demo,基于DB和CRNN测试一下单张图片看是否能跑通(打开或者关闭mkldnn都可以测试一下),之后再试下其他的模型
把zeroCopyRun改成run依然错乱。 后来看了有几个配置选项,改成如下就出结果了: ··· // false for zero copy tensor config.SwitchUseFeedFetchOps(true); // true for multiple input config.SwitchSpecifyInputNames(false);
config.SwitchIrOptim(false);
//config.EnableMemoryOptim(); config.DisableGlogInfo();
this->predictor_ = CreatePaddlePredictor(config); ··· 然而,我的内心毫无波澜(推理速度丝毫没提高),甚至有点想笑(甚至还更慢)
zero copy run的确是比run接口要快一些,但是使用zero copy run的时候,建议输入shape是恒定的,否则还是会有内存泄露的问题,因为ocr中,输入shape不恒定,所以这里修改为了run的接口
最后一个问题,识别输出的字符数量和计算score时的数量不匹配,
for (int n = int(rec_idx_lod[0][0]); n < int(rec_idx_lod[0][1]); n++) {
pred_idx.push_back(int(rec_idx[n]));
}
当我的pred_idx有16个时,下面的count有时却多于16个或少于16个
if (blank - 1 - argmax_idx > 1e-5) {
score += max_value;
count += 1;
}
那么请问,我要想知道每一个字符的score怎么搞? @littletomatodonkey
rec_model我没用 超轻量中文模型 或 通用中文OCR模型 ,而是用的 RARE | MobileNetV3 : rec_mv3_tps_bilstm_attn。 det已经检测出框了,然后rec模型每次运行到这句:
this->predictor_->ZeroCopyRun();
就各种报错。如果不用
ZeroCopyRun
改成Run
,除了报错以外,控制台还会有输出以下内容:我的环境: win7 x64 vs2019 CPU [v1.7.2/v1.8.3都试过,一样]