参考代码:Deep Matting

1. 概述

导读:这篇文章是在深度学习基础上进行抠图,之前也有基于此的工作,但是那些方法存在前景背景区域颜色接近或是有复杂纹理的时候表现欠佳。文章对于这些方法效果差的原因进行分析并归纳为:网络中只使用了低层次的细节信息,而忽略或是缺少高层次的上下文信息。文章针对上面提到的两个问题提出了一种新的抠图方法,该方法有两个部分组成:
1)由CNN网络构建的编解码结构,使用三色图和原图作为输入,输出预测出来的alpha图;
2)在前一个部分输出的基础上使用一个小的卷积网络去优化预测出来的alpha图,从而使得网络的输出更加精准,边界清晰;

这篇文章指出现有(论文的年代2017年)的一些方法存在着如下的问题:

  • 1)依赖于颜色等物体信息,但是这样的方式在前景背景不好分的时候matting就会存在问题,见图1第一排第二张图。文章使用编解码结构网络和refine网络去预测alpha;
  • 2)现有可供使用的训练数据集相当有限。文章使用数据合成策略增广数据集;

2. 方法设计

2.1 网络结构

文章的方法是典型的编解码结构网络,在最后阶段还增加了一个refine模块,其网络结构见下图所示:

2.2 数据增广策略

由于现今可供使用的matting数据集较少,但是网络训练是需要较大的数据集的,对此文章使用数据合成的思路去进行数据增广。文章使用alpha图与原图将对应的前景区域贴到其它图片上,从而得到了不同背景的合成数据,见下图所示:

2.3 编解码网络部分

文章的方法第一个阶段是一个U型的编解码结构,编码器由14个卷积和5个池化层构成,解码器结构相对简单,由6个卷积和5个unpooling层构成,使用Xavier 随机初始化。由于网络的输入往外增加了一个三色图的通道,这里对增加的通道使用0值初始化。

对于网络的损失函数是由两部分组成的:alpha的预测损失和RGB合成图的预测损失

alpha图预测损失:
这里对于alpha图的预测损失采用的是L1范数,但是由于L1范数在0点不可导的问题,文章对其进行改进:
Lαi=(αpi−αgi)2+ϵ2,αpi,αgi∈[0,1]L_{\alpha}^i=\sqrt{(\alpha_p^i-\alpha_g^i)^2+\epsilon^2},\alpha_p^i,\alpha_g^i\in [0,1]Lαi​=(αpi​−αgi​)2+ϵ2​,αpi​,αgi​∈[0,1]
其中,αpi,αgi\alpha_p^i,\alpha_g^iαpi​,αgi​是像素iii的预测值和实际标注值,ϵ=1e−6\epsilon=1e^{-6}ϵ=1e−6,那么对应的提督计算就可以描述为:
∂Lαi∂αpi=αpi−αgi(αpi−αgi)2+ϵ2\frac{\partial L_{\alpha}^i}{\partial \alpha_p^i}=\frac{\alpha_p^i-\alpha_g^i}{\sqrt{(\alpha_p^i-\alpha_g^i)^2+\epsilon^2}}∂αpi​∂Lαi​​=(αpi​−αgi​)2+ϵ2​αpi​−αgi​​
合成损失:
这里将预测出来的alpha与背景图合并结果,gt alpha和背景图合并结果进行损失计算,表示为:
Lci=(cpi−cgi)2+ϵ2L_c^i=\sqrt{(c_p^i-c_g^i)^2+\epsilon^2}Lci​=(cpi​−cgi​)2+ϵ2​
对于上面的两个损失函数文章使用如下组合的方式:
Lall=wl⋅Lα+(1−wl)⋅LcL_{all}=w_l\cdot L_{\alpha}+(1-w_l)\cdot L_cLall​=wl​⋅Lα​+(1−wl​)⋅Lc​
其中,wl=0.5w_l=0.5wl​=0.5,此外由于三色图中唯一不确定的是其中的未知区域因而损失函数只需要重点关注对应的区域就好了,则对于未知区域像素设置的损失权值为wi=1w_i=1wi​=1,那么确定区域的权值则为wi=0w_i=0wi​=0。

2.4 Refinement stage

这部分是在编解码网络训练完成之后对预测出来的alpha图进行细节优化的部分。这部分网络的输入是编解码网络alpha输出(255灰度级)和原始图像的concat,之后经过4层卷积提取特征之后再与编解码网络预测出来的alpha做残差。具体可以参考网络结构的右半部分。下图对照的是有无refinement stage对于整体预测的影响:

文章中对于网络的训练是划分为2个阶段进行的:

  • 1)去掉refinement stage单独更新编解码网络部分;
  • 2)固定编解码网络部分的参数,之后使用其输出优化refinement stage部分;

3. 实验结果

Composition-1k:

alphamatting.com dataset:

《Deep Image Matting》论文笔记相关推荐

  1. 论文笔记之Understanding and Diagnosing Visual Tracking Systems

    Understanding and Diagnosing Visual Tracking Systems 论文链接:http://dwz.cn/6qPeIb 本文的主要思想是为了剖析出一个跟踪算法中到 ...

  2. 《Understanding and Diagnosing Visual Tracking Systems》论文笔记

    本人为目标追踪初入小白,在博客下第一次记录一下自己的论文笔记,如有差错,恳请批评指正!! 论文相关信息:<Understanding and Diagnosing Visual Tracking ...

  3. 论文笔记Understanding and Diagnosing Visual Tracking Systems

    最近在看目标跟踪方面的论文,看到王乃岩博士发的一篇分析跟踪系统的文章,将目标跟踪系统拆分为多个独立的部分进行分析,比较各个部分的效果.本文主要对该论文的重点的一个大致翻译,刚入门,水平有限,如有理解错 ...

  4. 目标跟踪笔记Understanding and Diagnosing Visual Tracking Systems

    Understanding and Diagnosing Visual Tracking Systems 原文链接:https://blog.csdn.net/u010515206/article/d ...

  5. 追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems)

    追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems) PROJECT http://winsty.net/tracker_di ...

  6. ICCV 2015 《Understanding and Diagnosing Visual Tracking Systems》论文笔记

    目录 写在前面 文章大意 一些benchmark 实验 实验设置 基本模型 数据集 实验1 Featrue Extractor 实验2 Observation Model 实验3 Motion Mod ...

  7. Understanding and Diagnosing Visual Tracking Systems

    文章把一个跟踪器分为几个模块,分别为motion model, feature extractor, observation model, model updater, and ensemble po ...

  8. CVPR 2017 SANet:《SANet: Structure-Aware Network for Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文模型叫做SANet.作者在论文中提到,CNN模型主要适用于类间判别,对于相似物体的判别能力不强.作者提出使用RNN对目标物体的self-structure进行建模,用于提 ...

  9. ICCV 2017 UCT:《UCT: Learning Unified Convolutional Networks forReal-time Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文模型叫做UCT.就像论文题目一样,作者提出了一个基于卷积神经网络的end2end的tracking模型.模型的整体结构如下图所示(图中实线代表online trackin ...

  10. CVPR 2018 STRCF:《Learning Spatial-Temporal Regularized Correlation Filters for Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文提出的模型叫做STRCF. 在DCF中存在边界效应,SRDCF在DCF的基础上中通过加入spatial惩罚项解决了边界效应,但是SRDCF在tracking的过程中要使用 ...

最新文章

  1. python读取指定行的txt_【Python】读取txt文件,获取指定行中指定位置数据
  2. 1001 字符串“水”题(二进制,map,哈希)
  3. win10 详细配置JAVA环境变量(最详细),操作步骤如下:
  4. JQuery动态创建Form
  5. 云服务器一直显示关机中,云服务器一直提示关机中
  6. 如何将视频设置为网页背景
  7. python怎么写入到文件中_Python学习笔记之将数据写入到文件中
  8. 记一次被自己DDOS攻击
  9. 吉林大学计算机网络考研知识点整理
  10. 计算机java毕设_javaweb计算机毕设怎么做比较容易?
  11. 北航计算机学院考研英语一还是二,2018北京航空航天大学计算机考研经验分享...
  12. Something's wrong--perhaps a missing \item. \end{thebibliography}
  13. NoSQL之 Redis配置与优化
  14. Excel将多行文本合并一行:phonetic函数
  15. HTML第一天学习总结
  16. 世纪金文oracle,21世纪双语新闻(MP3+字幕):一片甲骨天下惊,甲骨文的意义何在?...
  17. Linux 内核 3.3 和 3.4 简介
  18. 团队协作出了问题,项目经理怎么办?
  19. Mac OS上JDK8更换JDK11
  20. Dockerfile 构建镜像以及镜像优化的方法

热门文章

  1. 达观数据中标招商证券企业级数字员工管理平台项目
  2. 计算机的心智操作系统之哲学原理【读书笔记】-----基础原理篇
  3. 企业构建ERP系统 不得不考虑的因素
  4. 基于javaweb的汽车维修管理系统(java+ssm+jsp+easyui+echarts+mysql)
  5. 从网络测速,看网络程序对网速的影响
  6. java junit 怎么写_java-如何确定代码是否在JUnit测试内运行?
  7. 论如何优雅的实现左滑删除(微信小程序)
  8. PLC(FX3U):一些经验
  9. 2.1(Mysql)康师傅课件
  10. 黑帽SEO与黑帽技术