PaddleX
PaddleX copied to clipboard
paddel X里面cpp部署clas报错
cpp推理clas
使用paddelx-gui训练的模型,导出的
cpu推理
paddle版本:
GIT COMMIT ID: 1e62c239d323354eccfc974d4e2e6496f93d848e
WITH_MKL: ON
WITH_MKLDNN: ON
WITH_GPU: OFF
WITH_ROCM: OFF
CXX compiler version: 19.16.27045.0
clas当然是验证过的。 gpu推理可以正常运行吗?看你用的paddle inference是自己编译的? 另外贴下具体的model.yml,看下具体的预处理和模型信息。和运行命令
paddle inference是直接官网下载的: model.yml文件: Model: MobileNetV2 Transforms:
- ResizeByShort: interp: LINEAR max_size: -1 short_size: 256
- CenterCrop: crop_size: 224
- Normalize:
is_scale: true
max_val:
- 255.0
- 255.0
- 255.0 mean:
- 0.485
- 0.456
- 0.406 min_val:
- 0
- 0
- 0 std:
- 0.229
- 0.224
- 0.225 _Attributes: eval_metrics: acc1: 0.6171875 fixed_input_shape:
- -1
- 3
- -1
- -1 labels:
- bocai
- changqiezi
- hongxiancai
- huluobo
- xihongshi
- xilanhua model_type: classifier num_classes: 6 _init_params: num_classes: 6 completed_epochs: 0 status: Infer version: 2.1.0
其中的labels,是二级目标,而最后推理时,
这lables读取失败
我直接自己写了个yml文件,只有lables的:
然后,就对了。
同样的目标检查导出的model.yml文件: Model: PicoDet Transforms:
- Resize:
interp: CUBIC
keep_ratio: false
target_size: !!python/tuple
- 640
- 640
- Normalize:
is_scale: true
max_val:
- 255.0
- 255.0
- 255.0 mean:
- 0.485
- 0.456
- 0.406 min_val:
- 0
- 0
- 0 std:
- 0.229
- 0.224
- 0.225 _Attributes: eval_metrics: bbox_map: 80.42651757313699 fixed_input_shape:
- -1
- 3
- 640
- 640 labels:
- leconte
- boerner
- armandi
- linnaeus
- coleoptera
- acuminatus model_type: detector num_classes: 6 _init_params: backbone: ESNet_l nms_iou_threshold: 0.6 nms_keep_topk: 100 nms_score_threshold: 0.025 nms_topk: 1000 num_classes: 6 completed_epochs: 0 status: Infer version: 2.1.0
而代码中读取时为:

而model.yml中根本没有arch等关键字,labels:也是二级目标
我自己修改了个yml:
这样也就对了
目标分割的也是,导出的model.yml为: Model: DeepLabV3P Transforms:
- Resize:
interp: LINEAR
keep_ratio: false
target_size:
- 512
- 512
- Normalize:
is_scale: true
max_val:
- 255.0
- 255.0
- 255.0 mean:
- 0.5
- 0.5
- 0.5 min_val:
- 0
- 0
- 0 std:
- 0.5
- 0.5
- 0.5 _Attributes: eval_metrics: miou: 0.9178956151008606 fixed_input_shape:
- -1
- 3
- -1
- -1 labels:
- background
- optic_disc model_type: segmenter num_classes: 2 _init_params: num_classes: 2 use_mixed_loss: false completed_epochs: 0 status: Infer version: 2.1.0
里面是包含了version: 2.1.0但是,最后读取时,用的配置文件中没有version,一看是配置文件不是直接用的导出的
我自己修改和加了字段,重新修改了yml:
也对了
所以,现在来看,paddleX直接导出的model.yml是不能直接用paddleX下的cpp推理的,不能正确读取model.yml,也不知道是代码问题,还是model.yml的问题。您最好对照我说的,检查一下,看到底是哪儿的问题。
咋样,我上面那样改,只是不报错了,但是推理是错的,感觉没有做transform? 着急,能不能帮忙给看看
你的运行命令是不是敲错了?
paddlex导出的模型,在运行的时候--model_type 要传paddlex。我看你截图的这些代码都走到PaddleSeg和PaddleDetection了,会走到这两个地方是因为你--model_type传的是det或seg。
你执行exe的时候,具体的命令是怎样的?
paddlex
这个type传啥?不是,目标检测的传det,目标分割的传seg,目标分类的传cls,实例分割的传mask?
你的运行命令是不是敲错了? paddlex导出的模型,在运行的时候--model_type 要传
paddlex。我看你截图的这些代码都走到PaddleSeg和PaddleDetection了,会走到这两个地方是因为你--model_type传的是det或seg。 你执行exe的时候,具体的命令是怎样的?
另外,我提的问题,都是init这个cfg model.yml里面的解析的问题,跟这个type有关系不?
乱了。我也不知道咋用了。
你的运行命令是不是敲错了? paddlex导出的模型,在运行的时候--model_type 要传
paddlex。我看你截图的这些代码都走到PaddleSeg和PaddleDetection了,会走到这两个地方是因为你--model_type传的是det或seg。 你执行exe的时候,具体的命令是怎样的? 我现在的问题是,只要是paddleX导出的模型,model.yml,使用cpp里面的代码解析的时候,很多地方不对应的问题,就比如,目标检查里面,解析model.yml的时候,要一个arch字段,但是导出的model.yml根本没有这个字段;分割的时候,要个version字段,但是model.yml里面是有version字段,但是最后用的是新建的一个node字段。我觉得跟type没关系吧