大象转身只需点点鼠标,爆火 DragGAN 原理浅析

news2024/11/20 23:20:46

出品人:Towhee 技术团队 作者:张晨

DragGAN介绍

合成满足用户需求的视觉内容往往需要对生成对象的姿势、形状、表情和布局进行灵活和精确的控制。 现有方法通过手动注释的训练数据或先前的 3D 模型获得生成对抗网络 (GAN) 的可控性,这通常缺乏灵活性、精确性和通用性。 这项工作研究了一种强大但探索较少的控制 GAN 的方法,即以用户交互的方式“拖动”图像的任何点以精确到达目标点,如下图所示。 为实现这一目标,本文提出了 DragGAN,通过 DragGAN,任何人都可以通过精确控制像素的位置对图像进行变形,从而操纵动物、汽车、人类、风景等不同类别的姿势、形状、表情和布局。定性和定量比较都证明了 DragGAN 在图像处理和点跟踪任务中优于先前方法的优势。

alt

DragGAN 允许用户“拖动”任何 GAN 生成图像的内容。 用户只需点击图像上的几个handle点(红色)和目标点(蓝色),就可以移动 handle 点以精确到达其对应的目标点。 用户可以选择绘制灵活区域(较亮区域)的 mask,保持图像的其余部分固定。 这种灵活的基于点的操作可以控制许多空间属性,如姿势、形状、表情和跨不同对象类别的布局。

运动监督和handle跟踪

DragGAN包含了两个子操作:

  • 基于特征的运动监督,驱动handle点向目标位置移动,
  • 一种新的点跟踪方法,利用判别生成器特征来保持定位handle点的位置。

理论上,GAN 的特征空间具有足够的判别性,可以实现运动监督和精确点跟踪。 具体来说,运动监督是通过优化隐空间编码(latent code)的偏移 patch loss 来实现的。 每个优化步骤都会使得 handle 点更接近目标; 然后通过特征空间中的最近邻搜索来执行 handle 点跟踪。 重复此优化过程,直到 handle 点达到目标。 DragGAN 还允许用户有选择地绘制感兴趣的区域以执行特定于区域的编辑。 由于 DragGAN 不依赖任何额外的网络,它实现了高效的操作,在大多数情况下在比如单个 RTX 3090 GPU 上只需要几秒钟。 这允许进行实时的交互式编辑会话,用户可以在其中快速迭代不同的布局,直到获得所需的输出。

alt
  • 运动监督是通过生成器特征图上的偏移patch loss来实现的。图中红圈patch和蓝圈patch之间的差异,对于latent code求导,可以得到新的latent code w'。图中红patch后加了".detach()",意思就是它是原图,是不变的,而蓝patch是通过新latent code出来的可变量,所以是通过它反传梯度。

  • 通过最近邻搜索对同一特征空间进行handle点跟踪。图中是中间那个图,在正方形区域内最近邻搜索原来p点的特征f0,于是可以搜索到新的位置p,即完成跟踪。这么做的原理是,GAN 的特征具有判别性,能很好地捕获了密集的对应关系,因此可以通过特征块中的最近邻搜索有效地执行跟踪。

遮罩(mask)的用处

alt

将狗的头部区域遮盖后,其余部分几乎没有变化。 Mask 可以在交互时,确定图像中确定图像中的可变区域,这样可以消除歧义,让用户做到更加精准的控制。

总结

DragGAN是一种用于直观的基于点的图像编辑的交互式方法。 方法利用预训练的 GAN 来合成图像,这些图像不仅能精确地遵循用户输入,而且还能保持真实图像的多样性。 与许多以前的方法相比,本文通过不依赖特定领域的建模或辅助网络来呈现一个通用框架。 这是通过使用两个主要步骤来实现的:一是 latent code 的优化,它可以进行运动监督,将 handle 点移向其目标位置,二是一个点跟踪方法,它有效地跟踪 handle 点的轨迹。 作者未来计划将基于点的编辑扩展到3D生成模型。

相关资料:

  • 官网展示:https://vcai.mpi-inf.mpg.de/projects/DragGAN/
  • 论文链接:https://arxiv.org/abs/2305.10973
  • 代码地址:https://github.com/XingangPan/DragGAN(官方版本,计划6月开源),https://github.com/Zeqiang-Lai/DragGAN(非官方版本)

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/568566.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

保姆级教程:手把手教你拿下雅思写作7分

在留学路上,雅思考试是绕不开的一道坎。然而,众所周知,雅思学习热度高,学习难度大,而且很多人找不到合适的学习方法。在这里,我们以雅思写作中的大作文为例,从大作文的结构拆解、学习的任务拆分…

SSM编程---Day 02

目录 一、核心配置文件 二、junit介绍 三、自定义java注解 四、自定义注解 五、添加log4j的支持 六、sql映射文件的介绍 一、核心配置文件 1、核心配置文件中需要注意顺序 2、根节点 <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN"…

数据结构-最小生成树Prim算法的实现

目录 一、前言 二、最小生成树 三、Prim算法 四、Prim算法的实现 一、前言 在计算机科学中&#xff0c;数据结构是一种组织和存储数据的方式&#xff0c;以便于访问和修改。数据结构是计算机科学的基础&#xff0c;它是算法的基础。在数据结构中&#xff0c;最小生成树是一…

Python调用腾讯云函数传递json数据

前言 有些时候有一些公共的方法&#xff0c;需要放在服务器上&#xff0c;在不同的电脑上使用。但是我们有没有自己的服务器&#xff0c;所以考虑将公共的方法放在腾讯云、华为云、阿里云、百度云等云平台上&#xff0c;方便在不同的电脑上复用。 我们这里使用的是腾讯云&#…

AMD Software Adrenalin Edition 23.5.1驱动发布,快速获取驱动

AMD新驱动赶在五月天发布&#xff01;AMD Software Adrenalin Edition 23.5.1驱动 &#xff0c;为部分游戏带来支持&#xff0c;以及为重要的软件带来修复。驱动人生带大家一览AMD WHQL 23.5.1驱动的优化内容。 游戏方面&#xff0c;AMD WHQL 23.5.1主要为游戏《指环王&#x…

详解MVCC相关知识点

前言&#xff1a;学习前&#xff0c;先叙述mysql相关基础知识&#xff0c;一步步了解mysql底层机制。 1.Mysql的隔离级别&#xff1a; 数据库事务的隔离级别有4个&#xff0c;由低到高依次为Read uncommitted 、Read committed、Repeatable read 、Serializable &#xff0c;这…

23种设计模式之观察者模式(Observer Pattern)

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;在一家满意的公司实习。本篇文章将23种设计模式中的观察者模式&#xff0c;此篇文章为一天学习一个设计模式系列文章&#xff0c;后面会分享其他模式知识。 如果文章有什么需要改进的地方还请大佬…

计算机视觉与OpenCV算法学习内容总结,太详细了!

计算机视觉是一项基于数字图像和视频处理的前沿技术&#xff0c;在人工智能领域中得到了广泛应用。而OpenCV&#xff08;开源计算机视觉库&#xff09;是一款以C语言为主的跨平台计算机视觉库&#xff0c;被广泛认可为业界最优秀的计算机视觉库之一。 相比于传统的图像处理技术…

【selenium自动化测试入门】 python unittest单元测试框架

unittest又名PyUnit&#xff0c; Python单元测试框架&#xff08;The Python unit testing framework&#xff09;&#xff0c;简称为PyUnit。自从 Python 2.1 版本后&#xff0c;PyUnit成为 Python标准库的一部分。 为什么需要使用unittest单元测试框架&#xff1f; 当我们写…

老油条感叹:现在00后真的太卷了....

最近内卷严重&#xff0c;各种跳槽裁员&#xff0c;相信很多小伙伴也在准备今年的金九银十的面试计划。 在此展示一套学习笔记 / 面试手册&#xff0c;年后跳槽的朋友可以好好刷一刷&#xff0c;还是挺有必要的&#xff0c;它几乎涵盖了所有的软件测试技术栈&#xff0c;非常珍…

预训练模型 ---- BERT架构

目录 什么是BERT BERT的架构 BERT的预训练任务 小节总结 BERT的特点 BERT和GPT的区别 笔记参考&#xff1a;【2023最新&#xff01;4个小时带你重新认识【BERTtransformer】&#xff0c;详解self-attention&#xff0c;翻遍全网找不到比它更详细的了&#xff01;&#xf…

工作记录:在线 word - 列表

需求&#xff1a;上传 word 文档&#xff0c;在页面的富文本编辑器中展示、编辑后&#xff0c;再导出成 word 格式。 我负责开发列表功能 为什么不用 ul 一开始想用<ul> <li> 去实现列表&#xff0c;但随即发现一些问题&#xff1a; 问题一&#xff1a;word 中的…

知乎+chatgpt炸了!撸点小钱~

大家好&#xff0c;我是五竹。 之前分享了一下&#xff0c;朋友圈的好友如何复制我的玩法利用chatgpt赚点小钱的实战&#xff1a;TMD&#xff0c;被人偷窥了一个月&#xff01; 紧接着我自己最近也在知乎小赚了一笔&#xff01;我以为在知乎上那篇文章的热点就消退了&#xff0…

字节25K就面试这些?简直惊呆我了...

互联网行业竞争是一年比一年严峻&#xff0c;作为软件测试工程师的我们唯有不停的学习&#xff0c;不断提升自己才能保证自己的核心竞争力从而拿到更好的薪水&#xff0c;进入心仪的企业&#xff08;阿里&#xff0c;字节跳动&#xff0c;腾讯&#xff0c;美团&#xff09; 话不…

获取安卓签名文件的MD5值与SHA1码

目录 前言 一、用命令行的方式仅能获取SH1、SHA256 ​编辑 二、用gradle的方式可以获取MD5值 1.打开Android Studio&#xff0c;点击右边的Gradle 2.点击大象&#xff0c;输入查询签名信息的命令 总结 前言 公司App项目要备案&#xff0c;要搜集MD5值与SHA1码&#xff0…

Software List

Ubuntu22 Goldendict Ubuntu安装划词翻译软件Goldendict 单词翻译 句子翻译_ubuntu划词翻译_Bourne_Boom的博客-CSDN博客有道词典长期未更新&#xff0c;由于某些模块不支持的问题已经无法在Ubuntu18.04中使用了。现在介绍另一款强大的翻译软件——Goldendict。1.安装&#…

Android Qcom Display学习(十四)

该系列文章总目录链接与各部分简介&#xff1a; Android Qcom Display学习(零) 本章主要就是学习一下开机logo和开机动画是怎么加载&#xff0c;客制化修改的。 Bootlogo QcomChargerApp.c QcomChargerApp_MonitorChargingQcomChargerAppDisplay_DispBattSymbol(DispImageTy…

SARscape连接图编辑(ConnectGraph)

SARscape连接图编辑ConnectGraph 0 连接图是什么1 什么时候需要编辑连接图2 连接图编辑步骤 0 连接图是什么 连接图ConnectGraph就是差分干涉数据对的关系图。 在SARscape中进行干涉叠加Interferometric Stacking处理&#xff0c;常见的包括PS和SBAS。 首先就要根据数据的空间…

美团小组长薪资被应届生员工倒挂7K,不把老员工当人?

一位美团的小管理爆出&#xff0c;无意中看到了整个部门薪资&#xff0c;本以为自己算比较高的&#xff0c;但看完之后整个人都傻眼了。小组长的职位月薪28K&#xff0c;而手下组员却是35K&#xff0c;当天晚上抽了一包烟也没想明白是为什么。 楼主表示&#xff0c;自己是美团的…

git提交分支

1. git提交分支相关 在本地新建分支&#xff0c;保证和远程分支一样 git checkout -b 分支名如果分支已存在&#xff0c;只需要切换的话 git checkout 分支名提交前先把代码拉下来更新一下&#xff0c;确保不会覆盖别人的代码 git pull origin 远程分支(如果有)解决冲突 g…