為什麼需要批次處理?
手動一張一張處理的痛點:
- ❌ 100 張照片要點擊 100 次 Queue Prompt
- ❌ 每張都要重新載入圖片
- ❌ 參數設定了 100 遍
- ❌ 輸出檔名混亂
批次處理的優勢:
- ✅ 一次設定,全部自動完成
- ✅ 統一的參數和風格
- ✅ 自動命名的輸出目錄
- ✅ 可以離線運行
批次處理工作流架構
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 節點
- 將所有圖片放到
input/目錄 - 在 KSampler 設定統一參數
- 點擊 Queue Prompt 一次
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: 輸出品質不一致?
→ 確保所有圖片解析度和亮度一致,建議先做預處理。