专栏首页粽子的深度学习笔记matting笔记_一周小结

matting笔记_一周小结

去年刚入坑的旧笔记,刚翻出来…

1. 利用神经网络做抠图的入坑之作《Deep Image Matting》

详情见之前的笔记 matting系列论文笔记(一):Deep Image Matting

由于image matting的工作没有特别好的综述,有的综述也不是特别新,deep image matting这篇paper就作为进入这个方向的引导论文。这篇paper是Adobe出品,2017年的论文,虽然时间比较久,但是目前很多的matting方法用的还是这篇文章的思路。先通过语义分割网络生成二分类的前景背景图,处理成trimap或者直接生成trimap,将trimap与原RGB图合并成4通道输入进行图像的精细分割。

简要介绍

在这之前的算法在前景、背景颜色相近和文理复杂时,普遍表现不好,其原因主要有两点:只使用了低级特征,没有利用高级的上下文特征。这篇文章基于深度学习提出,主要为了解决如上两个问题。网络主要分为两部分:

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

此外这篇文章做的工作还包括建立一个大样本的数据集。

传统的方法较多采用的是将前景和背景进行线性组合,通过采样前景和背景颜色或者传播 α \alpha α值的方法。这些方法依赖于明显区分的颜色、位置和低级特征,对于前景和背景颜色重叠的图像容易产生重影。同时,传统数据集通常比较小,生成 α \alpha α的ground-truth比较困难。另一个较大的限制是,能用的数据集太小,容易过拟合,泛化能力差。

文章针对这些问题,设计了一个输入为图像和 trimap 的,end-to-end的蒙板学习方法。同时,通过合成得到一个抠图大数据集,将单一背景下的目标进行提取,合成到复杂的新背景下。

新的matting数据集

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

PS: 当然,这数据集还存在着一些问题,如前景,背景图片分辨率低,清晰度低,多目标等问题。关于这一部分可以参考**《End-to-end Animal Image Matting》**,这篇论文针对前面这些问题做了一些研究,提出了一个新的图像合成流程。

method

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

**网络结构:**编码-解码这部分是一个典型的基础的分割网络,类似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

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

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

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

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

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,训练时使用了一个小学习率 1 0 − 5 10^-5 10−5。

总结

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

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

论文笔记见附件2

2. 《Towards Real-Time Automatic Portrait Matting on Mobile Devices》

这篇文章的工作主要是移动端的,比较粗略地看了一下。

文章主要为了解决移动设备上实时自动人像抠像的问题,提出了名为MMNet的网络模型,基于具有线性瓶颈块的多分支扩张卷积,其性能优于当时的最新模型,还比Mobile DeepLabv3更快。

网络如下图所示:

网络结构大致分为三类:

  • encoder: 深度可分离卷积的ASPP模块
  • decoder : 1x1 卷积 + 双线性插值
  • Refinement Block: depthwise + pointwise

这一块其实有点像 Inception的工作。

3. 2020CVPR《Background Matting: The World Is Your Green Screen 》无需trimap输入的抠图

详细见之前的笔记:matting系列论文笔记(二):Background Matting: The World is Your Green Screen

近来Matting领域越来越多的工作在尝试无需输入Trimap的抠图,并取得了一些很惊艳的工作,无需trimap大大提高了matting的易用性。

这篇文章刚出来的时候非常轰动,开发者提供了完整的测试代码,并支持在图像和视频上进行抠图。这篇文章提出了一种新的无需输入trimap的方法,而且要求很低:在日常环境中使用手持摄像机(手机就可以)拍摄照片或者视频来创建matter(每个像素的前景颜色和alpha)。跟目前一些需要绿幕或者手动标注trimap的方法相比,无疑是非常简便的。虽然,这篇文章的方法需要额外拍一张不带人物的照片,但这仍旧比创建trimap节省很多时间。

研究者用对抗损失训练了一个深度网络,用来预测蒙版。他们首先利用带有 ground truth 的合成数据训练了一个具有监督损失的蒙版网络。为了在不label的情况下缩小合成图像与真实图像的差距,他们在第一个网络的指导下训练了另一个蒙版网络,并通过一个判别器来判断合成图像的质量。研究者在诸多图像和视频上测试了他们提出的新方法,发现这一方法显著优于之前的 SOTA。

其实这里也用到了GAN的方式。

本文方法一些限制:

  • 需要两张图:人物前景+无人纯背景
  • 静态背景,固定相机效果最好
  • 主要适合前景为人的

method

研究者首先在 Adobe Matting 数据集(只用不透明物体的图像)上训练了一个深度蒙版网络。该网络将带有人物的图像 I、纯背景图像 B‘、人物 S、相邻帧的时间堆栈 M(可选)的软分割作为输入,输出则是一个前景图 F 和一个前景蒙版α。为了生成 S,研究者应用了人物分割、腐蚀(erode)、膨胀(dilate)以及高斯模糊。在处理视频时,他们将 M 设为 I 前后相连的两帧。设两帧间隔为 T,则选取的相邻帧为 {I−2T , I−T , I+T , I+2T }。这些图像被转换为灰度图,以忽略颜色,更加专注于运动信息。如果输入中没有视频,研究者就将 M 设定为 {I, I, I, I},这些图像也转化为灰度图。

研究者提出了一个语境转换块(Context Switching block,CS block)网络,以根据输入图像更有效地结合所有输入信息的特征(见上图 2)。举个例子,当人物的一部分背景相似时,网络应该更加关注该区域的分割线索。该网络有四个编码器,分别产生 256 个通道的特征图,然后通过应用 1x1 卷积、BatchNorm 和 ReLU 将来自 I 的图像特征分别与 B '、S 和 M 的结合起来,为这三对中的每一对生成 64 通道特征。最后,他们通过 1x1 卷积、BatchNorm 和 ReLU 将这三组 64 通道特征与最初的 256 通道特征相结合,得到编码后的特征并将其传给网络的其他部分,包括残差块和解码器。研究者观察到,上述 CS 块架构有助于网络从 Adobe 数据集泛化到实际数据。

实验结果 见paper

总结: 提出了一种背景matting技术,该技术可以在自然环境中随意捕获高质量的前景+alpha matter。该方法需要固定相机拍摄两张图,有目标的+无目标的背景图。不需要绿幕/trimap。

看到这篇文章的demo,真的很惊艳,效果很好,头发边缘清晰,即使视频中的人物甩头也没有影响合成效果。而且文章开源了代码,给出了完整的训练和测试代码。还有很多细节的地方,后续再细看,跑一下代码。

4. 旷视 ICCV2019 《Disentangled Image Matting》

这篇文章的方法在当时的通用的数据集 Adobe Composition-1k 上刷新了最优成绩,并在 http://alphamatting.com 上取得第一。

文章发现抠图可分为 trimap adaptation 和 alpha estimation 两个任务,并受此启发,旷视研究院提出了一个简单但强大的抠图框架,称之为 AdaMatting (Adaptation and Matting) 。

根据上面的公式,已知三个变量,未知7个变量。对于大多数现有的抠图算法,约束解空间的基本输入是三元图(trimap),一个指示不透明度和未知区域的粗糙的分割图。不论是生成trimap还是人工标注trimap,trimap通常是粗糙的。这篇文章特意指出了一个我们先前常常忽略掉的问题,输入的trimap通常是粗糙的,不精确的。之前的matting方法,基于这样的trimap尝试直接估值一个好的前景蒙版。

文章认为,在这一过程中,一个分类问题没有得到充分解决。如果仔细观看三元图,未知区域的像素将会分入三个集合:不透明前景,不透明背景以及半透明区域。前两类称之为不透明像素,后一类称之为混合像素。抠图方法的期望行为是为不透明像素生产精确的 0 和 1,同时精确评估混合像素的微小不透明度α(介于 0 和 1 之间)。

所以文章认为抠图这一任务包含两个相关但又不同的任务。

第一个是分类未知区域中的像素以确认混合像素,本文称之为 trimap adaptation,第二个是精确计算混合像素的不透明值,本文称之为 alpha estimation。

  • trimap adaptation可以近似的看为分类
  • alpha estimation可以近似的认为对alpha做回归

网络结构上是一个encoder,两个decoder分别处理 trimap adaptation 和 alpha estimation 两个任务。

这篇paper官方在知乎出了比较详细的讲解,在此不再赘述。

5. 2020.10 《End-to-end Animal Image Matting》

这篇文章主要的工作是端到端的动物抠图,其实还另外做了部分图片合成的工作。这篇文章目前主要仔细研读了新的图片合成route部分。

文章把任务分解为两个并行的子任务:高级语义分割和低级细节抠图。结构上部分跟Disentangled Image Matting类似,一个encoder,两个decoder分别处理两个任务。

RSSN: A NOVELCOMPOSITIONROUTE

文章分析了伪影等的产生原因,数据集小的缺点,做了一些改进,并提出了新的数据集。

  • 分辨率低,容易失真,使用了高分辨率背景图片和前景图片
  • 语义模糊,使用YOLOv3检测,背景图片是否有多余的目标。
  • 分析了清晰度对结果的影响
  • 噪声差异:用BM3D去除各自的noise,然后在合成的图片上统一添加一个高斯噪声,这样合成图片有一个相同的分布。这个方法提高了模型的泛化能力。

这部分的工作,后续可以跟和谐化的工作结合,理论上能提升效果。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

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

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

    烤粽子
  • matting系列论文笔记(三):Boosting Semantic Human Matting with Coarse Annotations

    论文链接: CVPR2020 Boosting Semantic Human Matting with Coarse Annotations [1] 代码:暂...

    烤粽子
  • matting系列论文笔记(二):Background Matting: The World is Your Green Screen

    论文链接: 2017 Background Matting: The World is Your Green Screen 代码:http://github....

    烤粽子
  • GitHub 热点速览 Vol.15:Background-Matting 让你秒变专业抠图师

    以下内容摘录自上周微博@HelloGitHub 的 GitHub Trending,选项标准:新发布 | 实用 | 有趣,根据项目 release 时间分类,发...

    HelloGitHub
  • Python学习四周小结-课堂笔记篇

    #coding:gbk或#coding:utf-8或##-*- coding : gbk -*-

    WindCoder
  • 基于监督学习+自监督学习的智能抠图,精确到头发丝 | CVPR2020

    华盛顿大学的研究者最近发表的论文在CVPR 2020提供了一个新的和简单的方法,以取代你的背景在广泛的应用。你可以在家里做这些日常设置,使用固定或手持相机。我们...

    AI算法与图像处理
  • Python: 一周笔记

    谢伟
  • Python:一周笔记

    谢伟
  • GitHub 热点速览 Vol.17:在?各家视频会员要不要?

    以下内容摘录自微博@HelloGitHub 的 GitHub Trending,选项标准:新发布 | 实用 | 有趣,根据项目 release 时间分类,发布时...

    HelloGitHub
  • 一键免费自动AI抠图,效果连PS大哥也点赞!

    现在,抠图已经不再是专业设计师才会的技能,其应用的技术图像分割也不是一个新课题了,很早之前就有很多研究成果出现,按照是否使用深度学习的方法可分成传统方法(Blu...

    AI科技大本营
  • 整个世界都是你的绿幕:这个视频抠图换背景的方法着实真假难辨

    从作者给出的 demo 可以看到,他们的方法效果非常惊艳,即使视频中的人疯狂甩头发也没有影响合成效果:

    机器之心
  • Image Matting 客观评价指标、数据集及主观评价

    目前常用的几个指标来自于这篇论文[1],SAD, MSE, Gradient error, Connectivity error.

    烤粽子
  • 打工人的「周游世界」,AI算法帮你实现,泪目!

    效果这么稳定的人像 Image Matting算法真的不多,并且还能进行实时处理!

    Jack_Cui
  • ICCV 2019 | 旷视研究院提出新型抠图方法AdaMatting,实现当前最佳

    两年一度的国际计算机视觉大会 ICCV 2019 ( IEEE International Conference on Computer Vision) 将于当...

    AI科技大本营
  • 今日推荐:Background-Matting

    今天要推荐的一个仓库就是这样的,看了视频展示出来的效果,真的想马上就试一试,把曾经想去的地方都替换一遍。

    仇诺伊
  • CVPR2020 | HAttMatting,让抠图变得如此简单!

    本文解读的是 CVPR 2020 论文《Attention-Guided Hierarchical Structure Aggregation for Imag...

    AI科技评论
  • 抠图技术初探

    图像抠图英文名叫 image matting,顾名思义就是将目标图像从背景中分离出来的一种图像处理技术。根据图像背景的复杂程度,一般分为纯色背景抠图(“绿幕”或...

    MelonTeam
  • 学界 | Adobe提出深度抠图:利用卷积网络分离图像前景与背景

    选自arXiv 机器之心编译 参与:蒋思源 抠图,一直是一件体力活,它需要大量的操作与时间。而传统抠图算法主要是以色彩为特征分离前景与背景,并在小数据集上完成,...

    机器之心
  • 【抠图中的注意力机制】HAttMatting---让抠图变得如此简单!

    【导读】图像抠图(Image Matting)是一个无论在工业界或者视觉研究领域都有非常重要价值的研究课题。从2000年开始,在进行图像抠图及相近研究问题的研究...

    深度学习技术前沿公众号博主

扫码关注云+社区

领取腾讯云代金券