
這是很多二次元同人圈里常說的一句話。圍繞“卡莫大人”這個虛擬角色粉絲、畫師、創作者會集中產出同人圖、表情包和賀圖。如果把這句話放到技術語境里其實剛好對應一個很實際的需求如何用 AI 繪畫給同一個虛擬角色批量生成風格統一、角度多樣、可以直接用于內容生產的圖片。這次我們來看一套適合“卡莫大人”這類虛擬 IP 的 AI 角色一致性出圖工作流。核心思路是本地部署 ComfyUI配合 LoRA 模型固定角色特征用 ControlNet 約束姿勢與構圖最后通過 API 和批量任務把單張出圖變成流水線生產。文章的落腳點不是“抽卡式出圖”而是怎么把角色畫風穩定下來、怎么讓批量任務可重復、怎么把結果接到自己的工具或網站里。如果你關心下面這些問題這篇文章可以直接收藏本地部署 AI 生圖工具顯存要求大概是多少怎么用 LoRA 固定角色臉部、服裝、發型的一致性怎么通過 ComfyUI 批量生成多角度、多表情的同人圖怎么用 API 接口把生圖能力接到自己的腳本或網站里實際跑圖時怎么觀察顯存占用、怎么降低崩潰概率。1. 核心能力速覽能力項說明項目類型本地 AI 圖像生成工作流基于 ComfyUI 搭建核心模型底模如 SD1.5 / SDXL 系列 LoRA 角色模型 ControlNet主要功能文生圖、圖生圖、局部重繪、角色一致性生成、批量出圖硬件門檻建議 8G 以上顯存無顯卡可跑 CPU 推理但速度慢不建議批量任務顯存占用需按實際模型版本和分辨率測試8G 顯存建議從 512x512 起步支持平臺Windows / Linux 均可Mac 可嘗試 CPU / MPS 推理啟動方式一鍵整合包 / 命令行啟動 / 腳本啟動接口能力支持 HTTP API可通過 curl 或 Python 調用工作流批量任務支持批量提示詞、批量圖片輸入、多隊列調度適合場景虛擬 IP 同人圖生產、漫畫素材生成、表情包批量輸出、角色設定圖制作這套工作流的優勢不是單一模型強大而是把“固定角色”這個任務拆成了三層底模決定畫風基線LoRA 鎖定角色特征ControlNet 約束姿勢和構圖。三層配合下來比單純靠提示詞寫“白毛紅瞳”“金色長發”要穩定得多。2. 適用場景與使用邊界2.1 適合誰同人創作者需要給“卡莫大人”這類角色制作多角度的設定圖、表情包、節日賀圖。內容團隊運營虛擬 IP 賬號需要批量產出風格統一的配圖。獨立開發者和自媒體想搭建本地生圖服務把 AI 繪圖能力封裝成 API 給業務調用。剛接觸本地部署的新手想找一套清晰、可復制的 ComfyUI 工作流。2.2 能解決什么問題角色臉崩LoRA 可以固定五官特征減少不同批次之間臉型不一致的問題。畫風漂移固定底模和采樣器輸出畫面風格能保持穩定。手工修圖成本高通過批量腳本生成草稿再挑選滿意的結果精修。單張出圖慢批量任務 API 可以在無人值守的情況下連續產出。2.3 使用邊界如果輸入素材包含他人創作的角色、畫師作品或未授權的圖片必須確認授權范圍。如果“卡莫大人”是某個已注冊的版權角色請留意版權方對二次創作和非商用/商用的規定。用 ControlNet 提取姿勢時不要使用真人照片作為底圖去生成真人換臉類圖片涉及肖像權風險。生成內容不得包含違法、色情、暴力或冒犯性元素。批量任務跑在本地時如果模型文件來源不明先做安全掃描。3. 環境準備與前置條件3.1 操作系統與硬件Windows 10/11、Ubuntu 20.04 或更新版本都可以。推薦使用 NVIDIA 顯卡因為 CUDA 生態最成熟。顯存建議從 8G 起步越高越省心。如果顯卡顯存只有 4G也不是完全不能用但分辨率只能控制在 512 左右LoRA 和 ControlNet 需要謹慎疊加否則容易爆顯存。如果完全沒有顯卡可以用 CPU 推理但一張 512x512 圖可能要幾分鐘到十幾分鐘適合體驗不適合批量生產。3.2 軟件依賴以 ComfyUI 為例基本依賴如下Python 3.10 或 3.11PyTorch 與 CUDA 版本匹配Git用于下載項目倉庫ComfyUI 項目本體對應模型的權重文件底模、LoRA、ControlNet可選ComfyUI Manager用來管理自定義節點。3.3 網絡環境下載模型權重需要訪問一些開源模型托管平臺網絡不穩定時建議使用鏡像源或下載工具。模型文件通常比較大建議預留 20G 以上磁盤空間。4. 安裝部署與啟動方式4.1 獲取 ComfyUI如果你需要一套能直接跑起來的完整包可以找社區整合包如果你偏向自己控制環境用命令行安裝也很簡單。# 以命令行方式安裝 ComfyUI 為例具體路徑按實際環境調整 git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI # 創建虛擬環境 python -m venv venv # 激活虛擬環境 # Windows venv\Scripts\activate # Linux / macOS source venv/bin/activate # 安裝依賴 pip install -r requirements.txt安裝依賴這一步是重點。PyTorch 建議直接從官方源安裝避免版本不匹配# 以 CUDA 12.1 為例實際版本需要根據顯卡驅動選擇 pip install torch torchvision --index-url https://download.pytorch.org/whl/cu1214.2 放置模型文件把下載好的模型文件放到對應目錄底模放入ComfyUI/models/checkpoints/LoRA 放入ComfyUI/models/loras/ControlNet 放入ComfyUI/models/controlnet/VAE 放入ComfyUI/models/vae/。目錄結構類似ComfyUI/ models/ checkpoints/ realisticVisionV51.safetensors loras/ kamo_v1.safetensors controlnet/ control_v11p_sd15_openpose.pth vae/ vae-ft-mse-840000-ema-pruned.ckpt文件名只是示例實際需要替換成你下載的模型文件。4.3 啟動服務啟動命令比較簡單python main.py --listen 127.0.0.1 --port 8188啟動后打開瀏覽器訪問http://127.0.0.1:8188看到 ComfyUI 界面就說明服務正常。4.4 加載角色一致性工作流ComfyUI 的界面由節點和工作流組成。你可以從一個基礎工作流開始在節點列表里添加 LoRA 加載器和 ControlNet 加載器。一個典型的工作流節點順序是Load Checkpoint - Load LoRA - CLIP Text Encode - KSampler - VAE Decode - Save ImageControllerNet 需要額外加載一張姿勢參考圖通過ControlNetLoader和ControlNetApplyAdvanced節點接入采樣流程。5. 功能測試與效果驗證5.1 測試環境建議第一次測試時使用小分辨率、少步數快速確認流程是否跑通。分辨率512x512 或 512x768采樣步數20 步左右采樣器DPM 2M Karras提示詞先寫簡單角色描述。5.2 文生圖測試測試目的確認底模和 LoRA 能正常加載角色是否能生成。輸入示例positive: 1girl, kamo, white hair, red eyes, solo, upper body, looking at viewer, clean background negative: lowres, bad anatomy, bad hands, extra fingers, watermark操作步驟在Load Checkpoint節點選擇底模在Load LoRA節點選擇卡莫角色 LoRA輸入正反向提示詞點擊Queue Prompt觀察生成的圖片和日志。判斷成功標準圖片能生成出來角色發色、瞳色、服裝與素材一致臉部沒有明顯崩壞。常見失敗原因LoRA 權重過高導致過擬合底模與 LoRA 的基座模型不匹配提示詞中加入了沖突的角色描述。5.3 圖生圖 / 多角度一致性測試測試目的用一張參考圖作為底圖生成不同角度、不同表情的角色圖。把Load Image節點接到KSampler的latent_image輸入或者用ImageToLatent轉成潛空間向量。輸入素材一張“卡莫大人”正面參考圖推薦參數denoise設為 0.4~0.6保留原始構圖只調整表情或細節輸出預期多張圖角色臉部保持一致角度和表情有變化。如果多角度變化后仍然穩定說明 LoRA 訓練質量合格。如果臉部風格漂移可以適當降低 LoRA 權重或者在 ControlNet 中加入openpose固定姿勢。5.4 局部重繪測試局部重繪用于修正細節。比如生成圖的手部崩了可以用 mask 把手上區域選出來重新采樣。用Load Image加載目標圖用VAE Encode得到潛空間向量用Mask節點指定需要重繪的區域調整denoise到 0.6 以上對局部區域重新生成。判斷標準只有重繪區域發生明顯變化其他區域保持原樣。5.5 批量生成測試批量生成的目的是驗證連續出圖的穩定性??梢园雅螖翟O為 4觀察連續出圖后角色是否保持一致。在 ComfyUI 中可以通過修改KSampler的batch_size一次生成多張圖也可以把提示詞寫成文本文件通過自定義腳本逐條調用 API。批量測試重點關注是否會中途爆顯存生成的圖片風格是否一致如果切換多組提示詞角色特征是否仍然穩定。6. 接口 API 與批量任務ComfyUI 自帶 HTTP API可以把工作流當作后端服務來調用。這個能力很適合把生圖流程接入自己的工具鏈。6.1 獲取工作流 JSON在 ComfyUI 界面的Workflow菜單中通過Export (API Format)導出工作流 JSON。這個 JSON 是調 API 時需要的請求體。6.2 提交任務通過/prompt接口提交工作流curl -X POST http://127.0.0.1:8188/prompt \ -H Content-Type: application/json \ -d workflow_api.json接口會返回一個prompt_id用這個 ID 查詢任務狀態。6.3 用 Python 調用示例import json import requests import urllib.request COMFYUI_URL http://127.0.0.1:8188 def submit_workflow(workflow): response requests.post(f{COMFYUI_URL}/prompt, json{prompt: workflow}) response.raise_for_status() return response.json()[prompt_id] def get_history(prompt_id): with urllib.request.urlopen(f{COMFYUI_URL}/history/{prompt_id}) as response: return json.loads(response.read())6.4 批量任務隊列設計批量任務的關鍵是避免一次提交過多任務導致顯存溢出。推薦的做法是“單隊列、串行或小并發”。一個簡單的批量腳本流程import time from pathlib import Path prompts [ {positive: ..., negative: ...}, {positive: ..., negative: ...}, ] for idx, item in enumerate(prompts): workflow build_workflow(item) prompt_id submit_workflow(workflow) print(ftask {idx}: {prompt_id}) while not is_done(prompt_id): time.sleep(2) if has_error(prompt_id): retry(workflow)6.5 任務結果獲取任務完成后圖片會被保存在ComfyUI/output/目錄下。你可以在歷史記錄中拿到輸出圖片文件名然后通過/view接口讀取。def get_output_images(prompt_id): history get_history(prompt_id) outputs history[prompt_id][outputs] images [] for node_id, output in outputs.items(): if images in output: images.extend(output[images]) return images7. 資源占用與性能觀察7.1 顯存占用怎么看在 Linux 下用nvidia-smi -l 1實時查看。在 Windows 下用任務管理器或者 GPU-Z。跑圖時主要看兩個階段模型加載階段底模、LoRA、ControlNet 會被加載到顯存占用峰值較高采樣階段KSampler 迭代時顯存持續保持高位分辨率越大占用越高。從常見情況看SD1.5 底模 LoRA ControlNet 在 8G 顯存上可以跑 512 到 768 分辨率。SDXL 底模默認就需要更大的顯存建議 12G 以上。實際占用需要以你的模型版本和分辨率測試為準。7.2 如何降低顯存占用降低分辨率先用 512x512 測試減少批次數批次數不要一開始就拉到 4 或 8關閉無關的后臺應用尤其是瀏覽器多開頁面在 ComfyUI 啟動參數中開啟--lowvram或--novram模式讓模型按需加載避免同時加載多個 ControlNet減少 LoRA 數量一次只掛一個角色 LoRA。7.3 CPU 推理與 GPU 推理的差異CPU 推理不需要顯卡但速度會慢很多。如果只是偶爾出圖可以接受。如果要做批量任務強烈建議 GPU。另外CPU 推理時內存占用會明顯升高建議系統內存 16G 以上。7.4 性能觀察記錄每次測試可以記錄一組數據格式如下參數配置觀察結果底模SD1.5 系列顯存占用需實測分辨率512x512建議起點根據顯存調整Batch1穩定優先ControlNetopenpose會影響顯存占用出圖時間取決于硬件建議多次測試取平均值把這類記錄保存下來后續調整參數時就有依據。8. 常見問題與排查方法問題現象可能原因排查方式解決方案啟動后頁面打不開端口被占用或服務未啟動檢查終端日志和端口監聽更換端口python main.py --port 8189依賴安裝失敗Python 版本或 PyTorch 版本不匹配查看 pip 錯誤日志按項目要求創建新虛擬環境重新安裝模型文件缺失模型下載不完整或未放入目錄檢查文件大小和目錄結構重新下載確認文件名與節點路徑對應提示 model not found加載節點中的模型名與文件名不一致打開模型加載器檢查路徑修改節點配置或把模型復制到對應目錄CUDA 不可用驅動版本或 PyTorch 版本不對執行python -c import torch; print(torch.cuda.is_available())升級/降級驅動重裝匹配的 PyTorch爆顯存分辨率或批次數設置過高觀察nvidia-smi峰值降低分辨率、減少 batch、開--lowvram輸出圖片臉部崩壞LoRA 權重過高或提示詞沖突降 LoRA 權重簡化提示詞重新測試不同權重參數批量任務卡住隊列積壓或某個任務出錯查看服務端日志和/queue接口清空隊列增加錯誤重試機制API 返回 400請求體 JSON 格式不符合 API 規范檢查導出的 workflow JSON重新導出 API 格式 JSON圖片生成全黑VAE 加載異常檢查 VAE 節點加載正確的 VAE 文件9. 最佳實踐與使用建議9.1 第一次先小參數測試不管模型多強、工作流多復雜第一次跑通時都用小分辨率、少步數、單批次。流程確認沒問題后再逐步加大規模。9.2 保留一套最小可運行配置把一套確認能跑通的低顯存配置保存在單獨的 workflow 文件里。出圖崩了、參數調亂了隨時可以切回這套配置兜底。9.3 目錄分三塊管理建議把輸入素材、模型文件、輸出結果分開存放project/ inputs/ reference/ # 參考圖 prompts/ # 批量提示詞 models/ checkpoints/ loras/ controlnet/ outputs/ 20250601/ 20250602/這樣做的好處是批量任務完成后能快速定位某次生成的圖片也方便清理模型占用的磁盤空間。9.4 批量任務加日志和失敗重試批量生圖時每個任務都要記錄 prompt_id、開始時間、結束時間和輸出文件名。遇到失敗任務先重試一次如果連續失敗停止隊列并檢查日志。9.5 接口服務限制訪問范圍如果開啟了 ComfyUI API不要把服務暴露到公網。默認--listen 127.0.0.1只允許本機訪問。如果一定要局域網訪問設置--listen 0.0.0.0時要注意網絡環境安全。9.6 合規與授權這一點必須單獨強調。如果你要生成“卡莫大人”或任何其他虛擬角色的同人圖請先確認角色是否屬于版權方能否用于非商業用途能否用于商業用途能否進行二次修改和分發。參考畫師風格的 LoRA 訓練需要在原作者同意的前提下進行。涉及真人照片、真人配音、真人臉部特征時必須獲得當事人明確授權否則不應放入生圖流程。10. 總結與下一步“這是我們卡莫大人最團結的時候”這句話在粉絲社群里的意思是大家一起為一個角色出力做內容。落到技術實現上能夠支撐這種“團結創作”的正是一套可復現、可批量的 AI 生圖工作流。LoRA 固定角色特征ControlNet 控制姿勢ComfyUI 的 API 與批量腳本把單張出圖變成生產力工具這是這套流程最值得嘗試的地方。最先要驗證的功能只有三個一是 ComfyUI 是否能在你的顯卡上穩定跑通二是 LoRA 是否能把角色臉部穩定下來三是 API 批量隊列是否不會中途爆顯存。這三個點驗證完整套工作流基本就立住了。最容易踩的坑還是模型版本不匹配和顯存估算失誤。SD1.5 的 LoRA 不能直接放到 SDXL 底模上用ControlNet 也要和底模版本對齊。建議每更換一個模型先跑低分辨率測試再逐步上強度。后續可以繼續擴展的方向包括接入本地圖庫做相似圖檢索、用多段 ControlNet 控制復雜姿勢、把批量出圖接到內容管理系統、訓練專屬 LoRA 提升高難度角度下的角色一致性。關鍵是先把基礎流程跑穩定再談擴展。建議收藏備用按文章順序搭一遍跑通一次之后后面就是復制工作流、修改參數、批量出圖的事。