编者按:2023年8月14日-15日,第七届GAIR全球人工智能与机器人大会在新加坡乌节大酒店成功举办。论坛由GAIR研究院、雷峰网、世界科技出版社、科特勒咨询集团联合主办。
大会共开设10个主题论坛,聚焦大模型时代下的AIGC、Infra、生命科学、教育,SaaS、web3、跨境电商等领域的变革创新。这是国内首个出海的AI顶级论坛,也是中国人工智能影响力的一次跨境溢出。
在「AIGC 和生成式内容」分论坛上,南洋理工大学科学与工程学院助理教授潘新钢以《Interacitve Point-Dragging Manipulation of Visual Contents》为主题分享了点拖拽的交互式编辑方向研究成果——DragGAN。潘新钢指出,当下用户对图像的创作不只停留于粗粒度编辑,而是期待对图像空间属性进行精细化控制。针对这一需求,DragGAN 应运而生。通过DragGAN,用户可以选择性地指定一块可编辑区域,确定A、B两点,然后自如地将点 A 移动到点 B 的位置。更重要的是,DragGAN能够呈现的不仅仅是最终编辑完成后的图片,而是整个中间过渡的过程,即一个视频或动画的效果,丰富了其可应用场景。DragGAN 这样一个关键点拖拽式的编辑工具对目前大热的文生图的生成方式提供了一个非常好的补充,一经公布就得到了很多的关注和应用。潘新钢表示,目前可以看到拖拽式编辑的巨大的可能性,这在学术界也会成为一个新的竞赛,在 DragGAN 公开大概一个月后,就有字节和高校的研究人员尝试将它拓展到扩大模型上,结合算法和Fine Tune,实现了在真实图像上进行拖拽编辑的效果。潘新钢指出,接下来学术界感兴趣的研究方向是有没有可能把 GAN 和扩散模型的优势进行互补,既有扩散模型强大的生成能力,又有 GAN 所展示的图像连续性以及可编辑性,这样一来,视觉内容将不局限于图片。如何更好的创建3D 内容?这也是一个非常有意义的问题。潘新钢认为,DragGAN 同样可以拓展到 3D 问题上,甚至可以想象未来在等 4G 视频上都可能利用拖拽式编辑。以下为潘新钢的现场演讲内容,雷峰网在不改变原意的前提下进行了编辑和整理:大家上午好,很高兴能参与本次论坛,今天要和大家分享的主题是《Interacitve Point-Dragging Manipulation of Visual Contents》,也就是对视觉内容的关键点的拖拽式编辑。现在的生成式 AI 已经能够非常好地根据文字生成图片,比如,我们可以把一段话术输入到 Midjourney 或者 Stable Diffusion中,让它生成一个逼真的狮子。但是很多时候,创作的过程并不会在这里结束。文字对图像的描述只是粗粒度的,用户更多的希望继续细粒度的去微调图像的内容,例如去改变所生成内容的姿态、转动狮子的头、增大或缩小物体的大小、移动物体的位置、甚至改变狮子的表情。这一系列操作都是关于物体空间属性的精细控制,如何对这些属性进行精细控制仍然面临比较大的挑战。为了实现这种空间属性的精细控制,我们应该如何控制它们?方式之一是沿袭文生图的思路,继续根据文字的指引编辑图片。现在,学术圈也有一些根据文字来改变图片内容的方法,比如让狮子的鼻子向右移动 30 像素。但这种编辑方式的存在一定问题,一是这种文字编辑需要文字模型的部分,用于去理解所有可能的关于物体空间属性的编辑方式,比如除了向右移动之外有很多其他的联系方式;二是对于语言模型来说,它其实很难理解 30 个像素在这一张图里面精确的长度有多长,这种精确的编辑对于目前的文生图语言来说还是一个比较大的挑战。其实,符合直觉的编辑方式是用户只需要点击两个点,指定一个红色的抓取点和蓝色的目标点,我们目的就是把红点所对应的图像的语义的部分移到蓝点的位置,来达到如右图所示的对图像空间属性的编辑的效果。这种编辑方式的好处一是它非常简单,只需要两个点;二是用户精确定义了抓取点和目标点的位置,所以编辑、移动的距离非常精确;三是它非常灵活,前面所提到的空间属性,像姿态、大小、位置等都可以通过这种方式来编辑。这就是这次我将主要分享的,关于交点拖拽的交互式编辑方向的成果 —— DragGAN 。可以看到,用户可以选择性地指定一块可编辑区域,然后通过指定红点和蓝点,我们的算法会将红点移到蓝点的位置。并且值得一提的是,所得到的并不仅仅是最终编辑完成后的图片,而是整个中间过渡的过程。所以,最终呈现出来的是视频或动画的效果,这对于视频或者动画方向来说也具有一定的应用场景。其实,关键点拖拽并不是一个新的故事。在之前传统图形学中,Shape Deformation 也实现过类似的效果,同样是用户可以通过关键点对图像进行拖拽,并且当时 As Rich As Possible 这个经典算法的开发者也开发了一套基于平板电脑的一个APP。但这种方式通常会要求对所编辑的图像进行网格化,并且对物体的高度有一定的假设。比如,假设物体是一个均匀的高度,这在很多时候是不准确的,因为很多物体它有自己的内在结构、骨架,并且另一个更加重要的曲线形式,它只是对 2D 图像进行一个扭曲变形,它并没有办法生成新的内容。比如,让这个熊 3D 视角变化一下,或者呈现出被遮挡的部分。那么,为了克服这些曲线形式,我们需要模型对物体的结构有一个了解,并且在需要的时候能够生成新的内容。为了实现这两点,一个自然的选择就是生成式模型。在对它的研究中,我们并没有采用当下火热的扩散模型,而是用了扩散模型之前的对抗生产网络,也就是 GAN。之所以这样选择,是因为它两方面的优势,一是它所描述的图像空间非常连续,比扩散模型连续很多,二是它的 Contact 的隐空间非常适合编辑这样的属性。所以我们认为 GAN 是研究这个问题的第一步,是一个自然的选择。简单来说, GAN 的训练完成后,它的生成器所做的事情就是将一个低维隐编码映射到一个高维的头像上。可以看到,随机扰动隐编码就可以实现对图像内容的自然且连续的变化,可以改变图像的各种不同的属性。当在一个狮子的数据集上训练完它之后,它会学习到狮子的不同属性的变化,比如它的姿态、大小、位置、表情等一系列的变化。对于一个用户的拖拽式编辑的目标来说,我们希望做的事情就是把当前图像在 GAN 所描述的图像空间中游走,游走的方向是按照符合用户编辑的目的地方向去移动,也就是图中所示的红色曲线的方向,那最终在这个例子里达到狮子张开嘴的效果。那么如何通过编辑 GAN 的隐编码来实现这样的效果,就是我们要研究的主要问题。下面介绍这个方法的主要方向。这里是一个生成器,将隐编码 W 映射成为一个狮子的图像,用户会输入红色抓取点和蓝色目标点。为了将红点移到蓝点的位置,我们提出一个运动监督损失函数,它的目的是给红点施加一个力朝蓝点推去。通过这样的一个组织函数,我们去优化 GAN,通过反向传播优化干的隐编码,得到一个新的隐编码,那么它会生成一个新的图像,在新的图像里,它已经按照红点朝蓝点推的方式变化了。但是到目前我们并不知道横点移动到了什么位置。所以,接下来我们要做点跟踪,就是要去更新红点的位置,让它始终跟踪物体对应的部位。比如这里红点最初是在鼻子的位置,那么希望它永远跟随鼻子的位置。得到更新过的抓取点后,我们再重复前面提到的运动监督的过程,所以我们的方法在运动监督与点追踪之间迭代,直到红点准确到达了蓝点位置。这里所采用方法的主要是运动监督和点跟踪,下面将对这两部分进行介绍。在实现最终的方案之前,我们初步进行了一些不一样的尝试。为了实现对运动的监督,我们的想法是采用一个提取运动的模型,那么一个自然的选择就是光流,因为光流是对物体的运动最直观的刻画。我们的做法是,对于 GAN 所生成的图像,我们先将它复制一份作为一个参考图,将这两张图送给一个光流模型,这里采用的是经典的 Raft 光流模型。由于这两张图是一样的,所以刚开始计算出来的光流当然是0。为了去移动用户所指定的抓取点,我们去观察抓取点所对应位置的光流,一开始是个光流视频,我们希望这个抓取点移动,那么这其实等于我们希望这里产生的光流不是(0,0),而是( -1,0),整个框架我们就反向传播去优化 GAN的一边了。当所预测光流达到目标时,就确实可以将当前生成的图像移动一小步,实现一个向左移动一点的效果。所以其实当时这个方式算法是可行的,它的问题就在于我们引入一个光流模型,它是一个迭代式计算的模型,计算开销相对较大。而在这样一个用户交互时图像边界的应用,我们希望算法能够给用户及时的反馈,所以我们想进一步提升效率,那么有没有可能去不需要光流?之所以需要光流模型,是因为它提取了对物体的精细的语义信息敏感的特征,这样才能在两张图像之间做相似的匹配。对于 GAN 来说,当它生成一张图片的时候,我们得到的不仅是这张图片,也有这个生成器内部的很多特征。之前的很多研究表明, GAN 的内部特征与图像的语义信息有非常强的关联性,但是非常具有判别力,它体现在仅仅通过 GAN 的特征,你就可以去做小样本的语义分割,甚至无样本语义分割。这些证据表明, GAN 拥有这种强判别力,通过它我们可能在 GAN 特征上就可以通过简单的设计来运用监督和点跟踪,这也就引出了我们最终的方案。这里同样是通过隐编码经过生成器得到图像的过程,立方体展示的是 GAN 中间过程的特征。那么为了将红点移到蓝点,我们用红色 patch 的特征是作为 ground shoes 去监督蓝色的 patch ,也就是我们希望蓝色的 patch 去模仿去 红色 patch 的数值。你可以想象,当蓝色 patch 的数值变成红色 patch 的时候,其实就相当于红色这个圆移动到了蓝色圆的位置,这就可以通过损失函数来实现。在实现的时候,我们需要将红色的 patch 从反向传播的计算图中分离出来。前面提到了用户可以选择性地输入一个 Mask 来指定可编辑区域,那么对于可编辑区域之外的部分,我们也会让这部分的特征始终与最初的特征保持一致。通过这样的损失函数优化隐编码后,我们会得到一个新的特征和新的图像。我们假设最初的抓取点,它所对应的特征值是F0,我们所做的就是在当前的特征图上抓取点附近的一小块区域,去寻找和 F0 数值最近的那个相似的位置,也就是一个 feature matching 。由于GAN 的特征与语义非常强的耦合性,通过这种方式找到的位置,它就在语义上倾向于和原本特征抓取点所对应的语义相一致。比如这里原本抓取点在十字的笔尖,那么我们通过 feature matching 找到的点也会倾向于在十字的笔尖,这样就实现了一个tracking跟踪的功能。刚刚介绍的是针对一个点进行的,对于多点的情况,我是只需要将不同的运动监督损失函数进行累加,并且每个点单独跟踪就可以。通过GAN所实现的编辑效果是,用户只需要进行非常自然简单的拖拽式编辑,就可以改变图像姿态的属性。你也可以重新设计一个车的外形或者改变车的视角,当然也可以编辑很多其他的动物,甚至让猫睁一只眼闭一只眼。对人脸的年纪同样比较轻松,你可以改变他的头发、表情,也可以改变模特的姿态以及他的衣服的长短。可以看到,这种编辑方式非常灵活地编辑了不同物体的多种空间属性。那么我们也和其他方法进行了对比。这里第一行展示的是输入图片以及用户的编辑,那么第二行展示的是一个 baseline 方法,虽然它的速度较快,但是编辑的准确性显著低于我们的方法,最后一行是我们的方法。第一个例子中我们看到 baseline 方法,它没有办法把马脚和马头移动到目标位置去,按照我们的方法移动的比较精确,我们也同样可以对更密集的关键点进行编辑。这里是一个人脸关键点的编辑,那么对于每一个例子左边的两行分别两列,分别是输入图像和目标的人脸,我们目的就是把输入的点的关键点编辑到和目标点一致,那么可以看到,确实可以实现这样的编辑。我们也进行了定量式实验,和其他的方法相比,我们的方法也是显著的取得了性能的提升。那么这里是一个点跟踪的对比,第一列是我们的方法,可以看到在整个编辑的过程中,这个红点会始终跟随狮子的鼻子上方这个位置。但是对于另外两个跟踪的方法, PIPs 和Raft,他们在跟踪的过程中会逐渐偏离原来的位置,那这样的话你就没有办法准确地移动到目标点。前面展示的大部分例子都是基于 GAN 本身所生成的图片,但是对于图像编辑来说,一个非常重要的问题就是如何去编辑真实世界的用户的图片。要实现这一点,通常要做的是额外引入的 GAN 重建,也就是先用 GAN 组成用户的图片,然后再基于自己进行编辑。这里展示了一些真实图片编辑的效果,同样可以通过点关键点拖拽来实现对各种空间属性的编辑,其实关键点拖拽的编辑方式,很多时候是有歧义的,或者说存在脱节的。比如这样去拉狗的鼻子位置的拖拽,你可以通过转动整个狗的身体实现,可以通过只改变狗头位置来实现,那么实践中,它会选择在这个 GAN 有模拟的图像和空间中与当前图片最近的一个位置,在这里它就会转动整个狗的身体。另一点是用户可能会做出很多夸张的编辑。这里展示了一些夸张的编辑的效果,比如让狮子的嘴张得非常大,虽然我们的方法也一定程度上会展示一些不完美之处,但这是相对合理的一些结果。当然我们的方法也不是完美的。目前的一些局限性首先是对于超出训练数据分布的编辑,那么很多时候仍然会产生瑕疵。比如,这里人体的数据集,它是在模特数据上训练的,也就是说模特通常都会比较自然,如果你希望产生一些夸张的姿势的话,它会产生一些比较扭曲的缺陷。此外关键点的选取也有局限,如果所选取的点在一个非常平滑的、没有什么纹理的区域,比如车门靠中间的位置选中红色,那么在编辑的跟踪的过程中,关键点它会容易发生一些偏移,它相对于车发生了滑动,这是我们所不希望看到的。但是如果将关键点选取后视镜的位置,纹理相对丰富,它就不会发生这样的偏离。另外一点是对于真实世界复杂的图像的编辑。当一个图像中存在非常多的内容的时候,那无论是这个生成模型的训练还是 GAN 组件进行编辑的过程都非常复杂,后续如何在更复杂的真实图像上实现编辑是一个重要的研究方向。这样的一个关键点拖拽式的编辑对目前所火热的文生图的生成方式提供了一个非常好的补充,所以当我们发布公开成果的时候,受到了非常多的关注,大家看到了拖拽式编辑的巨大的可能性。在学术界关于关键点拖拽的编辑也要成为一个新的竞赛。在我们公开 DragGAN 大概一个月后,有研究人员尝试将它拓展到扩大模型上,同样是用我们提出的类似的运动损失函数还有点跟踪的算法,它们结合 Fine Tune 实现了一些在真实图像上进行拖拽编辑的效果。这里展示的措施其实已经可以看到,扩散模型所展示的编辑过程不如 GAN 那么连续。那么紧随其后的是北大和腾讯所展示的 DragGAN 模型,那么他们提出了一个不一样的策略,实现了类似的编辑效果。所以可以看到,目前扩散模型已经产生了一些鼓舞人心的效果,但是对于比较大角度的编辑以及比较长距离的编辑仍然有局限性。例如,对一辆车来说,如何让车转动起来,对于扩散模型仍然是一个比较大的挑战。另外它所展示的编辑过程非常的不连续,这对于视频这样的应用来说还是不够的。如何生成更加自然连续的编辑仍然是一个 open problem。所以这里有一个有非常有趣的问题,就是我们有没有可能把 GAN 和扩散模型的优势互补,既有扩散模型强大的生成能力,又有 GAN 所展示的图像连续性以及可编辑性,这也是一个学术界会非常感兴趣的未来的研究方向。视觉内容当然不局限于图片, 如何更好地创建3D 内容也是一个非常有意义的问题。未来,对于 DragGAN 来说,同样可以拓展到 3D 问题上,已经有学者将其与 3D 生成模型结合,实现了对 3D 形状进行拖拽式编辑的效果,这对于 3D 设计师来说也将会是非常有意义的。那么我们可以想象未来在其他的视觉内容上,比如说视频,甚至 4G 的视频上都可能利用这种拖拽式编辑的方式。DragGAN 目前已经开源,在 GitHub 上获得了 32000 个Star,欢迎大家使用,并且我们提供了一些线上体验的平台,也欢迎大家体验。我的分享到这里就结束了,谢谢大家。