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

VLM引导的矢量草图生成AutoSketch

前言:很久没有解读草图生成相关的论文了,这次解读国立台湾大学提出的最新论文“AutoSketch: VLM-assisted Style-Aware Vector Sketch Completion”,使用VLM补全草图生成,工作很有意思。

目录

动机

方法详解

两阶段训练

第一阶段

第二阶段

实验细节


动机

1、能够自动完成描绘复杂场景的部分草图,例如。 “一位女士在公园里与一位男士聊天”这样的描述非常有用。然而,现有的素描生成方法都是从零开始创建素描,无法完成与原始风格一致的部分素描。为了应对这一挑战,我们引入了 AutoSketch,这是一种能够感知风格的矢量素描补全方法,可以适应多种素描风格。我们的主要观察结果是,自然语言中素描的风格描述在自动素描补全过程中能够保留其风格。因此,我们使用预训练的视觉语言模型 (VLM) 以自然语言描述部分素描的风格,并使用新生成的笔画复制这些风格。

2、尽管 ShadowDraw 在绘制简单物体时提供实时指导,但它并不能充分解决个人在尝试以一致的风格描绘复杂场景时遇到的上述挑战。较新的草图生成方法使得使用用户提供的文本提示或参考图像从头开始生成复杂草图变得更加容易。然而,这些方法缺乏考虑用户提供的部分草图的能力,从而产生了两个主要问题:多余的笔画和风格不一致。首先,这类方法往往会生成与用户提供的部分草图元素重复的笔画。其次,所有笔画都属于同一风格;生成的笔画的风格无法与用户提供的部分草图的风格相匹配。因此,这些方法无法自动完成用户提供的部分草图。

3、

方法详解

两阶段训练

在第一阶段,目标是优化一组参数笔画,当与用户提供的部分草图相结合时,确保完整的草图能够代表 𝒫 输入 无需考虑草图风格。首先,我们进行风格化 𝒫 输入 利用大型视觉语言模型(VLM)来生成风格描述给定的部分草图 𝒮 输入 。然后,我们优化 𝒮 选择 使用以风格化文本提示为条件的扩散先验并得到  。

第二阶段的目标是调整 确保最终草图的风格一致。我们使用精心设计的提示来指导 VLM,其中包含第一阶段的完整草图(SVG 格式)和文本提示。然后,VLM 生成可执行代码,用于调整新笔画的样式到原始部分草图的风格。

第一阶段

我们首先根据预训练的 ControlNet 模型生成的引导图像来优化笔画,该模型以输入的部分草图为条件。我们引入了掩码惩罚,以确保生成的笔画不会与输入的部分草图重叠,从而避免出现冗余笔画。

然而,仅靠笔触优化并不能确保完成的草图令人满意,因为输入的部分草图的风格并未被考虑。这引发了两个主要问题。首先,ControlNet 生成的引导图像的风格通常与部分草图的风格不匹配。其次,生成的笔触的风格可能与输入的部分草图的风格不一致。这凸显了两个任务的重要性,。 “在将输入提示输入到 ControlNet 之前添加样式描述”和“调整生成的笔画的样式以确保与这些描述一致”。

第二阶段

基于这些观察,我们将预训练的视觉语言模型 (VLM) 与笔画优化过程结合使用。首先,我们利用 VLM 从输入的部分草图中提取风格描述,然后将这些描述融入到输入提示中。这使得 ControlNet 能够生成与输入的部分草图非常相似的引导图像,从而改进最终完成的草图。其次,我们使用 VLM 生成可执行代码,以 SVG 格式调整笔画,从而增强最终完成草图的风格一致性。使用 VLM 进行风格调整的主要原因是,草图风格的多样性使得定义合适的参数化以有效捕捉所有潜在风格变得复杂。因此,使用基于优化的方法调整风格变得具有挑战性。虽然可以使用 VLM 直接调整笔画,但这通常会导致笔画丢失。此外,由于 token 的限制,现有的 VLM 通常只能处理少量笔画。使用 VLM 生成可执行风格调整代码克服了这些挑战,从而在不丢失内容的情况下获得了风格更一致的草图。

实验细节

在这项工作中,我们使用 GPT-4o 模型作为 VLM,用于提取样式描述并生成样式调整代码。我们使用 PyTorch 实现了该方法的第一阶段. 亚当优化器用于优化笔画。第一阶段包括1,000迭代,大约需要5分钟即可完成,而第二阶段则需要大约3分钟,当草图包含512笔画。对于所有计算,我们使用了配备 Intel i7-12700 CPU 和 NVIDIA RTX 4080 GPU 的 PC。

相关文章:

  • JS手写代码篇---手写ajax
  • 【ROS2】核心概念8——参数设置(Parameters)
  • Java 面向对象进阶之多态:从概念到实践的深度解析
  • ckeditor5的研究 (9):写一个自定义插件,包括自定义的toolbar图标、插入当前时间,并复用 CKEditor5 内置的 UI 组件
  • Unity中的Mathf.Clamp01
  • 端午编程小游戏--艾草驱邪
  • Unity使用代码分析Roslyn Analyzers
  • 【动画】Unity2D骨骼动画-Animation2D
  • Linux系统编程中的_GNU_SOURCE宏
  • 【Blender】Blender 基础:导入导出
  • Unity中如何播放视频
  • WEB3全栈开发——面试专业技能点P1Node.js / Web3.js / Ethers.js
  • webrtc 在线测试, 如何在线拉流测试
  • 建造者模式深度解析与实战应用
  • Framework开发之IMS逻辑浅析1--关键线程及作用
  • 软件工程的软件生命周期通常分为以下主要阶段
  • [论文阅读] 人工智能+软件工程 | 结对编程中的知识转移新图景
  • 基于 Transformer robert的情感分类任务实践总结之三——FGM
  • day 18进行聚类,进而推断出每个簇的实际含义
  • Boost ASIO 库深入学习(3)
  • 网络营销是什么专业学的/seochan是什么意思
  • 网站建设ktv/seo推广seo技术培训
  • 网站建设发布ps科技感/网络推广公司官网
  • l兰州网站建设/网站seo策划方案实例
  • 昆明网站排名/成都seo优化
  • 宁波外贸网站设计公司/公司网站制作流程