【技术追踪】DiffuMatting:使用抠图级别注释合成任意对象(ECCV-2024)

  万物生:Diffusion与绿幕抠图,影视领域的福音~


论文:DiffuMatting: Synthesizing Arbitrary Objects with Matting-level Annotation
代码:https://github.com/HUuxiaobin/DiffuMatting (即将开源)


0、摘要

  获得高精度或抠图注释是非常困难和费力的,为了解决这一挑战,本文提出了 DiffuMatting,它继承了扩散强大的万物生成能力,并赋予了“matting anything”的能力。
  DiffuMatting 可作为一个具有高精度注释的任意抠图工厂,其与社区 LoRAs 或各种条件控制方法良好兼容,以实现社区友好的艺术设计和可控生成。

  具体来说,受绿幕抠图的启发,我们的目标是教扩散模型在固定的绿幕画布上画画:
  (1)本文收集了一个大规模的 green-screen 数据集(Green100K)作为 DiffuMatting 的训练数据集;
  (2)提出了绿色背景控制损失(green background control loss),以保持画板作为纯绿色,以区分前景和背景;
  (3)为保证合成目标具有更多的边缘细节,提出了一种过渡边界损失(transition boundary loss)的细节增强方法,以生成具有更复杂边缘结构的目标;
  (4)为了同时生成目标及其抠图注释,本文构建了一个抠图头(matting head),在 VAE 解码器的潜在空间中进行绿色去除;

  DiffuMatting 显示了几个潜在的应用(例如,抠图数据生成器,艺术设计和可控生成)。作为一个抠图数据生成器,DiffuMatting 合成了一般目标和人像抠图数据集,有效地将一般目标抠图和人像抠图任务的相对 MSE 误差分别降低了15.4%和11.4%。

DiffuMatting 在绿幕上生成的目标及其抠图注释:
在这里插入图片描述


1、引言

1.1、高精度注释

  (1)在增强现实、图像编辑、三维重建、图像合成等许多应用中,精确的标注提供了更几何化的描述和更一目了然的目标;
  (2)鉴于费力的标记过程和不可接受的成本,目前只存在有限的训练对;
  (3)问题:如何构建一个高度精确和高效的数据工厂来同时合成精细对象及其抠图级注释;

1.2、扩散模型

  (1)扩散模型的高质量图像生成能力是否有利于下游任务,特别是在抠图、分割和图像合成等方面,一些研究已经进行了探索;
  (2)用于分割任务的扩散生成模型可采用有条件和无条件两种形式,无条件生成可以很大程度上扩展生成空间,不局限于语义。但它仍面临着一些挑战:①没有充分利用去噪扩散概率模型的万物生成能力(Anything Generation),没有训练集之外的类先验;②无法生成抠图级别的标注;

1.3、本文贡献

  (1)出了两种新的损失函数:绿色背景控制损失过渡边界损失。前者利用了“绿色”的交叉注意功能来确保一个稳定的画布背景,而后者则专注于增强边界细节和避免过渡边界崩溃;
  (2)为了产生抠图级的注释,收集 Green100K 进行训练,建立 matting head,对 VAE 解码器的潜空间进行绿色去除,这避免了参与基于粗级噪声的合成过程;
  (3)本文分别对一般目标和人像抠图数据集进行了合成,结果表明,合成数据的加入使一般目标抠图任务的相对 MSE 误差降低了15.4%,人像抠图任务的相对 MSE 误差降低了11.4%;
  (4)DiffuMatting 与各种社区 LoRAs 和现有的控制模型(例如ControlNet)很好地兼容,无需额外的训练,允许用户使用抠图注释自定义特定样式的图像;

现有模型在纯绿幕上生成图像存在困难:
在这里插入图片描述


2、相关工作

2.1、由文本生成图像的扩散模型

  (1)有名的文生图模型:Stable diffusion、Imagen、DALL-E3以及一些其他变体;
  (2)但这些 SOTA 扩散模型不能通过基于文本的提示控制在绿色画布上稳定地生成任意的超详细对象;(对齐颗粒度,我要追求细致~

2.2、数据合成

  (1)早期关于数据集合成的研究主要采用三维场景图,与现实世界的数据集相比,合成数据集往往表现出领域差距,包括外观和内容的差异;
  (2)生成式对抗网络利用图像到图像的转换来记住这个在外观和内容上的差距,如DatasetGAN、BigDatasetGAN;
  (3)扩散模型出现后,已初步尝试应用它们来生成下游任务的合成图像,如:FreeMask、DiffuMask;
  (4)理想情况下,文本条件的生成模型能够放松严格的约束,并通过文本短语合成任意对象,这使得它有可能生成“任何东西”;

2.3、Matting-level数据集

  (1)图像抠图是指对图像和视频中前景目标的精确估计;
  (2)抠图级标注费时费力,目前使用广泛的数据集 Composition-1k、Distinctions-646、AIM-500、P3M-500、AM-2k 的数据量并不大;


3、方法

3.1、Green100k 数据集的数据收集

  (1)自收集的肖像视频:在绿屏背景上总共收集了20个肖像视频,使用 Adobe Premiere Pro Chromakey 和 Adobe Photoshop 标注,为避免一些连续的视频帧,每20帧连续采样一帧,自采集的图像数量达到11963;
  (2)收集公开数据集,增加数据多样性:Adobe matting (454 张)、Distinction646 (590 张)、P3M (481 张)、PPM (98 张)、Video240k mattingset (50000 张)、AM2K (1942 张)、DIS5K (5314 张)、HRSOD (1918 张)、MSRA10k (9884 张)、 DUTS (10426 张) 以及 Thinobject5k (5594 张) ;
  (3)使用instruct-blip算法为 Green100k 添加文字标题,为避免内容和标题之间的错位,对所有数据都进行了大量的人工修正;

3.2、交叉注意机制

  给定输入图像 x 0 {x_0} x0,Stable diffusion 的噪声估计过程定义为:
在这里插入图片描述
  分自动编码器 E {\mathcal{E}} E 将输入图像 x {x} x 压缩为低维隐空间 z {z} z,条件 UNet 去噪网络 ϵ θ {\epsilon_{\theta}} ϵθ 利用时间步长 t {t} t、第 t {t} t 次噪声的潜在表示 z t {z_{t}} zt 和其他由文本编码器提取的文本提示条件 C {C} C 来估计潜在空间中的噪声 ϵ {\epsilon} ϵ
  交叉注意机制通过以下方式融合视觉和文本嵌入:
在这里插入图片描述
  其中, l Q ( φ ( z t ) ) {\mathcal{l}_{Q}(\varphi(z_t))} lQ(φ(zt)) 将噪声图像 φ ( z t ) {\varphi(z_t)} φ(zt) 的深度空间特征展平并线性投影到 Query 向量; l K ( τ θ ( P ) ) {\mathcal{l}_{K}(\tau_{\theta}(\mathcal{P}))} lK(τθ(P)) 是文本提示 P \mathcal{P} P 的嵌入,作为 Key 矩阵; d {d} d 是隐投影维度, l Q {\mathcal{l}_{Q}} lQ l K {\mathcal{l}_{K}} lK 是线性可学习矩阵。

3.3、绿色背景控制

  给定 Green100k 数据集,我们需要强先验来限制前部和背景,以确保背景区域的绿色纯净。理论上,可以直接将提示的主要对象与交叉注意 mask 结合在一起,分割前景和背景。
  然而,为了增强模型的万物生成能力,并大大增强模型的泛化能力,我们无法事先获得目标的类先验。(没法提前知道 prompt 类信息
  相反,“绿色”的文本标记是一个可用且稳定的提示符,可以在没有类先验的情况下生成背景。对于“绿色”(第 j {j} j 个)文本 token,对应的权重为 A j ∈ R H × W {\mathcal{A}_{j} \in \mathbb{R}^{H×W}} AjRH×W ,本文提出的绿色背景控制机制是:

在这里插入图片描述
  其中, M {M} M 为归一化为 [ 0 , 1 ] {[0,1]} [0,1] 的主目标的 GT 掩码, A j {\mathcal{A}_{j}} Aj 表示第 l {l} l 个交叉注意层对应的第 j {j} j 个交叉注意图, u {u} u 是交叉层总数,我们监督交叉注意图 A j {\mathcal{A}_{j}} Aj 接近背景分割掩码 ( 1 − M ) {(1−M)} (1M) m e a n {mean} mean 为像素级平均。

DiffuMatting 总览:
在这里插入图片描述

3.4、过渡段边界的细节增强

  为了保持细节目标的生成,避免过渡边界的崩溃,本文提取高频信息(如边缘)来增强过渡边界周围的细节生成。
在这里插入图片描述
  其中 S x {S_x} Sx S y {S_y} Sy 指水平和垂直的 Sobel 算子获得的高频先验, I {I} I M {M} M 分别是输入的灰度图像和掩码。⊗表示卷积运算,⊙为像素级上的 Haramard 积。
  为引导合成图像模拟细节物体,本文将合成图像限制为更接近 GT 图像的高频特征:
在这里插入图片描述
  其中 z 0 {z_0} z0 是图像 x 0 {x_0} x0 的潜在表示, z ^ 0 {\hat{z}_0} z^0 t {t} t 步去噪估计的潜在表示:
在这里插入图片描述

3.5、Mask 生成和细化

  本文的目标是在生成绿幕图像的同时,获得抠图级标注,为此,首先通过添加一个 matting header 来得到粗掩码 M ~ c p {\tilde{M}_{cp}} M~cp
在这里插入图片描述
  其中 ConR 是具有两个二维卷积层和 SiLU 激活函数的 matting-header,随后,根据 Dice 和 L1 损失将 M ~ c p {\tilde{M}_{cp}} M~cp 与 GT (M) 联系起来:
在这里插入图片描述
  其中, N {N} N 是总像素个数,最后采用后处理 GreenPost,利用绿色背景先验来细化像素级掩码。GreenPost 引入 BackgroundMattingV2 作为后处理,使用 K-Means 对像素级掩码 M ~ c p {\tilde{M}_{cp}} M~cp 计算的背景颜色进行聚类,以填充前景像素值。然后将原始图像和精确背景导入 GreenPost 中,得到抠图级标注 M ~ p {\tilde{M}_{p}} M~p
在这里插入图片描述

3.6、目标函数

   L g {\mathcal{L}_{g}} Lg:通过双向的方式优化交叉注意特征,实现准确的前景和背景学习;
   L d e t a i l {\mathcal{L}_{detail}} Ldetail:过渡边界的细节增强损失,通过高频信息对齐来促进边界细节;
   L l a t e n t {\mathcal{L}_{latent}} Llatent:衡量生成注释与 GT 的差距;
   L n o i s e {\mathcal{L}_{noise}} Lnoise:扩散去噪损失;
在这里插入图片描述


4、实验与结果

4.1、实验设置

  (1)实施细节:Stable Diffusion V1.5 预训练模型,2块 NVIDIA V100 GPUs,学习率 2e-6,batch size=2;先训练没有抠图参数的 DiffuMatting 生成模型,然后共同训练生成和抠图;
  (2)评价指标: 提出 green-screen generation quality (GSG),使用K-Means对合成图像的主色进行聚类,并计算与绿幕颜色的距离;
在这里插入图片描述
  其他指标包括:绝对差值之和(SAD)、均方误差(MSE)、梯度(Grad.)、连通性(Conn.);

4.2、一致性绿幕生成能力

  随机生成10个类图像,每类包含10张图片, A s {A_s} As 为美学评分:

DiffuMatting 图像生成质量评估与可视化:
在这里插入图片描述

4.3、抠图级注释分析

与DiffuMask相比,DiffuMatting 实现了更精细的注释:

在这里插入图片描述

4.4、应用

4.4.1、下游抠图任务

(1)一般目标抠图: 合成了 500 个目标类别 10K 的通用目标抠图数据集 GOM;

Ratio 表示来自真实数据的比例,(1-Ratio)为合成数据的比例:
在这里插入图片描述
(2)肖像抠图:生成了不同的年龄阶段、种族、性别和国籍的肖像;

在这里插入图片描述

4.2、图像合成:生成、复制和粘贴

DiffuMatting 生成绿幕对象,复制带有抠图级别注释的对象,然后将其粘贴到所需的场景中:

在这里插入图片描述

4.3、社区友好型艺术设计与可控生成

艺术设计,青花瓷质感风格:
在这里插入图片描述

与 LoRAs 接轨:

在这里插入图片描述

可控图像编辑功能:

在这里插入图片描述

4.5、消融实验

(1)绿色背景控制:没有绿色背景控件的设置会导致前背景过渡区域周围的颜色渗出;
(2)过渡边界的细节增强:未对过渡边界进行细节增强的设置会造成边界细节的丢失,特别是在毛发区域;

绿色背景控制与过渡边界的细节增强消融实验:
在这里插入图片描述
(3)掩码的生成和细化:经过 GreenPost 抠图细化处理后,抠图输出的信息更加透明;

毛发更飘逸了:

在这里插入图片描述
(4)超越Green100K的强泛化:

超强生成能力:

在这里插入图片描述


  实验图像真是赏心悦目呀~(●’◡’●)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/372897.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot煤炉网站代切系统-计算机毕业设计源码06656

目 录 摘要 1 绪论 1.1 课题目的与意义 1.2国内外研究现状 1.3论文结构与章节安排 1.4 Springboot框架介绍 2 Springboot煤炉网站代切系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 操作可行性分析 2.2 系统功能分析 2.2.1 功能性…

生成随机密码

生成8位无重复的密码(可以包含数字、大小写字母) import random import string character string.digits string.ascii_letters password .join(random.sample(character, 8)) print(f"生成的随机密码为:{password}")

【Spring Boot】Spring AOP中的环绕通知

目录 一、什么是AOP?二、AOP 的环绕通知2.1 切点以及切点表达式2.2 连接点2.3 通知(Advice)2.4 切面(Aspect)2.5 不同通知类型的区别2.5.1 正常情况下2.5.2异常情况下 2.6 统一管理切点PointCut 一、什么是AOP? Aspect Oriented Programming&#xff…

Leetcode - 133双周赛

目录 一,3206. 交替组 I 二,3207. 与敌人战斗后的最大分数 三,3208. 交替组 II 四,3209. 子数组按位与值为 K 的数目 一,3206. 交替组 I 直接暴力,代码如下: class Solution {public int n…

【前端项目笔记】9 数据报表

数据报表 效果展示: 在开发代码之前新建分支 git checkout -b report 新建分支report git branch 查看分支 git push -u origin report 将本地report分支推送到云端origin并命名为report 通过路由的形式将数据报表加载到页面中 渲染数据报表基本布局 面包屑导航…

迭代器模式(大话设计模式)C/C++版本

迭代器模式 C #include <iostream> #include <string> #include <vector>using namespace std;// 迭代抽象类,用于定义得到开始对象、得到下一个对象、判断是否到结尾、当前对象等抽象方法&#xff0c;统一接口 class Iterator { public:Iterator(){};virtu…

Miniconda的常见用法——以Isaacgym为例

1. ubuntu24.04安装minicondda mkdir -p ~/miniconda3 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh解释下这段代码 bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3~/miniconda3/miniconda.sh: 指向Mi…

宝塔面板运行Admin.net框架

准备 宝塔安装 .netcore安装 Admin.net框架发布 宝塔面板设置 完结撒花 1.准备 服务器/虚拟机一台 系统Windows server / Ubuntu20.04&#xff08;本贴使用的是Ubuntu20.04版本系统&#xff09; Admin.net开发框架 先安装好服务器系统&#xff0c;这里就不做安装过程描述了&…

ATA-8035射频功率放大器在声动力疗法中的应用

声动力疗法是一种基于声波能量的治疗方法&#xff0c;广泛应用于医疗和美容领域。它利用高强度聚焦的声波来实现切割、破碎或加热组织&#xff0c;以治疗各种疾病和美容问题。在声动力疗法中&#xff0c;射频功率放大器起着至关重要的作用&#xff0c;它负责提供足够的能量来激…

☺初识c++(语法篇)☺

目录 一命名空间&#xff08;namespace&#xff09;&#xff1a; 二cout与cin简述&#xff1a; 三缺省参数&#xff1a; 四函数重载&#xff1a; 五引用&#xff1a; 六内联函数: 七c中的nullptr简述&#xff1a; 一命名空间&#xff08;namespace&#xff09;&#xff1…

聚焦云技术,探讨 AGI 时代的云原生数据计算系统

6月22日&#xff0c;开源中国社区在上海举办了 OSC 源创会活动&#xff0c;本期活动以「云技术」为主题&#xff0c;邀请了来自华为 openEuler、字节跳动、AutoMQ 等厂商的技术大咖进行分享&#xff0c;拓数派作为云原生数据计算领域的引领者&#xff0c;受邀参与了本次活动&am…

【IMU】 温度零偏标定

温度标定 IMU的零偏随着温度的变化而变化&#xff0c;在全温范围内形状各异&#xff0c;有些可能是单调的&#xff0c;有些可能出现拐点。 多项式误差温度标定 目的是对估计的参数进行温度补偿&#xff0c;获取不同温度时的参数值&#xff08;零偏、尺度、正交&#xff09;&…

Study--Oracle-06-Oracler网络管理

一、ORACLE的监听管理 1、ORACLE网络监听配置文件 cd /u01/app/oracle/product/12.2.0/db_1/network/admin 2、在Oracle数据库中&#xff0c;监听器&#xff08;Listener&#xff09;是一个独立的进程&#xff0c;它监听数据库服务器上的特定端口上的网络连接请求&#xff0c…

HTML5表单的自动验证、取消验证、自定义错误信息

1、自动验证 通过在元素中使用属性的方法&#xff0c;该属性可以实现在表单提交时执行自动验证的功能。下面是关于对元素内输入内容进行限制的属性的指定。 属性说明required输入内容是否不为空pattern输入的内容是否符合指定格式min、max输入的数值是否在min~max范围step判断…

【机器学习】基于密度的聚类算法:DBSCAN详解

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 基于密度的聚类算法&#xff1a;DBSCAN详解引言DBSCAN的基本概念点的分类聚类过…

计算机图形学入门24:材质与外观

1.前言 想要得到一个漂亮准确的场景渲染效果&#xff0c;不只需要物理正确的全局照明算法&#xff0c;也要了解现实中各种物体的表面外观和在图形学中的模拟方式。而物体的外观和材质其实就是同一个意思&#xff0c;不同的材质在光照下就会表现出不同的外观&#xff0c;所以外观…

idea推送到gitee 401错误

在idea上推送时遇到这样的问题&#xff0c;解决方法如下&#xff1a; 在https://的后面加上 用户名:密码 然后再提交就ok啦&#xff01;

在vue3中,手写父子关联,勾选子级父级关联,取消只取消当前子级,父节点不动

树形控件选择子级勾选父级&#xff0c;以及所有子级&#xff0c; 取消勾选仅取消子级 在项目中&#xff0c;可能会遇到这种场景&#xff0c;比如权限配置的时候&#xff0c;页面权限和菜单权限以tree的形式来配置&#xff0c;而且不用半选&#xff0c;菜单在页面的下面&#xf…

在AvaotaA1全志T527开发板上使用AvaotaOS 部署 Docker 服务

Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#xff0c;然后发布到任何流行的 Linux或Windows操作系统的机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c;相互之间不会有任何接口。 准备…

小白轻松上手,Python编程常用的30个经典操作以及代码演示

当谈到经典的Python编程案例时&#xff0c;通常涉及各种基础和进阶的编程任务. 30个常见的案例&#xff0c;涵盖了从基本操作到稍复杂的应用&#xff1a; 基础操作 1.Hello World: 打印"Hello, World!"到控制台。 print("Hello, World!")2.变量和数据…