▶︎動画でも話してるので、文章読むのが面倒な方はこちらをみてもらえればと思います。
今回はconfiUIを使って動画からアニメーション動画を生成する方法について解説します。
これを読めば誰でも簡単にクオリティーの高いAI美女が作れるようになっているので興味がある人は、下のバナーをクリックして購入してみてね🎶
confiUIを使って動画からアニメーション動画を生成する方法について
この動画ではcomfyUIを使って動画を生成していきます。

もしもcomfyUIというキーワードが分からない場合は、解説している動画を下記に貼っておきますのでそちらをご確認ください。
この動画ではcomfyUIを動作させるためにGoogle Colabを利用します。
Google Colabを使ってプログラミングを実行する
Google Colabはクラウド上でプログラミングを実行することができるGoogleが提供しているツールです。

無料で使用することができ、自分のパソコンのスペックに依存せず高速な処理を行うことができるのが大きな利点です。
Googleアカウントを持っていれば誰でもGoogle Colabを使用することができます。
Google ColabのURLを貼っておきますのでそちらをご確認ください。
Google Colabのサイトにアクセスしたらこのような画面が表示されると思います。

表示されているポップアップ画面の右下にあるノートブックを新規作成と書かれているテキストをクリックします。

これでGoogle Colabを実行するための準備が整いました。

先ほどGoogle Colabは無料で利用できると説明しました。
ただし無料版だとリソースの割当てが保証されていません。
そのため強制的にコードを終了されてしまうことがあります。
最近はGoogle Colabを利用するユーザーが増えていますので無料版に割り当てられるGoogle Colabのリソースが減ってしまっています。

その結果、無料版では以前より実行中のコードが強制終了されてしまうことが多くなってきました。
具体的にはコードの実行が強制的に終了された場合はこのような画面になります。

再生ボタンの部分が赤くなっているもしくは赤いびっくりマークのアイコンが表示されている。

このような場合はコードが強制的に中断されたと判断していいと思います。
強制的に中断されてしまう状況が続くようであれば有料プランへの切り替えをお勧めします。
有料プランへの切り替え方法については詳細を解説している動画を以下のリンクに貼っておきますので、そちらをご確認ください。
なお、ここからは有料版に切り替えた状態で解説を進めます。
有料版に切り替えた状態で解説
Google Colabの準備が整ったらランタイムを設定します。
メニューの中からランタイムと書かれているテキストを選択します。

そして表示されたメニューの中からランタイムのタイプを変更をクリックします。

ランタイムのタイプはPython3のままで大丈夫です。

ハードウェア アクセラレーターはA100 GPUを選択します。

なおA100 GPUを選択すると自動的にハイメモリーが有効になります。

ランタイムのタイプを設定したら保存をクリックします。

右上にある接続または再接続と書かれているテキストをクリックします。

そうすると先ほど指定したランタイムのタイプに接続されます。

下向きの三角形のマークをクリックするとメニューが表示されます。

表示されたメニューの中からリソースを表示をクリックします。

そうすると現在接続しているランタイムのタイプの使用状況が確認できます。

A100 GPUを選択した場合は、使用率が高いので処理が終わったらできるだけ早くリソースを解放することを意識しておきましょう。

ランタイムの設定が完了したら次にcomfyUIをインストールします。
以下に貼ってあるテキストをコピーします。
from pathlib import Path
import subprocess
import threading
import time
import socket
!pip install -q torch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio==2.0.2+cu118 torchtext==0.15.2 torchdata==0.6.1 --extra-index-url https://download.pytorch.org/whl/cu118 -U
!pip install -q xformers==0.0.20 triton==2.0.0 gradio_client==0.2.7 -U
!apt -y install -qq aria2
!pip install controlnet-aux==0.0.7 onnxruntime-gpu
!pip install opencv-python==4.8.0.74
# 定数と設定
WORKSPACE = '/content/ComfyUI'
UPDATE_COMFY_UI = True
# ComfyUIのセットアップと更新
if not Path(WORKSPACE).exists():
%cd /content
print("-= Initial setup ComfyUI =-")
!git clone https://github.com/comfyanonymous/ComfyUI
else:
%cd $WORKSPACE
print("-= Updating ComfyUI =-")
!git pull
%cd $WORKSPACE/custom_nodes
!git clone https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite
!git clone https://github.com/ssitu/ComfyUI_UltimateSDUpscale
!git clone https://github.com/TinyTerra/ComfyUI_tinyterraNodes
!git clone https://github.com/Kosinkadink/ComfyUI-Advanced-ControlNet
!git clone https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved
!git clone https://github.com/FizzleDorf/ComfyUI_FizzNodes
!git clone https://github.com/Stability-AI/stability-ComfyUI-nodes
!git clone https://github.com/RockOfFire/ComfyUI_Comfyroll_CustomNodes
!git clone https://github.com/ltdrdata/ComfyUI-Manager.git
!git clone https://github.com/mcmonkeyprojects/sd-dynamic-thresholding
!git clone https://github.com/laksjdjf/IPAdapter-ComfyUI.git
!git clone https://github.com/Fannovel16/comfyui_controlnet_aux.git
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter-plus-face_sd15.bin -d /content/ComfyUI/custom_nodes/IPAdapter-ComfyUI/models -o ip-adapter-plus-face_sd15.bin
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/h94/IP-Adapter/resolve/main/models/image_encoder/model.safetensors -d /content/ComfyUI/models/clip_vision/ip_adapter -o model.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/embed/upscale/resolve/main/4x-UltraSharp.pth -d /content/ComfyUI/models/upscale_models -o 4x-UltraSharp.pth
# アニメーションモデルのダウンロード
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v15_v2.ckpt -d /content/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models -o mm_sd_v15_v2.ckpt
# ネガティブプロンプト
!git clone https://huggingface.co/embed/negative $WORKSPACE/models/embeddings/negative
!wget -c -P $WORKSPACE/models/embeddings/negative/
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://civitai.com/api/download/models/77169 -d /content/ComfyUI/models/upscale_models -o BadDream.pt
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://civitai.com/api/download/models/77173 -d /content/ComfyUI/models/upscale_models -o UnrealisticDream.pt
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://civitai.com/api/download/models/25820 -d /content/ComfyUI/models/upscale_models -o verybadimagenegative_v1.3.pt
%cd $WORKSPACE
# 依存関係のインストール
print("-= Install dependencies =-")
!pip install xformers!=0.0.18 -r requirements.txt --extra-index-url https://download.pytorch.org/whl/cu118 --extra-index-url https://download.pytorch.org/whl/cu118
# VAEのダウンロード
!wget -c https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors -P ./models/vae/
#checkpointをダウンロード
!wget -c https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt -P ./models/checkpoints/
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://civitai.com/api/download/models/128713 -d $WORKSPACE/models/checkpoints -o dreamshaper_8.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://civitai.com/api/download/models/177164 -d $WORKSPACE/models/checkpoints -o braBeautifulRealistic_v70.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://civitai.com/api/download/models/142334 -d $WORKSPACE/models/checkpoints -o Dolphinmix_v10.safetensors
#ControlNetのダウンロード
!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11e_sd15_ip2p_fp16.safetensors -P ./models/controlnet/
!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11e_sd15_shuffle_fp16.safetensors -P ./models/controlnet/
!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_canny_fp16.safetensors -P ./models/controlnet/
!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11f1p_sd15_depth_fp16.safetensors -P ./models/controlnet/
!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_inpaint_fp16.safetensors -P ./models/controlnet/
!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_lineart_fp16.safetensors -P ./models/controlnet/
!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_mlsd_fp16.safetensors -P ./models/controlnet/
!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_normalbae_fp16.safetensors -P ./models/controlnet/
!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_openpose_fp16.safetensors -P ./models/controlnet/
!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_scribble_fp16.safetensors -P ./models/controlnet/
!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_seg_fp16.safetensors -P ./models/controlnet/
!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_softedge_fp16.safetensors -P ./models/controlnet/
!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15s2_lineart_anime_fp16.safetensors -P ./models/controlnet/
!wget -c https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11u_sd15_tile_fp16.safetensors -P ./models/controlnet/
# cloudflaredのダウンロードとインストール
!wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
!dpkg -i cloudflared-linux-amd64.deb
def iframe_thread(port):
while True:
time.sleep(0.5)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = sock.connect_ex(('127.0.0.1', port))
if result == 0:
break
sock.close()
print("\nComfyUI finished loading, trying to launch cloudflared (if it gets stuck here cloudflared is having issues)\n")
p = subprocess.Popen(["cloudflared", "tunnel", "--url", f"http://127.0.0.1:{port}"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
for line in p.stderr:
l = line.decode()
if "trycloudflare.com " in l:
print("This is the URL to access ComfyUI:", l[l.find("http"):], end='')
# スレッドの開始
threading.Thread(target=iframe_thread, daemon=True, args=(8188,)).start()
# ComfyUIの実行
!python main.py --dont-print-server
テキストをコピーしたらGoogle Colabの画面に戻ります。

Google Colabの画面に戻ったらテキストボックスにコピーしたテキストを貼り付けます。

そして左上の再生ボタンをクリックします。

これで貼り付けたテキストの実行が開始されます。
このコマンドの実行には5分以上の時間がかかると思います。
しばらく待っているとこのようなリンクが表示されます。

表示されたリンクをクリックするとcomfyUIの画面が表示されます。

これでcomfyUIの操作画面を表示することができました。
この画面が表示されたら以下に貼ってあるリンク先のページを表示します。
このページを表示したら設定ファイルと書かれているタイトルの下にある添付ファイルをダウンロードします。

ダウンロードしたファイルを解凍します。
そうするとこのようなファイルがあると思います。

この中にあるworkflow_setting.Jsonという名前のファイルを読み込みます。

このファイルを読み込むにはcomfyUIの画面で操作します。
Loadと書かれているボタンをクリックします。

そうするとダイアログボックスが表示されるのでworkflow_setting. Jsonを選択します。

これでアニメーションの動画を生成するための準備が整いました。

それでは早速動画を生成していきましょう。
comfyUIの表示部分を左上の方に移動します。

次にLoad Videoというタイトルのブロックの中にあるchoose file to uploadと書かれているボタンをクリックします。

そしてアニメーションの元になる動画ファイルを選択します。

アップロードには少し時間がかかります。
アップロードが完了したらファイル名が切り替わります。

この動画では同じ名前のファイルをアップロードしたので見た目上は変わっていませんが、ファイルはアップロードされています。
ファイルをアップロードしたらQueue Promptと書かれているボタンをクリックします。

これでアニメーションの動画の生成が開始されます。
このまま動画が作成されるまで待っていても問題ありませんが、処理には10分以上かかります。
そのためGoogle Colabの画面に切り替えて処理の状況を確認していきましょう。

Queue Promptのボタンをクリックしてしばらくするとgot promptというメッセージが表示されます。

その後に処理に必要なファイルのダウンロードが開始されます。

ダウンロードが完了してから次の処理内容が表示されるまでは数分程度かかります。
数分待っているとこのようなメッセージが表示され始めます。

ここからさらに1分ほど待っているとこのような進捗状況を伝えるメッセージが表示されます。

このパーセンテージもなかなか進まないこともあると思いますが100%になるまで待ちます。
この動画の 場合は1/25から2/25になるまで1 分程度かかりました。
元になる動画ファイルによってはもっと時間がかかる可能性があります。
そのため気長に待ちましょう。
しばらく待っていると進捗状況が100%になります。

進捗状況が100%になってからさらに数分待っていると動画の作成処理が完了します。
このようにPrompt executed in というメッセージが表示されれば動画の処理は完了です。

今回の場合は動画の生成処理に798秒かかったようです。
つまり処理には約13分かかりました。
生成された動画をパソコンに保存するには、まずフォルダのマークをクリックします。

表示された一覧の中からcomfyUIのフォルダをクリックします。

続けてoutputという名前のフォルダをクリックします。

そして拡張子がMP4のファイルの右側にあるドットをクリックします。

メニューが表示されたらダウンロードをクリックします。

しばらく待っていると動画のダウンロードが開始されます。
青い円の表示が完了したらダウンロードが開始されます。

これで作成した動画をパソコンに保存することができます。

今回作成した動画がこちらです。

左側の動画を元に右側のアニメーションの動画が生成されています。
動画を元にこんな感じのアニメーションを作成できるのはすごいですね。
アニメーションを生成したら忘れずにGoogle Colabのリソースを解放しておきましょう。
Google Colabの画面に切り替えます。

右上に表示されているリソースの右側にある三角のマークをクリックします。

選択されたメニューからリソースを表示をクリックします。

そうすると現在接続しているリソースの情報が表示されます。
セッションの管理と書かれているリンクをクリックします。

そうするとアクティブなセッションが一覧で表示されます。

この画面が表示されたらゴミ箱のマークをクリックします。

そうすると確認メッセージが表示されるので終了を選択します。

これでGoogle Colabのリソースを解放することができます。
今回紹介した方法はリソースの使用率が高いのでこの処理を忘れないようにしましょう。
ぜひ皆さんも試してみてくださいね🎵