AIツール

ComfyUI-ControlNeXt-SVDで可愛いAIインフルエンサーを生成する方法とは?

▶︎動画でも話してるので、文章読むのが面倒な方はこちらをみてもらえればと思います。

今回はComfyUI-ControlNeXt-SVDでAIインフルエンサーを生成する方法について解説します。

この記事を読みながら実際に手を動かしてもらえれば、AIインフルエンサーを簡単に作成することができるのでぜひ試してみてくださいね。

たぬきち
たぬきち
AI美女作成の方法に関するノウハウもかなり溜まってきたので、そのノウハウを凝縮してまとめた教材を販売してるよ!

これを読めば誰でも簡単にクオリティーの高いAI美女が作れるようになっているので興味がある人は、下のバナーをクリックして購入してみてね🎶

ComfyUI-ControlNeXt-SVDでAIインフルエンサーを生成する方法

今回はCNEXTSVDのソースコードに用意されているサンプルコードを参考にさせていただきました。

この動画では、このソースコードをGoogle ColabでconfUIを動作させていきます。

Google Colabを準備する

まずは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美女インフルエンサーの動画を作ることができるので、ぜひ試してみてくださいね。