PaddlePaddle – 抠图模型PP-MattingV2环境配置与Onnx模型导出
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模型,如下图
将下载的模型放到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.pdmodel
和model.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
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
50