《A Late Fusion CNN for Digital Matting》论文笔记
参考代码:FusionMatting
1. 概述
导读:这篇文章提出了一种仅依赖RGB输入进行matting的方法,文章使用DensNet-201组成5个stage的编码器,之后跟两个解码器,用于预测前景alpha和背景的alpha,这样带来的好处是使得网络自由度更高。为了更近一步优化最后alpha的预测结果,而不是前景背景对应位置去argmax,文章通过一串卷积操作组成一个fusion模块,去优化alpha的预测结果。这样的方法相对于依靠trimap的方法其预测难度加大,因而网络的设计也变得复杂,而且训练的数据是较重要的,文章的整体思路是可行的也是具有一定的参考性的。至少本人在之前的实验中验证了单编码器单解码器的RGB输入进行matting也能取得不错的效果。
文章的方法通过分别预测前景和背景的方式,降低预测的难度并通过fusion的方式得到最后的alpha,取得的效果还是不错的,可以参考一下下面的matting结果:
2. 方法设计
2.1 模型构建
在之前的一些工作中对于输入图像III在位置ppp处其像素表达为(这里的Fp,BpF_p,B_pFp,Bp表示前景背景图,下文中则表示前景背景alpha图):
Ip=αpFp+(1−αp)BpI_p=\alpha_pF_p+(1-\alpha_p)B_pIp=αpFp+(1−αp)Bp
而在这篇文章中由于预测的主体变为了整个图的alpha,因而对这个模型进行了改变,使用前景背景加权的形式处理:
alphap=βpFpˉ+(1−βp)(1−Bpˉ)alpha_p=\beta_p\bar{F_p}+(1-\beta_p)(1-\bar{B_p})alphap=βpFpˉ+(1−βp)(1−Bpˉ)
在一般情况两个解码器预测的结果是应该满足下面的需求的:
Bpˉ+Fpˉ=1\bar{B_p}+\bar{F_p}=1Bpˉ+Fpˉ=1
在文章的设计中损失函数却使得两个预测的结果相加是下面这样的情况:
Bpˉ+Fpˉ≠1\bar{B_p}+\bar{F_p}\neq1Bpˉ+Fpˉ=1
这可以使得产生有效的梯度去训练后面的融合网络。
2.2 网络结构
文章的网络结构见下图所示:
在上图中可以看到文章的网络大体上分为两个部分:
- 1)由DenseNet-201作为编码器,再加上前景和背景解码器构成的分割网络;
- 2)由几个卷积组成的fusion模块,用以给前景和背景预测结果进行加权;
其具体的网络结构可以参考git中提供的supplementary materials。
2.3 分割网络的损失
这部分的损失有几个部分组成,其中最直接的便是对alpha进行监督,其采用的监督形式为:
Ld(Fpˉ)={∣Fpˉ−αp∣,0<α<1(Fpˉ−αp)2,αp=0,1L_d(\bar{F_p}) = \begin{cases} |\bar{F_p}-\alpha_p|, & 0\lt\alpha\lt1 \\[2ex] (\bar{F_p}-\alpha_p)^2, & \alpha_p=0,1 \end{cases} Ld(Fpˉ)=⎩⎨⎧∣Fpˉ−αp∣,(Fpˉ−αp)2,0<α<1αp=0,1
这里分辨使用L1和L2损失函数去监督alpha图里面的不同成分,使用这样的区别可以很好区分分割目标的soft和hard成分。
除了上面的范数损失函数之外,文章还引入了梯度的损失函数,从而去得到更加清晰的结果:
Lg(Fpˉ)=∣δx(Fpˉ)−δx(αp)∣+∣δy(Fpˉ)−δy(αp)∣L_g(\bar{F_p})=|\delta_x(\bar{F_p})-\delta_x(\alpha_p)|+|\delta_y(\bar{F_p})-\delta_y(\alpha_p)|Lg(Fpˉ)=∣δx(Fpˉ)−δx(αp)∣+∣δy(Fpˉ)−δy(αp)∣
之后为了使得hard部分的前景背景部分得到的置信度更高,这里使用较差熵损失函数:
CE(Fpˉ)=wp⋅(−αp^log(Fpˉ)−(1−αp^)log(1−Fpˉ))CE(\bar{F_p})=w_p\cdot(-\hat{\alpha_p}log(\bar{F_p})-(1-\hat{\alpha_p})log(1-\bar{F_p}))CE(Fpˉ)=wp⋅(−αp^log(Fpˉ)−(1−αp^)log(1−Fpˉ))
其中,当αp=1,0\alpha_p=1,0αp=1,0的时候,其权值为wp=1w_p=1wp=1;而在其它情况下为wp=0.5w_p=0.5wp=0.5,从而使得hard部分的置信度更高一些。
综合上文,网络的整体损失函数描述为:
LF=∑pCE(Fpˉ)+Ld(Fpˉ)+Lg(Fpˉ)L_F=\sum_pCE(\bar{F_p})+L_d(\bar{F_p})+L_g(\bar{F_p})LF=p∑CE(Fpˉ)+Ld(Fpˉ)+Lg(Fpˉ)
注意,基于上面的损失函数只是其中的前景部分的损失函数,对于背景部分的损失函数LBL_BLB也是类似的计算过程,只是其GT变成了αp=1−αp\alpha_p=1-\alpha_pαp=1−αp。
得到上述的分割结果之后,便可以根据上面的概率输出得到对应的trimap,可以参考下图:
2.4 融合网络部分
在上述内容中得到前景和背景区域之后便需要将两个部分融合起来得到最后的alpha图,这部分的加权系数是通过一些卷积实现的。这里的损失函数描述为:
Lu=∑pwp⋅∣βpFpˉ+(1−βp)(1−Bpˉ)−αp∣L_u=\sum_pw_p\cdot|\beta_p\bar{F_p}+(1-\beta_p)(1-\bar{B_p})-\alpha_p|Lu=p∑wp⋅∣βpFpˉ+(1−βp)(1−Bpˉ)−αp∣
其中,当0<αp<10\lt\alpha_p\lt10<αp<1问的时候wp=1w_p=1wp=1,否则为wp=0.1w_p=0.1wp=0.1。
2.5 训练过程
文章的训练过程可以划分为3个阶段:
- 1)15个epoch的分割网络部分训练:
- 2)保留分割网络的训练参数,并不更新,训练5个epoch的fusion网络部分训练;
- 3)之后将分割网络和fusion网络联合起来训练7个epoch;
其中采用的是Cyclical学习率策略,整个训练阶段的基础学习率是5e-4,前面两个阶段的最大学习率为1.5e-3,联合训练的时候学习率为1e-3。
在进行联合训练的时候其损失函数描述为:
LJ=Lu+w1(LF+LB)+w2LsL_J=L_u+w_1(L_F+L_B)+w_2L_sLJ=Lu+w1(LF+LB)+w2Ls
其中,w1=0.5,w2=0.01w_1=0.5,w_2=0.01w1=0.5,w2=0.01,其中LsL_sLs是对soft部分的正则:
Ls=1N∑pαpγ+(1−αp)γL_s=\frac{1}{N}\sum_p\alpha_p^{\gamma}+(1-\alpha_p)^{\gamma}Ls=N1p∑αpγ+(1−αp)γ
其中,γ=0.9\gamma=0.9γ=0.9。
3. 实验结果
Composition-1k testing dataset:
《A Late Fusion CNN for Digital 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的过程中要使用 ...
最新文章
- 提高期——SLA实践指导秘籍
- python如何次传参给线程_python如何给线程中的函数传参?
- TSQL--NESTED LOOPS JOIN
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(4)-创建项目解决方案
- sql优化的方法及思路_合理的sql优化思路--如何缩短SQL调优时间?
- php变量作用域(花括号、global、闭包)
- matlab怎么画二维热力图_[原创]Day3.箱线图和热力图的绘制
- CAN收发器SN65HVD230,实际应用案例分析
- Mac. IntelliJ IDEA maven+springmvc添加包时小插曲
- JavaScript 工具库:Cloudgamer JavaScript Library v0.1 发布
- 老程序员被裁员,面试半年未果,同行:都四十了还是码农,怪谁?
- 89c51汇编语言流水灯,汇编语言流水灯
- java水果类用equal重量价格,Java基础练习题 附答案
- Python项目 huobi量化交易系统
- Halcon错误 #2021: System clock has been set back.
- 生态对对碰|云和恩墨数据库云管平台 zCloud 最新支持 TiDB
- 关于 Adobe PDF虚拟打印机
- 【工业大数据】工厂大数据之数据源分析;如何挖掘并驾驭大数据的价值,成为“大数据企业”?
- python股市_如何使用python和破折号创建仪表板来主导股市
- 南通六年级英语口语听力测试软件,吐血整理一波英语口语练习软件给你,还有哪些要注意...
热门文章
- C语言—打字母单机游戏(简易)
- 大数据平台搭建,cdh选型配置
- SQL server数据库的操作步骤·图形界面工具
- kali中使用msf制作Windows恶意软件获取shell
- buuctf-Real-[ThinkPHP]5.0.23-Rce
- 传奇扑克联合30位顶级投资人,数百家众创空间,打造扑克联赛新生态
- Nowcoder | [题解-N165]牛客网NOIP赛前集训营-普及组(第二场)
- 爬山算法与模拟退火算法
- ROC曲线和PR曲线的区别及相应的应用场景
- sc计算机技术,计算机学院师生首次在超级计算旗舰会议SC上发表学术论文