matting系列论文笔记(一):Deep Image Matting

刚刚入了Image Matting的坑,后续会更新系列相关的文章。这个坑目前还没有人满为患,好的文章没有很多,综述文章也没有囊括比较新的方法。

论文链接: 2017 Deep Image Matting
pytorch代码: https://github.com/foamliu/Deep-Image-Matting-PyTorch

文章目录

  • matting系列论文笔记(一):Deep Image Matting
    • 前言
    • Abstract
    • 一、Introduction
    • 二、Related Work
    • 三、新的matting数据集
    • 四、method
      • 4.1 Matting encoder-decoder stage
      • 4.2 Matting refinement stage
    • 五、 实验结果
    • 六、总结

前言

这篇论文是Adobe出的,17年的论文,虽然时间比较久,但是目前很多的matting方法用的还是这篇文章的思路。先通过语义分割网络生成二分类的前景背景图,处理成trimap或者直接生成trimap,将trimap与原RGB图合并成4通道输入进行图像的精细分割。

Abstract

文章认为在这之前的算法在前景、背景颜色相近和文理复杂时,表现不好的原因主要有两点:

  • 只使用了低级特征
  • 缺少高级的上下文特征

这篇文章基于深度学习提出,主要为了解决如上两个问题。网络主要分为两部分:

  • 一个encoder-decoder网络:将原图和trimap合并为一个4通道的图像作为输入,并且预测出图像的alpha matte
  • 一个小的卷积网络:进行alpha prediction的精修,得到更加精确的alpha值和更加尖锐的边缘。

此外这篇文章还建立了一个大样本的数据集。

一、Introduction

解决matting的方法近似解一个超定方程:

Ii=αiFi+(1−αi)Bi,α∈[0,1]I_i = \alpha_i F_i + (1-\alpha_i)B_i, \alpha \in [0,1] Ii​=αi​Fi​+(1−αi​)Bi​,α∈[0,1]
Ii,Fi,Bi,αiI_i,F_i, B_i,\alpha_iIi​,Fi​,Bi​,αi​分别代表像素i的原图RGB值,前景,背景,前景的不透明度。
如上方公式所示,难点在于每个像素有三个已知量和7个未知量。
目前的方法都有各自的限制,传统的方法较多采用的是将前景和背景进行线性组合,通过采样前景和背景颜色或者传播 α\alphaα值的方法。这些方法依赖于明显区分的颜色、位置和低级特征,对于前景和背景颜色重叠的图像容易产生重影。同时,传统数据集通常比较小,生成α\alphaα的ground-truth比较困难。
另一个较大的限制是,能用的数据集太小,容易过拟合,泛化能力差。

二、Related Work

详见paper原文,在此不再赘述。

三、新的matting数据集

原有的数据集太小,如alphamatting.com上的数据集只包含有27张训练图8张测试图。本文自行创建了一个新的大数据集。其方法大致为人工抠出较为准确的object,制作相应的trimap,然后将这些图和一些背景图合成,得到大量的训练数据。这些背景图主要来自MS COCO和Pascal VOC。这么做的主要原因还是trimap图的人工标注成本太高昂。这种方法在matting领域还在被广泛使用。

当然,这数据集还存在着一些问题,如前景,背景图片分辨率低,清晰度低,多目标等问题。

四、method

模型结构如上图所示,主要分为两部分。第一阶段为一个深度卷积encoder-decoder网络:将原图和trimap合并为一个4通道的图像作为输入,然后输出预测蒙版的loss+联合loss。第二阶段一个小型卷积网络:进行alpha prediction的精修,得到更加精确的alpha值和更加尖锐的边缘。

4.1 Matting encoder-decoder stage

**网络结构:**编码-解码这部分是一个典型的基础的分割网络,类似FCN网络的改版。目前已经有很多更加强大的encoder-decoder网络了,如DeepLab v3+等等。

本文为了减少参数、加快训练速度,对decoder网络进行了精简。encoder部分有14个卷积层和5个最大池化层,到了decoder部分只有6个卷积层和5个unpooling layers了

Losses: 本文使用了两个losses, alpha-prediction loss + compositional loss

alpha-prediction loss 指的是每个像素的ground truth 的Alpha值与预测Alpha值之间的绝对差,但是由于绝对差不可微分,采用相对近似值模拟,公式如下:

compositional loss 是ground truth RGB颜色和预测的RGB颜色之间的loss,c定义RGB通道,类似于前面的alpha-prediction loss,则compositional loss 计算公式为:

Implementation: 为了防止过拟合,采用了一些策略,基本是一些常用的:

  • randomly crop:没有中心点的随机裁剪超出边界等情况,本文没有讲。
  • resize:从原图中随机crop 320,480,640的训练patch,然后统一resize到320,作为网络输入(这里的操作必须对于你训练的那个样本的background,foreground,alpha同步操作)
  • flipping
  • random dilate:

这部分的操作比较简略,可以适当的采用一些更多的trick。Encoder 网络部分使用了VGG16。

PS: 本文采用了Xavier初始化,Xavier初始化主要适用于线性的激活函数,所以目前用的较多的是何凯明大佬的Kaiming Initialization,pytorch目前默认的初始化方法就是这个。

4.2 Matting refinement stage

跟之前的算法相比,效果已经比较不错了,但由于使用encoder-decoder结构的缘故,得到的结果常常过于平滑。因此,添加了第二阶段的网络,以获得更加精确的alpha matte和更锐利的边缘。

网络结构: 第二阶段网络的输入是image patch和第一阶段得到的对应的alpha预测的串联(一个4通道输入)。输出是对应的ground truth alpha matte。网络是全卷积网络,包含4个卷积层,前3个卷积层都跟着一个ReLU层。为了使得尖锐的边缘即准确轮廓产生,该阶段不再进行降采样过程。此外,在4通道输入数据进入网络前,还采用了一个“ skip-model ”使得其值变成0-1。第二阶段网络不会对alpha matte进行大规模更改,而只是细化和锐化alpha值,其效果如下图所示:

Implementation: 先仅仅更新第一部分的参数,等到其收敛时,固定参数。然后更新refinement部分。等到refinement part也收敛后,微调整个网络。第一、二阶段都使用了Adam,训练时使用了一个小学习率10−510^-510−5。

五、 实验结果

几个实验对照表:

在当时 Alpha Matting 比赛中前五名的比赛截图,文章的方法排名第一:

trimap对alpha预测的影响程度比对:

六、总结

为了将其推广到自然图像中,文章指出抠图算法除了使用颜色作为主要提示外,需要利用更多的结构和语义特征。这篇文章证明了神经网络能够捕获高级特征并用来改进matting效果。实验也证明了,这种方法的优越性,还能广泛应用到真实图像上。

在这之后利用神经网络来进行image matting的工作,很多都受到这篇文章的启发。

matting系列论文笔记(一):Deep Image Matting相关推荐

  1. matting系列论文笔记(二):Background Matting: The World is Your Green Screen

    matting系列论文笔记(二):Background Matting: The World is Your Green Screen 论文链接: 2017 Background Matting: T ...

  2. 论文笔记-DEC (Deep Embedded Clustering)

    论文笔记-DEC (Deep Embedded Clustering) 知识点1.将聚类的度量参考T-SNE中的t-分布,将聚类的度量转换成一个概率值(软分配,qij 表示将样本 i 分配给 j 簇的 ...

  3. 图像隐写术分析论文笔记:Deep learning for steganalysis via convolutional neural networks

    好久没有写论文笔记了,这里开始一个新任务,即图像的steganalysis任务的深度网络模型.现在是论文阅读阶段,会陆续分享一些相关论文,以及基础知识,以及传统方法的思路,以资借鉴. 这一篇是Medi ...

  4. 【论文笔记】DEEP FEATURE SELECTION-AND-FUSION FOR RGB-D SEMANTIC SEGMENTATION

    论文 题目:DEEP FEATURE SELECTION-AND-FUSION FOR RGB-D SEMANTIC SEGMENTATION 收录于:ICME 2021 论文:Deep Featur ...

  5. 《Deep Image Matting》论文笔记

    参考代码:Deep Matting 1. 概述 导读:这篇文章是在深度学习基础上进行抠图,之前也有基于此的工作,但是那些方法存在前景背景区域颜色接近或是有复杂纹理的时候表现欠佳.文章对于这些方法效果差 ...

  6. 论文阅读:Deep Image Matting

    论文地址:https://arxiv.org/pdf/1703.03872.pdf 内容简介 这个网络是用来做抠图的(Matting),能够取得出色的效果,算是利用深度学习进行抠图的鼻祖 提出了Ado ...

  7. 《Background Matting V2:Real-Time High-Resolution Background Matting》论文笔记

    主页:background-matting-v2 参考代码:BackgroundMattingV2 1. 概述 导读:这篇文章在之前V1版本(在512*512输入的情况下只能跑到8FPS)的基础上针对 ...

  8. 《HOP-Matting:Hierarchical Opacity Propagation for Image Matting》论文笔记

    参考代码:HOP-Matting 1. 概述 导读:现有的一些深度学习的matting方法是基于propagation的,这篇文章对此提出了多层次不透明度propagation(hierarchica ...

  9. 《A Late Fusion CNN for Digital Matting》论文笔记

    参考代码:FusionMatting 1. 概述 导读:这篇文章提出了一种仅依赖RGB输入进行matting的方法,文章使用DensNet-201组成5个stage的编码器,之后跟两个解码器,用于预测 ...

最新文章

  1. 在ddms 里面查看data/data里面的东西 不显示data/data
  2. Synchronization (computer science)
  3. python之父去面试-前端两年月入30K,高频面试题整理(含答案)
  4. 【PP模块】报废(损耗)类别简介(Scrap Categories and Their Effects)
  5. 取模运算性质_求余、取模运算在RTOS中计算优先级的理解
  6. php 废弃,PHP 7 废弃特性
  7. DSW:面向AI研发的集成开发平台
  8. Airbnb搜索:Embedding表示学习
  9. java 输入怎么写_java我要怎么写如果输入6是输出是122333444455
  10. C3P0与DBCP数据库连接池的区别,阿里的Druid数据源配置入门
  11. linux磁盘管理-vmware workstation模拟共享存储。
  12. 【运动学】基于matlab嫦娥奔月仿真【含Matlab源码 1238期】
  13. DSP28335学习笔记1
  14. WPS安装office自定义项安装期间出错
  15. 插入参考文献时,本该显示为[1],但显示了{Zhao,2017,#253},解决方法
  16. 企业局域网即时通讯软件存在是必然趋势
  17. 【Java基础系列教程】第三章 Java变量与运算符
  18. 认识USB OTG miniAB
  19. 关于机器学习特征选择的方法总结
  20. c# log4net安装时在AssemblyInfo中提示找不到log4net解决办法

热门文章

  1. 光启:新型智慧城市建设创新领跑者
  2. 自定义 ESP32 分区表 partitions.csv
  3. 超快速实现 svg 转 png,jpg等格式
  4. PTA 快手狂人 (50分)
  5. 2022年安全员-A证操作证考试题库及模拟考试
  6. 接口和协议组成 游戏测试中的接口测试总结
  7. oracle 包和包体禁用,ORACLE中的包和包体
  8. Docker基于容器制作httpd镜像(使用nfs共享存储部署一个网站)
  9. linux 16.04系统下载,Ubuntu下载 Ubuntu 16.04 LTS 官方正式版 64位 下载-脚本之家
  10. Astyle中文格式说明 (for C/C++/JAVA等Format)