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的图像编辑技术 ↩︎

相关推荐
宁南山5 天前
比迪丽LoRA模型AE做片段视频素材生成:动态背景与元素创作
stable diffusion·ai绘画·lora模型·视频素材生成
日光明媚7 天前
DMD 一步扩散核心原理:从符号定义到梯度推导
人工智能·机器学习·计算机视觉·ai作画·stable diffusion·aigc
baidu_huihui9 天前
ComfyUI 是一款专为 Stable Diffusion 打造的开源可视化操作工具
stable diffusion
李昊哲小课10 天前
Stable Diffusion 保姆级教程|HF 国内镜像配置 + 一键安装 + 本地模型加载 + 完整代码
stable diffusion·hugging face
yumgpkpm10 天前
Qwen3.6正式开源,华为昇腾910B实现高效适配
华为·ai作画·stable diffusion·开源·ai写作·llama·gpu算力
数智工坊12 天前
深度拆解AnomalyAny:异常检测新工作,利用Stable Diffusion生成真实多样异常样本!
人工智能·pytorch·python·stable diffusion
语戚16 天前
深度解析:Stable Diffusion 底层原理 + U-Net Denoise 去噪机制全拆解
人工智能·ai·stable diffusion·aigc·模型
平安的平安17 天前
用 Python 玩转 AI 绘图:Stable Diffusion 本地部署指南
人工智能·python·stable diffusion
语戚17 天前
Stable Diffusion 核心模块深度拆解:CLIP、U-Net 与 VAE 原理全解析
人工智能·ai·stable diffusion·aigc·模型
yumgpkpm19 天前
华为昇腾910B上用Kubernetes(K8s)部署LLM和用Docker部署LLM的区别
docker·chatgpt·容器·stable diffusion·kubernetes·llama·gpu算力