• 感谢大家访问本站,希望本站的内容可以帮助到大家!

  • 问题反馈可发送邮件到stubbornhuang@qq.com

  • 本站由于前段时间遭受到大量临时和国外邮箱注册,所以对可注册的邮箱类型进行了限制!

  • 如果觉得本站的内容有帮助,可以考虑打赏博主哦!

  • 欢迎大家交换友链,可在https://www.stubbornhuang.com/申请友情链接进行友链交换申请!

  • 计算机图形学与计算几何经典必备书单整理,下载链接可参考:https://www.stubbornhuang.com/1256/

  • 本站会放置Google广告用于维持域名以及网站服务器费用。

  • 工资「喂饱肚子」,副业「养活灵魂」!

  • 在本站开通年度VIP,无限制下载本站资源和阅读本站文章

PaddlePaddle – 抠图模型PP-MattingV2环境配置与Onnx模型导出

PaddlePaddle 发布于2023-07-05 阅读 3,654次 0次评论 0次点赞 本文共3571个字,阅读需要9分钟。

1 PaddleSeg/Matting的环境配置

PaddSeg Github:https://github.com/PaddlePaddle/PaddleSeg/,本文使用的为release/2.8版本。

PaddleSeg的有关抠图的Matting的模型都位于:https://github.com/PaddlePaddle/PaddleSeg/tree/release/2.8/Matting下。

从PaddleSeg/Matting的quick_start文档,如果我们需要测试或者训练Matting的相关模型,需要先配置相关环境。

1.1 安装PaddlePaddle

版本要求

  • PaddlePaddle >= 2.0.2
  • Python >= 3.7+

我们用Conda管理python环境,首先使用以下命令创建一个名为PaddleSeg,Python版本为3.9的虚拟环境

conda create -n PaddleSeg python=3.9

然后激活虚拟环境

conda activate PaddleSeg

然后安装PaddlePaddle,进入飞桨的官网根据系统类型、CUDA版本和PaddlePaddle版本要求进行选择,本次使用的命令行为

python -m pip install paddlepaddle-gpu==2.4.2.post112 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html

等待执行完成,完成PaddlePaddle的安装。

1.2 拉取PaddleSeg仓库

使用以下命令拉取PaddleSeg仓库

git clone https://github.com/PaddlePaddle/PaddleSeg

1.3 安装PaddleSeg/Matting的相关库

切换目录到PaddleSeg/Matting,并根据requirements.txt安装Matting所需依赖库

cd PaddleSeg/Matting
pip install -r requirements.txt

等待所有库安装完成,整个环境配置也完成了。

2 PP-MattingV2模型测试

首先在https://github.com/PaddlePaddle/PaddleSeg/tree/release/2.8/Matting 下载PP-MattingV2-512的最新CheckPoint模型,如下图

PaddlePaddle - 抠图模型PP-MattingV2环境配置与Onnx模型导出-第0张图片

将下载的模型放到Matting下的pretrained_models文件夹下,然后在Matting目录执行以下命令进行demo图片的抠图推理

python tools/predict.py \
    --config configs/ppmattingv2/ppmattingv2-stdc1-human_512.yml \
    --model_path pretrained_models/ppmattingv2-stdc1-human_512.pdparams \
    --image_path demo/human.jpg \
    --save_dir ./output/results \
    --fg_estimate True

抠图结果输出到了Matting目录下的./output/results的目录中。

3 PP-MattingV2模型导出Onnx

3.1 PP-MattingV2导出部署模型

在Matting目录下使用以下命令导出PP-MattingV2-512的部署模型

python tools/export.py \
    --config configs/quick_start/ppmattingv2-stdc1-human_512.yml \
    --model_path pretrained_models/ppmattingv2-stdc1-human_512.pdparams \
    --save_dir output/export \
    --input_shape 1 3 512 512

这里的输入图片形状为1x3x512x512,也就是只支持512x512分辨率的图片。

导出的部署模型在Matting文件夹下的output/export文件夹下,包含model.pdmodelmodel.pdiparams两个文件,这也是后面导出Onnx模型所需要使用的。

3.2 PP-MattingV2部署模型导出为Onnx模型

在得到PP-MattingV2-512的部署模型之后,我们需要使用Paddle2ONNX将部署模型转换为Onnx,具体可参考PaddlePaddle – 使用Paddle2Onnx将Paddle模型导出为onnx模型,使用以下命令进行Onnx转换

paddle2onnx --model_dir ./output/export --model_filename model.pdmodel --params_filename model.pdiparams --save_file model.onnx --enable_dev_version True --enable_onnx_checker True --opset_version 11

3.3 模型转换存在的问题

如果在3.1节中修改输入图片的分辨率,将其修改为动态维度,可以正常导出部署模。但是之后使用Paddle2ONNX将具有动态维度的部署模型导出为Onnx模型时,会出现错误

(PaddleSeg) PS F:\GitHubRepositories\PaddleSeg\Matting> paddle2onnx --model_dir ./output/export --model_filename model.pdmodel --params_filename model.pdiparams --save_file model.onnx --enable_dev_version True --enable_onnx_checker True --opset_version 11
[Paddle2ONNX] Start to parse PaddlePaddle model...
[Paddle2ONNX] Model file path: ./output/export\model.pdmodel
[Paddle2ONNX] Paramters file path: ./output/export\model.pdiparams
[Paddle2ONNX] Start to parsing Paddle model...
[ERROR][Paddle2ONNX] [pool2d: pool2d_7.tmp_0] Adaptive only support static input shape.
[Paddle2ONNX] Due to the operator: pool2d, this model cannot be exported to ONNX.
[ERROR][Paddle2ONNX] [pool2d: pool2d_8.tmp_0] Adaptive only support static input shape.
[Paddle2ONNX] Due to the operator: pool2d, this model cannot be exported to ONNX.
[ERROR][Paddle2ONNX] [pool2d: pool2d_9.tmp_0] Adaptive only support static input shape.
[Paddle2ONNX] Due to the operator: pool2d, this model cannot be exported to ONNX.
[ERROR][Paddle2ONNX] [pool2d: pool2d_10.tmp_0] While Attribute(ksize)'s type is Tensor, it's not supported.
[Paddle2ONNX] Due to the operator: pool2d, this model cannot be exported to ONNX.
[ERROR][Paddle2ONNX] [pool2d: pool2d_11.tmp_0] While Attribute(ksize)'s type is Tensor, it's not supported.
[Paddle2ONNX] Due to the operator: pool2d, this model cannot be exported to ONNX.
[ERROR] Model exporting failed, you can report this problem to https://github.com/PaddlePaddle/Paddle2ONNX.git.

从出现的错误上看,Adaptive only support static input shape.Paddle2ONNX只支持静态输入维度,而不支持动态维度。

欢迎扫码关注我的微信公众号,及时获取文章更新

微信公众号二维码

本文作者:StubbornHuang

版权声明:本文为站长原创文章,如果转载请注明原文链接!

原文标题:PaddlePaddle – 抠图模型PP-MattingV2环境配置与Onnx模型导出

原文链接:https://www.stubbornhuang.com/2717/

发布于:2023年07月05日 13:26:09

修改于:2023年07月05日 14:06:56

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

文章末尾
上一篇
PaddlePaddle - 使用Paddle2Onnx将Paddle模型导出为onnx模型
PaddlePaddle
下一篇
CMake - Windows系统设置CMake网络代理
C++
当前分类随机文章推荐

发表评论

您必须 [ 登录 ] 才能发表留言!

关注我们的公众号

微信公众号