PaddlePaddle / PaddleX

All-in-One Development Tool based on PaddlePaddle(飞桨低代码开发工具)
Apache License 2.0
4.9k stars 958 forks source link

paddel X里面cpp部署clas报错 #1380

Open xinsuinizhuan opened 2 years ago

xinsuinizhuan commented 2 years ago

图片 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

FlyingQianMM commented 2 years ago

clas当然是验证过的。 gpu推理可以正常运行吗?看你用的paddle inference是自己编译的? 另外贴下具体的model.yml,看下具体的预处理和模型信息。和运行命令

xinsuinizhuan commented 2 years ago

paddle inference是直接官网下载的: model.yml文件: Model: MobileNetV2 Transforms:

其中的labels,是二级目标,而最后推理时, 图片 这lables读取失败 我直接自己写了个yml文件,只有lables的: 图片 然后,就对了。

xinsuinizhuan commented 2 years ago

同样的目标检查导出的model.yml文件: Model: PicoDet Transforms:

而代码中读取时为: 图片

而model.yml中根本没有arch等关键字,labels:也是二级目标 我自己修改了个yml: 图片 这样也就对了

目标分割的也是,导出的model.yml为: Model: DeepLabV3P Transforms:

里面是包含了version: 2.1.0但是,最后读取时,用的配置文件中没有version,一看是配置文件不是直接用的导出的 图片 我自己修改和加了字段,重新修改了yml: 图片 图片 也对了

xinsuinizhuan commented 2 years ago

所以,现在来看,paddleX直接导出的model.yml是不能直接用paddleX下的cpp推理的,不能正确读取model.yml,也不知道是代码问题,还是model.yml的问题。您最好对照我说的,检查一下,看到底是哪儿的问题。

xinsuinizhuan commented 2 years ago

咋样,我上面那样改,只是不报错了,但是推理是错的,感觉没有做transform? 着急,能不能帮忙给看看

FlyingQianMM commented 2 years ago

你的运行命令是不是敲错了? paddlex导出的模型,在运行的时候--model_type 要传paddlex。我看你截图的这些代码都走到PaddleSegPaddleDetection了,会走到这两个地方是因为你--model_type传的是detseg。 你执行exe的时候,具体的命令是怎样的?

xinsuinizhuan commented 2 years ago

paddlex

图片 这个type传啥?不是,目标检测的传det,目标分割的传seg,目标分类的传cls,实例分割的传mask?

xinsuinizhuan commented 2 years ago

你的运行命令是不是敲错了? paddlex导出的模型,在运行的时候--model_type 要传paddlex。我看你截图的这些代码都走到PaddleSegPaddleDetection了,会走到这两个地方是因为你--model_type传的是detseg。 你执行exe的时候,具体的命令是怎样的?

另外,我提的问题,都是init这个cfg model.yml里面的解析的问题,跟这个type有关系不? 图片 乱了。我也不知道咋用了。

xinsuinizhuan commented 2 years ago

你的运行命令是不是敲错了? paddlex导出的模型,在运行的时候--model_type 要传paddlex。我看你截图的这些代码都走到PaddleSegPaddleDetection了,会走到这两个地方是因为你--model_type传的是detseg。 你执行exe的时候,具体的命令是怎样的? 我现在的问题是,只要是paddleX导出的模型,model.yml,使用cpp里面的代码解析的时候,很多地方不对应的问题,就比如,目标检查里面,解析model.yml的时候,要一个arch字段,但是导出的model.yml根本没有这个字段;分割的时候,要个version字段,但是model.yml里面是有version字段,但是最后用的是新建的一个node字段。我觉得跟type没关系吧