前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >matting笔记_一周小结

matting笔记_一周小结

作者头像
烤粽子
发布2021-07-21 14:58:56
1.1K0
发布2021-07-21 14:58:56
举报

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

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,然后在合成的图片上统一添加一个高斯噪声,这样合成图片有一个相同的分布。这个方法提高了模型的泛化能力。

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-07-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 利用神经网络做抠图的入坑之作《Deep Image Matting》
    • 简要介绍
      • 新的matting数据集
        • method
          • 总结
          • 2. 《Towards Real-Time Automatic Portrait Matting on Mobile Devices》
          • 3. 2020CVPR《Background Matting: The World Is Your Green Screen 》无需trimap输入的抠图
            • method
            • 4. 旷视 ICCV2019 《Disentangled Image Matting》
            • 5. 2020.10 《End-to-end Animal Image Matting》
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档