GithubHelp home page GithubHelp logo

wav2lip 转onnx后,生成的onnx模型输出维度不正确,解决后出现导出onnx模型输出与元模型输出不同! about paddlegan HOT 7 CLOSED

drakitLiu avatar drakitLiu commented on May 26, 2024
wav2lip 转onnx后,生成的onnx模型输出维度不正确,解决后出现导出onnx模型输出与元模型输出不同!

from paddlegan.

Comments (7)

LielinJiang avatar LielinJiang commented on May 26, 2024

应该是第一个步骤出问题了,可以https://github.com/PaddlePaddle/PaddleGAN/blob/develop/ppgan/models/generators/wav2lip.py#L272 在这个函数中print各个变量shape看一下是否符合预期,建议先吧-1变成一个固定值

from paddlegan.

drakitLiu avatar drakitLiu commented on May 26, 2024

应该是第一个步骤出问题了,可以https://github.com/PaddlePaddle/PaddleGAN/blob/develop/ppgan/models/generators/wav2lip.py#L272 在这个函数中print各个变量shape看一下是否符合预期,建议先吧-1变成一个固定值

您好!经过两天时间测试 并没有发现输入的shape出问题,而且我在您说的https://github.com/PaddlePaddle/PaddleGAN/blob/develop/ppgan/models/generators/wav2lip.py#L272函数中打印了所有的输入变量的shape是(128,1,80,16)和(128,6,96,96),length正常!关于您说的建议先吧-1变成一个固定值,我也做了相关测试,并没有作用。
还有就是,我是直接将原模型的输入,封装成dic,作为onnx的输入,对此我也做了onnx run之前的数据校验,也是没问题的!
至此我非常相信您提议的步骤1出现问题,但个人怀疑这或许maybe.....步骤1.是在paddle2onnx中出现的bug,所以,期望您能在您电脑本地进行转换尝试,给一个较为确定的答复。
再次感谢paddle同学的付出!

from paddlegan.

drakitLiu avatar drakitLiu commented on May 26, 2024

我发现尺寸的问题是,版本问题照成的!我从python7----python10,还有不同的paddlepaddle版本都尝试了一边,只有python8是能尺寸一样的并且直接将仓库的ppgan文件夹复制到conda安装包目录下可以解决一些问题!第一次用paddle心好累,感觉文档也比较乱(....),好像啥都挺好但用起来很无助~
但是,虽然现在onnx模型的输出尺寸和原模型相同,输出结果仍然不对!而且我特么发现,每次执行动态图转静态图之后,用新合成的onnx输出结果都是不一样的,很不一样!我真的很希望,百度既然对自己的框架有信心开源,为什么自己不把做好的模型尝试一样是否能正常部署,wav2lip可是21年就发布的~(甚至考虑把静态图分享出来),如果框架没问题,也就两分钟更何况是内部团队的同学。当然啦,还是祝愿paddle越来越好吧~~~~唉~

from paddlegan.

JunnYu avatar JunnYu commented on May 26, 2024

@drakitLiu
提供一点思路:

  1. 挑选合适的paddle版本,先尝试2.6.0(版本变化太大),然后尝试2.5.2(版本比较适中,可能比较适配paddle2onnx这个工具),
  2. 导出的onnx文件使用工具 https://netron.app/ 查看各个部分的输入,可以定位是哪里的shape出现错误

from paddlegan.

wangna11BD avatar wangna11BD commented on May 26, 2024

使用了paddle2.6.0,python试了3.8和3.9,运行均没有问题,输入输出尺寸也正确~
静态图输出结果不对问题,排查是预训练模型没有成功加载,修复PR https://github.com/PaddlePaddle/PaddleGAN/pull/836。
分享我的运行命令如下:

  1. 安装paddle,安装requirements.txt中的包,安装paddlegan,安装ffmpeg(conda安装)
  2. 运行动态图推理,存下输入和输出,用于验证静态图和onnx输出结果是否正确
    cd applications
    python tools/wav2lip.py --face ../docs/imgs/mona7s.mp4 --audio ../docs/imgs/guangquan.m4a --outfile pp_guangquan_mona7s.mp4
  3. 动转静导出
    python -u tools/export_model.py -c configs/wav2lip_hq.yaml --load wav2lip_hq.pdparams --inputs_size="128,1,80,16;128,6,96,96"
  4. 转onnx
    paddle2onnx --model_dir ./inference_model --model_filename wav2lipmodelhq_netG.pdmodel --params_filename wav2lipmodelhq_netG.pdiparams --save_file model.onnx --enable_dev_version True --opset_version 13 --enable_onnx_checker True
  5. 运行静态图,并验证输出结果
  6. 运行onnx,并验证输出结果

from paddlegan.

drakitLiu avatar drakitLiu commented on May 26, 2024

@drakitLiu 提供一点思路:

  1. 挑选合适的paddle版本,先尝试2.6.0(版本变化太大),然后尝试2.5.2(版本比较适中,可能比较适配paddle2onnx这个工具),
  2. 导出的onnx文件使用工具 https://netron.app/ 查看各个部分的输入,可以定位是哪里的shape出现错误

谢谢,@wangna11BD已经解决!

from paddlegan.

drakitLiu avatar drakitLiu commented on May 26, 2024

使用了paddle2.6.0,python试了3.8和3.9,运行均没有问题,输入输出尺寸也正确~ 静态图输出结果不对问题,排查是预训练模型没有成功加载,修复PR https://github.com/PaddlePaddle/PaddleGAN/pull/836。 分享我的运行命令如下:

  1. 安装paddle,安装requirements.txt中的包,安装paddlegan,安装ffmpeg(conda安装)
  2. 运行动态图推理,存下输入和输出,用于验证静态图和onnx输出结果是否正确
    cd applications
    python tools/wav2lip.py --face ../docs/imgs/mona7s.mp4 --audio ../docs/imgs/guangquan.m4a --outfile pp_guangquan_mona7s.mp4
  3. 动转静导出
    python -u tools/export_model.py -c configs/wav2lip_hq.yaml --load wav2lip_hq.pdparams --inputs_size="128,1,80,16;128,6,96,96"
  4. 转onnx
    paddle2onnx --model_dir ./inference_model --model_filename wav2lipmodelhq_netG.pdmodel --params_filename wav2lipmodelhq_netG.pdiparams --save_file model.onnx --enable_dev_version True --opset_version 13 --enable_onnx_checker True
  5. 运行静态图,并验证输出结果
  6. 运行onnx,并验证输出结果

经复现 已经解决!感谢!!!可以愉快部署了!祝好!

from paddlegan.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.