当前位置: 首页 > article >正文

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 引导
    • 2. Null-text Inversion
  • 二. vid2vid-zero
  • 三. 复现

一. 预备知识

1. diffusion 引导

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

  • 分类器引导 (classifier-guided diffusion) 1:扩散模型在生成过程中通过一个预训练的噪声分类器提供额外的引导信号,模型通过计算生成数据的分类概率梯度来指导生成的方向,从而增强条件生成的准确性。分类器引导扩散模型可以更精确地控制生成的样本,但生成速度较慢;
  • 无分类器引导 (classifier-free diffusion) 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)+(1w)ϵθ(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 是一种在 text-to-image 生成任务中使用的技术,用于优化和改进模型对输入文本的理解和生成能力。Null-text Inversion 的核心思想是在训练阶段引入空文本 (null text) 描述作为输入,通过在每一时间步训练这些 null text 使其尽可能接近真实的文本描述,这样模型可以学习在缺乏明确条件的情况下如何生成更具代表性和高质量的图像。
在这里插入图片描述
由于 DDIM Inversion 每一步都会产生误差,对于无条件 diffusion,累积误差可以忽略。但是对于 classifier-free diffusion,累积误差会不断增加,最终反演所得的噪声可能会偏离高斯分布,这样再经过 DDIM 采样最终生成的图像会严重偏离原图像 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 zt1zt1 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 的核心是:

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

在这里插入图片描述

三. 复现

  • 平台:AutoDL
  • 显卡:RTX 4090 24G
  • 镜像:PyTorch 2.0.0、Python 3.8(ubuntu20.04)、Cuda 11.8
  • 源码:https://github.com/baaivision/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. 报错,增加该字段即可:
    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的图像编辑技术 ↩︎


http://www.kler.cn/a/510952.html

相关文章:

  • 什么宠物最好养?
  • [Qt] Box Model | 控件样式 | 实现log_in界面
  • 微信小程序
  • 初学stm32 --- flash模仿eeprom
  • Adobe与MIT推出自回归实时视频生成技术CausVid。AI可以边生成视频边实时播放!
  • 数据可视化:让数据讲故事的艺术
  • VMware Workstation Pro 17免费开放,再也不用到处找license了
  • Mac开启任何来源安装配置环境变量
  • GitLab集成Jira
  • 【Excel超实用,VLOOKUP函数,通过excel数据精准匹配,将一个excel文件的某列数据,用另一个excel文件快速填充】
  • git是什么及Linux git操作
  • [EAI-018] π0: A Vision-Language-Action Flow Model for General Robot Control
  • Pytorch 自学笔记(三):利用自定义文本数据集构建Dataset和DataLoader
  • Qt——界面优化
  • Windows电脑安装File Browser与cpolar轻松搭建本地云盘
  • Vscode:问题解决办法 及 Tips 总结
  • Go语言简洁框架目录和高效的快发框架设计
  • Tomcat下载配置
  • AI agent 在 6G 网络应用,无人机群控场景
  • 安全策略配置实验
  • postgresql链接详解
  • window.location.href 与form method=post 一起使用时需要注意这个问题
  • 全自动化河道水位监测系统:实时传输与远程监控
  • MySQL基于gtid的主从同步配置
  • Mono里运行C#脚本29—mono_trampolines_init
  • 管理口令安全和资源(一)