【Vid2DensePose】人間の動きをAIにコピーさせられるMagicAnimate専用ツールを使って、ダンス動画を作成してみた

Vid2DensePose MagicAnimate ダンス動画 作成

WEELメディア事業部LLMリサーチャーの中田です。

12月5日、動画からDensePoseフォーマットを抽出できる「Vid2DensePose」が公開され、誰でも簡単にDensePoseを生成できるようになりました。

これを先日のMagicAnimateと組み合わせることで、より自由にアニメーションを生成できるんです…!

本プロジェクトは「MagicAnimate」と組み合わせることを想定されています。そのMagicAnimateのGitHubのスター数は、なんと1100を超えており、必然的にVid2DensePoseにも注目が集まるでしょう。

この記事ではVid2DensePoseの使い方や、有効性の検証まで行います。本記事を熟読することで、Vid2DensePoseの凄さを実感し、MagicAnimateと組み合わせて、アニメーションを量産したくなるでしょう。

ぜひ、最後までご覧ください。

目次

Vid2DensePoseの概要

Vid2DensePoseとは、ビデオをDensePoseフォーマットに変換するAIツールです。このツールを利用すると、ビデオ内の人間の動きを「DensePose」というデータ形式に変換し、MagicAnimateでの使用を可能にしてくれます。

ここで、DensePoseとは、以下のようなフォーマットを指します(実際には画像ではなく、動画のように動きます)。

また、MagicAnimateとは、TikTokの運営会社である「ByteDance」が開発した、アニメーショ生成AIツールです。静止画や動画からキャラクターの動きや表情を自動で読み取り、オリジナルアニメーションを作成可能になります。

このMagicAnimateを利用する際には、被写体となる画像に加えて、DensePoseのデータが必要になります。そこで、このDensePoseを生成するために、Vid2DensePoseが役に立つのです。

具体的には、動画内の被写体の動きから、DensePoseを抽出できます。

なお、MagicAnimateの使い方について詳しく知りたい方は、下記の記事を合わせてご確認ください。
【MagicAnimate】AnimateAnyoneよりこっちを使え!画像を踊らせる神AIを使ってみた

Vid2DensePoseの料金体系

Vid2DensePoseはオープンソースであるため、誰でも無料で利用できます。

Vid2DensePoseの使い方

今回は、Google ColabのT4を利用しました。

まずは、以下のコードを実行して、リポジトリのクローンと、ライブラリのインストールをしましょう。

!git clone https://github.com/facebookresearch/detectron2.git
!pip install torch==2.1.0 torchvision==0.16.0 opencv-python git+https://github.com/facebookresearch/detectron2@main#subdirectory=projects/DensePose

次に、以下のコードを実行すると、動画からDensePoseを生成できます。

from detectron2.config import get_cfg
import torch
import cv2
import numpy as np
from detectron2.engine import DefaultPredictor
from densepose import add_densepose_config
from densepose.vis.extractor import DensePoseResultExtractor
from densepose.vis.densepose_results import DensePoseResultsFineSegmentationVisualizer as Visualizer

# Initialize Detectron2 configuration for DensePose
cfg = get_cfg()
add_densepose_config(cfg)
cfg.merge_from_file("detectron2/projects/DensePose/configs/densepose_rcnn_R_50_FPN_s1x.yaml")
cfg.MODEL.WEIGHTS = "https://dl.fbaipublicfiles.com/densepose/densepose_rcnn_R_50_FPN_s1x/165712039/model_final_162be9.pkl"
predictor = DefaultPredictor(cfg)

# Video paths
INPUT_VIDEO_PATH = "./input_video.mp4" #@param {type:"raw"}
OUTPUT_VIDEO_PATH = "./output_video.mp4" #@param {type:"raw"}

# Open the input video
cap = cv2.VideoCapture(INPUT_VIDEO_PATH)
fps = cap.get(cv2.CAP_PROP_FPS)
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

# Initialize video writer
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter(OUTPUT_VIDEO_PATH, fourcc, fps, (width, height))

# Process each frame
while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break

    with torch.no_grad():
        outputs = predictor(frame)['instances']

    results = DensePoseResultExtractor()(outputs)
    cmap = cv2.COLORMAP_VIRIDIS
    # Visualizer outputs black for background, but we want the 0 value of
    # the colormap, so we initialize the array with that value
    arr = cv2.applyColorMap(np.zeros((height, width), dtype=np.uint8), cmap)
    out_frame = Visualizer(alpha=1, cmap=cmap).visualize(arr, results)
    out.write(out_frame)

# Release resources
cap.release()
out.release()

上記のコードのうちの、以下の部分を書き換えることで、任意のファイルを指定できます。

# Video paths
INPUT_VIDEO_PATH = "./input_video.mp4" #@param {type:"raw"}
OUTPUT_VIDEO_PATH = "./output_video.mp4" #@param {type:"raw"}

Vid2DensePoseを動かすのに必要なPCのスペック

■Pythonのバージョン
Python 3.8以上

■必要なパッケージ
PyTorch (preferably with CUDA for GPU support)
Detectron2

なお、Meta開発のAIツールを知りたい方はこちらの記事をご覧ください。
【Audio2Photoreal】Meta開発の音声入力だけで一瞬でAIアバターを作成できるツールを使ってみた

Vid2DensePoseを実際に使ってみた

以下の動画からDensePoseを抽出しようと思います。

参考記事:いろいろな走るシリーズ

結果は以下の通りです。

もともとが荒い動画だったので、このDensePoseも荒さが目立ちますね。

ただ、すごく精度が高いですね!

Vid2DensePoseの推しポイントであるMagicAnimateとの組み合わせは本当なのか?

先ほど生成したDensePoseのモーションを、以下の画像に対して適用してみます。

その結果は、以下の通りです。

精度は高いですが、なんか少し奇妙ですね。

また、MagicAnimateそのものには、DensePoseを抽出する機能はないので、Vid2DensePoseと組み合わせることで、より柔軟性の高いアニメーション生成が実現できます!

まとめ

Vid2DensePoseとは、ビデオをDensePoseフォーマットに変換するAIツールです。このツールを利用すると、ビデオ内の人間の動きを「DensePose」というデータ形式に変換し、MagicAnimateでの使用を可能にしてくれます。

このMagicAnimateを利用する際には、被写体となる画像に加えて、DensePoseのデータが必要になるので、DensePoseを生成するために、Vid2DensePoseが役に立つのです。

もともと荒い動画を入力すると、DensePoseも荒さが目立ちますが、精度は高いです!MagicAnimateそのものには、DensePoseを抽出する機能はないので、Vid2DensePoseと組み合わせることで、より柔軟性の高いアニメーション生成が実現できます!

数年後には人間が遠隔操作で異なる生物の体をコントロールできるようになっているのかもしれないです。

サービス紹介資料

生成系AIの業務活用なら!

・生成系AIを活用したPoC開発

・生成系AIのコンサルティング

・システム間API連携

最後に

いかがだったでしょうか?

弊社では

・マーケティングやエンジニアリングなどの専門知識を学習させたAI社員の開発
・要件定義・業務フロー作成を80%自動化できる自律型AIエージェントの開発
・生成AIとRPAを組み合わせた業務自動化ツールの開発
・社内人事業務を99%自動化できるAIツールの開発
ハルシネーション対策AIツールの開発
自社専用のAIチャットボットの開発

などの開発実績がございます。

まずは、「無料相談」にてご相談を承っておりますので、ご興味がある方はぜひご連絡ください。

➡︎生成AIを使った業務効率化、生成AIツールの開発について相談をしてみる。

生成AIを社内で活用していきたい方へ
無料相談

「生成AIを社内で活用したい」「生成AIの事業をやっていきたい」という方に向けて、生成AI社内セミナー・勉強会をさせていただいております。

セミナー内容や料金については、ご相談ください。

また、サービス紹介資料もご用意しておりますので、併せてご確認ください。

投稿者

  • 中田

    データサイエンス専攻の大学院生。大学では、生成系AIの拡散モデルを用いた音楽生成について研究。 趣味は作曲、サッカー、コーヒー。

  • URLをコピーしました!
  • URLをコピーしました!
目次