Tech Explorer Logo

搜索内容

Hallo3: 一个基于扩散变换网络的高动态真实肖像动画生成开源模型(Diffusion Transformer Networks)

5 min read
Cover image for Hallo3: 一个基于扩散变换网络的高动态真实肖像动画生成开源模型(Diffusion Transformer Networks)

项目简介

Hallo3 (Highly Dynamic and Realistic Portrait Image Animation with Diffusion Transformer Networks) 是由复旦大学视觉生成实验室(Fudan Generative Vision Lab)开发的一个基于扩散变换网络的肖像图像动画生成模型。该项目能够将静态照片与音频结合,生成高动态性和真实感的人物说话视频,为数字人物创作提供了强大的技术支持。

在实际应用中,Hallo3可以广泛应用于多个场景:

  • 数字人物创作:通过单张照片和音频输入,快速生成说话的数字人物,适用于虚拟主播、数字代言人等场景
  • 教育培训:将静态教学材料转换为生动的视频讲解内容,提升在线教育的互动性和参与感
  • 内容创作:帮助创作者快速制作人物讲解视频,大幅提高内容生产效率
  • 营销展示:为品牌和产品提供个性化的数字人物展示方案,增强营销效果

主要特点

  1. 高动态性:模型能够生成高度动态和自然流畅的人物动作和表情变化。

  2. 真实感:生成的肖像动画具有极高的真实感和细节表现力。

  3. 开源可用:项目完全开源,研究者和开发者可以自由使用和研究。

技术实现

Hallo3 的实现基于以下关键技术:

  • 基于扩散变换网络(Diffusion Transformer Networks)架构
  • 采用先进的动画生成策略
  • 支持高质量的肖像图像动画生成

系统要求

  • 系统:Ubuntu 20.04/Ubuntu 22.04
  • CUDA版本:12.1
  • 测试GPU:H100

预训练模型下载

您可以通过以下方式获取所需的预训练模型:

  1. 使用 huggingface-cli 下载:
   cd $ProjectRootDir
pip install huggingface-cli
huggingface-cli download fudan-generative-ai/hallo3 --local-dir ./pretrained_models
  1. 或者从以下来源手动下载:
  • hallo3:项目的主要检查点
  • Cogvidex:Cogvideox-5b-i2v 预训练模型,包含 transformer 和 3d vae
  • t5-v1_1-xxl:文本编码器
  • audio_separator:Kim Vocal_2 MDX-Net 声音分离模型
  • wav2vec:Facebook 的音频向量模型
  • insightface:2D 和 3D 人脸分析模型
  • face landmarker:来自 mediapipe 的人脸检测和网格模型

安装步骤

  1. 克隆项目仓库:
   git clone https://github.com/fudan-generative-vision/hallo3
cd hallo3
  1. 创建并激活conda环境:
   conda create -n hallo python=3.10
conda activate hallo
  1. 安装依赖:
   pip install -r requirements.txt
apt-get install ffmpeg

推理使用

   bash scripts/inference_long_batch.sh ./examples/inference/input.txt ./output

动画结果将保存在./output目录中。

训练准备

数据准备

将原始视频按以下目录结构组织:

   dataset_name/
|-- videos/
|   |-- 0001.mp4
|   |-- 0002.mp4
|   `-- 0003.mp4
|-- caption/
|   |-- 0001.txt
|   |-- 0002.txt
|   `-- 0003.txt

数据预处理

使用以下命令处理视频:

   bash scripts/data_preprocess.sh {dataset_name} {parallelism} {rank} {output_name}

模型训练

  1. 更新配置文件中的数据路径设置:

configs/sft_s1.yamlconfigs/sft_s2.yaml 中更新:

   #sft_s1.yaml
train_data: [
    "./data/output_name.json"
]

#sft_s2.yaml
train_data: [
    "./data/output_name.json"
]
  1. 开始训练:
   # 第一阶段训练
bash scripts/finetune_multi_gpus_s1.sh

# 第二阶段训练
bash scripts/finetune_multi_gpus_s2.sh

推理使用

注意事项

输入数据需要满足以下条件:

  1. 参考图像必须是1:1或3:2的宽高比
  2. 驱动音频必须是WAV格式
  3. 音频必须是英语(因为训练数据集仅包含英语)
  4. 确保音频人声清晰(可以包含背景音乐)

运行推理

执行以下命令进行推理:

   bash scripts/inference_long_batch.sh ./examples/inference/input.txt ./output

生成的动画结果将保存在 ./output 目录中。

参考链接

Share

更多文章