Hallo2を使って音声駆動の長時間高解像度ポートレート画像アニメーションを作成する方法

## はじめに

Hallo2は、音声入力に基づいて長時間かつ高解像度のポートレート画像アニメーションを生成できる最新のAI技術です。この記事では、Hallo2モデルをダウンロードし、Dockerを使って環境を構築し、実際に動かす方法を詳しく解説します。

<blockquote class="twitter-tweet" data-media-max-width="800"><p lang="ja" dir="ltr">AIリップシンク：hallo2<br>さっそくオリジナルの画像と音楽でやってみた！<br>結構良いのでは！！！<br>---<br>画像：DALL<br>音楽：Udio <a href="https://t.co/W7ttXDU3Rt">https://t.co/W7ttXDU3Rt</a> <a href="https://t.co/QMaxuYiKQY">pic.twitter.com/QMaxuYiKQY</a></p>&mdash; Maki@Sunwood AI Labs. (@hAru_mAki_ch) <a href="https://twitter.com/hAru_mAki_ch/status/1847537971052048815?ref_src=twsrc%5Etfw">October 19, 2024</a></blockquote> 

## Hallo2モデルのダウンロード

Hallo2モデルは複数の事前学習済みモデルで構成されています。以下のGit LFSコマンドを使用して、必要なモデルファイルをダウンロードします。

```bash
# audio_separator
git lfs pull --include="audio_separator/Kim_Vocal_2.onnx"

# CodeFormer
git lfs pull --include="CodeFormer/codeformer.pth"
git lfs pull --include="CodeFormer/vqgan_code1024.pth"

# face_analysis
git lfs pull --include="face_analysis/models/face_landmarker_v2_with_blendshapes.task"
git lfs pull --include="face_analysis/models/1k3d68.onnx"
git lfs pull --include="face_analysis/models/2d106det.onnx"
git lfs pull --include="face_analysis/models/genderage.onnx"
git lfs pull --include="face_analysis/models/glintr100.onnx"
git lfs pull --include="face_analysis/models/scrfd_10g_bnkps.onnx"

# facelib
git lfs pull --include="facelib/detection_mobilenet0.25_Final.pth"
git lfs pull --include="facelib/detection_Resnet50_Final.pth"
git lfs pull --include="facelib/parsing_parsenet.pth"
git lfs pull --include="facelib/yolov5l-face.pth"
git lfs pull --include="facelib/yolov5n-face.pth"

# hallo2
git lfs pull --include="hallo2/net_g.pth"
git lfs pull --include="hallo2/net.pth"

# motion_module
git lfs pull --include="motion_module/mm_sd_v15_v2.ckpt"

# realesrgan
git lfs pull --include="realesrgan/RealESRGAN_x2plus.pth"

# sd-vae-ft-mse
git lfs pull --include="sd-vae-ft-mse/diffusion_pytorch_model.safetensors"

# stable-diffusion-v1-5
git lfs pull --include="stable-diffusion-v1-5/unet/diffusion_pytorch_model.safetensors"

# wav2vec
git lfs pull --include="wav2vec/wav2vec2-base-960h/model.safetensors"
```

これらのコマンドを実行すると、Hallo2の動作に必要な全てのモデルファイルがダウンロードされます。

## Dockerを使った環境構築

Hallo2を簡単に実行するために、Dockerを使用して環境を構築します。以下のDockerfileとdocker-compose.ymlファイルを使用します。

### Dockerfile

```dockerfile
FROM pytorch/pytorch:2.2.2-cuda12.1-cudnn8-runtime

WORKDIR /app

# システムの依存関係をインストール
RUN apt-get update && apt-get install -y \
    git \
    libgl1-mesa-glx \
    libglib2.0-0 \
    build-essential \
    libsm6 \
    libxext6 \
    libxrender-dev \
    && rm -rf /var/lib/apt/lists/*

# condaを使用してffmpegとx264をインストール
RUN conda install -y conda=24.9.2
RUN conda install -y -c conda-forge ffmpeg x264

# pipとsetuptoolsを更新
RUN pip install --no-cache-dir --upgrade pip setuptools wheel

# Pythonの依存関係をインストール
COPY requirements_cu12.txt .
RUN pip install --no-cache-dir -r requirements_cu12.txt
RUN pip install opencv-python opencv-contrib-python
RUN pip install --upgrade huggingface_hub diffusers opencv-python
# OpenCV-Pythonをヘッドレスバージョンで再インストール
RUN pip uninstall -y opencv-python && pip install --no-cache-dir opencv-python-headless

# プロジェクトファイルをコピー
COPY . .
```

### docker-compose.yml

```yaml
version: '3.8'
services:
  hallo2:
    build:
      context: .
      dockerfile: Dockerfile.cu12
    volumes:
      - .:/app
    tty: true
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
```

これらのファイルを使用して、以下のコマンドでDockerイメージをビルドし、コンテナを起動します。

```bash
docker-compose up -d --build
```

## Hallo2の実行方法

Hallo2を実行するには、以下のコマンドを使用します。

```bash
docker-compose exec hallo2 python scripts/inference_long.py --config ./configs/inference/long.yaml
```

このコマンドは、`long.yaml`設定ファイルを使用してHallo2の推論を実行します。必要に応じて、設定ファイルのパラメータを調整してください。

## トラブルシューティング

- GPUが認識されない場合は、NVIDIA Dockerがインストールされていることを確認してください。
- メモリ不足エラーが発生した場合は、バッチサイズを小さくするか、より大きなメモリを持つGPUを使用してください。
- モデルファイルのダウンロードに失敗した場合は、Git LFSが正しくインストールされていることを確認し、再度ダウンロードを試みてください。

## まとめ

この記事では、Hallo2モデルをダウンロードし、Dockerを使って環境を構築し、実際に動かす方法を詳しく解説しました。Hallo2を使用することで、音声入力に基づいた長時間かつ高解像度のポートレート画像アニメーションを簡単に作成できます。この技術は、バーチャルYouTuberやデジタルアバター、教育コンテンツなど、様々な分野での応用が期待されています。

Hallo2の詳細な使用方法や最新の情報については、[公式のGitHubリポジトリ](https://github.com/fudan-generative-vision/hallo2)を参照してください。

Hallo2を使って、革新的なビジュアルコンテンツを作成しましょう！

## Docker対応リポジトリ

https://github.com/Sunwood-ai-labs/hallo2/tree/feat/docker

## 原点

https://github.com/fudan-generative-vision/hallo2

<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>