《Background Matting V2:Real-Time High-Resolution Background Matting》论文笔记
主页:background-matting-v2
参考代码:BackgroundMattingV2
1. 概述
导读:这篇文章在之前V1版本(在512*512输入的情况下只能跑到8FPS)的基础上针对高分辨率(HD,4K画质)提出了一种设计巧妙的matting方法,文章将其称之为之前方法的V2版本。该方法中将整个pipeline划分为两个部分:base和refine部分,前一个部分在缩小分辨率的输入下生成粗略的结果输出,其主要用于提供大体的区域位置定位(coarse predcition)。后一个网络在该基础上通过path selection选取固定数量的path(这些区域主要趋向于选择头发/手等难分区域)进行refine,之后将path更新之后的结果填充回原来的结果,从而得到其在高分辨率下的matting结果。整个pipeline下来文章的方法能在4K分辨率下跑到30FPS,在HD分辨率下跑到60FPS。当然文章使用的数据集(VideoMatte240K,PhotoMatte 13K/85)对最后结果的提升贡献了不少。
文章的方法设计的很巧妙,通过类似困难样本挖掘的方式排除了很大部分的简单区域,从而能够更好聚焦那些困难的区域,从而提升在高分辨率下的运算表现,文章的效果可以参考下图所示:
出了方法设计带来的运算速度提升之外,文章还提供了很多的matting数据集:
- 1)VideoMatte240K:包含了384段的4K视频数据和100段的高清数据;
- 2)PhotoMatte13K/85:其中包含了13665的高质量图片数据;
这些数据对最后网络性能的影响见下表所示:
2. 方法设计
2.1 整体pipeline与basic网络部分
假设输入的图片/背景图/alpha图/前景图分别使用I,B,α,FI,B,\alpha,FI,B,α,F进行表示,那么将原来的背景替换之后得到的新图片描述为:
I‘=αF+(1−α)B‘I^{‘}=\alpha F+(1-\alpha)B^{‘}I‘=αF+(1−α)B‘
不同于之前直接预测前景,文章是通过预测前景的残差FR=F−IF^R=F-IFR=F−I,这样的改动文章指出可以提升训练的效果,使得可以将前景预测放置在较低的分辨率网络下。对于最后前景图的结果通过下面的方式得到:
F=max(min(FR+I,1),0)F=\max(\min(F^R+I,1),0)F=max(min(FR+I,1),0)
其实在matting的过程中绝大部分的像素都是在[0,1][0,1][0,1]上取值的,这就使得可以在低分辩网络下预测这些像素,而在高分辨下预测那些之间的像素(也就是文章说到的困难部分),对此文章是通过采样的方式进行path select,之后对path进行优化,可参考下图所示:
这里将文章的pipeline划分为两个部分GbaseG_{base}Gbase和GrefineG_{refine}Grefine:
- 1)基础网络GbaseG_{base}Gbase:该网络用ResNet-50作为backbone,后面嫁接DeepLab-V3系列网络的部分结构,再通过双线性采样操作构建一个编解码结构。它的输入是下采样的原始图和背景图Ic,BcI_c,B_cIc,Bc,其中ccc是下采样的stride值,该网络预测 出αc\alpha_cαc,前景信息FcRF_c^RFcR,alpha预测错误图EcE_cEc,网络隐层特征(32个channel)HcH_cHc;
- 2)优化网络GrefineG_{refine}Grefine:该网络使用Hc,I,BH_c,I,BHc,I,B去优化αc,FcR\alpha_c,F_c^Rαc,FcR,被选中去优化的部分便是EcE_cEc中值比较大的部分。之后生成与原图像大小一致的alpha图和前景图;
文章的整体pipeline见下图所示:
2.2 优化网络部分
前面简单说到了基础网络GbaseG_{base}Gbase是由ResNet-50和DeepLab-V3构成的编解码网络结构,输出得到的结果是原始输入尺寸的1c\frac{1}{c}c1,这个参数回根据输入尺寸的变化而变化,如,对于4K的分辨率取值为8。
得到上述的粗略优化结构之后文章将预测错误图EcE_cEc采样到原始输入尺寸的14\frac{1}{4}41,从而对于预测错误图EcE_cEc就变成了E4E_4E4,之后按照错误信息的值选择kkk个错误最大的区域(kkk的取值需要在效率与结果中进行权衡),因而选中的像素代表的便是去优化原图中的16∗(4∗4)16*(4*4)16∗(4∗4)大小的patch。
接下来便是分为两个阶段对粗糙的结果进行优化:
- 1)将αc,FcR,Hc,I,B\alpha_c,F_c^R,H_c,I,Bαc,FcR,Hc,I,B采样到原始输入尺寸的12\frac{1}{2}21,并将这些输入concat起来,之后在预测错误图E4E_4E4上选中位置处抠取8∗88*88∗8大小的patch(在),之后经过两个卷积之后分辨率变成4∗44*44∗4,之后又将它采样到8∗88*88∗8与B,IB,IB,I对应位置处抠取的8∗88*88∗8数据concat,之后经过两个卷积分辨率4∗44*44∗4(这里已经和E4E_4E4所在分辨率一致),会预测出对应的alpha和前景信息;
- 2)将αc,FcR\alpha_c,F_c^Rαc,FcR上采样到输入的分辨率,之后将patch优化的结果与粗糙的结果进行替换,从而得到最后优化之后的结果;
两个网络对于最后性能的影响见下表所示:
2.3 训练过程
对于数据增广采用了随机替换高清背景,仿射变换/水平翻转/亮度对比度饱和度调整/滤波/锐化/随机噪声等方式,而且对前景和背景都是分别处理的。
对于损失函数主要是去监督alpha图像和前景信息。对于alpha图(α\alphaα是预测结果,α∗\alpha^{*}α∗是GT,后续带星的以此类推),其损失描述为:
Lα=∣∣α−α∗∣∣1+∣∣∇α−∇α∗∣∣1L_{\alpha}=||\alpha-\alpha^{*}||_1+||\nabla_{\alpha}-\nabla_{\alpha^{*}}||_1Lα=∣∣α−α∗∣∣1+∣∣∇α−∇α∗∣∣1
对于前景部分损失函数为:
LF=∣∣(α∗>0)∗(F−F∗)∣∣1L_F=||(\alpha^{*}\gt 0)*(F-F^{*})||_1LF=∣∣(α∗>0)∗(F−F∗)∣∣1
对于预测错误图的GT描述为E∗=∣α−α∗∣E^{*}=|\alpha-\alpha^{*}|E∗=∣α−α∗∣,其预测损失函数为:
LE=∣∣E−E∗∣∣2L_{E}=||E-E^{*}||_2LE=∣∣E−E∗∣∣2
结合base和refine网络的输入与输出则两个网络的损失函数描述为:
Lbase=Lαc+LFc+LEcL_{base}=L_{\alpha_c}+L_{F_c}+L_{E_c}Lbase=Lαc+LFc+LEc
Lrefine=Lα+LFL_{refine}=L_{\alpha}+L_FLrefine=Lα+LF
对于参数初始化ResNet-50部分使用ImageNet的预训练模型参数,DeepLab-V3中的参数使用Pascal VOC上训练的参数,选择c=4,k=5kc=4,k=5kc=4,k=5k与Adam优化器。一阶段中使用学习率为[1e−4,5e−4,5e−4][1e-4,5e-4,5e-4][1e−4,5e−4,5e−4]作为编码器/ASPP/解码器的学习率,之后加入refine网络,对应的学习率变为了[5e−5,5e−5,1e−4,3e−4][5e-5,5e-5,1e-4,3e-4][5e−5,5e−5,1e−4,3e−4],使用的数据集为Video Matte 240K,训练完成之后在使用PhotoMatte 13K。
3. 实验结果
《Background Matting V2:Real-Time High-Resolution Background Matting》论文笔记相关推荐
- 论文笔记之Understanding and Diagnosing Visual Tracking Systems
Understanding and Diagnosing Visual Tracking Systems 论文链接:http://dwz.cn/6qPeIb 本文的主要思想是为了剖析出一个跟踪算法中到 ...
- 《Understanding and Diagnosing Visual Tracking Systems》论文笔记
本人为目标追踪初入小白,在博客下第一次记录一下自己的论文笔记,如有差错,恳请批评指正!! 论文相关信息:<Understanding and Diagnosing Visual Tracking ...
- 论文笔记Understanding and Diagnosing Visual Tracking Systems
最近在看目标跟踪方面的论文,看到王乃岩博士发的一篇分析跟踪系统的文章,将目标跟踪系统拆分为多个独立的部分进行分析,比较各个部分的效果.本文主要对该论文的重点的一个大致翻译,刚入门,水平有限,如有理解错 ...
- 目标跟踪笔记Understanding and Diagnosing Visual Tracking Systems
Understanding and Diagnosing Visual Tracking Systems 原文链接:https://blog.csdn.net/u010515206/article/d ...
- 追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems)
追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems) PROJECT http://winsty.net/tracker_di ...
- ICCV 2015 《Understanding and Diagnosing Visual Tracking Systems》论文笔记
目录 写在前面 文章大意 一些benchmark 实验 实验设置 基本模型 数据集 实验1 Featrue Extractor 实验2 Observation Model 实验3 Motion Mod ...
- Understanding and Diagnosing Visual Tracking Systems
文章把一个跟踪器分为几个模块,分别为motion model, feature extractor, observation model, model updater, and ensemble po ...
- CVPR 2017 SANet:《SANet: Structure-Aware Network for Visual Tracking》论文笔记
理解出错之处望不吝指正. 本文模型叫做SANet.作者在论文中提到,CNN模型主要适用于类间判别,对于相似物体的判别能力不强.作者提出使用RNN对目标物体的self-structure进行建模,用于提 ...
- ICCV 2017 UCT:《UCT: Learning Unified Convolutional Networks forReal-time Visual Tracking》论文笔记
理解出错之处望不吝指正. 本文模型叫做UCT.就像论文题目一样,作者提出了一个基于卷积神经网络的end2end的tracking模型.模型的整体结构如下图所示(图中实线代表online trackin ...
- CVPR 2018 STRCF:《Learning Spatial-Temporal Regularized Correlation Filters for Visual Tracking》论文笔记
理解出错之处望不吝指正. 本文提出的模型叫做STRCF. 在DCF中存在边界效应,SRDCF在DCF的基础上中通过加入spatial惩罚项解决了边界效应,但是SRDCF在tracking的过程中要使用 ...
最新文章
- Zero-Copysendfile浅析
- DM8168 开发环境搭建
- sphinx随笔记了一下
- python像素处理_Python+OpenCV图像处理(五)—— 像素运算
- JoyOI(TYVJ)1061-Mobile Service【线性dp】
- 赵明晒荣耀20青春版三色真机图:哪款会是你的菜?
- 用户登陆进去后,没有权限操作
- 一个简单的string类,读书看报系列(一)
- 操作系统面试知识复习
- CDH6离线安装教程
- 串口转WIFI模块通信
- 职高计算机专业c语言_重庆市职业高中计算机专业C语言试题
- JAVA 实现银行卡归属地查询
- 股票数据开源接口-陆股通持股
- Android攻城狮fragment
- 软件测试面试过程中的一些回答思路及技巧,学会了稳过
- 我改变世界、我已看透、我不再是个程序员-IT创世诸神如是说
- js计算当前时间的为年的第几周,以及周对应的时间范围
- nacos注册成功但是服务管理界面没有内容
- 【系统分析师之路】系统分析师必知必会(需求分析篇)