同一角色换了景别、角度和场景后,发型、衣服或脸部细节很容易漂移。参考图适配可以把参考图的视觉特征带进生成过程,但它不会锁定角色身份,也不能保证 20 张图完全一致。下面用一张虚构角色设定图和 20 条镜头描述,练习怎样固定条件、逐项检查结果。

先把角色设定写成一张事实卡

练习包里的角色是完全虚构的成年女性“阿澄”:下颌长度的深棕色直发,左侧鬓角有一缕青绿色挑染,深棕眼睛,橄榄绿风衣,左领口一枚窄铜色胸针。用同一模型先生成一张正面偏侧的半身设定图,背景保持简单,让脸、发型和上衣都看清楚。把这张图保存为后续 20 个镜头共用的参考图。

提示词中不随镜头变化的部分放在角色描述里;每条镜头提示只改地点、景别、机位和动作。不要同时改角色年龄、发色、服装、画风和镜头,否则结果变了也很难判断是哪项条件造成的。

本次实测使用 SDXL Base 生成的全身角色图,但原图没有生成出青绿色挑染和铜色胸针。为了检查这两个标记,我在副本上手工补了挑染和胸针颜色;修正后的图才作为 IP-Adapter 参考图。因此这些标记不是基础模型自动生成出来的,完整原图、修正图和修改记录都放在练习包中。

如果通过 Comflowy 启动 ComfyUI,模型目录要以 Comflowy 配置实际指向的 ComfyUI 文件夹为准。Comflowy 可以把 ComfyUI 放在自己的子目录里;本次环境指向 ~/comflowy/ComfyUI,所以模型放在这个目录下的 models/checkpoints/、models/ipadapter/ 和 models/clip_vision/。不要只看最外层文件夹名称,也不要把模型放进另一个未被启动器使用的 models/ 目录。

在 ComfyUI 接入通用 IP-Adapter

本文选通用的 IP-Adapter Plus SDXL 路线:参考图通过图像编码器影响生成,不使用 FaceID 人脸识别分支。先在 ComfyUI 的 custom_nodes 目录按官方说明安装节点并重启,再把三个模型放进对应目录:SDXL checkpoint sd_xl_base_1.0.safetensors 放入 models/checkpoints/;ip-adapter-plus_sdxl_vit-h.safetensors 放入 models/ipadapter/;CLIP Vision ViT-H 下载后命名为 CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors,放入 models/clip_vision/。官方文件:SDXL Base checkpoint、IP-Adapter Plus SDXL、CLIP Vision ViT-H 编码器。下载编码器后按 README 重命名。不要把别的 SDXL/IP-Adapter 变体混在这条工作流里。

克隆官方节点仓库的基本命令如下,运行前确认当前目录确实是 ComfyUI 安装目录:

cd ComfyUI/custom_nodes
git clone https://github.com/cubiq/ComfyUI_IPAdapter_plus.git

完全退出并重新启动 ComfyUI 后,再检查节点菜单中是否出现 IPAdapter 节点。官方 README 标注仓库进入维护模式,某些新版节点接口可能变化;如果加载报错,先核对 ComfyUI 与节点版本,不要盲目安装不明来源的依赖。

工作流关系是:CheckpointLoaderSimple 的 model 接到 IPAdapter Unified Loader,preset 选 PLUS (high strength);loader 的 model 和 ipadapter 输出再接到 IPAdapter Advanced,参考图接它的 image 输入;适配后的 model 接 KSampler。正向/负向提示分别经 CLIP 编码接 KSampler,latent 经 VAE 解码后保存。第一次搭图时先打开官方示例工作流,确认节点输入输出与你安装的版本一致,不要照抄旧版节点截图。

IP-Adapter Plus SDXL 需要配套的 ViT-H 图像编码器。官方 README 建议先把权重从 0.8 左右开始,再根据提示词服从程度调整;这只是调参起点,不是最佳值。记录基础 checkpoint、插件版本、权重、采样步数、画幅、seed 和每张图的提示词,后续对比才有意义。

先小样,再跑完 20 个镜头

练习包给出 20 条镜头描述。先生成 01–04 四种差异较大的构图,检查适配强度会不会压过场景描述;参数调整后要重跑这四张,再继续 05–20,最终总数保持 20 张。固定角色设定、checkpoint、采样参数和 IP-Adapter 权重,只替换镜头描述。每张图使用并记录自己的 seed,不要把固定 seed 当成角色一致性的保证。

把 20 张图按编号排成联系表,使用练习包的评分表逐张看可见特征:脸部比例、发型与挑染、风衣颜色和轮廓、胸针位置、整体角色观感。每项记 1(符合)、0(不符合)或 N/A(画面遮挡、看不见);N/A 不计入分母。每张至少有 4 项可评,且可评项中至少 80% 符合,才标记为“本次通过”。这个阈值是人工复核规则,不是模型准确率或行业标准;记录失败镜头并重跑时,保留原图和新 seed,别静默覆盖。

常见问题与复核

  • 节点菜单里没有 IPAdapter:确认仓库在当前 ComfyUI 的 custom_nodes 目录,完全重启后查看启动日志里的导入错误。
  • Unified Loader 报找不到模型:逐字核对三个文件名与 models/ipadapter/、models/clip_vision/、models/checkpoints/ 目录,再刷新模型列表或重启。
  • 角色看起来变了:先检查参考图是否清楚、角色固定描述是否完全相同;一次只调 IP-Adapter 权重或提示词中的一个条件,并保留前后图对照。大角度转身时,一张正面参考图本来就可能不够。
  • 角色相似但镜头内容不听提示:参考图权重可能压过文本条件;回到四张小样,降低权重后再比较,不要直接批量重跑 20 张。

工具清单:ComfyUI、官方 ComfyUI_IPAdapter_plus 节点、一个符合使用条件的 SDXL checkpoint、匹配的 IP-Adapter Plus SDXL 权重和 CLIP Vision ViT-H。运行在云端时,应先确认实例类型、磁盘空间、GPU 计费起止规则以及文件是否会在实例关闭后保留;首次下载模型和排队时间不包含在本文实测用时中。

这三个模型文件合计约 10.32 GB(9.61 GiB)。如使用 v2rayN 免流量节点,可保持 TUN 开启,并确认 Hugging Face 与重定向后的模型文件流量会走该节点,再运行 macOS 下载脚本。脚本默认沿用 TUN 分流;若 HEAD 检查仍超时,可在 v2rayN 设置中查看本地 HTTP/SOCKS5 监听端口,并用 V2RAYN_PROXY="http://127.0.0.1:端口" 或 V2RAYN_PROXY="socks5h://127.0.0.1:端口" 显式指定本地监听后启动脚本。脚本先要求输入 READY 才发送三个小型 HEAD 可达性请求,预检通过后再要求输入 DOWNLOAD 才开始传模型;下载支持断点续传并逐个校验 SHA-256。脚本无法读取 v2rayN 当前节点、规则或计费状态,因此下载前仍要在 v2rayN 和节点服务商处确认免流量生效。若在云 GPU 上运行,本文还没有验证哪些服务预装了模型,创建实例前先核对模型、流量、存储和 GPU 计费规则。

读结果时留意这些边界

IP-Adapter 是参考条件,不是角色锁定器。大幅转头、遮挡、极端景别、强烈光照、服饰变化或参考图质量不佳,都可能改变可见特征。一个角度通过,也不能证明其它角度会稳定。若 20 张里有失败项,先对照设定图和参数定位问题,再减少一次只改一个条件;不要为了凑数量删掉失败记录。

练习使用虚构角色,不上传真人照片。IP-Adapter Plus 与 SDXL 基础模型分别有各自的许可和使用限制;发布或商用前要逐一阅读模型卡及许可。FaceID 模型卡明确写有仅供研究、不用于商业用途,因此本练习不使用 FaceID。ComfyUI_IPAdapter_plus 官方 README 标注该仓库自 2025-04-14 起处于维护模式;节点与新版 ComfyUI 的兼容性需在实际环境确认。

本机实测结果

本次在 macOS Apple MPS 上运行 Comflowy 配置指向的 ComfyUI,加载官方 ComfyUI_IPAdapter_plus 节点(commit a0f451a)和已有的三个模型文件。没有下载模型权重。选用 SDXL Base、全身参考图、IP-Adapter 权重 0.45、512×768、28 步、CFG 6.5、dpmpp_2m / karras;20 张使用 seed 460101–460120。前四张在多组小样对比后按同一组参数重跑,再继续生成 05–20。

联系表和完整原图见练习包中的 outputs/。人工评分结果如下:

复核项 符合数 可评数
脸部特征 8 19
发型与青绿色挑染 0 19
风衣颜色与轮廓 20 20
左领口胸针位置 0 19
整体角色观感 20 20

按“每张至少 4 项可评,且可评项至少 80% 符合”的规则,19 张符合评估资格的图片中 0 张通过。第 14 张是背视图,脸、鬓角挑染和前襟胸针不可见,只有 2 项可评,因此不具备通过资格。大多数提示词中的地点、动作和景别也没有呈现,画面集中在室内棚拍;这次结果说明参考图权重会影响角色外观,但不能锁定发型标记、胸针或镜头内容。

19 张图有单张耗时记录,平均约 34.1 秒;第 03 张没有单独计时,故总时长仅按约 12 分钟估算,不含参考图生成与手工修正、初轮参数比较及人工复核。以上是一个本机环境和一组 seed 的人工观察,不是普遍准确率。评分表、逐张说明、模型文件名、原始输出和运行参数随练习包提供。

20 个镜头的实测联系表20 个镜头的实测联系表

练习包:下载《角色一致性 20 镜头练习包》。

封面背景由本机 ComfyUI 生成,标题由脚本排版,并标注“AI生成封面”。