V-Express是由南京大学和腾讯AI实验室共同开发的一项技术,旨在通过参考图像、音频和一系列V-Kps图像来生成说话的头像视频。这项技术可以根据不同的信号,如声音、姿势、图像参考等来控制视频内容,确保即使是弱信号也能有效地影响最终生成的视频,使视频生成更加逼真和多样化。
V-Express通过一系列渐进式的丢弃操作来平衡不同的控制信号,逐步实现由弱条件有效控制的生成能力,从而同时考虑姿势、输入图像和音频。
底层技术
在肖像视频生成领域,使用单张图片生成肖像视频的做法越来越普遍。常见的方法包括利用生成模型增强适配器以实现可控生成。
然而,控制信号的强度可能不同,包括文本、音频、图像参考、姿态、深度图等。在这些中,较弱的条件经常因为较强条件的干扰而难以发挥效果,这在平衡这些条件中构成了挑战。
在关于肖像视频生成的工作中,发现音频信号特别弱,常常被姿态和原始图像这些较强的信号所掩盖。然而,直接使用弱信号进行训练往往导致收敛困难。为了解决这个问题,提出了一种名为V-Express的简单方法,通过一系列逐步的弱化操作来平衡不同的控制信号。该方法逐渐使弱条件能够有效控制,从而实现同时考虑姿态、输入图像和音频的生成能力。
使用方法
重要提醒~
在讲话面孔生成任务中,当目标视频中的人物与参考人物不同时,面部的重定向将是非常重要的部分。选择与参考面孔姿势更相似的目标视频将能够获得更好的结果。
运行演示(第一步,可选)
如果你有目标讲话视频,你可以按照下面的脚本从视频中提取音频和面部V-kps序列。你也可以跳过这一步,直接运行第二步中的脚本,尝试提供的示例。
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”
建议裁剪一个清晰的正方形面部图像,如下面的示例所示,并确保分辨率不低于512×512。下图中的绿色到红色框是推荐的裁剪范围。
运行演示(第二步,核心)
场景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
场景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
更多参数
对于不同类型的输入条件,如参考图像和目标音频,提供了参数来调整这些条件信息在模型预测中的作用。将这两个参数称为 reference_attention_weight 和 audio_attention_weight。
可以使用以下脚本应用不同的参数以达到不同的效果。通过实验,建议 reference_attention_weight 取值在 0.9-1.0 之间,而 audio_attention_weight 取值在 1.0-3.0 之间。
模型下载
你可以从https://huggingface.co/tk93/V-Express下载模型。已经在模型卡中包含了所有所需的模型。你也可以从原始仓库单独下载模型。
·stabilityai/sd-vae-ft-mse
·runwayml/stable-diffusion-v1-5。这里只需要unet的模型配置文件。
·facebook/wav2vec2-base-960h
·insightface/buffalo_l