当前位置: 首页 > news >正文

【论文阅读】多模态——CLIPasso

文献基本信息

  • 标题:CLIPasso: Semantically-Aware Object Sketching
  • 作者:Yael Vinker、Ehsan Pajouheshgar、Jessica Y. Bo、Roman Christian Bachmann、Amit Haim Bermano、Daniel Cohen-Or、Amir Zamir、Ariel Shamir
  • 单位:Swiss Federal Institute of Technology (EPFL)、Tel-Aviv University、Reichman University
  • 会议/期刊:TOG
  • 发表时间:2022年5月16日
  • 代码:https://clipasso.github.io/clipasso/

背景与意义

  • CLIPasso要做的事情如下图所示,要由一张语义清晰的图像生成其对应的抽象简笔画,要求用较少的比划勾勒出原图的轮廓,并且与原图具有相同的语义内容,即原图是头公牛,生成的抽象简笔画也要能看出来是头公牛。

研究方法与创新点

  • 生成简笔画的方法不是直接做图到图的生成,而是使用图形学中的贝塞尔(贝兹)曲线(随机初始化)来完成简笔绘画,贝塞尔曲线通过定义平面上的几个点来确定一条曲线。
  • CLIPasso的模型框架如下图所示,中间的Rasterizer是图形学方向根据参数绘制贝塞尔曲线的一种方法,其将曲线画在空白的画布上使可视化。
  • 本文方法的创新点主要在损失函数初始化方法两个方面。

  • 贝塞尔曲线是空间上一系列2维的点控制的曲线,本文里一个笔画用四个点表示,每个点在空间上是二维的,$P$可以用$\left( {x,y} \right)$表示,通过模型训练更改四个点的位置,然后通过贝塞尔曲线的计算慢慢改变曲线形状得到简笔画。

{\cal S} = {\cal R}\left( {\left\{ {p_1^j} \right\}_{j = 1}^4, \cdots ,\left\{ {p_n^j} \right\}_{j = 1}^4} \right)

损失函数

  • 生成的简笔画有两个要求:
  1. 要在语义上与输入图像一致,即马还是马,牛还是牛。
  2. 生成的简笔画的几何轮廓也要与原图一致,不能虽然还是马,但是马头的朝向反了,或者是趴着的马。
  • 即满足语义几何需求,在CLIPasso中,这两个要求分别由两个损失函数——几何损失$L_g$语义损失$L_s$来保证。
  1. 语义损失的思路与蒸馏学习类似,要让模型提取到的图像特征和CLIP图像编码器提取的特征接近,从而在语义上保证原图和简笔画图都是马,这样做的依据是CLIP能做到对无论是自然图像、简笔画图等还是其他任何风格的图像,都能准确提取出语义特征,这种能力来自于CLIP的400M规模的训练数据。
  2. 几何损失类似于感知损失,是在约束模型前几层的特征图,因为在模型的前几层,学习到的还是相对低层的几何纹理信息,而非高层语义信息,因此约束浅层特征可以保证原图和简笔画图的几何轮廓接近。

初始化

  • 显著性(saliency)图用来对贝塞尔曲线参数进行初始化,如果完全随初始化贝塞尔曲线的参数,会使得模型训练很不稳定,因此使用显著性图来辅助贝塞尔曲线参数的初始化,从语义明确的区域采点进行初始化,改善了训练的稳定性。
  • 具体来说,将图片输入一个已经训练好的ViT,把最后一层的多头自注意力做加权平均得到一个显著性图,在这个图上观察哪些区域更显著,就在这些显著的区域上去确定点的位置,其实已经知道显著性区域是有一个物体的,即按照这个显著区域的边界去画贝塞尔曲线,所以初始化曲线与最后简笔画相差不多,提高生成性能。

  1. 随机初始化得到右边简笔画,文中提出的方法对于头发部分笔画更少且五官清晰。
  2. 增加后处理,根据一张输入生成张简笔画,再根据两个损失算算哪个简笔画损失最低,并当成最后的输出。

研究结论

  • 模型训练2000个iteration,在第100个iteration时就可以看出简笔画形状。
  • 模型训练很快,用一张V100GPU就能在6分钟时间里,完成2000个iteration。
  • 可以给不常见的物体生成简笔画,得益于CLIP模型zero-shot的能力
  • 无论笔画多还是笔画少,本文模型都更具备语义的信息。

存在的问题

  1. 图像有背景时,模型效果大打折扣,必须在纯白背景上的物体效果才很好。本文使用U2NET先将带背景的物体抠出来,再去用CLIPasso生成简笔画,这样变成了两阶段可能不是最优的方法
  2. CLIPasso初始化笔画是同时生成的,而不是序列生成的,之后可以考虑为序列形式,即画了前一笔再去考虑下一笔画在哪里,一步一步生成简笔画。
  3. 虽然可以通过控制笔画数控制抽象程度,但其实即使想得到同等程度抽象画,不同图片也是不同的笔画数,可以尝试把笔画数做成一个可优化的参数,让模型自己考虑用多少笔画

启发与思考

  1. 可以尝试AI的跨界,像本文就是AI+艺术的跨界。
  2. 进一步相信CLIP模型zero-shot的能力,可以多多尝试应用于涉及不常见物体的图像任务上。

相关文章:

  • 从0到1,带你开启TypeScript的奇妙之旅
  • 【VUE2】第二期——生命周期及工程化
  • STM32 ——系统架构
  • 力扣热题 100:二叉树专题进阶题解析(后7道)
  • Kubernetes(K8s)集群中使用 GPU
  • MySQL中的脏读与幻读
  • html网页模板免费免费html网页模板源代码
  • 【Java---数据结构】栈和队列【Stack Queue】
  • Python数据分析之数据处理与分析
  • 重生之我在学Vue--第5天 Vue 3 路由管理(Vue Router)
  • AI 帮我精准定位解决 ReferenceError: process is not defined (文末附AI名称)
  • mobaxterm,闪退处理方法
  • 一学就会的深度学习基础指令及操作步骤(3)模型训练验证
  • FPGA|Verilog-自己写的SPI驱动
  • 【测试框架篇】单元测试框架pytest(4):assert断言详解
  • SpringBoot(1)——创建SpringBoot项目的方式
  • 【Vue3】详细探究 watch ref 数组不生效的问题
  • LeetCode 2380 二进制字符串重新安排顺序需要的时间
  • 无人机楼宇间物资运输技术详解
  • 【算法 C/C++】二维前缀和
  • 海南乐城管理局原局长贾宁已赴省政协工作,曾从河南跨省任职
  • 美俄亥俄州北部发生火车撞人事故,致2人死亡、至少1人失踪
  • 因救心梗同学缺席职教高考的姜昭鹏顺利完成补考
  • 2024年全国博物馆接待观众14.9亿人次
  • 哪条线路客流最大?哪个站点早高峰人最多?上海地铁一季度客流报告出炉
  • 尹锡悦宣布退出国民力量党