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