ControlNet作者新作Paints-Undo:一键模拟人类绘画过程,再也没人敢说你的图是生成的了!

ControlNet作者敏神又有新项目了。

Paints-Undo 可以生成模拟人类绘画过程的动画。支持输入单图倒推出绘制这个图片某一步的过程,也可以给两张图,生成一个绘制过程动画。

再有人说你的图是生成的就把这个拿给他看,哈哈。下面先看一下展示的效果,本地部署和网页试用都在文章下方,感兴趣的小伙伴可以点击链接体验。

相关链接

代码地址:https://github.com/lllyasviel/Paints-UNDO

效果展示:https://lllyasviel.github.io/pages/paints_undo/

PaintsUndo介绍

PaintsUndo:数字绘画中绘画行为的基础模型

Paints-Undo 是一个旨在提供人类绘画行为基础模型的项目,希望未来的人工智能模型能够更好地满足人类艺术家的真实需求。

“Paints-Undo”这个名字的灵感来自于相似性,即模型的输出看起来就像在数字绘画软件中多次按下“撤消”按钮(通常是 Ctrl+Z)。

Paints-Undo 提出了一系列模型,以图像作为输入,然后输出该图像的绘制序列。该模型展示了各种人类行为,包括但不限于素描、着墨、着色、阴影、变换、左右翻转、颜色曲线调整、更改图层可见性,甚至在绘画过程中更改整体想法。

模型说明

目前发布了 paints_undo_single_frame 和 paints_undo_multi_frame。分别称之为单帧模型和多帧模型。

  • 单帧模型输入一张图片和一个operation step,输出一张图片。假设一幅作品总需要1000次人为的操作(比如一笔画就是一次操作), 是一个operation step 0~999的int型数字。0是最终完成的作品,999是纯白画布上画出的第一笔画。你可以把这个模型理解成一个“撤销”(或者叫Ctrl+Z)模型。你输入最终完成的图片,并指定要“Ctrl+Z”多少次,模型就会给你一个“模拟”的截图,如果你的值为operation step100,那么就意味着你要在这张图片上模拟“Ctrl+Z”100次,得到第100次“Ctrl+Z”之后的样子。

  • 多帧模型以两幅图像作为输入,输出两幅输入图像之间的 16 个中间帧。结果比单帧模型更加一致,但速度也更慢,缺乏“创造力”,并且限制在 16 帧内。

项目中默认的方法是一起使用它们。会先对单帧模型进行大约 5-7 次推理,得到 5-7 个“关键帧”,然后再使用多帧模型对这些关键帧进行“插值”,从而真正生成一段相对较长的视频。

理论上,该系统有多种用途,甚至可以制作无限长的视频,但实际上,当最终帧数约为 100-500 时,效果会很好。

模型架构

paints_undo_single_frame

该模型是 SD1.5 的改进架构,针对不同的 beta 调度程序、剪辑跳过和上述operation step条件进行训练。

文本编码器 CLIP ViT-L/14 的最后一层被永久删除。该operation step条件以类似于 SDXL 的额外嵌入的方式添加到层嵌入中。

此外,由于此模型的唯一目的是处理现有图像,因此该模型与 WD14 标记器严格一致,没有任何其他增强。您应该始终使用 WD14 标记器来处理输入图像以获取提示。否则,结果可能会有缺陷。人工编写的提示未经测试。

paints_undo_multi_frame

该模型是通过从VideoCrafter系列恢复而进行训练的,但未使用原始 Crafter lvdm,所有训练/推理代码均完全从头开始实现。

整体架构类似Crafter,包含5个组件,3D-UNet,VAE,CLIP,CLIP-Vision,Image Projection。

  • VAE:VAE 与从ToonCrafter中提取的动漫 VAE 完全相同。

  • 3D-UNet:3D-UNet 是在 Crafters 的基础上修改的,对注意力模块进行了修订。

  • CLIP:SD2.1的CLIP。

  • CLIP-Vision:Clip Vision (ViT/H) 通过插入位置嵌入来支持任意宽高比。

  • 图像投影:实现了一个微型转换器,它以两帧作为输入,每帧输出 16 个图像嵌入。

效果展示

试用教程

Gradio 界面

  • 步骤 0:上传图像或单击页面底部的示例图像。

  • 步骤 1:在标题为“步骤 1”的 UI 中,单击生成提示以获取全局提示。

  • 步骤 2:在标题为“步骤 2”的用户界面中,单击“生成关键帧”。您可以在左侧更改种子或其他参数。

  • 步骤 3:在标题为“步骤 3”的用户界面中,单击“生成视频”。您可以在左侧更改种子或其他参数。

本地部署

本地部署 PaintsUndo:
git clone https://github.com/lllyasviel/Paints-UNDO.git
cd Paints-UNDO
conda create -n paints_undo python=3.10
conda activate paints_undo
pip install xformers
pip install -r requirements.txt
python gradio_app.py

推理是在 Nvidia 4090 和 3090TI 上使用 24GB VRAM 进行测试的。它也可以与 16GB VRAM 配合使用,但与 8GB 配合使用则不行。我的估计是,在极端优化(包括权重卸载和切片注意力)下,理论上最低 VRAM 要求约为 10~12.5 GB。

大约需要 5 到 10 分钟才能处理一张图片。通常情况下,您将获得一段时长为 25 秒、FPS 为 4 的视频,分辨率为 320x512、512x320、384x448 或 448x384。

免责声明

该项目旨在开发人类绘画行为的基础模型,帮助未来的人工智能系统更好地满足人类艺术家的真正需求。用户可以自由地使用此工具创建内容,但应遵守当地法律并负责任地使用它。用户不得使用该工具生成虚假信息或煽动对抗。开发人员对用户可能滥用的行为不承担任何责任。

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

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

相关文章

【JUC】使用CompletableFuture执行异步任务

文章目录 Future接口介绍Future接口常用实现类FutureTaskFuture接口能干什么Future接口相关架构FutureTask初步使用Future编码实战和优缺点分析优点缺点获取结果的方式不优雅结论 完成一些复杂的任务 CompletableFuture对Future的改进CompletableFuture为什么会出现Completable…

解决nginx代理静态资源刷新后404问题

背景 在公司的项目中,有一个管理系统,大致的逻辑是通过nginx代理的静态资源, 正常页面跳转是没有问题的,有的时候我们会使用回车或者F5进行 页面刷新的时候都会出现404问题。 解决 这种我怀疑是nginx的配置不到位的问题。 我在本…

数据库管理-第218期 服务器内存(20240711)

数据库管理218期 2024-07-11 数据库管理-第218期 服务器内存(20240711)1 内存2 ECC内存3 原理3.1 多副本传输3.2 纠错码3.3 汉明码 总结 数据库管理-第218期 服务器内存(20240711) 作者:胖头鱼的鱼缸(尹海文…

数据库第六次

视图 salary decimal(10,2) not null default 0 comment ‘工资’, address varchar(200) not null default ‘’ comment ‘通讯地址’, dept_id int comment ‘部门编号’ ); create index idx_name on emp(emp_name); create index idx_birth on emp(birth); create index…

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【密钥删除(ArkTS)】

密钥删除(ArkTS) 为保证数据安全性,当不需要使用该密钥时,应该删除密钥。 开发步骤 以删除HKDF256密钥为例。 确定密钥别名keyAlias,密钥别名最大长度为64字节。初始化密钥属性集。用于删除时指定密钥的属性TAG,比如删除的密钥…

【java】力扣 合并k个升序链表

文章目录 题目链接题目描述思路代码 题目链接 23.合并k个升序链表 题目描述 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表 思路 我在这个题里面用到了PriorityQueue(优先队列) 的知识 Prio…

顶顶通呼叫中心中间件实现随时启动和停止质检(mod_cti基于FreeSWITCH)

文章目录 前言联系我们拨号方案启动停止ASR执行FreeSWITCH 命令接口启动ASR接口停止ASR接口 通知配置cti.json配置质检结果写入数据库 前言 顶顶通呼叫中心中间件的实时质检功能是由两个模块组成:mod_asr 和 mod_qc。 mod_asr:负责调用ASR将用户们在通…

进程通信(1):无名管道(pipe)

无名管道(pipe)用来具有亲缘关系的进程之间进行单向通信。半双工的通信方式,数据只能单向流动。 管道以字节流的方式通信,数据格式由用户自行定义。 无名管道多用于父子进程间通信,也可用于其他亲缘关系进程间通信。 因为父进程调用fork函…

开发个人Ollama-Chat--10 绑定域名

开发个人Ollama-Chat–10 绑定域名 域名购买最好找正规的渠道购买,不要因贪图小便宜而多走很多的弯路。我就是第一次购买域名,到了一个坑壁的平台"西部数码",SSL证书申请了2个月,没下来,客服也贼不专业&…

猫头虎:什么是内耗?

猫头虎 🐯 建联猫头虎,商务合作,产品评测,产品推广,个人自媒体创作,超级个体,涨粉秘籍,一起探索编程世界的无限可能! 摘要 内耗是指在工作或学习过程中,个…

leetcode日记(37)旋转图像

方法是看评论区想出来的&#xff1a;先将矩阵转置&#xff0c;再将每一行逆转 class Solution { public: int n,m,l,k; struct bian{int u;int v;int d; }; void digui(int loc,int c[],vector<bian> bi,int now,int q,bool colour[],int& maxx,bool jg[]){if(q>…

网络协议 — Keepalived 高可用方案

目录 文章目录 目录Keepalived 是实现了 VRRP 协议的软件Keepalived 的软件架构VRRP StackCheckersKeepalived 的配置Global configurationvrrp_scriptVRRP Configurationvrrp synchroization groupvrrp instancevirtual ip addressesvirtual routesLVS Configurationvirtual_s…

偶数位的数c++

题目描述 给你两个整数 l,r&#xff0c;求 l∼r 范围内有多少个位数为偶数的数。 输入 一行两个整数 l,r。 输出 输出位数为偶数的数的数量。 样例输入 5 15样例输出 6 提示 样例解释 10,11,12,13,14,15 位数为偶数&#xff0c;都是两位数。 数据规模与约定 对于 1…

数据结构之线性表表示集合详解与示例(C,C#,C++)

文章目录 基本特征线性表的特点&#xff1a;线性表的表示方法&#xff1a;C、C#和C语言如何实现一个线性表表示集合1. C实现2. C#实现3. C实现 总结 线性表是计算机数据结构中的一个基本概念&#xff0c;它是一种最简单的抽象数据类型。在线性表中&#xff0c;数据元素之间的关…

Qt进阶版五子棋

五子棋是一种两人对弈的棋类游戏&#xff0c;目标是在横、竖、斜任意方向上连成五个子。在Qt中实现五子棋程序&#xff0c;你需要设计棋盘界面、处理下棋逻辑、判断胜负等。以下是实现一个基本五子棋程序的步骤&#xff1a; 创建项目和界面 使用Qt Creator创建一个新的Qt Widge…

academic-homepage:快速搭建个人学术主页,页面内容包括个人简介、教育经历、发布过的学术列表等,同时页面布局兼容移动端。

今天给大家分享GitHub 上一个开源的 GitHub Pages 模板 academic-homepage。 可帮助你快速搭建个人学术主页&#xff0c;页面内容包括个人简介、教育经历、发布过的学术列表等最基本内容&#xff0c;同时页面布局兼容移动端。 相关链接 github.com/luost26/academic-homepage …

Java语言程序设计——篇四(1)

类和对象 面向对象概述面向过程与面向对象面向对象基本概念面向对象的基本特征面向对象的优势及应用 为对象定义类类的修饰符成员变量成员变量-修饰符 构造方法⭐️成员方法成员方法-修饰符例题讲解 ⚠️理解栈和堆 面向对象概述 两种程序设计方法 结构化程序设计&#xff0c…

Linux RTL8111/RTL8168 不能联网 / 最新版驱动下载安装

注&#xff1a; 机翻&#xff0c;未校对。 如何让 Realtek RTL8111/RTL8168 在 Linux 下工作 这篇文章于 2016 年 8 月在我原来的博客上发布。尽管如今 Linux 下的 RTL8111/RTL8168 网络接口的情况变得越来越稳定&#xff0c;但它们仍然会导致数据包丢失或网络连接不稳定等问题…

Python统计实战:时间序列分析之Winters指数平滑法预测

为了解决特定问题而进行的学习是提高效率的最佳途径。这种方法能够使我们专注于最相关的知识和技能&#xff0c;从而更快地掌握解决问题所需的能力。 &#xff08;以下练习题来源于《统计学—基于Python》。请在Q群455547227下载原始数据。&#xff09; 练习题 下表是某地区2…

C到C嘎嘎的衔接篇

本篇文章&#xff0c;是帮助大家从C向C嘎嘎的过渡&#xff0c;那么我们直接开始吧 不知道大家是否有这样一个问题&#xff0c;学完C的时候感觉还能听懂&#xff0c;但是听C嘎嘎感觉就有点难度或者说很难听懂&#xff0c;那么本篇文章就是帮助大家从C过渡到C嘎嘎。 C嘎嘎与C的区…