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