vid2vid-zero:使用Stable Diffusion进行零样本视频编辑

Paper : Wang W, Jiang Y, Xie K, et al. Zero-shot video editing using off-the-shelf image diffusion models[J]. arXiv preprint arXiv:2303.17599, 2023.
Introduction : Unreleased
Code : https://github.com/baaivision/vid2vid-zero

目录

  • [一. 预备知识](#一. 预备知识)
    • [1. diffusion 引导](#1. diffusion 引导)
    • [2. Null-text Inversion](#2. Null-text Inversion)
  • [二. vid2vid-zero](#二. vid2vid-zero)
  • [三. 复现](#三. 复现)

一. 预备知识

1. diffusion 引导

分类器引导 (classifier-guided) 和无分类器引导 (classifier-free) 是 diffusion 在采样和生成时的两种不同方法,它们的区别主要在于引导生成过程中如何处理条件信息:

  • 分类器引导 (classifier-guided diffusion) [1](#1):扩散模型在生成过程中通过一个预训练的噪声分类器提供额外的引导信号,模型通过计算生成数据的分类概率梯度来指导生成的方向,从而增强条件生成的准确性。分类器引导扩散模型可以更精确地控制生成的样本,但生成速度较慢;
  • 无分类器引导 (classifier-free diffusion) [2](#2):无分类器引导扩散模型不依赖单独训练的分类器来提供条件引导,而是将条件信息直接引入到扩散模型的训练和采样过程中:无分类器引导在训练时会同时学习有条件和无条件的去噪扩散模型,在生成时通过调节有条件和无条件生成之间的平衡进行采样:
    ϵ ~ θ ( z λ , c ) = w ϵ θ ( z λ , c ) + ( 1 − w ) ϵ θ ( z λ ) \tilde{\boldsymbol{\epsilon}}\theta\left(\mathbf{z}\lambda, \mathbf{c}\right)=w \boldsymbol{\epsilon}\theta\left(\mathbf{z}\lambda, \mathbf{c}\right)+(1-w) \boldsymbol{\epsilon}\theta\left(\mathbf{z}\lambda\right) ϵ~θ(zλ,c)=wϵθ(zλ,c)+(1−w)ϵθ(zλ)

    无分类器引导可以通过调整引导系数 w w w 灵活地控制生成结果的条件强度,但引导控制需要合适的超参数调节,否则可能导致生成质量下降。Stable Diffusion 中引导系数默认为 7.5。

2. Null-text Inversion

Paper: Mokady R, Hertz A, Aberman K, et al. Null-text inversion for editing real images using guided diffusion models[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2023: 6038-6047.

Introduction: https://null-text-inversion.github.io/

Code: https://github.com/google/prompt-to-prompt

Null-text Inversion [3](#3) 是一种在 text-to-image 生成任务中使用的技术,用于优化和改进模型对输入文本的理解和生成能力。Null-text Inversion 的核心思想是在训练阶段引入空文本 (null text) 描述作为输入,通过在每一时间步训练这些 null text 使其尽可能接近真实的文本描述,这样模型可以学习在缺乏明确条件的情况下如何生成更具代表性和高质量的图像。

由于 DDIM Inversion 每一步都会产生误差,对于无条件 diffusion,累积误差可以忽略。但是对于 classifier-free diffusion,累积误差会不断增加,最终反演所得的噪声可能会偏离高斯分布,这样再经过 DDIM 采样最终生成的图像会严重偏离原图像 [4](#4)

因此,作者提出 Pivotal Inversion:将先使用引导系数 w = 1 w = 1 w=1(即 diffusion 中仅使用有条件生成)反演原始图像,将反演过程中的噪声作为 pivotal,用来提供图像的原始信息。然后设定新的引导系数进行反演,优化每一个时间步的 null-text,使该步的隐变量尽可能接近 pivotal 中对应步的隐变量:
min ⁡ ∥ z t − 1 ∗ − z t − 1 ∥ 2 2 , where z 0 ∗ = z 0 , z ˉ T = z T ∗ \min \left\|z_{t-1}^*-z_{t-1}\right\|_2^2 \text { , where } z_0^*=z_0, \bar{z}_T=z_T^* min zt−1∗−zt−1 22 , where z0∗=z0,zˉT=zT∗

Pivotal Inversion 不再像 DDIM Inversion 所有时间步共用一个 null-text embedding,而是在每个时间步优化不同的 null-text embedding 以提高重建质量。Null-text embedding 优化完成后,再使用 Prompt-to-Prompt 方法对图像进行编辑,就能够在成功编辑的同时尽最大可能维护图像的原始结构。

二. vid2vid-zero

vid2vid-zero 是一种 zero-shot 视频编辑方法,能够在没有任何训练的情况下,利用注意力机制实现双向时间建模。vid2vid-zero 的核心是:

  • 无文本反演模块:用于文本到视频的对齐;
  • 跨帧建模模块:确保时间一致性;
  • 空间正则化模块:保证与原视频的忠实度。

三. 复现

实验过程

  1. 克隆仓库后,创建虚拟环境 vid2vid_zero 并按照 README 安装依赖;

  2. 下载 stable diffusion v1-4 节点,修改配置文件中的 pretrained_model_path 值,并修改 vid2vid_zero/p2p/null_text_w_ptp.pyvid2vid_zero/p2p/p2p_stable.py 中的 pretrained_model_path

  3. 因为 vid2vid-zero 不支持分布式计算,所以需要指定一张 GPU 进行推理。遇到 NotImplementedError: Using RTX 4000 series doesn't support faster communication broadband via P2P or IB. Please set NCCL_P2P_DISABLE="1" and NCCL_IB_DISABLE="1" or use accelerate launch which will do this automatically. 报错,增加该字段即可:

    bash 复制代码
    CUDA_VISIBLE_DEVICES=0 NCCL_P2P_DISABLE="1" NCCL_IB_DISABLE=1 accelerate launch test_vid2vid_zero.py --config configs/car-turn.yaml
  4. 随后即可开始训练:


  1. Dhariwal P, Nichol A. Diffusion models beat gans on image synthesis[J]. Advances in neural information processing systems, 2021, 34: 8780-8794. ↩︎

  2. Ho J, Salimans T. Classifier-free diffusion guidance[J]. arXiv preprint arXiv:2207.12598, 2022. ↩︎

  3. Mokady R, Hertz A, Aberman K, et al. Null-text inversion for editing real images using guided diffusion models[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2023: 6038-6047. ↩︎

  4. 【AIGC第八篇】Null-text Inversion:基于Null Prompt Finetuning的图像编辑技术 ↩︎

相关推荐
源客z1 天前
搭建Stable Diffusion图像生成系统实现通过网址访问(Ngrok+Flask实现项目系统公网测试,轻量易部署)
stable diffusion
源客z2 天前
搭建 Stable Diffusion 图像生成系统并通过 Ngrok 暴露到公网(实现本地系统网络访问)——项目记录
stable diffusion
朴拙数科4 天前
Stable Diffusion秋叶整合包V4独立版Python本地API连接指南
开发语言·python·stable diffusion
璇转的鱼5 天前
爆肝整理!Stable Diffusion的完全使用手册(二)
人工智能·ai作画·stable diffusion·aigc
曲幽5 天前
Stable Diffusion LoRA模型加载实现风格自由
python·ai·stable diffusion·lora·文生图·diffusers
nan_black7 天前
在Pycharm配置stable diffusion环境(使用conda虚拟环境)
stable diffusion·pycharm·conda
AI绘画咪酱8 天前
Stable Diffusion【进阶篇】:如何实现人脸一致
人工智能·深度学习·学习·机器学习·ai作画·stable diffusion
AIGC-Lison8 天前
AI绘画SD中,如何保持生成人物角色脸部一致?Stable Diffusion精准控制AI人像一致性两种实用方法教程!
人工智能·ai作画·stable diffusion·midjourney·sd
AI绘画咪酱9 天前
SD教程|巧用Stable Diffusion,实现不同风格的LOGO设计|实战篇幅,建议收藏!
人工智能·学习·ai作画·stable diffusion·sd
AI绘画咪酱10 天前
【CSDN首发】Stable Diffusion从零到精通学习路线分享
人工智能·学习·macos·ai作画·stable diffusion·aigc