抠像任务:基于飞桨复现BackgroundMattingV2模型
本文介绍飞桨框架复现Real-Time-High-Resolution-Background-Matting论文的项目,含相关链接与依赖。论文网络分base和refine模块,复现采用多阶段训练,用多个数据集,添加laplacian_loss,还说明训练、验证及预测过程。

前言
人工智能创新应用大赛——飞桨开源框架前沿模型复现专题赛,使用Paddle复现Real-Time-High-Resolution-Background-Matting论文。
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
github: https://github.com/zackzhao1/BackgroundMattingV2-paddle
aistudio: https://aistudio.baidu.com/aistudio/projectdetail/2467759
依赖环境: paddlepaddle-gpu2.1.2 python3.7
论文简介
该方法中将整个pipeline划分为两个部分:base和refine部分,前一个部分在缩小分辨率的输入下生成粗略的结果输出,其主要用于提供大体的区域位置定位(coarse predcition)。后一个网络在该基础上通过path selection选取固定数量的path(这些区域主要趋向于选择头发/手等难分区域)进行refine,之后将path更新之后的结果填充回原来的结果,从而得到其在高分辨率下的matting结果。
图1:BGMv2的网络结构,其中蓝色的是base网络,绿色的是refine网络
论文细节
BGMv2的网络分成两个模块: Gbase 和 Grefine 。给定一张输入图像 I 和空屏图像 B ,首先将其降采样 c 倍,得到 Ic 和 Bc 。 Gbase 取 Ic 和 Bc 作为输入,输出同样是降采样尺寸的前景概率 ac ,前景残差 FcR ,Error Map Ec 以及隐层节点特征 Hc 。然后 Grefine 根据 Ec 中值较大的像素点取 Hc ,I 以及 B 中对应的patch(难样本)来优化 FR 和 a ,整个过程如图1所示。
base网络BGMv2借鉴了deeplab v3的网络结构,包含骨干网络,空洞空间金字塔池化和解码器三部分组成:
骨干网络:可以采用主流的卷积网络作为,作者开源的模型包括ResNet-50,ResNet-101以及MobileNetV2,用户可以根据速度和精度的不同需求选择不同的模型;空洞空间金字塔池化:(Atrous Spatial Pyramid Pooling,ASPP)是由DeeplabV3提出并在实例分割领域得到广泛应用的结构,人像抠图和实例分割本质上式非常接近的,因此也可以通过ASPP来提升模型准确率;解码器:解码器是由一些列的双线性插值上采样和跳跃连接组成,每个卷几块由 3∗3 卷积,BN以及ReLU激活函数组成。
如前面介绍的, Gbase 的输入是 Ic 和 Bc ,输出是 ac , FcR , Ec 以及 Hc 。其中Error Map Ec 的Ground Truth是 E∗ ,Error Map是一个人像轮廓的一个图。通过对Error Map的优化,可以使得BGMv2有更好的边缘检测效果。
Refine网络Grefine 的输入是在根据 Ec 提取的 k 个补丁块(patches)上进行进行精校, k 可以提前指定选择top- k 个或是根据阈值卡若干个。用户也可以根据速度和精度的trade-off自行设置 k 或者阈值的具体值。对于缩放到原图 1/c 的 Ec ,我们首先将其上采样到原图的 1/4 ,那么 E4 中的一个点便相当于原图上一个 4∗4 的补丁块,那么相当于我们要优化的像素点的个数总共有 16k 个。
Grefine 的网络分成两个阶段:在1/2的分辨率和原尺寸的分辨率上进行精校。

Stage 1:首先将 Gbase 的输出上采样到原图的 1/2 ;然后再根据 E4 选择出的补丁块,从其周围在其中提取 8∗8 的补丁块;再依次经过两组 3∗3 的有效卷积,BN,ReLU将Feature Map的尺寸依次降为 6∗6 和 4∗4 。
Stage2:再将Stage 1得到的 4∗4 的Feature Map上采样到 8∗8 ,再依次经过两组 3∗3 的有效卷积,BN,ReLU将Feature Map的最终尺寸降为 4∗4 。而这个尺寸的Feature Map对应的ground truth就是我们上面根据 E4 得到的补丁块。最后我们将降采样的 ac 和 FcR 上采样到原图大小,再将Refine优化过后的补丁块替换到原图中便得到了最终的结果。
复现思路
1.在复现过程中我们参考论文中的方法,做了多阶段的训练,并做了修改:
stage1:使用VideoMatte240K数据集做预训练,提升模型鲁棒性。注:由于预训练耗时较长,提供了训练好得模型,方便在自己的数据上微调,模型为stage1.pdparams。
stage2:使用Distinctions646数据集做微调,提升模型细节表现。注:此时模型最好精度为SAD: 7.58,MSE: 9.49,模型为stage2.pdparams。
stage3:使用个人数据集微调。注:本次比赛提交的是stage2模型,因为训练所用数据集都为公开数据集,方便复现。 原作者在论文中也使用了个人数据集微调,但没有公开。因此我增加了自己数据进行训练,没有条件的同学可以利用原工程生成pha作为训练数据。 模型最好精度为SAD: 7.61,MSE: 9.47,模型为stage3.pdparams。
2.添加了原作者新论文中用到的laplacian_loss,可以提高收敛速度。
3.模型api对照表 https://blog.csdn.net/qq_32097577/article/details/112383360?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.vipsorttest&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.vipsorttest
复现

模型下载 链接:https://pan.baidu.com/s/1WfpzLcjaDJPXYSrzPWvsyQ 提取码:nsfy
训练
stage1:使用VideoMatte240K数据集做预训练,提升模型鲁棒性。注:由于预训练耗时较长,提供了训练好得模型,方便在自己的数据上微调,模型为stage1.pdparams。
stage2:使用Distinctions646数据集做微调,提升模型细节表现。注:此时模型最好精度为SAD: 7.58,MSE: 9.49,模型为stage2.pdparams。
**stage3:使用个人数据集微调。注:本次比赛提交的是stage2模型,因为训练所用数据集都为公开数据集,方便复现。 原作者在论文中也使用了个人数据集微调,但没有公开。因此我增加了自己数据进行训练,没有条件的同学可以利用原工程生成pha作为训练数据。 模型最好精度为SAD: 7.61,MSE: 9.47,模型为stage3.pdparams。
In [1]# [VideoMatte240K & PhotoMatte85 数据集](https://grail.cs.washington.edu/projects/background-matting-v2/#/datasets)# [Distinctions646_person 数据集](https://github.com/cs-chan/Total-Text-Dataset)# 数据集需要申请,请自行下载! ./run.sh登录后复制
验证
In [2]# 解压测试集!unzip ./data/data111962/PhotoMatte85_eval.zip -d ./data/登录后复制In [4]
!python eval.py登录后复制
W1013 17:35:31.830500 406 device_context.cc:404] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1W1013 17:35:31.835165 406 device_context.cc:422] device: 0, cuDNN Version: 7.6. 0%| | 0/85 [00:00, ?it/s]/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/tensor/creation.py:125: DeprecationWarning: `np.object` is a deprecated alias for the builtin `object`. To silence this warning, use `object` by itself. Doing this will not modify any behavior and is safe. Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations if data.dtype == np.object:/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dygraph/math_op_patch.py:239: UserWarning: The dtype of left and right variables are not the same, left dtype is paddle.float32, but right dtype is paddle.bool, the right dtype will convert to paddle.float32 format(lhs_dtype, rhs_dtype, lhs_dtype))/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dygraph/math_op_patch.py:239: UserWarning: The dtype of left and right variables are not the same, left dtype is paddle.float32, but right dtype is paddle.float64, the right dtype will convert to paddle.float32 format(lhs_dtype, rhs_dtype, lhs_dtype))100%|███████████████████████████████████████████| 85/85 [00:28<00:00, 2.96it/s]paddle output: SAD: 8.519970015918508, MSE: 9.885075489212484登录后复制
预测
In [6]!python predict.py登录后复制
W1013 18:00:01.562386 1535 device_context.cc:404] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1W1013 18:00:01.567060 1535 device_context.cc:422] device: 0, cuDNN Version: 7.6.save results:./image/01_pred.webp登录后复制
相关攻略
常见报错解析:“Access Not Configured”故障排除指南 许多开发者和团队成员在使用OpenClaw集成飞书时,都曾遭遇过一个典型的中断提示:“access not configured”(访问未配置)。该提示会明确显示您的飞书账户ID及一组唯一的配对验证码,并指出需要联系机器人所有
OpenClaw 常用指令大全与使用详解 openclaw status:此命令是查看OpenClaw系统整体健康状态的核心指令,执行后即获取服务运行状况的全面报告,是日常运维的首要诊断工具。 openclaw gateway restart:在修改网关配置后,必须运行此指令以重启网关服务,使配置文
如何通过 OpenClaw 实现 Chrome 浏览器自动化操控 在软件开发与自动化测试领域,持续学习是常态。本文旨在详细介绍如何利用 OpenClaw 连接并控制一个已开启的 Chrome 浏览器实例,实现点击、文本输入、文件上传、页面滚动、屏幕截图以及执行 JavaScript 等自动化操作。整
项目概述 你是否希望将强大的 AI 助手带入日常聊天?本教程将指导你完成搭建流程,让你能在 QQ 上直接调用 OpenClaw 智能助手,实现无门槛的 AI 对话体验。 架构说明 ┌─────────────┐ ┌──────────────┐ ┌─────────────┐ │ QQ 用户 │ ─
一 下载并安装Node js,全程保持默认设置 首先,请前往Node js官方网站的下载中心:https: nodejs org zh-cn download。根据您的操作系统(Windows Mac Linux)下载对应的安装程序。运行安装向导时,整个过程非常简单,您只需连续点击“下一步”按钮
热门专题
热门推荐
V社联合创始人G胖调整角色:从主导开发转向赋能团队,释放创意生产力 近期一则消息引发游戏行业广泛关注:Valve联合创始人加布·纽维尔(“G胖”)在公司内部进行了一次重要角色转型。此次调整的关键原因,与他个人在公司中的特殊影响力息息相关。根据透露,这位创始人决定减少在具体游戏开发工作中的直接深度参与
红魔姜超透露:全新游戏平板将于四月或五月发布,承诺带来惊艳体验 游戏硬件领域即将迎来重磅更新。努比亚红魔游戏手机的产品线负责人姜超,近日通过社交媒体进行了一次颇具悬念的“前瞻剧透”,成功引发了广大游戏玩家和科技爱好者的高度关注。他明确指出,红魔全新一代游戏平板的发布日期已锁定在四月或五月,并使用了“
金铲铲之战S17天煞羁绊:效果解析与实战应用 在《金铲铲之战》S17赛季中,【天煞】是一个定位独特的专属羁绊,仅由5费英雄“劫”所携带。激活这一羁绊需要特定的前置条件——玩家必须在强化符文选择阶段获得【入侵者劫】。一旦成功解锁,劫将获得全新的技能机制,从而在战局中发挥出颠覆性的作用。 金铲铲之战S1
索尼调整第一方工作室阵容,王牌重制团队蓝点工作室正式“退出”核心名单 近日,索尼在其PlayStation Studios官方网站的更新中做出了一项关键调整,引发了游戏玩家和行业观察者的广泛关注:曾凭借《恶魔之魂:重制版》等作品赢得盛誉的蓝点工作室,已不再出现在索尼核心第一方工作室的名单之中。此次页
未来人类X98W移动工作站正式发布:重新定义移动端专业性能的新标杆 在专业移动计算领域,总有一些产品能够打破常规认知。近日,未来人类(TerransForce)正式在其官网上线了全新的X98W高性能移动工作站,并宣布将于本月内全面发售。这款设备的问世,无疑为那些在移动办公环境中仍需要桌面级别强悍性能





