matting笔记_一周小结

article/2025/9/28 6:27:18

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

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 105

总结

为了将其推广到自然图像中,文章指出抠图算法除了使用颜色作为主要提示外,需要利用更多的结构和语义特征。这篇文章证明了神经网络能够捕获高级特征并用来改进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

在这里插入图片描述

I i = α i F i + ( 1 − α i ) B i , α ∈ [ 0 , 1 ] I_i = \alpha_i F_i + (1-\alpha_i)B_i, \alpha \in [0,1] Ii=αiFi+(1αi)Bi,α[0,1], 之前的方法通常是有7个未知量,本文的方法近似于知道了 I , B I,B I,B未知 α , F \alpha,F α,F,因为拍照得到的没有人物的背景图,会因为人的阴影,或者相机移动,图片没有对齐等原因,并不是一个真正的背景图,所以可以认为近似 B ′ B' B

系统的输入是一张图像或一个视频,图像/视频中的人站在静态的自然背景前,此外还需输入一张纯背景图(就是 B ′ B' B)。背景图的获取很简单,只需要让人物走出取景区域,然后操作曝光、焦距都已固定的相机进行拍摄(如智能手机相机)。对于手持相机,研究者假设相机的移动幅度很小,利用单应性(homography)将背景与给定的输入图像对齐。从输入中,研究者还提取了目标人物的软分割(soft segmentation)。对于视频输入,可以添加临近的帧来辅助生成蒙版(motion prior)。

研究者首先在 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) 。

I i = α i F i + ( 1 − α i ) B i , α ∈ [ 0 , 1 ] I_i = \alpha_i F_i + (1-\alpha_i)B_i, \alpha \in [0,1] Ii=αiFi+(1αi)Bi,α[0,1]

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

文章认为,在这一过程中,一个分类问题没有得到充分解决。如果仔细观看三元图,未知区域的像素将会分入三个集合:不透明前景,不透明背景以及半透明区域。前两类称之为不透明像素,后一类称之为混合像素。抠图方法的期望行为是为不透明像素生产精确的 0 和 1,同时精确评估混合像素的微小不透明度 α \alpha α(介于 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,然后在合成的图片上统一添加一个高斯噪声,这样合成图片有一个相同的分布。这个方法提高了模型的泛化能力。

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


http://chatgpt.dhexx.cn/article/vB5Q0ede.shtml

相关文章

Matting 基于DeepLearning 入门

前言 是比较清晰的用思维导图的形式介绍了一些Matting 基于DeepLearning 的经典论文,如 Deep Image matting可以通过这篇初步了解深度学习Matting领域该篇论文可以看作是基于深度学习研究Matting的开山之作,之后的许多有效、可行度高的做法都是基于这篇…

Matting和Segmentation区别及模型概述

一、两者区别 Segmentation:常被认为是硬分割(Hard Segmentation),就是将图片中的像素分成多个类别,如果是前背景分割,那么就是分成两个类别,一个类别代表前景,一个类别代表背景。而…

如何清除Safari,Chrome和Firefox中的缓存,历史记录和Cookie

如何清除浏览器的cookie缓存?许多网站的通知,用户记住账号密码登录状态,都是通过浏览器cookie缓存,定期清理Safari,Chrome和Firefox中的缓存,历史记录和Cookie,可以让浏览器保持一个良好的状态,也可以保护我们的隐私。…

Nginx缓存服务

文章目录 一、缓存概述(1)缓存的作用(2)缓存常见的类型(3)Nginx缓存的原理 二、配置Nginx缓存(1)主配置文件中缓存的语法(2)配置Nginx缓存-实验环境-实验目的…

android7.0清除缓存,iPhone7如何清理应用缓存 iphone7清理应用缓存教程

手机使用后会留下一些缓存垃圾,那么 iPhone7如何清理应用缓存? 下面就带来iphone7清理应用缓存教程,一起来学习下。 方法1:强行重启 强行重启(也叫冷重启)能够帮助iOS的设备清理一下临时文件,定期强行重启一下设备&…

Chrome Edge Firefox Safari 如何清除 DNS 缓存

Chrome Edge Firefox Safari 如何清除 DNS 缓存 如何清除浏览器的 DNS 缓存 (Chrome, Firefox, Safari) Chrome Chromium Edge Firefox Safari clear DNS Cache, flush DNS cache 请访问原文链接:https://sysin.org/blog/clear-browser-dns-cache/,查…

苹果电脑怎么清理垃圾和缓存文件,mac如何清理系统缓存文件

电脑使用的时间越久,系统运行就会变得越来越卡,这是Windows和Mac系统都会出现的现象。为了提高系统运行速度,我们有必要清理一下电脑缓存。那么苹果电脑怎么清理垃圾和缓存文件?本指南将详细讲解清理Mac缓存的技巧,还补…

浏览器缓存导致的问题:

1、需要的效果如下: 2、添加样式之后,样式会生效,但是没有达到上面的效果,表单会消失掉,只剩下一个黑色的背景图 4、原因: 因为浏览器的缓存问题导致的样式没有显示出来 5、解决办法: 清除掉…

浏览器缓存

文章目录 前端缓存|后端缓存按缓存位置分类缓存过程memory cachedisk cacheService WorkerPush Cache 强制缓存适用场景ExpiresCache-Control 协商缓存(也叫对比缓存)适用场景ETag和Last-Modified区别 缓存相关问题缓存穿透缓存击穿缓存雪崩 前端缓存|后…

苹果清除缓存_苹果手机卡顿别着急换,调整这5个功能,iPhone 6S还可以再战两年...

阅读本文前,请您先点击上面的“议科技”,关注,这样您就可以继续收到最新文章了。每天都有分享。完全是免费订阅,请放心关注。 平时在使用苹果手机的时候,时间用久了,是不是觉得手机有些卡顿?使用…

如何在Mac iPhone和iPad上清除Safari缓存?

每当您在Safari中浏览网络时,浏览器都会存储网站数据,因此您不必在每次重新访问网站时都再次下载该数据。从理论上讲,这应该可以加快您的浏览体验,但是在某些情况下,您可能需要清除缓存并重新开始。如何清除Safari缓存…

Safari iOS 清除缓存、在手机端调试方法 [ For Mac ]

前提: 手头有Mac 写手机页面的时候,很多时候都会在手机上查看,但 iPhone 上的 Safari 浏览器有着很严重的缓存效果。 如何清除缓存呢 打开 iPhone 上的调试开关 在 【设置】->【Safari 浏览器】-> 最下面的【高级】里面 &#xff08…

清除计算机网络mac高速缓存,怎么Mac下清除Safari缓存数据

电脑上的网页浏览器都有一个用于缓存用户数据的缓存功能,这些数据可以让我们在浏览网页时变得更加方便。有的时候需要手动在 Mac 电脑上清除 Safari 浏览器的缓存数据,这里学习啦小编简单介绍下怎么在 Mac 下清除 Safari 缓存数据的操作方法。 Mac下清除…

Mac自带Safari浏览器如何清除缓存

相信对于程序员们来说,要经常更改、测试一些功能。浏览器都有一个用于缓存用户数据的缓存功能,这些数据可以让我们在浏览网页时变得更加方便。但是偶尔会让我们的测试不那么准确,有的时候需要手动在 Mac 电脑上清除 Safari 浏览器的缓存数据&…

如何在iPhone或iPad上的Safari中清除历史记录,缓存和Cookie

We’re going to assume that most How-To Geek writers know how to delete the history, cookies, and cache in Mobile Safari, but just in case you don’t know, here is how to do it. 我们将假设大多数“ How-To Geek”作者都知道如何删除Mobile Safari中的历史记录&am…

2种清除Safari的缓存的方法

如何清除Safari的缓存呢?每当您在Safari中浏览网络时,浏览器都会存储网站数据,因此您不必在每次重新访问网站时都再次下载该数据。从理论上讲,这应该可以加快您的浏览体验,但是在某些情况下,您可能需要清除…

Android(安卓) 无线ADB调试手机(WiFi 调试、蓝牙调试)

1. 手机和电脑连接同一局域网(连同一个 WiFi、手机开热点电脑连接、电脑开热点手机连接) 2.手机打开USB调试模式 3. 查找你需要连接的Android(安卓)设备的ip (方式一)手机开热点电脑连接(手机分享蓝牙网络给电脑连接…

Android调试工具adb

Android调试工具adb --Web页面 adb即Android Debug Bridge(安卓调试桥),用于安卓调试用,它就是一个命令行工具,通过电脑端与手机设备或模拟器交互设置。它存在于 sdk/platform-tools 目录下,调试工具adb可以独立运行&…

安卓设备的网络adb调试设置

1、安卓的adb调试模式有两种:一、使用usb线;二、使用网络。 2、使用网络adb模式:安卓设备跟电脑需处于同一局域网内,可以使用有线网的方式,或是让电脑跟安卓设备连接在同一wifi路由下,亦可通过电脑创建wif…

ADB调试--详细教程(附华为手机无法显示设备解决方法)

终端打开开发者模式,用数据线连接电脑,然后按照下面的步骤操作 1、开启开发者选项: 设置->关于设备->版本号(连续点击5次) 2、打开USB调试 在开发者选项中,找到USB调试,将此打开。 3、…