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) 作者:胖头鱼的鱼缸(尹海文…

华为生成树协议技术概述

生成树协议(Spanning Tree Protocol,STP)是一种网络协议,旨在防止以太网网络中发生环路。环路会导致广播风暴、MAC地址表混乱等问题,从而严重影响网络性能和稳定性。华为交换机支持多种生成树协议,包括STP、…

数据库第六次

视图 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将用户们在通…

算法训练营day08 字符串(反转,替换,综合运用(逻辑+反转))

💡 解题思路 📝 确定输入与输出🔍 分析复杂度🔨 复杂题目拆分 :严谨且完整 地拆分为更小的可以解决的子问题(字符的逻辑拆分)–(多总结)💭 选择处理逻辑&…

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

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

Git 2.45.2源码安装

环境 Centos 7 安装环境依赖 $ yum install curl-devel gcc-c zlib zlib-devel perl-ExtUtils-MakeMaker package下载git $ wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.45.2.tar.gz $ tar -xzvf git-2.45.2.tar.gz安装git $ cd git-2.45.2 ./…

Docker修改国内镜像源

如果docker已将安装好 参考:https://github.com/cmliu/CF-Workers-docker.io sudo mkdir -p /etc/dockercd /etc/dockersudo vim daemon.json #输入以下内容 { "registry-mirrors": ["https://docker.fxxk.dedyn.io"] } #重启docker服务 su…

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

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

猫头虎:什么是内耗?

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

视频转文字、语音转文字助手 — 免费、支持多种语言

在快节奏的数字时代,时间就是金钱,效率就是生命。当您的双手被束缚在键盘上,当您需要快速整理会议记录,或是将那些宝贵的音频和视频资料转化为可编辑的文字,「想转就转语音转文字助手」就是您的得力助手! …

突破与创新:Vue.js 创始人 尤雨溪 2024 年度技术前瞻

本文将深入探讨以下主题的 尤雨溪 见解:Vite 5对Vue的影响、宏、vapor模式、常见误解、新特性或功能、未来版本对Option API的支持、VitePress等。 . 2.尤大的问答环节 2.1. Vite 5如何提升Vue的性能? Vite在提高性能方面的工作通常是针对Vite本身的。然…

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>…

PyMysql error : Packet Sequence Number Wrong - got 1 expected 0

文章目录 错误一错误原因解决方案 错误二原因解决方案 我自己知道的&#xff0c;这类问题有两类原因&#xff0c;两种解决方案。 错误一 错误原因 pymysql的主进程启动的connect无法给子进程中使用&#xff0c;所以读取大批量数据时最后容易出现了此类问题。 解决方案 换成…

网络协议 — 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…