▶︎動画でも話してるので、文章読むのが面倒な方はこちらをみてもらえればと思います。
今回はComfyUI-ControlNeXt-SVDでAIインフルエンサーを生成する方法について解説します。
この記事を読みながら実際に手を動かしてもらえれば、AIインフルエンサーを簡単に作成することができるのでぜひ試してみてくださいね。
これを読めば誰でも簡単にクオリティーの高いAI美女が作れるようになっているので興味がある人は、下のバナーをクリックして購入してみてね🎶
目次
ComfyUI-ControlNeXt-SVDでAIインフルエンサーを生成する方法
今回はCNEXTSVDのソースコードに用意されているサンプルコードを参考にさせていただきました。
この動画では、このソースコードをGoogle ColabでconfUIを動作させていきます。
Google Colabを準備する
まずはGoogle Colabのサイトにアクセスします。
Google Colabの画面を表示したら、「ノートブックを新規作成」と書かれているボタンをクリックします。
もしこのようなポップアップ画面が表示されない場合は、メニューの中から「ファイル」を選択して「ノートブックを新規作成」を選択します。
ノートブックを新規作成したら、名前を変更しておきましょう。この解説では、以下のような名前にしておきました。
次に、ランタイムのタイプを変更します。メニューの中から「ランタイム」を選択して、「ランタイムのタイプを変更」を選択します。
そうするとランタイムのタイプの設定画面が表示されます。ランタイムのタイプはPython3にしておきます。
ハードウェアアクセラレーターはT4 GPUを選択します。
そして、ハイメモリーの設定を有効にしておきます。ハイメモリーの設定は無料版のGoogle Colabでは有効にすることができません。
そのため、この動画では有料版のGoogle Colabで解説を進めます。ランタイムのタイプをこのように変更したら、保存ボタンをクリックします。
これでGoogle Colabでコードを実行するための準備が整いました。
コードを実行する
それでは早速実行していきましょう。以下のコードをコピーてください。
!apt -y install -qq aria2
%cd /content
!git clone https://github.com/comfyanonymous/ComfyUI
%cd /content/ComfyUI
!git reset --hard 7cd0cdfce601a52c52252ace517b9f52f6237fdb
!pip install -r requirements.txt
# ComfyUI Managerのインストール
%cd /content/ComfyUI/custom_nodes
!git clone https://github.com/ltdrdata/ComfyUI-Manager.git
%cd /content/ComfyUI/custom_nodes
!git clone https://github.com/rgthree/rgthree-comfy
%cd rgthree-comfy
!pip install -r requirements.txt
%cd /content/ComfyUI/custom_nodes
!git clone https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite.git
# ---------------- ComfyUI-KJNodesの設定開始 ---------------------
%cd /content/ComfyUI/custom_nodes
# SetNode GetNode
!git clone https://github.com/kijai/ComfyUI-KJNodes
!pip install -r /content/ComfyUI/custom_nodes/ComfyUI-KJNodes/requirements.txt
%cd /content/ComfyUI/custom_nodes
# ---------------- ComfyUI-KJNodesの設定終了 ---------------------
%cd /content/ComfyUI/custom_nodes
!git clone https://github.com/kijai/ComfyUI-ControlNeXt-SVD.git
%cd ComfyUI-ControlNeXt-SVD
!pip install -r requirements.txt
%cd /content/ComfyUI/custom_nodes
# ---------------- ComfyUI-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
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/wangfuyun/AnimateLCM/resolve/main/AnimateLCM_sd15_t2v.ckpt -d /content/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models -o AnimateLCM_sd15_t2v.ckpt
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/ByteDance/AnimateDiff-Lightning/resolve/main/animatediff_lightning_1step_comfyui.safetensors -d /content/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models -o animatediff_lightning_1step_comfyui.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/ByteDance/AnimateDiff-Lightning/resolve/main/animatediff_lightning_1step_diffusers.safetensors -d /content/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models -o animatediff_lightning_1step_diffusers.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/ByteDance/AnimateDiff-Lightning/resolve/main/animatediff_lightning_2step_comfyui.safetensors -d /content/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models -o animatediff_lightning_2step_comfyui.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/ByteDance/AnimateDiff-Lightning/resolve/main/animatediff_lightning_2step_diffusers.safetensors -d /content/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models -o animatediff_lightning_2step_diffusers.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/ByteDance/AnimateDiff-Lightning/resolve/main/animatediff_lightning_4step_comfyui.safetensors -d /content/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models -o animatediff_lightning_4step_comfyui.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/ByteDance/AnimateDiff-Lightning/resolve/main/animatediff_lightning_4step_diffusers.safetensors -d /content/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models -o animatediff_lightning_4step_diffusers.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/ByteDance/AnimateDiff-Lightning/resolve/main/animatediff_lightning_8step_comfyui.safetensors -d /content/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models -o animatediff_lightning_8step_comfyui.safetensors
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/ByteDance/AnimateDiff-Lightning/resolve/main/animatediff_lightning_8step_diffusers.safetensors -d /content/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models -o animatediff_lightning_8step_diffusers.safetensors
# 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
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/wangfuyun/AnimateLCM/resolve/main/AnimateLCM_sd15_t2v_lora.safetensors -d /content/ComfyUI/models/loras -o AnimateLCM_sd15_t2v_lora.safetensors
# 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
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/crishhh/animatediff_controlnet/resolve/main/controlnet_checkpoint.ckpt -d /content/ComfyUI/models/controlnet -o controlnet_checkpoint.ckpt
%cd /content/ComfyUI/custom_nodes
# ---------------- ComfyUI-AnimateDiff-Evolvedの設定終了 ---------------------
# --------------------- 設定・入力ファイルの読み込み開始 ---------------------
prefix = "0010"
uuid = "408438ef-f740-459a-8cce-5668376df726"
root_path = f"https://archive.creativaier.com/comfyui_materials/{prefix}_{uuid}"
import requests
import json
# URLからJSONデータを取得
url = f"{root_path}/workflow.json"
response = requests.get(url)
data = response.json()
# JavaScriptモジュール形式でデータを整形
js_content = f"export const defaultGraph = {json.dumps(data, indent=2)};"
# ファイルに書き込む
output_path = "/content/ComfyUI/web/scripts/defaultGraph.js"
with open(output_path, "w") as f:
f.write(js_content)
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M "{root_path}/photo.png" -d /content/ComfyUI/input -o photo.png
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M "{root_path}/video.mp4" -d /content/ComfyUI/input -o video.mp4
# --------------------- 設定・入力ファイルの読み込み開始 ---------------------
# Checkpointをダウンロード
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/vdo/stable-video-diffusion-img2vid-xt-1-1/resolve/365cd94d4854b542059e410225a87dfe8dbcbcfb/svd_xt_1_1.safetensors -d /content/ComfyUI/models/checkpoints -o svd_xt_1_1.safetensors
# Unetをダウンロード
!aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/Kijai/ControlNeXt-SVD-V2-Comfy/resolve/main/controlnext-svd_v2-unet-fp16_converted.safetensors -d /content/ComfyUI/models/unet -o controlnext-svd_v2-unet-fp16_converted.safetensors
!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
# スレッドの開始
threading.Thread(target=iframe_thread, daemon=True, args=(8188,)).start()
# ComfyUIの実行
!python main.py --dont-print-server
テキストをコピーしたら、Google Colabの画面に戻ります。テキストボックスに先ほどコピーしたテキストを貼り付けます。そして再生ボタンを押します。
これで貼り付けたテキストの内容が実行されます。再生ボタンを押してから数分程度経ったら、このようなメッセージが表示されることがあります。
このメッセージが表示された場合は、キャンセルボタンを押して処理を継続します。
キャンセルボタンを押してからさらに5分ぐらい待っていると、このようなリンクが表示されます。
confUIでAIインフルエンサー動画を作成する
このリンクをクリックします。そうするとconfUIの画面が表示されます。
あらかじめ設定している画像と動画を変更させたい場合は、それぞれのブロックのアップロードボタンで変更できます。
設定ファイルが読み込まれたら、「Queue Prompt」と書かれているボタンをクリックします。
これで動画ファイルの生成が開始されます。処理の状況は画面上部の緑色のバーで確認できます。
動画の生成には数分程度かかると思います。しばらく待っていると、動画が生成されました。
作成した動画をダウンロードする
生成された動画をパソコンに保存するには、動画の部分を右クリックします。そして表示されたメニューの中から「セーブイメージ」を選択します。
これで生成された動画がパソコンにダウンロードされます。
こんなふうに簡単にAI美女インフルエンサーの動画を作ることができるので、ぜひ試してみてくださいね。