為什麼需要批次處理?

手動一張一張處理的痛點:

批次處理的優勢:


批次處理工作流架構

LoadImage Batch (批次載入)
        ↓
VAE Encode (統一編碼)
        ↓
KSampler (統一參數採樣)
        ↓
VAE Decode (統一解碼)
        ↓
SaveImage Batch (批次儲存)

方法 1:ComfyUI 內建批次模式

步驟

1. 準備輸入圖片

ComfyUI/input/
├── photo_001.jpg
├── photo_002.jpg
├── photo_003.jpg
└── ...

2. 使用 LoadImage Batch 節點

3. 輸出管理

ComfyUI/output/
├── batch_001_001.png
├── batch_002_002.png
├── batch_003_003.png
└── ...

方法 2:Python API 自動化腳本

安裝依賴

pip install requests tqdm pillow

批次處理腳本

import requests, os, json
from tqdm import tqdm

COMFYUI_API = 'http://127.0.0.1:8188'

def queue_prompt(workflow):
    data = dict(prompt=workflow)
    response = requests.post(COMFYUI_API + '/prompt', json=data)
    return response.json().get('prompt_id')

def get_history(pid):
    response = requests.get(COMFYUI_API + '/history/' + pid)
    return response.json()

def batch_process(input_dir, output_dir, prompt, denoise=0.5, cfg=7.0, steps=20):
    os.makedirs(output_dir, exist_ok=True)
    images = [f for f in os.listdir(input_dir)
              if f.lower().endswith(('.jpg', '.jpeg', '.png'))]
    for img_name in tqdm(images, desc='Processing'):
        with open('workflow.json') as f:
            workflow = json.load(f)
        workflow['2']['inputs']['image'] = img_name
        workflow['6']['inputs']['text'] = prompt
        workflow['3']['inputs']['denoise'] = denoise
        workflow['3']['inputs']['cfg'] = cfg
        workflow['3']['inputs']['steps'] = steps
        pid = queue_prompt(workflow)
        while True:
            history = get_history(pid)
            if pid in history:
                break
    print('Done: ' + str(len(images)) + ' images')

batch_process(
    input_dir='./photos/', output_dir='./results/',
    prompt='吉卜力工作室風格',
    denoise=0.5, cfg=7.0, steps=20
)

方法 3:Cron 定時批次

自動排程處理

# 每天凌晨 3 點自動處理新照片
0 3 * * * cd ~/.hermes/scripts && python batch_img2img.py

輸出目錄管理

output/
├── ghibli/          # 吉卜力風格
│   ├── 001.png
│   └── 002.png
├── shinkai/         # 新海誠風格
│   ├── 001.png
│   └── 002.png
├── ink/             # 水墨風格
└── comparison/      # 前後對比

效能優化

顯存管理

batch_size = 4  # 一次處理 4 張
# 顯卡 8GB 建議: 2-4
# 顯卡 16GB 建議: 4-8
# 顯卡 32GB 建議: 8-16

低顯卡模式

python main.py --lowvram --gpu-only

記憶體釋放

import torch
def free_memory():
    torch.cuda.empty_cache()
for batch in batches:
    process_batch(batch)
    free_memory()

實戰案例

案例 1:全家福批量風格化

輸入 50 張家庭照片,吉卜力 + 新海誠 2 種風格,輸出 100 張風格化照片。
時間:手動約 5 小時 → 批次約 30 分鐘

案例 2:電商產品圖

輸入 200 張商品照片,純白背景 + 柔光棚燈風格,輸出 200 張專業產品照。
時間:手動約 10 小時 → 批次約 1 小時

案例 3:社群媒體素材

輸入 30 張生活照,8 種藝術風格,輸出 240 張素材供選擇最佳。
時間:手動約 15 小時 → 批次約 2 小時


常見問題

Q: 批次處理時顯卡記憶體不足?
→ 降低 batch_size 或改用 --lowvram 模式。

Q: 某些圖片處理失敗?
→ 加入 try/except 跳過失敗圖片,繼續處理下一張。

Q: 輸出品質不一致?
→ 確保所有圖片解析度和亮度一致,建議先做預處理。