Skip to content

Latest commit

 

History

History
251 lines (201 loc) · 6.85 KB

README_CN.md

File metadata and controls

251 lines (201 loc) · 6.85 KB

简体中文 | English

Matting

Matting(精细化分割/影像去背/抠图)是指借由计算前景的颜色和透明度,将前景从影像中撷取出来的技术,可用于替换背景、影像合成、视觉特效,在电影工业中被广泛地使用。影像中的每个像素会有代表其前景透明度的值,称作阿法值(Alpha),一张影像中所有阿法值的集合称作阿法遮罩(Alpha Matte),将影像被遮罩所涵盖的部分取出即可完成前景的分离。

更新动态

2021.11 Matting项目开源, 实现图像抠图功能。 【1】支持Matting模型:DIM, MODNet。 【2】支持模型导出及Python部署。 【3】支持背景替换功能。 【4】支持人像抠图Android部署

目录

环境配置

1. 安装PaddlePaddle

版本要求

  • PaddlePaddle >= 2.0.2

  • Python >= 3.7+

由于图像分割模型计算开销大,推荐在GPU版本的PaddlePaddle下使用PaddleSeg。推荐安装10.0以上的CUDA环境。安装教程请见PaddlePaddle官网

2. 下载PaddleSeg仓库

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

3. 安装

cd PaddleSeg
pip install -e .
pip install scikit-image
cd contrib/Matting

模型

DIM-VGG16

MODNet在PPM-100数据集上的性能

Backbone SAD MSE Params(M) FLOPs(G) FPS Link
MobileNetV2 112.73 0.0098 6.5 15.7 67.5 model
ResNet50_vd 104.14 0.0090 92.2 151.6 28.6 model
HRNet_W18 77.96 0.0054 10.2 28.5 10.9 model

注意:模型输入大小为(512, 512), GPU为Tesla V100 32G。

数据准备

利用MODNet开源的PPM-100数据集作为我们教程的示例数据集

将数据集整理为如下结构, 并将数据集置于data目录下。

PPM-100/
|--train/
|  |--fg/
|  |--alpha/
|
|--val/
|  |--fg/
|  |--alpha
|
|--train.txt
|
|--val.txt

其中,fg目录下的图象名称需和alpha目录下的名称一一对应

train.txt和val.txt的内容如下

train/fg/14299313536_ea3e61076c_o.jpg
train/fg/14429083354_23c8fddff5_o.jpg
train/fg/14559969490_d33552a324_o.jpg
...

可直接下载整理后的PPM-100数据进行后续教程

如果完整图象需由前景和背景进行合成的数据集,类似Deep Image Matting论文里使用的数据集Composition-1k,则数据集应整理成如下结构:

Composition-1k/
|--bg/
|
|--train/
|  |--fg/
|  |--alpha/
|
|--val/
|  |--fg/
|  |--alpha/
|  |--trimap/ (如果存在)
|
|--train.txt
|
|--val.txt

train.txt的内容如下:

train/fg/fg1.jpg bg/bg1.jpg
train/fg/fg2.jpg bg/bg2.jpg
train/fg/fg3.jpg bg/bg3.jpg
...

val.txt的内容如下, 如果不存在对应的trimap,则第三列可不提供,代码将会自动生成。

val/fg/fg1.jpg bg/bg1.jpg val/trimap/trimap1.jpg
val/fg/fg2.jpg bg/bg2.jpg val/trimap/trimap2.jpg
val/fg/fg3.jpg bg/bg3.jpg val/trimap/trimap3.jpg
...

训练评估预测

训练

export CUDA_VISIBLE_DEVICES=0
python train.py \
       --config configs/modnet/modnet_mobilenetv2.yml \
       --do_eval \
       --use_vdl \
       --save_interval 5000 \
       --num_workers 5 \
       --save_dir output

note: 使用--do_eval会影响训练速度及增加显存消耗,根据需求进行开闭。

--num_workers 多进程数据读取,加快数据预处理速度

更多参数信息请运行如下命令进行查看:

python train.py --help

如需使用多卡,请用python -m paddle.distributed.launch进行启动

评估

export CUDA_VISIBLE_DEVICES=0
python val.py \
       --config configs/modnet/modnet_mobilenetv2.yml \
       --model_path output/best_model/model.pdparams \
       --save_dir ./output/results \
       --save_results

--save_result 开启会保留图片的预测结果,可选择关闭以加快评估速度。

你可以直接下载我们提供的模型进行评估。

更多参数信息请运行如下命令进行查看:

python val.py --help

预测

export CUDA_VISIBLE_DEVICES=0
python predict.py \
    --config configs/modnet/modnet_mobilenetv2.yml \
    --model_path output/best_model/model.pdparams \
    --image_path data/PPM-100/val/fg/ \
    --save_dir ./output/results

如模型需要trimap信息,需要通过--trimap_path传入trimap路径。

你可以直接下载我们提供的模型进行预测。

更多参数信息请运行如下命令进行查看:

python predict.py --help

背景替换

export CUDA_VISIBLE_DEVICES=0
python bg_replace.py \
    --config configs/modnet/modnet_mobilenetv2.yml \
    --model_path output/best_model/model.pdparams \
    --image_path path/to/your/image \
    --bg_path path/to/your/background/image \
    --save_dir ./output/results

如模型需要trimap信息,需要通过--trimap_path传入trimap路径。

若不提供--bg_path, 则采用绿色作为背景。

你可以直接下载我们提供的模型进行背景替换。

更多参数信息请运行如下命令进行查看:

python bg_replace.py --help

导出部署

模型导出

python export.py \
    --config configs/modnet/modnet_mobilenetv2.yml \
    --model_path output/best_model/model.pdparams \
    --save_dir output/export

如果模型(比如:DIM)需要trimap的输入,需要增加参数--trimap

更多参数信息请运行如下命令进行查看:

python export.py --help

应用部署

python deploy/python/infer.py \
    --config output/export/deploy.yaml \
    --image_path data/PPM-100/val/fg/ \
    --save_dir ouput/results

如模型需要trimap信息,需要通过--trimap_path传入trimap路径。

更多参数信息请运行如下命令进行查看:

python deploy/python/infer.py --help

贡献者

感谢 wuyefeilin钱彬(Qianbin)yzl19940819 等开发者的贡献