【Vid2DensePose】人間の動きをAIにコピーさせられる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社内セミナー・勉強会をさせていただいております。
セミナー内容や料金については、ご相談ください。
また、サービス紹介資料もご用意しておりますので、併せてご確認ください。