Rerender_A_Video

Rerender_A_Video

零样本文本引导的视频风格转换框架

Rerender_A_Video项目提出了一种零样本文本引导的视频到视频转换框架。该框架通过关键帧转换和全视频转换,实现了视频风格和纹理的时间一致性。无需重新训练,可与现有图像扩散技术兼容,支持使用LoRA自定义主题和ControlNet引入空间引导。这种方法能生成高质量、时间连贯的风格化视频。

Rerender A Video视频转换AI视频处理时间一致性零样本学习Github开源项目

Rerender A Video - 官方 PyTorch 实现

预览图

Rerender A Video: 零样本文本引导的视频到视频转换<br> 杨帅, 周一凡, 刘子为罗乔恩<br> 发表于 SIGGRAPH Asia 2023 会议论文集 <br> 项目主页 | 论文 | 补充视频 | 输入数据和视频结果 <br>

<a href="https://huggingface.co/spaces/Anonymous-sub/Rerender"><img src="https://yellow-cdn.veclightyear.com/835a84d5/0788f599-299f-4c5d-9ecc-507f936208db.svg" alt="网页演示"></a> 访问量

摘要: 大型文本到图像扩散模型在生成高质量图像方面展现出令人印象深刻的能力。然而,将这些模型应用到视频领域时,确保视频帧之间的时间一致性仍然是一个巨大的挑战。本文提出了一种新颖的零样本文本引导的视频到视频转换框架,以将图像模型适配到视频。该框架包括两个部分:关键帧转换和全视频转换。第一部分使用改进的扩散模型生成关键帧,同时应用分层的跨帧约束来强制形状、纹理和颜色的一致性。第二部分通过时间感知的补丁匹配和帧混合将关键帧传播到其他帧。我们的框架以较低的成本(无需重新训练或优化)实现了全局风格和局部纹理的时间一致性。该适配方法与现有的图像扩散技术兼容,使我们的框架能够利用它们的优势,例如使用LoRA定制特定对象,以及使用ControlNet引入额外的空间引导。大量的实验结果证明了我们提出的框架在渲染高质量和时间连贯的视频方面优于现有方法。

特点:<br>

  • 时间一致性: 跨帧约束实现低级时间一致性。
  • 零样本: 无需训练或微调。
  • 灵活性: 与现成模型(如ControlNet, LoRA)兼容,实现定制转换。

更新

待办事项

  • 集成到Diffusers。
  • FreeU集成到Rerender
  • 在README.md中添加推理说明。
  • 在WebUI中添加示例。
  • 在流水线中添加可选的泊松融合。
  • 为Windows添加安装说明

安装

请确保您的安装路径只包含英文字母或下划线

  1. 克隆仓库。(别忘了--recursive。否则,请运行git submodule update --init --recursive)
git clone git@github.com:williamyang1991/Rerender_A_Video.git --recursive cd Rerender_A_Video
  1. 如果您已安装PyTorch CUDA,可以直接用pip设置环境。
pip install -r requirements.txt

您也可以从头创建新的conda环境。

conda env create -f environment.yml conda activate rerender

需要24GB显存。请参考https://github.com/williamyang1991/Rerender_A_Video/pull/23#issue-1900789461 以减少内存消耗。

  1. 运行安装脚本。所需模型将下载到./models
python install.py
  1. 您可以用rerender.py运行演示
python rerender.py --cfg config/real2sculpture.json

(1) 推理

WebUI (推荐)

python webUI.py

Gradio应用程序还允许您灵活更改推理选项。尝试一下以了解更多详情。(对于WebUI,您需要在安装后下载revAnimated_v11realisticVisionV20_v20./models/)

上传您的视频,输入提示词,选择种子,然后点击:

  • 运行第一关键帧: 只转换第一帧,这样您可以在运行整个视频之前调整提示词/模型/参数以找到理想的输出外观。
  • 运行关键帧: 根据第一帧的设置转换所有关键帧,这样您可以在运行整个视频之前调整与时间相关的参数以获得更好的时间一致性。
  • 运行传播: 将关键帧传播到其他帧以实现完整视频转换
  • 全部运行: 运行第一关键帧运行关键帧运行传播

界面

我们提供了丰富的高级选项供您使用

<details id="option0"> <summary> <b>使用自定义模型</b></summary> - 使用LoRA/Dreambooth/微调/混合SD模型 - 修改`sd_model_cfg.py`以添加保存的SD模型路径 - 如何使用LoRA: https://github.com/williamyang1991/Rerender_A_Video/issues/39#issuecomment-1730678296 - 使用ControlNet的其他控制(如深度、姿势) - 在此处添加更多选项,如`control_type = gr.Dropdown(['HED', 'canny', 'depth']` https://github.com/williamyang1991/Rerender_A_Video/blob/b6cafb5d80a79a3ef831c689ffad92ec095f2794/webUI.py#L690 - 按照以下方式添加模型加载选项`elif control_type == 'depth':` https://github.com/williamyang1991/Rerender_A_Video/blob/b6cafb5d80a79a3ef831c689ffad92ec095f2794/webUI.py#L88 - 按照以下方式添加模型检测器`elif control_type == 'depth':` https://github.com/williamyang1991/Rerender_A_Video/blob/b6cafb5d80a79a3ef831c689ffad92ec095f2794/webUI.py#L122 - 这里给出了一个示例[链接](https://huggingface.co/spaces/Anonymous-sub/Rerender/discussions/10/files)

第一帧翻译的高级选项

  1. 分辨率相关(帧分辨率左/上/右/下裁剪长度):裁剪帧并将其短边调整为512。
  2. ControlNet相关:
    • ControlNet强度:输出与输入控制边缘的匹配程度
    • 控制类型:HED边缘或Canny边缘
    • Canny低/高阈值:低值可获得更多边缘细节
  3. SDEdit相关:
    • 去噪强度:重绘程度(低值使输出更接近原始视频)
    • 保留颜色:保留原始视频的颜色
  4. SD相关:
    • 步数:去噪步骤
    • CFG比例:输出与提示的匹配程度
    • 基础模型:基础Stable Diffusion模型(SD 1.5)
    • 附加提示/负面提示:补充提示
  5. FreeU相关:
    • FreeU第一/第二阶段骨干因子:=1无效果;>1增强输出颜色和细节
    • FreeU第一/第二阶段跳跃因子:=1无效果;<1增强输出颜色和细节

关键帧翻译的高级选项

  1. 关键帧相关
    • 关键帧频率(K):每K帧均匀采样关键帧。大幅或快速运动时使用小值。
    • 关键帧数量(M):最终输出视频将有K*M+1帧,包含M+1个关键帧。
  2. 时间一致性相关
    • 跨帧注意力:
      • 跨帧注意力开始/结束:应用跨帧注意力以保持全局风格一致性的时间
      • 跨帧注意力更新频率(N):每N个关键帧更新一次参考风格帧。长视频应使用大值以避免错误累积。
      • 宽松跨帧注意力:在更少层使用跨帧注意力,以更好地匹配输入视频(适用于大幅运动的视频)
    • 形状感知融合 勾选使用此功能
      • 形状感知融合开始/结束:应用形状感知融合以保持局部形状一致性的时间
    • 像素感知融合 勾选使用此功能
      • 像素感知融合开始/结束:应用像素感知融合以保持像素级时间一致性的时间
      • 像素感知融合强度:保留非修复区域的强度。小值避免错误累积。大值避免模糊纹理。
      • 像素感知融合细节级别:锐化修复区域的强度。小值避免错误累积。大值避免模糊纹理。
      • 平滑融合边界:勾选以平滑修复边界(避免错误累积)。
    • 颜色感知AdaIN 勾选使用此功能
      • 颜色感知AdaIN开始/结束:应用AdaIN使视频颜色与第一帧一致的时间

完整视频翻译的高级选项

  1. 梯度混合:应用泊松混合以减少重影伪影。可能会减慢处理速度并增加闪烁。
  2. 并行进程数:多进程加速处理。建议使用大值(8)。

命令行

我们还提供了一个灵活的脚本rerender.py来运行我们的方法。

简单模式

通过命令行设置选项。例如,

python rerender.py --input videos/pexels-antoni-shkraba-8048492-540x960-25fps.mp4 --output result/man/man.mp4 --prompt "梵高画作中的一个英俊男人"

该脚本将运行完整流程。将在result/man创建一个工作目录,结果视频将保存为result/man/man.mp4

高级模式

通过配置文件设置选项。例如,

python rerender.py --cfg config/van_gogh_man.json

该脚本将运行完整流程。 我们在config目录中提供了一些配置示例。 配置中的大多数选项与WebUI中的相同。 请查看WebUI部分的解释。

通过在配置中设置sd_model来指定自定义模型。例如:

{ "sd_model": "models/realisticVisionV20_v20.safetensors", }

自定义流程

与WebUI类似,我们提供三步工作流程:重新渲染第一个关键帧,然后重新渲染所有关键帧,最后通过传播重新渲染完整视频。要仅运行单个步骤,请指定选项-one-nb-nr

  1. 重新渲染第一个关键帧
python rerender.py --cfg config/van_gogh_man.json -one -nb
  1. 重新渲染所有关键帧
python rerender.py --cfg config/van_gogh_man.json -nb
  1. 通过传播重新渲染完整视频
python rerender.py --cfg config/van_gogh_man.json -nr

我们的Ebsynth实现

我们提供了一个单独的Ebsynth Python脚本video_blend.py,使用Stylizing Video by Example中介绍的时间混合算法来插值关键帧之间的风格。 它可以独立于我们的Rerender算法,处理您自己的风格化关键帧。

用法:

video_blend.py [-h] [--output OUTPUT] [--fps FPS] [--beg BEG] [--end END] [--itv ITV] [--key KEY] [--n_proc N_PROC] [-ps] [-ne] [-tmp] name 位置参数: name 输入视频路径 可选参数: -h, --help 显示此帮助消息并退出 --output OUTPUT 输出视频路径 --fps FPS 输出视频的FPS --beg BEG 要风格化的第一帧索引 --end END 要风格化的最后一帧索引 --itv ITV 关键帧间隔 --key KEY 风格化关键帧的子文件夹名称 --n_proc N_PROC 最大进程数 -ps 使用泊松梯度混合 -ne 不运行ebsynth(使用之前的ebsynth输出) -tmp 保留临时输出

例如,要在视频man.mp4上运行Ebsynth,

  1. 将风格化的关键帧每10帧放入videos/man/keys(命名为0001.png0011.png等)
  2. 将原始视频帧放入videos/man/video(命名为0001.png0002.png等)。
  3. 使用泊松梯度混合在视频的前101帧上运行Ebsynth,并以25 FPS将结果保存为videos/man/blend.mp4,使用以下命令:
python video_blend.py videos/man \ --beg 1 \ --end 101 \ --itv 10 \ --key keys \ --output videos/man/blend.mp4 \ --fps 25.0 \ -ps

(2) 结果

关键帧翻译

<table class="center"> <tr> <td><img src="https://github.com/williamyang1991/Rerender_A_Video/assets/18130694/18666871-f273-44b2-ae67-7be85d43e2f6" raw=true></td> <td><img src="https://github.com/williamyang1991/Rerender_A_Video/assets/18130694/61f59540-f06e-4e5a-86b6-1d7cb8ed6300" raw=true></td> <td><img src="https://github.com/williamyang1991/Rerender_A_Video/assets/18130694/8e8ad51a-6a71-4b34-8633-382192d0f17c" raw=true></td> <td><img src="https://github.com/williamyang1991/Rerender_A_Video/assets/18130694/b03cd35f-5d90-471a-9aa9-5c7773d7ac39" raw=true></td> </tr> <tr> <td width=27.5% align="center">白色古希腊雕塑,米洛的维纳斯,浅粉色和蓝色背景</td> <td width=27.5% align="center">一个英俊的希腊男人</td> <td width=21.5% align="center">中国水墨画中的传统山水</td> <td width=23.5% align="center">一只卡通老虎</td> </tr> </table> <table class="center"> <tr> <td><img src="https://github.com/williamyang1991/Rerender_A_Video/assets/18130694/649a789e-0c41-41cf-94a4-0d524dcfb282" raw=true></td> <td><img src="https://github.com/williamyang1991/Rerender_A_Video/assets/18130694/73590c16-916f-4ee6-881a-44a201dd85dd" raw=true></td> <td><img src="https://github.com/williamyang1991/Rerender_A_Video/assets/18130694/fbdc0b8e-6046-414f-a37e-3cd9dd0adf5d" raw=true></td> <td><img src="https://github.com/williamyang1991/Rerender_A_Video/assets/18130694/eb11d807-2afa-4609-a074-34300b67e6aa" raw=true></td> </tr> <tr> <td width=26.0% align="center">水墨画风格的天鹅,单色调</td> <td width=29.0% align="center">CG风格的美女</td> <td width=21.5% align="center">简洁干净的白玉雕塑</td> <td width=24.0% align="center">深邃黑蓝色海洋中的荧光水母</td> </tr> </table>

全视频转换

文本引导的虚拟角色生成。

https://github.com/williamyang1991/Rerender_A_Video/assets/18130694/1405b257-e59a-427f-890d-7652e6bed0a4

https://github.com/williamyang1991/Rerender_A_Video/assets/18130694/efee8cc6-9708-4124-bf6a-49baf91349fc

视频风格化和视频编辑。

https://github.com/williamyang1991/Rerender_A_Video/assets/18130694/1b72585c-99c0-401d-b240-5b8016df7a3f

新特性

与会议版本相比,我们持续增加新功能。

新特性

松散跨帧注意力

通过在较少的层中使用跨帧注意力,我们的结果将更好地匹配输入视频,从而减少由不一致造成的重影伪影。可以通过在WebUI的<a href="#option2">关键帧转换高级选项</a>中勾选"松散跨帧注意力"或在脚本中设置loose_cfattn来激活此功能(参见config/real2sculpture_loose_cfattn.json)。

FreeU

FreeU是一种无成本提高扩散模型样本质量的方法。我们发现使用FreeU后,我们的结果将具有更高的对比度和饱和度,更丰富的细节,以及更生动的色彩。可以通过在WebUI的<a href="#option1">第一帧转换高级选项</a>中设置FreeU骨干因子和跳跃因子,或在脚本中设置freeu_args来使用此功能(参见config/real2sculpture_freeu.json)。

引用

如果您发现这项工作对您的研究有用,请考虑引用我们的论文:

@inproceedings{yang2023rerender, title = {Rerender A Video: Zero-Shot Text-Guided Video-to-Video Translation}, author = {Yang, Shuai and Zhou, Yifan and Liu, Ziwei and and Loy, Chen Change}, booktitle = {ACM SIGGRAPH Asia Conference Proceedings}, year = {2023}, }

致谢

代码主要基于ControlNetStable DiffusionGMFlowEbsynth开发。

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

聊天机器人AI助手热门AI工具AI对话
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

热门AI工具AI办公办公工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

模型训练热门AI工具内容创作智能问答AI开发讯飞星火大模型多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多