同样是图生视频,PaintsUndo 走出了不一样的路线。
ControlNet 作者 Lvmin Zhang 又开始整活了!这次瞄准绘画领域。
新项目 PaintsUndo 刚上线不久,就收获 1.4k star(还在疯狂涨)。
项目地址:https://github.com/lllyasviel/Paints-UNDO
通过该项目,用户输入一张静态图像,PaintsUndo 就能自动帮你生成整个绘画的全过程视频,从线稿到成品都有迹可循。
绘制过程,线条变化多端甚是神奇,最终视频结果和原图像非常相似:
我们再来看一个完整的绘画过程。PaintsUndo 先是用简单的线条勾勒出人物主体,然后画出背景,涂上颜色,最后精调成和原图相似。
PaintsUndo 不止局限于单一图像风格,对于不同类型的图像,也会生成相应的绘画过程视频。
戴着头巾的柯基犬眼神温柔地望向远方:
用户也可以输入单张图像,输出多个视频:
不过,PaintsUndo 也存在缺点,比如处理复杂的构图存在困难,作者表示项目还在不断完善。
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 进行推理测试。作者估计,在极端优化(包括权重卸载和注意力切片)的情况下,理论上 VRAM 需求最小约为 10-12.5 GB。PaintsUndo 预计可以在大约 5 到 10 分钟内处理一张图像,具体取决于相关设置,通常会得到时长 25 秒,分辨率为 320x512、512x320、384x448 或 448x384 的视频。
目前该项目发布了两个模型:单帧模型 paints_undo_single_frame 和多帧模型 paints_undo_multi_frame。
单帧模型采用 SD1.5 的修改架构,以一幅图像和一个操作步骤作为输入,输出一幅图像。假设一件艺术品通常需要经过 1000 次人工操作才能创作出来(例如一笔是一次操作),那么操作步长是 0-999 之间的整数。数字 0 是最终完成的艺术品,数字 999 是在纯白画布上绘制的第一笔。
多帧模型基于 VideoCrafter 系列模型,但没有使用原始 Crafter 的 lvdm,所有训练 / 推理代码完全从头开始实现。项目作者对神经网络的拓扑进行了很多修改,并且经过大量训练后,神经网络的行为与原始 Crafter 有很大不同。
多帧模型的整体架构类似于 Crafter,包含 5 个组件:3D-UNet、VAE、CLIP、CLIP-Vision、Image Projection。
多帧模型以两幅图像作为输入,输出两幅输入图像之间的 16 个中间帧。多帧模型的结果比单帧模型更加一致,但速度也慢得多,「创意」更少,并且仅限于 16 帧。
PaintsUndo 默认一起使用单帧模型和多帧模型。首先会用单帧模型推断大约 5-7 次,得到 5-7 个「关键帧」,然后使用多帧模型对这些关键帧进行「插值」,最终生成一个相对较长的视频。
文章来源于“机器之心”