Paperspaceで始めるMagic Animate:導入から設定まで
はじめに
AIの世界は日々進化しており、最近話題になっているのが「magic-animate」です。TikTok運営のByteDance等がリリースしたこの革新的な技術は、人の写真をAIで動かすことができます。
例えば、お気に入りの有名人やアニメキャラクターの写真を使って動きを再現したり、別の人の動きを真似たりすることが可能です。magic-animateは、写真の自然な動きと色彩の維持、細かい動きの明確な表現にこだわって作られており、写真を動かす魔法のような技術と言えるでしょう。
GitHubでコードが公開されているため、興味がある方は自由に試すことができます。
本記事では、この最新AI技術をPaperspaceで試してみました。
Paperspaceはその手軽さと高性能で、AIプロジェクトに最適な環境を提供しています。
この記事を通じて、Paperspaceを用いるメリットやmagic-animateを導入する際の重要な注意点も詳しく説明し、あなたがスムーズに導入を進められるようになれば幸いです。。
Paperspaceの紹介
Paperspaceは、AIや3Dグラフィックスのような先進的なアプリケーション開発に最適なクラウドサービスです。特に、GPUやIPUといった高度なコンピューティング部品を搭載しているため、AIや3Dグラフィックスの計算を迅速に処理することが可能です。
Paperspaceの最大の利点は、その利便性とコスト効率の高さです。ユーザーは自分でコンピューターを購入したり設定したりする必要がなく、使った分だけの料金を支払うシステムになっています。さらに、「ノートブック」というツールを通じて、AIや3Dグラフィックスのプログラムを簡単に書いたり、実行したりすることができます。
このように、PaperspaceはAIや3Dグラフィックスのアプリケーション開発を手軽に、かつ低コストで行えるクラウドサービスとして、多くの開発者にとって魅力的な選択肢となっています。
導入ガイド
magic-animateをPaperspace上で活用するためのステップバイステップガイドをご紹介します。このガイドを通じて、簡単に設定を完了できるようになります。
GitHubのインストールガイドやGoogle Colabでmagic-animateを実行している記事のコードを見ながら試しましたが、Paperspaceで直接使用してもうまくいきませんでした。
今回は、仮想環境(venv)を構築してからテストを行いました。
Paperspaceアカウントの作成
初めての方は、Paperspaceのウェブサイトにアクセスし、アカウントを作成します。
必要な情報を入力し、アカウントを有効化させましょう。
Jupyter Notebookでの環境構築
今回、るぺったん様の記事を参考にさせていただきました。
記事に添付しています「webui_paper.ipynb」にジュピターノートブックで仮想環境を構築するコードがありましたのでお借りしました。
初期設定
こちらは起動毎に実行します。
コードが長くなるため、Proプラン以上の方に向けたコードで進めていきます。
# 環境の保存先の設定
import os
import datetime
import shutil
%cd /tmp
inst_path = "/notebooks"
ma_path = os.path.join(inst_path, "magic-animate")
# aria2インストール
!if [ $(dpkg-query -W -f='${Status}' aria2 2>/dev/null | grep -c "ok installed") = 0 ]; then sudo apt update && sudo apt install -y aria2; fi
# git lfs インストール:
!curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
!sudo apt-get install git-lfs
!git lfs install
# ダウンロード処理
huggingface_token = "YOUR_HUGGINGFACE_TOKEN" # 自分のトークンに変更
def file_download(model_url, model_path):
base_name = os.path.basename(model_url)
print("ファイルダウンロード")
print("URL:" + model_url)
print("name:" + base_name)
print("path:" + model_path)
print("path:" + pretrained_models_path)
if model_url.startswith("https://drive.google.com"):
print("GoogleDrive")
os.chdir(model_path)
!gdown --fuzzy {model_url}
elif model_url.startswith("https://huggingface.co/"):
print("Huggingface")
base_name = base_name.replace('?download=true','')
if "/blob/" in model_url:
model_url = model_url.replace("/blob/", "/resolve/")
user_header = f'"Authorization: Bearer {huggingface_token}"'
!aria2c --console-log-level=error --summary-interval=10 --header={user_header} -c -x 16 -s 16 -k 1M {model_url} -d {model_path} -o {base_name}
elif model_url.startswith("https://civitai.com/"):
print("Civitai")
model_url = "\"" + model_url + "\""
!aria2c --console-log-level=error --summary-interval=10 -c -x 16 -s 16 -k 1M {model_url} -d {model_path}
else:
print("other")
!aria2c --console-log-level=error --summary-interval=10 -c -x 16 -s 16 -k 1M {model_url} -d {model_path} -o {base_name}
print("finish:初期設定")
仮想環境の構築
初回時のみ実行します。
%cd {inst_path}
# 仮想環境がない場合のみ
if os.path.isdir("venv") == False:
!pip install virtualenv
!virtualenv venv
#PyTorch2.0インストール
!venv/bin/pip3 install torch torchvision torchaudio
#xformersインストール
!venv/bin/pip3.10 install xformers
print("finish:仮想環境作成")
ジュピターノートブックで仮想環境を使用する場合
Jupyter Notebookでは、各セルが独立して実行されるため、一度仮想環境をアクティベートしても、次のセルでその状態が維持されません。そのため、各セルでパッケージをインストールする際には、仮想環境のpipを直接指定する必要があります。(Google Bardの説明)
magic-animateインストール
初回時のみ実行
magic-animateの動作に必要なパッケージをインストールします。
# magic-animateのインストール
%cd {inst_path}
# 本体が存在しない場合のみ
if os.path.isdir("magic-animate") == False:
!git clone https://github.com/magic-research/magic-animate
%cd magic-animate
!{inst_path}/venv/bin/pip3 install -r requirements.txt
print("finish:magic-animateインストール")
もしかしたら「!{inst_path}/venv/bin/pip3 install -r requirements.txt」の部分が動作しないかもしれません。その場合は、ターミナルで実行してください。
モデル等のダウンロード
初回時のみ
モデルなどのダウンロードですが、サイズが大きいので時間がかかります。
# モデル等のダウンロード
!git clone -b fp16 https://huggingface.co/runwayml/stable-diffusion-v1-5 /notebooks/magic-animate/pretrained_models/stable-diffusion-v1-5/
!git clone https://huggingface.co/stabilityai/sd-vae-ft-mse /notebooks/magic-animate/pretrained_models/sd-vae-ft-mse/
!git lfs clone https://huggingface.co/zcxu-eric/MagicAnimate /notebooks/magic-animate/pretrained_models/MagicAnimate/
コンフィグファイルの編集
ここ結構重要です!
GitHubの更新でパスが変わったり、サンプル画像が変わったりすることでエラーになることもありますので適宜編集してください。
ファイルの場所は「magic-animate/configs/prompts/animation.yaml」です。
画像ファイルと動画ファイルを設定します。
コンフィグファイル
pretrained_model_path: "pretrained_models/stable-diffusion-v1-5"
pretrained_vae_path: "pretrained_models/sd-vae-ft-mse"
pretrained_controlnet_path: "pretrained_models/MagicAnimate/densepose_controlnet"
pretrained_appearance_encoder_path: "pretrained_models/MagicAnimate/appearance_encoder"
pretrained_unet_path: ""
motion_module: "pretrained_models/MagicAnimate/temporal_attention/temporal_attention.ckpt"
savename: null
fusion_blocks: "midup"
seed: [1]
steps: 25
guidance_scale: 7.5
source_image:
- "inputs/applications/source_image/monalisa.png"
- "inputs/applications/source_image/0002.png"
- "inputs/applications/source_image/demo4.png"
- "inputs/applications/source_image/dalle2.jpeg"
- "inputs/applications/source_image/dalle8.jpeg"
- "inputs/applications/source_image/multi1_source.png"
video_path:
- "inputs/applications/driving/densepose/running.mp4"
- "inputs/applications/driving/densepose/demo4.mp4"
- "inputs/applications/driving/densepose/demo4.mp4"
- "inputs/applications/driving/densepose/running2.mp4"
- "inputs/applications/driving/densepose/dancing2.mp4"
- "inputs/applications/driving/densepose/multi_dancing.mp4"
inference_config: "configs/inference/inference.yaml"
size: 512
L: 16
S: 1
I: 0
clip: 0
offset: 0
max_length: null
video_type: "condition"
invert_video: false
save_individual_videos: false
source_image:とvideo_path: で生成しないものは削除してもいいかもしれません。デフォルトのままだとその分、生成時間が長くなります。
参考例:モナリザが走る動画のみ生成したい場合
source_image:
- "inputs/applications/source_image/monalisa.png"
video_path:
- "inputs/applications/driving/densepose/running.mp4"
magic-animateの実行(GUIなし)
簡単なテストを行い、magic-animateが正常に動作することを確認します。
任意の画像を使用して、AIによる動画生成を試してみましょう。
!bash -c "source /notebooks/venv/bin/activate && cd /notebooks/magic-animate && bash scripts/animate.sh"
生成が完了すると、/storage/magic-animateにsamplesというディレクトリが新たに追加されています。その中に生成された動画が入っています。
注意点
magic-animateをPaperspaceで使用する際、いくつかの重要な注意点があります。また、遭遇する可能性のある問題に対するトラブルシューティングのヒントもご紹介します。
- モデル等のパス設定: pretrained_model_path、pretrained_vae_pathなどのモデル等のパスの設定も注意してください。ダウンロードした場所が異なると以下のようなエラーになります。
OSError: pretrained_models/stable-diffusion-v1-5 is not a local folder and is not a valid model identifier listed on 'https://huggingface.co/models'
-
画像と参照動画の数: source_image:とvideo_path:が1対1にならないとエラーになるようです。
「magic-animate/inputs/applications/source_image」の中にある画像があるのか、animation.yamlに記載されているのかもチェックしてください。 -
オリジナル画像の追加: サンプル画像以外で新たに違う写真を追加したい場合は、animation.yamlのsource_image:部分を変更してください。また、画像は3チャンネルに変換する必要があります。
3チャンネルに変更するコード
# 3チャンネルに変換
import cv2
image_path = "/notebooks/sample.png"
output_path = "/notebooks/sample_convert.png"
image = cv2.imread(image_path, cv2.IMREAD_UNCHANGED)
image = cv2.cvtColor(image, cv2.COLOR_BGRA2BGR)
cv2.imwrite(output_path, image)
# 変換した画像をsource_imageに移動
%cd /notebooks
!mv sample_convert.png /notebooks/magic-animate/inputs/applications/source_image
以下のように画像を配置して実行すれば、3チャンネル変換して指定のパスに送られます。
(上記だとファイル名がsample_convert.pngに変わるので注意)
まとめ
この記事を通じて、magic-animateをPaperspaceで使用する方法について詳細にご紹介しました。この先進的なAIツールを活用することで、AIによる動画生成の可能性を最大限に引き出すことができます。また、Paperspaceの利用により、このプロセスを手軽に、かつ効率的に行うことが可能です。
主なポイントのおさらい
- magic-animateは、写真を動かすための先進的なAIツールです。
- Paperspaceは、強力なコンピューティングリソースを提供するクラウドサービスで、magic-animateの使用に適しています。
- 注意点のヒントを押さえることで、スムーズな導入と使用が可能になります。
参考
Discussion