当前位置: 首页 > 科技观察

第一次不依赖生成模型,让AI一句话修图!

时间:2023-03-19 22:17:36 科技观察

2022年是AI生成内容(AIGC)大爆发的一年,其中一个热门方向是通过文字描述(文字提示)来编辑图片。现有方法通常依赖于在大规模数据集上训练的生成模型,这不仅数据获取和训练成本高,而且模型尺寸大。这些因素都给技术的实际开发和应用带来了很高的门槛,限制了AIGC的开发和创新。针对以上痛点,网易互动AI实验室与上海交通大学合作开展研究,创新性地提出了一套基于可微分向量渲染器的解决方案——CLIVG,首次实现了不依赖于任何生成器模型。,用于文本引导的图像编辑。该方案巧妙地利用向量元素的特性来约束优化过程,因此既可以避免海量数据需求和高昂的训练成本,又可以在生成效果上达到最优水平。对应论文《CLIPVG: Text-Guided Image Manipulation Using Differentiable Vector Graphics》已被AAAI2023接收。论文地址:https://arxiv.org/abs/2212.02122开源代码:https://github.com/NetEase-GameAI/clipvg部分效果如下(依次为:人脸编辑、模型修改、建筑生成、颜色更改、图案修改、字体修改)。在生成效果方面,与业内已知的其他解决方案相比,CLIPVG语义准确率提升了15.9%,生成质量提升了23.6%,即可以自动编辑输出更符合语义的错误-免费图片。在框架的灵活性上,由于CLIPVG可以自动将像素图像转换为矢量图形,相对于其他基于像素图像的研究框架,在独立编辑图像颜色、形状、分区域等方面更加灵活。在应用场景上,由于CLIPVG完全不依赖于生成模型,可以应用到更广泛的场景,如人像风格化、卡通图片编辑、字体设计和自动着色等,甚至可以实现一对一的不同可以同时编辑图片的多个部分。思路与技术背景从整体流程来看,CLIPVG首先提出了一种多轮向量化的方法,能够将像素图稳健地转换为向量域,适应后续的图像编辑需求。然后将ROICLIP损失定义为损失函数,以支持对每个感兴趣区域(ROI)具有不同文本的指导。整个优化过程使用可微向量渲染器计算向量参数(如色块颜色、控制点等)的梯度。CLIPVG结合了两个领域的技术,一个是像素域的文本引导图像编辑,另一个是矢量图像生成。相关技术背景将依次介绍。Text-guidedimagetranslation要让AI在图像编辑时“理解”文本引导,典型的方法是使用对比语言-图像预训练(CLIP)模型。CLIP模型可以将文本和图像编码到一个可比较的潜在空间中,并给出“图像是否符合文本描述”的跨模态相似性信息,从而建立文本和图像之间的语义连接。然而,实际上,仅使用CLIP模型很难直接有效地指导图像编辑。这是因为CLIP主要关注图像的高层语义信息,缺乏对像素级细节的约束,使得优化过程容易陷入局部最优。(局部最小值)或对抗性解决方案(adversarialsolutions)。现有的常用方法是将CLIP与基于GAN或Diffusion的像素域生成模型相结合,如StyleCLIP(Patashniketal,2021)、StyleGAN-NADA(Galetal,2022)、DiscoDiffusion(alembics2022)、DiffusionCLIP(Kim,Kwon,andYe2022),DALLE2(Rameshetal,2022)等。这些方案利用生成模型来约束图像细节,从而弥补了单独使用CLIP的缺点。但同时,这些生成模型严重依赖训练数据和计算资源,将图像编辑的有效范围限制在训练集图像上。受限于生成模型的能力,StyleCLIP、StyleGAN-NADA、DiffusionCLIP等方法只能将单个模型限制在特定领域,比如人脸图片。DiscoDiffusion、DALL·E2等方法虽然可以编辑任意图片,但都需要海量数据和计算资源来训练相应的生成模型。也有极少数不依赖于生成模型的解决方案,例如CLIPstyler(Kwon和Ye2022)。在优化过程中,CLIPstyler将待编辑的图像分成随机的patch,并在每个patch上使用CLIPguidance来加强对图像细节的约束。问题是此时每个patch都会独立的反映输入文本定义的语义,所以这个方案只能进行风格迁移,而不能对图像进行整体的高层语义编辑。与上述像素域方法不同的是,网易互娱AI实验室提出的CLIPVG方案利用矢量图形的特性来约束图像细节来替代生成模型。CLIPVG可以支持任何输入图像并可以执行通用图像编辑。它的输出是标准的svg格式矢量图,不受分辨率限制。矢量图像生成一些现有的工作考虑了文本引导的矢量图形生成,例如CLIPdraw(Frans、Soros和Witkowski2021)、StyleCLIPdraw(Schaldenbrand、Liu和Oh2022)等。典型的方法是将CLIP与可微分的vectorrenderer,从随机初始化的矢量图开始,逐步逼近文本所代表的语义。使用的可微矢量渲染器是Diffvg(Lietal.2020),它可以通过可微渲染将矢量图形光栅化为像素图。CLIPVG还使用Diffvg建立矢量图形和像素图之间的链接。与现有方法不同,CLIPVG侧重于如何编辑现有图像而不是直接生成它们。由于现有的图像大多是像素图,因此需要先对其进行矢量化处理,然后才能使用矢量图形特征对其进行编辑。现有的矢量化方法包括AdobeImageTrace(AIT)、LIVE(Maetal.2022)等,但这些方法都没有考虑后续编辑的需要。CLIPVG在现有方法的基础上引入了多轮矢量化增强,以提高图像编辑的鲁棒性。CLIPVG技术实现的整体流程如下图所示。首先对输入的像素图进行不同精度的多轮向量化(Multi-roundVectorization),其中第i轮得到的向量元素集合记为Θi。将每一轮得到的结果叠加在一起作为一个整体作为优化对象,通过DifferentiableRasterization转换回像素域。输出图像的初始状态是输入图像的向量化重构,然后根据文中描述的方向进行迭代优化。优化过程根据每个ROI的区域范围和关联文本计算ROICLIPloss(下图),根据梯度对每个向量元素进行优化,包括颜色参数和形状参数。整个迭代优化过程可以在下面的例子中看到,其中引导文本是“Jocker,HeathLedger”(小丑,希斯莱杰)。矢量化矢量图形可以定义为矢量元素的集合,其中每个矢量元素由一系列参数控制。向量元素的参数取决于它的类型,以填充曲线为例,它的参数是,where是控制点参数,是RGB颜色和不透明度参数。矢量元素优化时有一些天然的约束条件,比如元素内部的颜色总是一致的,其控制点之间的拓扑关系也是固定的。这些特点很好地弥补了CLIP在细节约束方面的不足,可以大大增强优化过程的鲁棒性。理论上,CLIPVG可以使用任何现有的方法进行矢量化。但研究发现,这样做会给后续的图像编辑带来一些问题。首先,通常的向量化方法可以保证图像的相邻向量元素在初始状态下紧密相连,但每个元素都会随着优化过程移动,导致元素之间出现“裂缝”。其次,有时输入的图像比较简单,只需要少量的向量元素就可以拟合,而文字描述的效果则需要比较复杂的细节来表达,导致编辑时缺少必要的原材料(向量元素)图像。针对以上问题,CLIPVG提出了多轮向量化策略。在每一轮中,都会调用一个已有的方法得到一个向量化的结果,然后依次叠加。每一轮都会相对于前一轮提高准确度,即用更小的矢量元素块进行矢量化。下图展示了向量化时不同精度的差异。第i轮向量化得到的向量元素集合可以表示为,将各轮结果叠加得到的向量元素集合记为,即为CLIPVG的总优化对象。损失函数类似于StyleGAN-NADA和CLIPstyler。CLIPVG使用方向性的CLIP损失来衡量生成的图像与描述文本之间的对应关系,定义如下,其中它表示输入文本描述。是固定的参考文本,在CLIPVG中设置为“photo”,是生成的图像(待优化对象)。是原始图像。和分别是CLIP的文本和图像编解码器。ΔT和ΔI分别表示文本和图像的潜在空间方向。优化这个损失函数的目的是让编辑后的图像语义变化方向符合文本描述。在以下公式中忽略固定的t_ref。在CLIPVG中,生成的图像是矢量图形可微渲染的结果。此外,CLIPVG支持为每个ROI分配不同的文本描述。此时,方向性的CLIPloss会转化为后面的ROICLIPloss,其中Ai是第i个ROI区域及其相关的文字描述。R是可微分向量渲染器,R(Θ)是整个渲染图像。是整个输入图像。表示裁剪操作,即从图像I中裁剪区域。CLIPVG也支持类似于CLIPstyler的基于patch的增强方案,即可以从每个ROI中进一步随机裁剪多个patch,并为每个计算CLIPloss根据ROI对应的文字描述进行patch。totalloss是所有region的ROICLIPloss的总和,也就是说这里的一个region可以是一个ROI,也可以是从ROI上剪下来的patch。是每个区域对应的损失权重。CLIPVG会根据上述损失函数优化向量参数集Θ。也可以只优化Θ的一个子集,比如形状参数,颜色参数,或者特定区域对应的一些向量元素。实验结果在实验部分,CLIPVG首先通过消融实验验证了多轮向量化策略和向量域优化的有效性,然后与已有的baselines进行对比,最终展示了其独特的应用场景。消融实验研究首先比较了多轮矢量化(Multi-round)策略和只进行一轮矢量化(One-shot)策略的效果。下图第一行是矢量化后的初始结果,第二行是编辑后的结果。其中Nc表示矢量化的精度。可以看出,多轮矢量化不仅提高了初始状态的重建精度,而且有效消除了编辑矢量元素之间的裂缝,增强了细节表现。为了进一步研究向量域优化的特点,论文比较了CLIPVG(向量域法)和CLIPstyler(像素域法)使用不同patchsize进行增强的效果。下图第一行是CLIPVG使用不同patchsize的效果,第二行是CLIPstyler的效果。它的文字描述是“奇异博士”。整个图像的分辨率为512x512。可以看到,当patchsize较小(128x128或224x224)时,CLIPVG和CLIPstyler都会出现在局部小区域以《奇异博士》的代表红蓝配色,但整张脸的语义有没有明显变化。这是因为此时的CLIP引导并未应用于整个图像。当CLIPVG将patchsize增加到410x410时,你可以看到角色的身份有明显的变化,包括发型和五官,这些都是根据文本描述有效编辑的。如果去掉patchenhancement,语义编辑效果和细节清晰度会下降,说明patchenhancement还是有正面作用的。与CLIPVG不同的是,CLIPstyler在patch变大或patch被移除时仍然无法改变角色的身份,而只是改变整体颜色和部分局部贴图。原因是在patchsize扩大后,像素域的方法失去了底层约束,陷入了局部最优。这组对比表明,CLIPVG可以有效地利用向量域对细节的约束,结合更大的CLIP范围(patchsize)实现像素域方法难以实现的高级语义编辑。对比实验在对比实验中,该研究首先将CLIPVG与两种可以编辑任意图片的像素域方法进行对比,包括DiscoDiffusion和CLIPstyler,如下图“文森特·梵高的自画像”为例,CLIPVG能够编辑角色身份和绘画风格,而像素域方法只能实现其中之一。对于“满天星”,CLIPVG比基线方法更精确地编辑花瓣的数量和形状。在“Jocker,HeathLedger”和“AFordMustang”的示例中,CLIPVG也可以稳健地改变整体语义。相对而言,DiscoDiffusion容易出现局部缺陷,而CLIPstyler一般只调整纹理和颜色。(从上到下:梵高画作、满天星、希斯莱杰小丑、福特野马)研究人员随后比较了领域特定图像(以人脸为例)的像素域方法,包括StyleCLIP、DiffusionCLIP和StyleGAN-NADA。由于使用范围有限,这些基线方法的生成质量普遍比较稳定。在这组对比中,CLIPVG仍然表现出与现有方法相同的效果,尤其是与目标文本的符合度往往更高。(从上到下:奇异博士、异鬼、僵尸)更多的应用利用了矢量图的特性和ROI级损失函数,CLIPVG可以支持一系列现有方法难以实现的创新玩法。比如本文开头所示的多人图的编辑效果,就是通过为不同的角色定义不同的ROI级别的文字描述来实现的。下图左边是输入,中间是ROI级文字描述的编辑结果,右边是整张图片只有一个整体文字描述的结果。A1到A7区域对应的描述分别是1.《正义联盟6》(JusticeLeague),2.《海王》(SeaKing),3.《超人》(Superman),4.《神奇女侠》(WonderWoman)),5.“半机械人”,6.“闪电侠,DC超级英雄”和7.“蝙蝠侠”。可以看出,ROI层级的描述可以针对每个角色单独编辑,而整体描述无法生成有效的个体身份特征。由于每个ROI相互重叠,即使现有方法单独编辑每个字符,也很难实现CLIPVG的整体协调。CLIPVG还可以通过优化部分矢量参数实现多种特殊编辑效果。下图第一行显示了只编辑部分区域的效果。第二行显示锁定颜色参数,只优化形状参数的字体生成效果。第三行与第二行相反,仅通过优化颜色参数来达到重新着色的目的。(从上到下:分区编辑、字体风格化、图像颜色更改)