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