PaddlePaddle / PaddleDetection

Object Detection toolkit based on PaddlePaddle. It supports object detection, instance segmentation, multiple object tracking and real-time multi-person keypoint detection.
Apache License 2.0
12.35k stars 2.84k forks source link

paddle2.2训练的frcnn/mask_rcnn在paddle2.4中推理失败 #8224

Open ellinyang opened 1 year ago

ellinyang commented 1 year ago

问题确认 Search before asking

Bug组件 Bug Component

Inference

Bug描述 Describe the Bug

使用ppdet2.3分支的mask_r50_vd_fpn, 用paddle2.2训练并导出了一个模型,在paddle2.2上推理正常,但换成paddle2.4推理失败,失败日志如下 1683691192

复现环境 Environment

  1. nvidia-V100 单卡
  2. Driver Version: 470.57.02
  3. CUDA Version: 11.4
  4. PaddleDetection/release-2.3
  5. PaddlePaddle-gpu=2.2.2(训练)
  6. PaddlePaddle-gpu=2.4.1(推理)

Bug描述确认 Bug description confirmation

是否愿意提交PR? Are you willing to submit a PR?

wangxinxin08 commented 1 year ago

推理时运行的命令是什么?

ellinyang commented 1 year ago

推理时运行的命令是什么?

使用的是官方提供的推理代码: https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.3/deploy/python/infer.py

python infer.py \ --model_dir= /home/badcase/export_model/ \ --image_dir /home/badcase/1.jpeg

wangxinxin08 commented 1 year ago

导出时使用的PaddlePaddle版本是什么?

ellinyang commented 1 year ago

同训练阶段,是PaddlePaddle-gpu=2.2.2

ellinyang commented 1 year ago

同训练阶段,是PaddlePaddle-gpu=2.2.2

wangxinxin08 commented 1 year ago

用2.4导出试下

ellinyang commented 1 year ago

paddle2.2 导出,用paddle2.2推理正常,paddle2.4导出用paddle2.4推理也正常。 但我们很多历史模型是用paddle2.2训练及导出的,无法重新导出; 之前框架升级,推理时都能向下兼容,希望这次升级至paddle2.4也能兼容一下

wangxinxin08 commented 1 year ago

为什么无法重新导出,加载训练好的模型直接用Paddle 2.4导出即可。不然的话,请到PaddleInference或者PaddlePaddle提一个issue问下兼容方案

ellinyang commented 1 year ago

为什么无法重新导出,加载训练好的模型直接用Paddle 2.4导出即可。不然的话,请到PaddleInference或者PaddlePaddle提一个issue问下兼容方案

很多产品只负责推理,所以没有checkpoint。我看报错是ppdet中的post-prepcess代码,并不是paddle算子的问题。