▶︎動画でも話してるので、文章読むのが面倒な方はこちらをみてもらえればと思います。
今回はComfyUIを使って崩れた手の形を修正する方法について解説します。
これを読めば誰でも簡単にクオリティーの高いAI美女が作れるようになっているので興味がある人は、下のバナーをクリックして購入してみてね🎶
目次
ComfyUIを使って崩れた手の形を修正する方法について
今回はStable Video Diffusionを使ってAI美女の動画を生成する方法について解説します。
この動画で紹介する内容は、OpenArtというサイトにあるComfyUIの設定ファイルを参考にしております。
この解説ではGoogle ColabでComfyUIを動作させていきます。
なお、OpenArtとGoogle Colabへのリンク及び、ComfyUIやGoogle Colabというキーワードが分からない場合は、以下にリンクを貼っておきますので、そちらをご確認ください。
Google Colabのサイトにアクセス
ここからの流れは下記に詳細リンクを貼っておきますので、そちらからご参照ください。
上記の記事ではハードウェアアクセラレータはT4 GPUですが、今回はハードウェアアクセラレータA100 GPUを選択します。
A100 GPUを選択した場合は、ハイメモリーの設定が自動的に有効になります。
なお、無料版のGoogle ColabではA100 GPUは選択できません。
そのため、この動画では有料版のGoogle Colabで解説を進めます。
これでGoogle Colabでコードを実行するための準備が整いました。
Google Colabでコードを実行
下記に貼ってあるテキストをコピーします。
!apt -y install -qq aria2
!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
!pip install torchsde controlnet-aux==0.0.7 onnxruntime-gpu insightface segment_anything watchdog omegaconf piexif
%cd /content
!git clone https://github.com/comfyanonymous/ComfyUI
%cd /content/ComfyUI
!pip install -r requirements.txt
# ComfyUI Managerのインストール
%cd /content/ComfyUI/custom_nodes
!git clone https://github.com/ltdrdata/ComfyUI-Manager.git
!git clone https://github.com/shiimizu/ComfyUI_smZNodes
!git clone https://github.com/chrisgoringe/cg-use-everywhere
!git clone https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite
!git clone https://github.com/ltdrdata/ComfyUI-Inspire-Pack
!git clone https://github.com/ltdrdata/ComfyUI-Impact-Pack
!git clone https://github.com/pythongosssss/ComfyUI-Custom-Scripts
!git clone https://github.com/ltdrdata/ComfyUI-Manager.git
!git clone https://github.com/Fannovel16/ComfyUI-Frame-Interpolation
# ---------------- ComfyUI-KJNodesの設定開始 ---------------------
%cd /content/ComfyUI/custom_nodes/
!git clone https://github.com/kijai/ComfyUI-KJNodes.git
%cd ComfyUI-KJNodes
!pip install -r requirements.txt
%cd /content/ComfyUI/custom_nodes
# ---------------- ComfyUI-KJNodesの設定開始 ---------------------
# ---------------- ComfyUI_IPAdapter_plusの設定開始 ---------------------
%cd /content/ComfyUI/custom_nodes
!git clone https://github.com/cubiq/ComfyUI_IPAdapter_plus.git
# ip-adapter(clip_vision) : $WORKSPACE/models/clip_vision
!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 -o ipadapter_model_sd15.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/image_encoder/model.safetensors -d /content/ComfyUI/models/clip_vision -o ipadapter_model_sdxl.safetensors
# ip-adapter(main) : $WORKSPACE/models/ipadapter
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15.safetensors -d /content/ComfyUI/models/ipadapter -o ip-adapter_sd15.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15_light.safetensors -d /content/ComfyUI/models/ipadapter -o ip-adapter_sd15_light.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter-plus_sd15.safetensors -d /content/ComfyUI/models/ipadapter -o ip-adapter-plus_sd15.safetensors
!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.safetensors -d /content/ComfyUI/models/ipadapter -o ip-adapter-plus-face_sd15.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter-full-face_sd15.safetensors -d /content/ComfyUI/models/ipadapter -o ip-adapter-full-face_sd15.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15_vit-G.safetensors -d /content/ComfyUI/models/ipadapter -o ip-adapter_sd15_vit-G.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter_sdxl.safetensors -d /content/ComfyUI/models/ipadapter -o ip-adapter_sdxl.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter_sdxl_vit-h.safetensors -d /content/ComfyUI/models/ipadapter -o ip-adapter_sdxl_vit-h.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter-plus_sdxl_vit-h.safetensors -d /content/ComfyUI/models/ipadapter -o ip-adapter-plus_sdxl_vit-h.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter-plus-face_sdxl_vit-h.safetensors -d /content/ComfyUI/models/ipadapter -o ip-adapter-plus-face_sdxl_vit-h.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sd15.bin -d /content/ComfyUI/models/ipadapter -o ip-adapter-faceid_sd15.bin
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plus_sd15.bin -d /content/ComfyUI/models/ipadapter -o ip-adapter-faceid-plus_sd15.bin
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sd15.bin -d /content/ComfyUI/models/ipadapter -o ip-adapter-faceid-plusv2_sd15.bin
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sdxl.bin -d /content/ComfyUI/models/ipadapter -o ip-adapter-faceid_sdxl.bin
# ip-adapter(loras) : $WORKSPACE/models/loras
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sd15_lora.safetensors -d /content/ComfyUI/models/loras -o ip-adapter-faceid_sd15_lora.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plus_sd15_lora.safetensors -d /content/ComfyUI/models/loras -o ip-adapter-faceid-plus_sd15_lora.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sd15_lora.safetensors -d /content/ComfyUI/models/loras -o ip-adapter-faceid-plusv2_sd15_lora.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sdxl_lora.safetensors -d /content/ComfyUI/models/loras -o ip-adapter-faceid_sdxl_lora.safetensors
# ---------------- ComfyUI_IPAdapter_plusの設定終了 ---------------------
# ---------------- facerestore_cfの設定開始 ---------------------
%cd /content/ComfyUI/custom_nodes
!git clone https://github.com/mav-rik/facerestore_cf
!pip install -r /content/ComfyUI/custom_nodes/facerestore_cf/requirements.txt
# onxxファイル : $WORKSPACE/models/insightface
!wget https://archive.creativaier.com/comfyui/scripts/setup_script
!mv setup_script setup_script.py
!chmod +x setup_script.py
!python setup_script.py
!rm -rf setup_script.py
# facerestore_models : $WORKSPACE/models/facerestore_models
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://github.com/TencentARC/GFPGAN/releases/download/v1.3.4/GFPGANv1.4.pth -d /content/ComfyUI/models/facerestore_models -o GFPGANv1.4.pth
# ---------------- facerestore_cfの設定終了 ---------------------
# ---------------- AnimateDiff-Evolvedの設定開始 ---------------------
%cd /content/ComfyUI/custom_nodes
!git clone https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved
# 備考: 今回のWorkflowで利用しないファイルをコメントアウト
# ComfyUI-AnimateDiff-Evolved/Checkpoint:($WORKSPACE/models/custom_nodes/ComfyUI-AnimateDiff-Evolved/models)
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v14.ckpt -d /content/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models -o mm_sd_v14.ckpt
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v15.ckpt -d /content/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models -o mm_sd_v15.ckpt
!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
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/guoyww/animatediff/resolve/main/mm_sdxl_v10_beta.ckpt -d /content/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models -o mm_sdxl_v10_beta.ckpt
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/guoyww/animatediff/resolve/main/v3_sd15_mm.ckpt -d /content/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models -o v3_sd15_mm.ckpt
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/CiaraRowles/TemporalDiff/resolve/main/temporaldiff-v1-animatediff.ckpt -d /content/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models -o temporaldiff-v1-animatediff.ckpt
# ComfyUI-AnimateDiff-Evolved/MotionLoRA:($WORKSPACE/models/custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora)
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_PanLeft.ckpt -d /content/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora -o v2_lora_PanLeft.ckpt
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_PanRight.ckpt -d /content/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora -o v2_lora_PanRight.ckpt
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_RollingAnticlockwise.ckpt -d /content/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora -o v2_lora_RollingAnticlockwise.ckpt
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_RollingClockwise.ckpt -d /content/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora -o v2_lora_RollingClockwise.ckpt
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_TiltDown.ckpt -d /content/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora -o v2_lora_TiltDown.ckpt
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_TiltUp.ckpt -d /content/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora -o v2_lora_TiltUp.ckpt
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_ZoomIn.ckpt -d /content/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora -o v2_lora_ZoomIn.ckpt
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_ZoomOut.ckpt -d /content/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora -o v2_lora_ZoomOut.ckpt
# LoRA:($WORKSPACE/models/loras)
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/guoyww/animatediff/resolve/main/v3_sd15_adapter.ckpt -d /content/ComfyUI/models/loras -o v3_sd15_adapter.ckpt
# ControlNet:($WORKSPACE/models/controlnet)
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/guoyww/animatediff/resolve/main/v3_sd15_sparsectrl_rgb.ckpt -d /content/ComfyUI/models/controlnet -o v3_sd15_sparsectrl_rgb.ckpt
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/guoyww/animatediff/resolve/main/v3_sd15_sparsectrl_scribble.ckpt -d /content/ComfyUI/models/controlnet -o v3_sd15_sparsectrl_scribble.ckpt
# ---------------- AnimateDiff-Evolvedの設定終了 ---------------------
!wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
!dpkg -i cloudflared-linux-amd64.deb
import subprocess
import threading
import time
import socket
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='')
%cd /content/ComfyUI
# Checkpointをダウンロード
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/stabilityai/stable-video-diffusion-img2vid-xt/resolve/main/svd_xt.safetensors -d /content/ComfyUI/models/checkpoints -o svd_xt.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/stabilityai/stable-video-diffusion-img2vid-xt/resolve/main/svd_xt_image_decoder.safetensors -d /content/ComfyUI/models/checkpoints -o svd_xt_image_decoder.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/digiplay/majicMIX_realistic_v6/resolve/main/majicmixRealistic_v6.safetensors -d /content/ComfyUI/models/checkpoints -o majicmixRealistic_v6.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/digiplay/majicMIX_realistic_v6/resolve/main/majicmixRealistic_v6.safetensors -d /content/ComfyUI/models/checkpoints -o majicmixRealistic_v6.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/AnonPerson/ChilloutMix/resolve/main/Japanese-doll-likeness.safetensors -d /content/ComfyUI/models/loras -o Japanese-doll-likeness.safetensors
# CLIP Load用のモデルファイル
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/laion/CLIP-ViT-H-14-laion2B-s32B-b79K/resolve/main/open_clip_pytorch_model.bin -d /content/ComfyUI/models/clip -o open_clip_pytorch_model.bin
# VAEをダウンロード
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors -d /content/ComfyUI/models/vae -o vae-ft-mse-840000-ema-pruned.safetensors
# Negative Promptをダウンロード
!git clone https://huggingface.co/embed/negative /content/ComfyUI/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/embeddings -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/embeddings -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/embeddings -o verybadimagenegative_v1.3.pt
# Loras
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/AnonPerson/ChilloutMix/resolve/main/Japanese-doll-likeness.safetensors -d /content/ComfyUI/models/loras -o Japanese-doll-likeness.safetensors
# Upscaleのモデルをダウンロード
!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
%cd /content/ComfyUI
# スレッドの開始
threading.Thread(target=iframe_thread, daemon=True, args=(8188,)).start()
# ComfyUIの実行
!python main.py --dont-print-server
テキストをコピーしたら、Google Colabの画面に戻り、テキストボックスに先ほどコピーしたテキストを貼り付け、再生ボタンを押します。これで貼り付けたテキストの内容が実行されます。
この処理には5分以上かかると思います。
しばらく待っていると、このようなリンクが表示されます。
このリンクをクリックします。
そうするとComfyUIの画面が表示されます。
設定ファイルを読み込み
この解説では、あらかじめComfyUIの設定ファイルを用意していますので、そちらをご利用ください。
以下に貼ってあるページを表示します。
このページを表示したら、利用ファイルと書かれているタイトルの下にあるZIPファイルをクリックします。
そうするとZIPファイルがダウンロードされるので、解凍します。
ダウンロードしたファイルを解凍したら、このようなファイルが表示されると思います。
この中にあるworkflow.JSON
と書かれているファイルをComfyUIの画面にドラッグ&ドロップします。
ファイルは何も表示されていない場所にドラッグ&ドロップするようにしてください。
これでworkflow.JSON
の設定ファイルが読み込まれます。
設定ファイルが読み込まれたら、動画の元になる画像ファイルをアップロードします。
具体的には、「ロードイメージ」というタイトルのブロックの中にあるアップロードボタンをクリックします。
そうするとダイアログボックスが表示されるので、画像ファイルを選択します。
今回は、このような画像を選択しておきました。
ファイルをアップロードしたら、早速動画を生成していきましょう。
動画を生成
「Queue Prompt」と書かれているボタンをクリックします。
これで動画の生成処理が開始されます。
生成処理の状況は、ブロックの表示で確認できます。
緑色で囲まれているブロックが現在実行されている処理です。
処理が完了すると、囲んでいる緑色の表示が移動します。
生成される動画は、プレビュー画面で確認することができます。
この動画では、生成される箇所を抜粋して表示していますが、動画の生成には10分以上の時間がかかると思います。
しばらく待っていると、このように全てのプレビュー画面に動画が表示されます。
1番右側のプレビュー画面で表示されている動画が完成品です。
生成された動画をパソコンに保存するには、動画の部分を右クリックします。
そして表示されたメニューの中から「セーブプレビュー」を選択します。
これで動画ファイルをパソコンにダウンロードすることができます。
今回生成された動画がこちらです。
Stable Video Diffusionを利用すると、このような動画を生成することができます。
是非お試しください。