以下文章来源于深圳大学可视计算研究中心 ,作者阮班怀
导读
本文是VCC阮班怀同学对论文 CLIPasso: Semantically-Aware Object Sketching 的解读,该工作来自洛桑联邦理工学院(EPFL)、特拉维夫大学和赫兹利亚跨学科研究中心(Reichman University),并已被发表在计算机图形学顶级会议SIGGRAPH 2022上。
项目主页:
https://clipasso.github.io/clipasso/
该工作提出了一种在不同抽象级别绘制对象的方法——CLIPasso。该方法将对象草图定义为一组笔画,然后使用可微光栅化器[1]来优化这组笔画参数。为了保留其关键的视觉特征,该方法基于CLIP(Contrastive-Language-Image-Pretraining)定义了语义损失和几何损失。CLIPasso可以通过不同的笔画数量来控制不同的抽象级别。
注:本文
与视频均来自原论文与其项目主页。
I
引言
对象草图的抽象化过程需要识别对象或场景的基本视觉属性,这需要语义理解和高级概念等先验知识。因此,抽象对艺术家来说是一种挑战,对机器来说更是如此。草图的抽象过程其实是艺术家的一系列决策过程,在这个过程中,艺术家必须做出正确的决定去选择所画主题的关键视觉特征,以捕捉他想要表达的相关信息,同时省略其他冗余信息。
图1展示的是艺术家毕加索对一幅公牛画的抽象过程:在保留公牛视觉属性的同时,逐渐去除冗余元素。被这个过程所启发,本篇导读论文提出了一个这样的问题:计算机渲染能否模拟这样一个素描抽象的过程,将照片中的某一个对象从具体描述转换为抽象描述?
图1 “Le Taureau” by Picasso
为了解决这个问题,本次导读论文提出了一种基于迭代优化的方法。该方法使用基于CLIP的图像编码器来指导将照片转换为抽象草图。CLIP编码器提供了对所描绘概念的语义理解,而照片本身则为具体主题提供了草图的几何基础。该方法将草图定义为放置在白色背景上的N条黑色笔画的集合。通过改变笔画的数量N来创建不同的抽象级别。由于该算法在任何阶段都没有引入类别定义,因此这种方法不局限于训练中观察到的特定类别,这使得该方法对各种对象草图的输入具有鲁棒性。
II
技术贡献
本工作主要贡献如下:
提出了一种由语义信息和几何信息指导的草图抽象方法;
针对传统的数据驱动方法,本工作不使用草图数据集训练,而是在CLIP的指导下使用可微光栅化器来优化草图中的笔画参数;
针对图像初始化为草图不准确的问题,提出了一个更好的草图初始化方法。
如下图所示,该方法与现有的一些工作相比,当迭代优化的次数超过一定数量时,该方法具有非常高的识别准确率,可见该方法在产生抽象草图的过程中仍保留了草图的关键视觉属性。
表1 相较之前的技术,CLIPasso的结果更显著
III
方法介绍
该方法的workflow如图2所示。给定对象的目标图像,算法的最终目标是在保持对象的语义和几何属性的同时绘制不同抽象级别的草图。
该方法由笔画初始化和和笔画参数优化两部分构成,第一部分的目标是提取输入图像的显著区域来定义笔画的初始位置,第二部分的目标是建立一个迭代优化过程,迭代的每个步骤都将笔画参数输入到可微分光栅化器R以生成光栅化草图。然后将生成的草图和原始图像输入CLIP,来定义基于CLIP的语义损失和几何损失。基于这两个损失,然后通过可微分光栅化器反向传播更新笔画参数,直到损失函数收敛。
图2 算法的overview,学习到的参数和损失项用红色突出显示,而蓝色的部分在整个优化过程中被冻结,实心箭头标记反向传播路径
在第一部分,为了让语义损失收敛更快,本篇工作基于目标图像的salient regions放置初始笔画。首先,使用CLIP的预训练Vision Transformer ViT-B/32[2]模型,该模型使用给定图像块之间的自我关注来执行全局上下文建模。然后使用[3]最近提出transformer interpretability method,在没有任何文本监督的情况下,从self-attention head提取revancy map。最后将relevancy map和XdoG[4]抽取图像得到的edge map相乘,经过softmax归一化后得到distribution map,根据distribution map去采样来生成Bezier curve的初始点(即笔画的初始位置)。
实验表明,与基于随机初始化的方法相比,这种基于抽样的方法对最终的结果有很大的帮助。如图3所示,在所有的例子中,会自动产生三个备选结果,然后自动选择损失最小的那个作为最终的结果。
图3(a) 从左到右:输入、CLIP ViT激活生成的显著性图、带有采样初始笔划位置的最终分布图(调整为贴附图像边缘)(红色)、使用建议的初始化程序生成的草图以及使用随机初始化时生成的草图
图3(b) 最终草图的自动选择程序
在第二部分,该方法一步步更新笔画参数来使得损失最小直到收敛,这是一个迭代更新的过程。从第一部分中已经得到了笔画的初始化表示,是一个n条笔画的集合
。
使用具有四个控制点的二维Bezier curve来表示每条笔画 :
为了简单起见,更新过程中保持笔画的宽度、不透明度不变,只优化控制点的位置。
然后,将笔画参数输入到可微光栅化器R中。这个可微光栅化器可以形成光栅化之后的草图:
Semantic loss:CLIP的image encoder具有稳健性,也就是说,不管什么风格的图像,CLIP都能编码出图像的视觉语义信息。作者使用CLIP的image encoder分别对图像和草图进行编码,目的是使它们的语义编码尽量接近。由于CLIP是在图像和文本上训练的,因此CLIP在网络的最后一层编码高级语义属性(如上图2)。该方法将草图的 与图像的CLIP(I)之间的嵌入距离定义为:
其中, 为余弦距离。网络的最终编码与姿态和结构等底层空间特征无关,只与语义信息有关。
Geometric loss:为了测量图像和草图之间的几何相似度,作者还加入了几何损失,即CLIP中间几层的L2 distance:
其中, 是 编码器的第 层。在本文的算法中,使用了ResNet101 CLIP模型的第3层和第4层。优化的最终目标被定义为:
其中, =0.1。
总的来说,这一部分的目标是优化参数集
,
来定义一个在几何和语义上都非常接近目标图像的草图。在优化的每一步中,该方法使用现有的基于梯度的求解技术来计算与笔画参数 相关的梯度损失。该方法遵循CLIPDraw[5]中建议的相同数据增强方案,在向CLIP传入数据之前,对草图和目标图像进行增强。这些增强功能可以防止生成对抗性草图,从而最小化目标。算法重复这个过程直到收敛,即优化误差没有显著变化时为收敛状态(通常取2000次左右迭代)。图4展示了优化过程中草图的变化:
图4 整个优化迭代过程中的草图外观
IV
部分结果展示
图5最左边的列显示输入图像,接下来的四列显示不同的抽象级别。对于鞋和椅子,在实验中使用32、16、8和4条笔画(从左到右)来绘制草图。对于人脸,实验使用64和8个笔画来绘制草图。
图5 抽象层次的比较
图6与现有图像转草图方法进行比较,这些方法都是Data-Driven的。最左边的列显示输入图像。由图6可见,本文提出的方法效果更好。
图6 与Data-Driven方式的比较
图7是不同的笔画初始化方法比较。与其他方法相比,本文提出来的初始化方法的可识别性更好。因此更加有利于迭代优化的收敛。
图7 不同的初始化方法
图8中比较了使用不同的损失函数来优化笔画参数,显示的每个结果都是通过相同的初始化方法获得的,唯一的区别是用于优化的损失。相比之下,基于CLIP的损失对语义的信息保持更加完整,同时保留几何信息。
图8 用LPIPS和L2替换基于CLIP的几何丢失。动物草图使用16个笔画,面部草图使用32个笔画
图9使用不同类别的对象来与其他方法进行比较:
图9 不同类别的比较
V
总结与展望
本篇工作提出了一种在不同抽象级别绘制对象的方法,生成具有不同抽象级别的草图,而不需要在特定的草图数据集上训练。同时也不局限于训练中观察到的特定类别,因为在任何阶段都没有引入类别定义。这使得该方法对各种输入具有鲁棒性。为了建立草图参数(Bezier curve’s control points)与草图图像之间建立联系,该方法使用可微光栅化器来根据草图图像计算出来的loss进行反向传播,以此来间接的更新草图参数(Bezier curve’s control points)直到收敛。实验结果表明,该方法可以推广到各种类别,并处理具有挑战性的抽象级别,同时保持关键语义与几何信息。
VI
思考与讨论
Q: 对于有背景的图像,在图像初始化为草图的时候,会对结果产生影响吗?
A: 由于在初始化的过程中,关键是提取图像的distribution map,来确定Bezier curve的初始控制点,如果是有背景的图像,会存在很多噪声。这些噪声会对初始化结果产生很大的影响。但论文中的方法在做这一步的时候增加了一个小trick,使用automatic mask方法先对图像做一下预处理来消除这些背景噪声,然后再初始化草图控制点。
Q: 控制抽象化级别的笔画数量需要事先确定吗?
A: 笔画的数量必须预先确定,以达到所需的抽象水平。但是,不同的图像可能需要不同的笔画数量,比如说一些结构很简单的图像如椅子、凳子这种只需要很少数量的笔画即可达到所需的抽象水平;如果是结构和信息比较复杂的图像如人脸、动物这些就需要较多数量的笔画才可以保留住语义信息。一种可能的解决方法就是将笔画数量扩展为一个可学习的参数,可以根据图像的语义信息更新这个参数。
以下是开放性问题,欢迎读者朋友留言讨论:
Q: 根据论文算法的workflow可以看出,整个算法流程中的CLIP模块和Rasterizer模块是被冻结的,在反向传播过程中,只更新笔画参数直到收敛,那么这种算法流程和传统的深度学习算法更新模型参数的过程有何不同?训练和测试阶段有区别吗?
转自:“arXiv每日学术速递”微信公众号
如有侵权,请联系本站删除!