PaddleOCR
PaddleOCR copied to clipboard
方向分类器在python上验证准确,然而转换为推理模型后,在cpp上部署,输出却有误
请提供下述完整信息以便快速定位问题/Please provide the following information to quickly locate the problem
- 系统环境/System Environment:
- 版本号/Version:Paddle: PaddleOCR: 问题相关组件/Related components:
- 运行指令/Command Code:
- 完整报错/Complete Error Message:
增加了90°和270°两个角度并对模型进行训练,在python上验证无误,可以输出90°和270°结果,但在cpp部署的官方样例程序上,该模型经过推理后的推理模型准确度却下降了,请问为什么方向分类器推理后在cpp上的准确度不如训练模型在python上的准确度呢?
先确保导出后的inference模型是否能正常进行python推理,看你的结果score貌似也很低
先确保导出后的inference模型是否能正常进行python推理,看你的结果score貌似也很低
验证了一下,导出后的inference模型可以python推理,但是score和cpp部署的分数一样,请问问题是出在export_model.py上吗? 我的导出模型参数为-c configs/cls/cls_mv3.yml -o Global.pretrained_model=./output/cls/mv3 Global.save_inference_dir=./output/cls/inferencemodel
导出后的inference模型可以python推理,但是score和cpp部署的分数一样
导出后python推理结果正确吗
导出后python推理结果正确吗
不正确,结果有错误,分数也很低
那应该就是导出模型的问题了
那应该就是导出模型的问题了
感谢解答!
Global.pretrained_model=./output/cls/mv3
这块应该要有个best_accuracy吧,应该是训练权重加载不对
这块应该要有个best_accuracy吧,应该是训练权重加载不对
这个是我修改后的参数设置: save_model_dir: ./output/cls/mv3/ pretrained_model: ./pretrainmodel/ch_ppocr_mobile_v2.0_cls_train/best_accuracy ./output/cls/inferencemodel 修改后,结果和Score还是没有改变,请问是参数设置错误吗,训练好的模型是由哪个参数读取的呢?
完整导出命令是啥,导出指定你训练的配置,指定好模型权重和保存路径就可以了
pretrained_model: ./pretrainmodel/ch_ppocr_mobile_v2.0_cls_train/best_accuracy
导出时要用你训好的模型,这里的pretrained_model写你训好的./output/cls/mv3/best_accuracy
导出时要用你训好的模型,这里的pretrained_model写你训好的./output/cls/mv3/best_accuracy
我是在pycharm的parameter里指定了完整命令为-c configs/cls/cls_mv3.yml -o Global.pretrained_model=./output/cls/mv3/latest Global.save_inference_dir=./output/cls/inferencemodel,配置文件cls_mv3.yml中的几个参数也是这样指定的,我训练好的模型命名就是latest
直接用命令行运行,指定好模型和配置文件就行
直接用命令行运行,指定好模型和配置文件就行
用命令行运行,结果还是如前,在infer_cls.py用配置文件参数验证图片,结果却是非常准确的,但同样配置不管是命令行还是配置文件,导出为inference再用predict_cls.py推理,就是准确度下降很多,部分结果还有错,请问是我这个操作过程不对吗,还是export_model.py这边有什么问题呀?
我是说导出模型先确保正确
我是说导出模型先确保正确
模型导出前是正确的,导出后就不对了
所以可能就是你导出模型的时候出错了
所以可能就是你导出模型的时候出错了
导出模型的错误已经解决,发现并非是导出模型错误了,而是验证导出模型的predict_cls.py的默认参数cls_label只有0,180两类,现修改后发现导出模型是没有问题的,但CPP上更新导出模型后,结果还是很有误,cls_Score依然很低,请问这个是什么情况呢?
那应该是cpp上也需要对应改下输出类别
那应该是cpp上也需要对应改下输出类别
请问这个在哪里改呢?
可以debug看下输出,这块目前只支持2类的,还没适配4类的
可以debug看下输出,这块目前只支持2类的,还没适配4类的
https://github.com/PaddlePaddle/PaddleOCR/blob/8a3c7bc8a32b4a0d2ab8a1b0c6dfe1efb0c82ba0/deploy/cpp_infer/src/ocr_cls.cpp#L79-L92
我看到这边有cls_label的赋值,请问对这里进行修改的话可以实现四类的输出吗,需要怎么改呢?
这的label是根据模型输出的softmax值进行取最大概率值对应的label,如果模型输出类别是4的话,应该会得到0-3的类别值
这的label是根据模型输出的softmax值进行取最大概率值对应的label,如果模型输出类别是4的话,应该会得到0-3的类别值
这里确实可以取到4类的值
查阅了过往的issue,尝试更换模型,发现问题依旧,python端的结果和c++端结果完全不同,请问在C++端如何增加四类方向的适配呢,或者说在c++上和 类别的数量 有关的参数都有哪些呢?
这的label是根据模型输出的softmax值进行取最大概率值对应的label,如果模型输出类别是4的话,应该会得到0-3的类别值
c++端,0°和180°的结果都是对的,Score也很高,但一到90°和180°的情况,就会出错,Score很低
有修改过预处理的代码吗
有修改过预处理的代码吗
没有修改,请问需要修改吗?
就是你修改为4分类的时候,预处理有改吗
就是你修改为4分类的时候,预处理有改吗
没有修改。下载的官网的2分类的推理模型文件,相同的图片在python中与C++中结果也完全不一致。这个是哪里问题呢
哪个版本的代码,dygraph吗
哪个版本的代码,dygraph吗
2.5的