93 lines
3.3 KiB
Markdown
93 lines
3.3 KiB
Markdown
---
|
||
title: "comfyuiを自動化する"
|
||
slug: "comfyui-auto-controlnet"
|
||
date: "2025-10-19"
|
||
tags: ["comfyui"]
|
||
draft: false
|
||
---
|
||
|
||
今回は、使用している`comfyui`の自動化を紹介します。この辺の情報は検索してもあまり見あたりませんので。
|
||
|
||
## comfyuiの自動化手順
|
||
|
||
以下の機能を使用します。
|
||
|
||
1. `Apply InstantID`: 顔を指定します。
|
||
2. `Apply ControlNet`: ポーズを指定します。
|
||
|
||
まずこちらのworkflowを読み込みむと処理を書くのが早くなります。workflowは通常、comfyuiで作られた画像に記録されています。
|
||
|
||
[https://docs.comfy.org/tutorials/controlnet/pose-controlnet-2-pass](https://docs.comfy.org/tutorials/controlnet/pose-controlnet-2-pass)
|
||
|
||
ここから`Apply InstantID`を追加します。`Apply ControlNet`から`positive`, `negative`を`InstantID`と`KSampler`につなぎます。
|
||
|
||
```md
|
||
[ControlNet] -> [InstantID] -> [KSampler]
|
||
```
|
||
|
||
自動化には以下のノードを使います。
|
||
|
||
1. `Batch Image Loop Open`: loop処理を作れます。
|
||
2. `Load Image Batch From Dir`: 画像をディレクトリから読み込みます。
|
||
3. `LogicUtil_Uniform Random Choice`: ランダムで区切り文字を選択します。loop中にpromptの中身を変えます。
|
||
|
||
なお、`comfyui`の外部ノードは以下を使用しています。
|
||
|
||
- comfyui_instantid
|
||
- loop-image
|
||
- comfyui-inspire-pack
|
||
|
||
|
||
自動化の手順としては、まず、ポーズをディレクトリに保存しておき、`Load Image Batch From Dir`で読み込みます。`Batch Image Loop Open`につなぎます。それを`Apply ControlNet`につなぎます。
|
||
|
||
最終的に`KSampler`から`VAE Decode`をつなぎ、そこから`Batch Image Loop Close`でループを閉じます。
|
||
|
||
もしここで保存したければ、`VAE Decode`を`Save Image`にも繋いでおきます。
|
||
|
||
```md
|
||
[Load Image Batch From Dir] -> [Batch Image Loop Open] ->
|
||
|
||
[ControlNet] -> [InstantID] -> [KSampler] ->
|
||
|
||
[VAE Decode] -> [Batch Image Loop Close]
|
||
```
|
||
|
||
[](/img/comfyui_instantid_controlnet_0001.png)
|
||
[](/img/comfyui_instantid_controlnet_0002.png)
|
||
[](/img/comfyui_instantid_controlnet_0003.png)
|
||
[](/img/comfyui_instantid_controlnet_0004.png)
|
||
|
||
|
||
## comfyuiの便利なノード
|
||
|
||
私は、`filename_prefix`で`Get Date Time String(JPS)`を使用しています。これでファイル名が重複しづらくなります。
|
||
|
||
役立つ外部ノードです。
|
||
|
||
- comfy-image-saver
|
||
- JPS-Nodes
|
||
- comfyui-custom-scripts
|
||
|
||
例えば、私は、loop中にpromptをランダムで変える処理を追加しています。これは`LogicUtil_Uniform Random Choice`で実現しており、区切り文字は`,`です。
|
||
|
||
```md
|
||
background: city street,
|
||
background: cloud sky,
|
||
background: galaxy planet,
|
||
```
|
||
|
||
## ポーズの作成手順
|
||
|
||
私の場合、例えば、自作のゲーム動画を保存し、`ffmepg`で画像化します。
|
||
|
||
```sh
|
||
$ ffmpeg -i input.mp4 output%04d.png
|
||
```
|
||
|
||
その画像を使って、ポーズを作成することができます。
|
||
|
||
- `OpenPose Pose`: `comfyui_controlnet_aux`
|
||
|
||
[](/img/comfyui_instantid_controlnet_0005.png)
|
||
|