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

腾讯开源突破技术:V-Express引领人像照片视频化新潮流

V-Express是腾讯AI Lab与南京大学共同研发的一项前沿技术,主要用于人像视频的生成。它的主要特点是能够将一张静态的人物照片转化为一段生动的说话视频,同时能够很好地处理多种控制信号,包括音频、姿势和图像参考等。
在这里插入图片描述

核心技术特点

  1. 渐进式训练:V-Express采用了一种渐进式的训练方法,通过一系列的丢弃操作来平衡不同的控制信号。这种方法使得模型能够在训练过程中逐步适应并强化对不同强度条件的响应,特别是在处理音频这类相对微弱的控制信号时表现更加出色。

  2. 条件性Dropout:这是V-Express的一个独特之处,它允许模型在训练过程中逐步适应并强化对不同强度条件的响应。通过这种方式,即便是音频这样的弱信号也能够在视频生成中发挥重要作用。

  3. 多信号融合:V-Express能够同时处理多种类型的控制信号,确保弱信号(如音频)不会被强信号(如姿势和图像)所掩盖。这种平衡有助于在最终生成的视频中保持自然和谐的效果。

功能应用

  • 生成肖像视频:V-Express可以根据一张人物照片以及音频等控制信号生成一段人像视频。例如,如果提供一张个人的照片和一段该人的语音录音,V-Express就能够生成一段该人说话的视频。

  • 音频信号处理:V-Express能够理解并分析音频信号,并将其转换成视频中的嘴部动作和表情,使得生成的视频与提供的声音同步。

技术背景

V-Express的核心在于使用生成模型来增强适配器以实现受控生成。它利用现代深度学习框架,如Transformer架构和Stable Diffusion变体,实现了复杂动态场景的精确建模,并优化了后处理流程,显著降低了生成视频中的闪烁问题。

安装

# 下载代码
git clone https://github.com/tencent-ailab/V-Express# 安装依赖
cd V-Express
pip install -r requirements.txt# 下载模型
git lfs install
git clone https://huggingface.co/tk93/V-Express
mv V-Express/model_ckpts model_ckpts
mv V-Express/*.bin model_ckpts/v-express# 然后你可以使用脚本

下载模型

你可以在这里下载模型。我们在模型卡中包含了所有必需的模型。你也可以从原始仓库单独下载模型。

  • stabilityai/sd-vae-ft-mse。
  • runwayml/stable-diffusion-v1-5。这里只需要unet的模型配置文件。
  • facebook/wav2vec2-base-960h。
  • insightface/buffalo_l。

如何使用

重要提示

重要 ! 重要 ! ! 重要 ! ! ! {\color{red}重要! 重要!! 重要!!!} 重要!重要!!重要!!!

在说话人脸生成任务中,当目标视频与参考角色不是同一人时,人脸的重定向将是一个非常重要的部分。选择与参考人脸姿态更接近的目标视频将能获得更好的结果。此外,我们的模型目前在英语上表现更好,其他语言尚未详细测试。

运行演示 (步骤1, 可选)

如果你有一个目标说话视频,你可以按照下面的脚本从视频中提取音频和人脸V-kps序列。你也可以跳过这一步,直接在步骤2中运行脚本来尝试我们提供的示例。

python scripts/extract_kps_sequence_and_audio.py \--video_path "./test_samples/short_case/AOC/gt.mp4" \--kps_sequence_save_path "./test_samples/short_case/AOC/kps.pth" \--audio_save_path "./test_samples/short_case/AOC/aud.mp3"

我们建议按照下面的示例裁剪一个清晰的方形人脸图像,并确保分辨率不低于512x512。下图中的绿色到红色框是推荐的裁剪范围。

crop_example

运行演示 (步骤2, 核心)

场景1 (A的图片和A的说话视频。) (最佳实践)

如果你有一张A的图片和A在另一个场景中的说话视频。那么你应该运行以下脚本。我们的模型能够生成与给定视频一致的说话视频。你可以在我们的项目页面上看到更多示例。

python inference.py \--reference_image_path "./test_samples/short_case/AOC/ref.jpg" \--audio_path "./test_samples/short_case/AOC/aud.mp3" \--kps_path "./test_samples/short_case/AOC/kps.pth" \--output_path "./output/short_case/talk_AOC_no_retarget.mp4" \--retarget_strategy "no_retarget" \--num_inference_steps 25

新 ! ! ! {\color{red}新!!!} !!! 我们优化了内存使用,现在支持生成更长的视频。对于一个31秒的音频,在V100测试环境中需要峰值内存7956MiB,总处理时间为2617.4秒。你可以用以下脚本尝试。

[!NOTE]
./test_samples/short_case/AOC/v_exprss_intro_chattts.mp3是一个大约30秒的长音频片段,使用ChatTTS生成,我们只需要输入一段文字。然后我们使用V-Express生成一个肖像视频。这可能是一个有趣的流程。

python inference.py \--reference_image_path "./test_samples/short_case/AOC/ref.jpg" \--audio_path "./test_samples/short_case/AOC/v_exprss_intro_chattts.mp3" \--kps_path "./test_samples/short_case/AOC/AOC_raw_kps.pth" \--output_path "./output/short_case/talk_AOC_raw_kps_chattts_no_retarget.mp4" \--retarget_strategy "no_retarget" \--num_inference_steps 25 \--reference_attention_weight 1.0 \--audio_attention_weight 1.0 \--save_gpu_memory

场景2 (A的图片和任意说话音频。)

如果你只有一张图片和任意说话音频。使用以下脚本,我们的模型可以为固定人脸生成生动的嘴部动作。

python inference.py \--reference_image_path "./test_samples/short_case/tys/ref.jpg" \--audio_path "./test_samples/short_case/tys/aud.mp3" \--output_path "./output/short_case/talk_tys_fix_face.mp4" \--retarget_strategy "fix_face" \--num_inference_steps 25

场景3 (A的图片和B的说话视频。)

  • 使用下面的脚本,我们的模型可以生成伴随轻微面部动作的生动嘴部动作。
python inference.py \--reference_image_path "./test_samples/short_case/tys/ref.jpg" \--audio_path "./test_samples/short_case/tys/aud.mp3" \--kps_path "./test_samples/short_case/tys/kps.pth" \--output_path "./output/short_case/talk_tys_offset_retarget.mp4" \--retarget_strategy "offset_retarget" \--num_inference_steps 25
  • 使用以下脚本,我们的模型可以生成与目标视频相同动作的视频,并且角色的唇同步与目标音频匹配。

[!NOTE]
我们目前只实现了非常简单的重定向策略,这使我们能够在有限条件下实现用不同角色视频驱动参考人脸。为了获得更好的结果,我们强烈建议你选择与参考人脸更接近的目标视频。我们也在尝试实现更强大的面部重定向策略,希望能进一步解决参考人脸与目标人脸之间不一致的问题。我们也欢迎有经验的人士帮助。

python inference.py \--reference_image_path "./test_samples/short_case/tys/ref.jpg" \--audio_path "./test_samples/short_case/tys/aud.mp3" \--kps_path "./test_samples/short_case/tys/kps.pth" \--output_path "./output/short_case/talk_tys_naive_retarget.mp4" \--retarget_strategy "naive_retarget" \--num_inference_steps 25 \--reference_attention_weight 1.0 \--audio_attention_weight 1.0

更多参数

对于不同类型的输入条件,如参考图像和目标音频,我们提供了参数来调整该条件信息在模型预测中扮演的角色。我们称这两个参数为reference_attention_weightaudio_attention_weight。可以使用以下脚本应用不同的参数来实现不同的效果。通过我们的实验,我们建议reference_attention_weight取值0.9-1.0,audio_attention_weight取值1.0-3.0。

python inference.py \--reference_image_path "./test_samples/short_case/10/ref.jpg" \--audio_path "./test_samples/short_case/10/aud.mp3" \--output_path "./output/short_case/talk_10_fix_face_with_weight.mp4" \--retarget_strategy "fix_face" \    # 此策略不需要kps信息--reference_attention_weight 0.95 \--audio_attention_weight 3.0

我们在下面的视频中展示了不同参数产生的效果。你可以根据需要调整参数。

[Video]
https://github.com/tencent-ailab/V-Express/assets/19601425/2e977b8c-c69b-4815-8565-d4d7c3c349a9


http://www.mrgr.cn/news/12338.html

相关文章:

  • 网络优化4|网络流问题|路径规划问题|车辆路径问题
  • 汽车功能安全--TC3xx LBIST触发时机讨论
  • 网络编程(学习)2024.8.27
  • 模拟实现string
  • 解锁2024音乐新玩法!3款剪辑神器在手,专属BGM创作从此不再难!
  • 【IC设计】跨时钟异步处理系列——单比特跨时钟
  • 如何使用Hive构建高校考试分析系统:大数据技术在教育领域的应用
  • 核心数据加密的实现方式
  • 心觉:赚钱是修行最快的一种方式
  • BAT32G137国产项目通用第四节:FreeRTOS MCU负载率
  • 算法刷题日志
  • CentOS7 多硬盘合成卷组并创建LVM,挂载到同一目录下
  • 2024年8月20日~2024年8月26日周报
  • bash: /home/xxx/anaconda3/bin/conda: No such file or directory
  • 在技术风暴中站稳脚跟之开发团队应对突发技术故障的策略与提升路径
  • Linux 数据结构 顺序表 链表
  • LLama3技术报告笔记(垂直能力)
  • Angr CTF Part 1
  • Kakfa的核心概念-Replica副本(kafka创建topic并指定分区和副本的两种方式)
  • [笔记]中间件基础 - 进一步阅读的扩展点