华人一作DragGAN爆火!拖动你的GAN:交互式图像编辑新高度

点击下方卡片,关注“CVer”公众号

AI/CV重磅干货,第一时间送达

点击进入—>【GAN和扩散模型】微信技术交流群

转载自:机器之心 | 编辑:蛋酱、小舟

如果甲方想把大象 P 转身,你只需要拖动 GAN 就好了。

在图像生成领域,以 Stable Diffusion 为代表的扩散模型已然成为当前占据主导地位的范式。但扩散模型依赖于迭代推理,这是一把双刃剑,因为迭代方法可以实现具有简单目标的稳定训练,但推理过程需要高昂的计算成本。

在 Stable Diffusion 之前,生成对抗网络(GAN)是图像生成模型中常用的基础架构。相比于扩散模型,GAN 通过单个前向传递生成图像,因此本质上是更高效的。但由于训练过程的不稳定性,扩展 GAN 需要仔细调整网络架构和训练因素。因此,GAN 方法很难扩展到非常复杂的数据集上,在实际应用方面,扩散模型比 GAN 方法更易于控制,这是 GAN 式微的原因之一。

当前,GAN 主要是通过手动注释训练数据或先验 3D 模型来保证其可控性,这通常缺乏灵活性、精确性和通用性。然而,一些研究者看重 GAN 在图像生成上的高效性,做出了许多改进 GAN 的尝试。

最近,来自马克斯・普朗克计算机科学研究所、MIT CSAIL 和谷歌的研究者们研究了一种控制 GAN 的新方法 DragGAN,能够让用户以交互的方式「拖动」图像的任何点精确到达目标点。

a01e62632ac286543e0390f392eb0352.png

代码:https://github.com/XingangPan/DragGAN

  • 论文链接:https://arxiv.org/abs/2305.10973

  • 项目主页:https://vcai.mpi-inf.mpg.de/projects/DragGAN/

这种全新的控制方法非常灵活、强大且简单,有手就行,只需在图像上「拖动」想改变的位置点(操纵点),就能合成你想要的图像。

例如,让狮子「转头」并「开口」:

09eba7e1eb5b13bfe3636effc5a153bb.gif

还能轻松让小猫 wink:

2602f2d40c58f3542fbd28ad7ee209e9.gif

再比如,你可以通过拖动操纵点,让单手插兜的模特把手拿出来、改变站立姿势、短袖改长袖。看上去就像是同一个模特重新拍摄了新照片:

如果你也接到了「把大象转个身」的 P 图需求,不妨试试:

19ccc0a7b6e531a6dd8bf71d269de8cb.gif

0fa537c462dcf5755a58341a95f52304.png

1dba1d79f264efa96530a0d2d3d23590.png

整个图像变换的过程就主打一个「简单灵活」,图像想怎么变就怎么变,因此有网友预言:「PS 似乎要过时了」。

34eada9fc56518ac0293635378cb4d31.png

也有人觉得,这个方法也可能会成为未来 PS 的一部分。

0ea3529d66e5baf695c14f1908b41549.png

总之,观感就是一句话:「看到这个,我脑袋都炸了。」

b0e3670538de53da355ecd9a620bc278.png

当大家都以为 GAN 这个方向从此消沉的时候,总会出现让我们眼前一亮的作品:

3fad208519d34770f850e85712f76f1a.png

这篇神奇的论文,已经入选了 SIGGRAPH 2023。研究者表示,代码将于六月开源。

684473f5e122d2c78c61ee731a0729f7.png

那么,DragGAN 是如何做到强大又灵活的?我们来看一下该研究的技术方法。

方法概述

该研究提出的 DragGAN 主要由两个部分组成,包括:

  • 基于特征的运动监督,驱动图像中的操纵点向目标位置移动;

  • 一种借助判别型 GAN 特征的操纵点跟踪方法,以控制点的位置。

DragGAN 能够通过精确控制像素的位置对图像进行改变,可处理的图像类型包括动物、汽车、人类、风景等,涵盖大量物体姿态、形状、表情和布局,并且用户的操作方法简单通用。

GAN 有一个很大的优势是特征空间具有足够的判别力,可以实现运动监督(motion supervision)和精确的点跟踪。具体来说,运动监督是通过优化潜在代码的移位特征 patch 损失来实现的。每个优化步骤都会导致操纵点更接近目标,然后通过特征空间中的最近邻搜索来执行点跟踪。重复此优化过程,直到操纵点达到目标。

DragGAN 还允许用户有选择地绘制感兴趣的区域以执行特定于区域的编辑。由于 DragGAN 不依赖任何额外的网络,因此它实现了高效的操作,大多数情况下在单个 RTX 3090 GPU 上只需要几秒钟就可以完成图像处理。这让 DragGAN 能够进行实时的交互式编辑,用户可以对图像进行多次变换更改,直到获得所需输出。

97ff41cedf7c8004a8bb0f6d5b617d9d.png

如下图所示,DragGAN 可以有效地将用户定义的操纵点移动到目标点,在许多目标类别中实现不同的操纵效果。与传统的形变方法不同的是,本文的变形是在 GAN 学习的图像流形上进行的,它倾向于遵从底层的目标结构,而不是简单地应用扭曲。例如,该方法可以生成原本看不见的内容,如狮子嘴里的牙齿,并且可以按照物体的刚性进行变形,如马腿的弯曲。

13ddd83516f6afa244d5baaeea603aa0.png

研究者还开发了一个 GUI,供用户通过简单地点击图像来交互地进行操作。

此外,通过与 GAN 反转技术相结合,本文方法还可以作为一个用于真实图像编辑的工具。

一个非常实用的用途是,即使合影中某些同学的表情管理不过关,你也可以为 Ta 换上自信的笑容:

39b6ff3aaafb863bee2ca9213c884df7.png

顺便提一句,这张照片正是本篇论文的一作潘新钢,2021 年在香港中文大学多媒体实验室获得博士学位,师从汤晓鸥教授。目前是马克斯普朗克信息学研究所博士后,并将从 2023 年 6 月开始担任南洋理工大学计算机科学与工程学院 MMLab 的任助理教授。

这项工作旨在为 GAN 开发一种交互式的图像操作方法,用户只需要点击图像来定义一些对(操纵点,目标点),并驱动操纵点到达其对应的目标点。

这项研究基于 StyleGAN2,基本架构如下:

799061c416dc3b8d839b3bbdd9ec4cea.png

在 StyleGAN2 架构中,一个 512 维的潜在代码∈N(0,)通过一个映射网络被映射到一个中间潜在代码∈R 512 中。的空间通常被称为 W。然后,被送到生成器,产生输出图像 I = ()。在这个过程中,被复制了几次,并被送到发生器的不同层,以控制不同的属性水平。另外,也可以对不同层使用不同的,在这种情况下,输入将是79163b966f600038fe8fa5a2b8908b40.png,其中是层数。这种不太受约束的 W^+ 空间被证明是更有表现力的。由于生成器学习了从低维潜在空间到高维图像空间的映射,它可以被看作是对图像流形的建模。

实验

为了展示 DragGAN 在图像处理方面的强大能力,该研究展开了定性实验、定量实验和消融实验。实验结果表明 DragGAN 在图像处理和点跟踪任务中均优于已有方法。

定性评估

图 4 是本文方法和 UserControllableLT 之间的定性比较,展示了几个不同物体类别和用户输入的图像操纵结果。本文方法能够准确地移动操纵点以到达目标点,实现了多样化和自然的操纵效果,如改变动物的姿势、汽车形状和景观布局。相比之下,UserControllableLT 不能忠实地将操纵点移动到目标点上,往往会导致图像中出现不想要的变化。

008fe63ffc7cd2b8e93e09f1c2fd375c.png

如图 10 所示,它也不能像本文方法那样保持未遮盖区域固定不变。

4b2722399751edbde2e1437b446c2d6f.png

图 6 提供了与 PIPs 和 RAFT 之间的比较,本文方法准确地跟踪了狮子鼻子上方的操纵点,从而成功地将它拖到了目标位置。

dab615c61180d8fffbe15eeba41dbd09.png

真实图像编辑。使用 GAN inversion 技术,将真实图像嵌入 StyleGAN 的潜空间,本文方法也可以用来操作真实图像。

图 5 显示了一个例子,将 PTI inversion 应用于真实图像,然后进行一系列的操作来编辑图像中人脸的姿势、头发、形状和表情:

6c37bd79f12890b3302c56efa6ae27c9.png

图 13 展示了更多的真实图像编辑案例:

2272cd3f179db59884c0c42ee092df50.png

定量评估

研究者在两种设置中下对该方法进行了定量评估,包括人脸标记点操作和成对图像重建。

人脸标记点操作。如表 1 所示,在不同的点数下,本文方法明显优于 UserControllableLT。特别是,本文方法保留了更好的图像质量,正如表中的 FID 得分所示。

3bba88575621db165f5c603bc12611b6.png

这种对比在图 7 中可以明显看出来,本文方法打开了嘴巴并调整下巴的形状以匹配目标脸,而 UserControllableLT 未能做到这一点。

2738eaa45ca42ac040c9fb764edbc4b1.png

成对图像重建。如表 2 所示,本文方法在不同的目标类别中优于所有基线。

8498ebd14dc75072fb0fdd702460be55.png

消融实验

研究者研究了在运动监督和点跟踪中使用某种特征的效果,并报告了使用不同特征的人脸标记点操作的性能(MD)。如表 3 所示,在运动监督和点跟踪中,StyleGAN 的第 6 个 block 之后的特征图表现最好,显示了分辨率和辨别力之间的最佳平衡。

47691ba2af637f675470567b960d07f1.png

表 4 中提供了_1 的效果。可以看出,性能对_1 的选择不是很敏感,而_1=3 的性能略好。

e872571448ee1488fc906bc6de3ae987.png

讨论

掩码的影响。本文方法允许用户输入一个表示可移动区域的二进制掩码,图 8 展示了它的效果:

e0735a64eb544f12b1d240bdf3aeb7bd.png

Out-of-distribution 操作。从图 9 可以看出,本文的方法具有一定的 out-of-distribution 能力,可以创造出训练图像分布之外的图像,例如一个极度张开的嘴和一个大的车轮。

670cafe8d9b67f78d5c708e6235af23e.png

研究者同样指出了本文方法现存的局限性:尽管有一些推断能力,其编辑质量仍然受到训练数据多样性的影响。如图 14(a)所示,创建一个偏离训练分布的人体姿势会导致伪影。此外,如图 14(b)和(c)所示,无纹理区域的操纵点有时会在追踪中出现更多的漂移。因此,研究者建议尽可能挑选纹理丰富的操纵点。

fb518c67ae5484cc3a4400eff284b163.png

点击进入—>【GAN和扩散模型】微信技术交流群

最新CVPR 2023论文和代码下载

 
 

后台回复:CVPR2023,即可下载CVPR 2023论文和代码开源的论文合集

后台回复:Transformer综述,即可下载最新的3篇Transformer综述PDF

GAN和扩散模型交流群成立
扫描下方二维码,或者添加微信:CVer333,即可添加CVer小助手微信,便可申请加入CVer-GAN或者扩散模型 微信交流群。另外其他垂直方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch、TensorFlow和Transformer等。
一定要备注:研究方向+地点+学校/公司+昵称(如GAN或者扩散模型+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群

▲扫码或加微信号: CVer333,进交流群
CVer计算机视觉(知识星球)来了!想要了解最新最快最好的CV/DL/AI论文速递、优质实战项目、AI行业前沿、从入门到精通学习教程等资料,欢迎扫描下方二维码,加入CVer计算机视觉,已汇集数千人!

▲扫码进星球
▲点击上方卡片,关注CVer公众号

整理不易,请点赞和在看bd294fa200a829aa82ae1edab8d07260.gif

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,要绘制一个交互式可拖拽的箱型图,我们可以使用 `pyecharts` 库中的 `Boxplot` 和 `Grid` 类。以下是一个示例代码,您可以根据自己的需求进行修改: ``` python from pyecharts import options as opts from pyecharts.charts import Boxplot, Grid import pandas as pd # 读取数据 df = pd.read_csv('data.csv') # 初始化箱型图 boxplot = Boxplot() boxplot.add_xaxis(df.columns.tolist()) boxplot.add_yaxis("数据", boxplot.prepare_data(df.values.tolist())) # 设置箱型图样式 boxplot.set_global_opts( title_opts=opts.TitleOpts(title="数据分布箱型图", subtitle="数据来源:xxx"), tooltip_opts=opts.TooltipOpts(trigger="item", axis_pointer_type="shadow"), xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False), legend_opts=opts.LegendOpts(pos_left="center", pos_top="top"), ) # 初始化 Grid 类 grid = Grid() grid.add( boxplot, grid_opts=opts.GridOpts( pos_left="10%", pos_right="10%", pos_top="20%", height="60%", is_draggable=True, # 开启可拖拽功能 is_piecewise=True, # 开启分段渲染 piecewise_dimension=0, # 箱型图的维度为列(0)还是行(1) piecewise_type="scroll", # 分段的方式为滚动 piecewise_gap=0, # 分段的间隔为0 ) ) # 渲染图表 grid.render("interactive_boxplot.html") ``` 这段代码将生成一个交互式可拖拽的箱型图,其中包含了 `pyecharts` 库的基本设置,您可以根据自己的需求调整样式。最后,将图表渲染成 `interactive_boxplot.html` 文件,并保存在当前工作目录下。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值