简介:这是一份面向ComfyUI用户的ControlNet线条控制工作流文件,基于SD1.5模型实现线稿草图生成,适合AI绘画爱好者、设计师及刚接触节点式流程的开发者。文件以JSON格式保存完整工作流,包内共1个文件,整体大小约6KB,可直接导入ComfyUI运行,并包含了从基础模型加载、ControlNet线条预处理、提示词接入到采样与解码输出的关键节点配置。通过该工作流,用户能快速理解如何利用线条图约束生成结果,掌握ControlNet在草稿创作中的实际用法,同时可作为模板在此基础上调整模型、参数与提示词。资源体积小巧,加载与调试成本低,无论是绘制线稿、概念草图还是辅助构图,都能借助该文件快速起步。已有218人学习下载,对于希望省去手动搭建节点、快速验证线条控制流程的读者具有实用参考价值。
1. 这个标题到底在解决什么问题:把“画面想法”变成“可落地的线稿”
接到设计需求先画草图,是很多美术和设计从业者的日常。但很多时候,脑子里已经有了完整画面,手速却跟不上想法;或者需要快速输出几个不同构图的草案给甲方选,一张张从头画实在低效。标题里这条技术路线——ComfyUI/SD1.5 配合 ControlNet 做线条控制生成线稿草图——解决的正是这个问题:用 AI 把构图、轮廓、线条关系先“打”出来,你再在这个基础上精修,而不是对着一张白纸硬憋。
实际用起来,它是“先框定结构再生成”的思路,跟直接文生图完全不同。直接文生图是在玩抽奖,同一个提示词每次出来的构图都不可控;而接上 ControlNet 的线条控制后,你给它一张参考图,它提取出边线轮廓,SD1.5 在这个轮廓的约束下填充光影和材质细节。说白了,就是你自己把骨架搭好,AI 负责补肉。我习惯用它来做前期分镜草图、角色三视图底稿、或者给空间设计快速需要透视参考线稿。接下来按我自己的落地习惯,从环境搭建、模型选型、参数调整到避坑一路讲完。
2. 在 ComfyUI 里搭线稿生成链路:从工作流节点到首次跑通
2.1 为什么要用 ComfyUI 而非 WebUI 做这件事
先回答一个新手最容易纠结的问题:同样都是 Stable Diffusion 的界面,秋叶整合包、WebUI 都在做类似的事,为什么我推荐在 ComfyUI 里搭这条线稿链路?
原因在于节点式工作流对中间过程的可见性。WebUI 里 ControlNet 是一个大面板,点开之后填图、勾选预处理、调权重,每一步的状态只能在最终成图里验证,中间哪个环节出了问题很难定位。ComfyUI 把“加载参考图 → 提取线稿 → 送入 ControlNet → 进采样器 → VAE 解码”全部拆成独立的节点方块,每个节点的输出都可以单独预览。线条提取得干不干净、ControlNet 有没有生效、权重是否过强,拉一条连线就能看到中间结果。
另外一个很实在的点是显存占用。同一张图、同一个模型,ComfyUI 的峰值显存通常比 WebUI 低几个 GB,因为它的执行图是流式的,加载完一个模型如果后面不再用就会释放。这对很多还在用 8GB 甚至 6GB 显存显卡接 SD1.5 的用户挺友好。我第一台跑这个方案的卡是 3060 12GB,跑 SD1.5 的线稿生成毫无压力。
工作流本身是 JSON 文件,ComfyUI 的社区里分享的也基本都是这种格式,导入即用,比 WebUI 里逐项对参数方便得多。但我不建议新手直接去套别人分享的复杂工作流,里面常常带着你没下载的自定义节点,导入后一堆红色的错误提示。最好先在默认工作流上手动加节点搭一遍,跑通了再去看别人的高配版,你就知道那些节点分别是干嘛的。
2.2 搭建最小线稿工作流:从加载模型到输出草图
搭一套能出线稿的最小工作流,核心包括四个环节:加载模型、加载参考图并提取线稿、ControlNet 控制、采样输出。下面先给出一套我用着最顺的节点连接方式与参数起点,对应 ComfyUI 内置节点即可完成。
节点连接逻辑(按从上到下的顺序): 1. Load Checkpoint → 输出 MODEL / CLIP / VAE 2. Load Image(加载参考图) → 输出 IMAGE 3. ControlNet Loader(加载 lineart 专用控制模型) → 输出 CONTROL_NET 4. ControlNet Apply(把控制模型接入采样): - conditioning(来自正向提示词) - control_net(来自第 3 步) - image(来自第 2 步提取的线稿图) 5. CLIP Text Encode(正向提示词) → 接 ControlNet Apply 的 conditioning 6. CLIP Text Encode(负向提示词) → 接 KSampler 的 negative 7. KSampler:输入 MODEL 与 conditioning,控制生成强度与随机性 8. VAEDecode:把潜空间张量解码为像素图 9. Save Image 输出这里第 2 步到第 4 步之间,需要加一个线稿提取节点。ComfyUI 自带的 ControlNet 预处理器里就有lineart这一项,在节点列表里搜ControlNet Preprocessor找到LineartPreprocessor,把参考图输入进去,它输出一张白底黑线的线稿图,再把它接到 ControlNet Apply 的 image 接口上。
代码块:标准参数起点
{ "Sampler": { "seed": 123456789, "steps": 25, "cfg": 6.5, "sampler_name": "euler", "scheduler": "normal", "denoise": 1.0 }, "ControlNet": { "strength": 0.8, "start_percent": 0.0, "end_percent": 0.8 } }上面这一组参数是我跑线稿最常用的起点。sampler_name用 euler,它出图稳定、线条边缘不容易出现奇怪的噪点,适合线稿这种对结构准确性要求高、对质感要求低的场景。steps25 步在 SD1.5 下是收敛较充分的数值,再往上加意义不大。strength0.8 是 ControlNet 对生成结果的约束力度,它决定 AI 在多大程度上必须遵循你给的线稿轮廓。0.8 意味着生成结果跟参考线稿的轮廓高度一致,AI 自由发挥的空间被压缩到两成左右。end_percent设为 0.8 是我个人的习惯:在采样后 20% 的阶段让 ControlNet 退出接管,让模型根据自己的理解把细节画完,线条会更自然一些,否则容易显得生硬死板。
2.3 从参考图到线稿的预处理选择:lineart 与 canny 的区别
ControlNet 最常用的线条预处理就是 lineart 和 canny,很多新手直接混用导致结果不对。简单说:canny 检测的是颜色剧烈变化的边缘,得到的线条是细碎且有断口的,适合做室内设计线稿、建筑轮廓这类硬边缘;lineart 则是提取完整的线条画,线条连贯,适合做角色、生物的线稿。处理动漫风格的角色草图我会用lineart_realistic,它专门针对真实照片和数字绘画做了优化,线条不像普通 lineart 那样发虚。
在 ComfyUI 里选预处理器时还要注意,LineartPreprocessor的输出分辨率默认跟输入图一致,但如果你喂进去的参考图很大(比如 2000 像素以上),它出的线稿会有莫名的断线和毛刺。常见做法是先用Image Scale节点把参考图统一缩放到 1024 这个量级再进预处理器,跑通之后再决定要不要放大出精稿。
关键链路(注意图像尺寸的统一): Load Image → Image Scale(目标宽 1024) → LineartPreprocessor → ControlNet ApplyImage Scale这一步很多人会漏掉,结果线稿提取结果一团糟还以为是 ControlNet 没用对。SD1.5 在 512 附近表现最稳,1024 是它能较好处理的极限。如果你出图测试无误,后续可以把分辨率拉回 1344 之类做大图,但采样步数和 cfg 需要重新微调。
2.4 为什么说这套组合特别适合“先有草稿再细化”的流程
某种意义上,ControlNet 线条控制的魅力在于,它把原本依赖“抽卡”的生成式 AI 变成了一个半自动的“勾线助手”。你用 PS、SAI 或者直接手绘一张随手涂的轮廓,AI 就可以把它细化成完成度较高的线稿。在此基础上做上色或者直接出成品图,跟从零生成完全不是一回事。你控制构图的主动权始终在自己手里,人工智能生成的部分只是一层细化滤镜。控制感才是这套方案最值钱的地方——它让设计过程中的“不可控”变得“可控”。
3. 模型选型与放置目录:SD1.5 底模和 ControlNet 模型的正确用法
3.1 底模选择:二次元还是写实,决定了线稿的风格上限
你选的 Checkpoint 底模决定了线稿最终的手感和风格上限。SD1.5 的底模生态分两大方向:写实类以Realistic Vision、ChilloutMix为代表,二次元类以Anything、Counterfeit为典型。我的习惯是:画角色三视图和漫画分镜优先用二次元底模,因为它的线条更干净,边缘没有那么多噪点和伪影;做建筑透视草图、工业设计手稿则用写实底模,因为它对空间关系表达更扎实。
一个经常被忽略的点是:SD1.5 的线稿生成不依赖底模内部自带风格,全靠 ControlNet 的线条约束。所以底模主要负责“完成度”——也就是在轮廓被控制住之后,模型填充灰度、光影、排线层次的审美。二次元底模填充出来的线稿是赛璐璐风格,写实底模填充出来的是素描风格。
3.2 ControlNet 模型文件放对位置,两个模型缺一不可
ControlNet 在 ComfyUI 里要正常跑,需要两个文件同时存在,不少新手只放了其中一个,结果报错或者控制完全无效。
第一个是预处理器模型,对应的是那个从图片提取线稿的环节。LineartPreprocessor运行时需要加载一个专门做线条提取的模型文件,通常在models/controlnet/目录下可以找到相关文件,我把这个目录里的模型文件放好后,ComfyUI 才能在运行时调起来。加载成功的标志是节点上有模型文件名提示。
第二个是控制模型本身,也就是 ControlNet 加载器里选择的主模型。这个必须放在ComfyUI/models/controlnet/目录下,命名通常是control_v11p_sd15_lineart.pth这类格式。放进去之后在 ControlNet Loader 节点的下拉菜单里刷新就能看到。这两个概念我最早也混淆过,导致白白踩了不少坑。
models/controlnet/ # ControlNet 控制模型目录 ├── control_v11p_sd15_lineart.pth # 线条控制主模型 └── ...(其他类型控制模型) models/annotator/ # 预处理器模型目录(部分整合包) └── 线条提取所需的辅助模型不同整合包对预处理器模型的放置路径略有不同,有的放在models/annotator/下,有的直接统一放在models/controlnet/。如果你加载LineartPreprocessor时报红,优先检查这些目录里有没有对应的模型文件。这个报错很容易排查——它会在节点上直接标红提示缺模型。
3.3 一个关键认知:ControlNet 控制模型的权重文件不能跨大版本
经常看到有人问 SDXL 的 ControlNet 模型能不能给 SD1.5 用。答案是绝对不行。ControlNet 的权重文件跟底模是强绑定的,因为训练时它就是把对应版本的 UNet 参数一起冻结训练的。SD1.5 的 ControlNet 模型拿到 SDXL 里加载,轻则出图完全失控,重则在 ComfyUI 里直接加载报错。同理,SDXL 的控制模型也不要往 SD1.5 的底模上挂。
你只需要记住这一点:标题写的是 SD1.5,你就去找文件名里带sd15的 ControlNet 模型。比如control_v11p_sd15_lineart是给 SD1.5 用的线稿控制模型,control_v11f1p_sd15_depth是给 SD1.5 用的深度控制模型。按需下载对应的模型文件即可,不要贪多。控制模型文件占的空间都不算大,比动辄 2GB 以上的底模轻量得多,多下几个常用的也无妨。
3.4 简化提示词:线稿场景下提示词不需要堆砌大量风格词
很多刚接触这个方案的用户习惯沿用文生图的思路写很长的提示词,比如加 “masterpiece, best quality, 8k, highly detailed” 这一大串。但线稿生成场景里,这些画质词意义不大,因为输出是单色线条,没有光影和纹理可供渲染。写完主体描述之后,把black and white lineart、sketch、white background这类关键词加上就够了,画质词加不加的区别肉眼很难看出来。
正向提示词示例(以生成一个持剑少女角色线稿为例):
a girl holding a sword, full body, dynamic pose, black and white lineart, sketch, white background负向提示词固定用一组通用的就够:
lowres, bad anatomy, bad hands, extra fingers, blurry, jpeg artifacts3.5 关于缺模型时的处理:下载与路径核对的方法
使用整合包时遇到“缺失模型”的提示,不必急着重装整个包。先在 ComfyUI 的models目录下看底模、ControlNet 模型、预处理器模型是否齐全,然后再启动页面检查节点是否识别到。ComfyUI 的模型管理方式就是“文件入夹,刷新即见”的规则。缺哪个就补哪个,不需要重新安装任何东西。这套逻辑顺手之后,处理起来就比 WebUI 麻烦事少多了。
4. 参数调整的三个关键点:在“控制力”与“灵动感”之间找平衡
4.1 ControlNet strength 如何影响最终成图
strength是整个工作流里最核心的旋钮。它控制的是控制模型对生成结果的干预强度,0 是完全没有控制,1 是完全锁死轮廓。实际跑下来你会发现,强度拉到 0.95 以上,线条虽然跟参考图一模一样,但会显得僵硬,尤其是角色发丝、衣褶这类本身就比较软的结构,会给人一种机械描边的感觉。强度在 0.7 到 0.85 之间,AI 有一定的空间去优化线条的走向和粗细变化,出来的稿子最有手绘感。
我一般是先固定 0.8 跑一遍看整体效果,再根据参考图的复杂程度微调。如果参考图本身已经画得很细很完整,0.8 没问题;如果参考图只是几根潦草的线,需要 AI 补全大量内容,那 0.6 到 0.7 比较合理,给它更多的发挥空间。也可以简单理解成:参考图的完成度越低、需要 AI 补全的部分越多,strength 就越调低。这个经验值是“玄学”部分,但值得自己试几轮记录手感。
4.2 start_percent 与 end_percent 控制的是“介入时间点”
这两个参数控制 ControlNet 在采样过程的哪个阶段生效。start_percent=0, end_percent=0.8表示采样过程前 80% 的步骤里 ControlNet 全程介入,后 20% 的步骤中它退出,让模型自由发挥。
怎么理解这个机制?采样过程的前半段决定的是图像的“大框架”——轮廓、构图、区块分布;后半段决定的是“细节”——线条的粗细变化、局部纹理、排线方向。如果你希望最终成图跟参考线稿非常接近、像“描图”,就把 end_percent 设成 1.0 让全程介入;如果你觉得出来的图太死板、像贴纸,就把 end_percent 往前挪,比如 0.7 或 0.6。我自己平时画角色线稿喜欢用 0.8,画建筑用 1.0,因为建筑的线条必须笔直稳定,给模型自由发挥容易把窗户画歪。
4.3 采样器与步数的组合是出图“手感”的另一个来源
SD1.5 在 ComfyUI 里常用的采样器组合里,euler + normal是最中规中矩的,出图稳定但线条略平淡;dpmpp_2m + karras出图对比度更高,线条更“脆”;ddim出图整体偏柔和。线稿场景里我不会推荐dpmpp_2s系列,因为它的二阶采样在加控制模型的条件下容易出现细碎噪点,放大看会显得脏。
步数 20 到 30 之间效果最好,低于 20 线条断层明显,高于 30 边际收益趋近于零还拖慢速度。只有在 final 大图输出时我才会把步数拉到 35 以上配合dpmpp_2m,目的只是为了避免低步数下可能出现的微小瑕疵被放大,没有别的意义。
4.4 CFG 在线稿场景下倾向于调低而不是调高
CFG(提示词引导系数)在线稿场景下的合理区间比文生图低一截。SD1.5 的文生图常用 7 到 9,但线稿生成我一般设在 6 到 6.5。因为 ControlNet 已经承担了大部分结构控制,CFG 过高会让模型把提示词理解得“过于用力”,在线稿里表现为:线条过黑、过粗,边缘出现黑边晕染,像扫描件沾了水一样。CFG 在 5.5 附近时线稿比较清透,层次感好,适合后面再导入软件精修上色。
5. 避坑排查:我在这条链路里翻过的 5 个车和后悔药
5.1 参考图不是白底黑线,ControlNet “理解”错了对象
现象:生成结果完全没有参考图的轮廓,或者线条乱成一团看不出结构。检查后发现,喂给 ControlNet 的图不是线稿图,而是原图。
原因:新手容易直接把一张彩色原图接到 ControlNet Apply 的 image 接口上,跳过了预处理环节。这相当于让控制模型从一张满布色彩和纹理的图里自行判断哪些是边缘,它判断出来的东西跟你期望的完全不是一回事。
解决:始终让线稿提取节点处理后再送进 ControlNet。在预览中观察提取出的线稿,如果线条杂乱或过密,可调整预处理器参数(分辨率、线条粗细),或者换 preprocessor 类型。这一步是“所见即所得”,你看预览里的线稿什么样,最终控制效果就大体是什么样。
5.2 底部模型加载路径报错,换目录后发现能跑了
现象:ComfyUI 控制台报错,提示找不到 ControlNet 模型文件。
原因:文件虽然下载了,但放在错误目录,或者文件名带了特殊字符导致加载失败。整合包的目录结构不同,有的把控制模型放在models/controlnet/下,有的则在models/annotator/下。
解决:对照 ComfyUI 的 models 目录结构逐项核对,确认控制模型在主目录,预处理器模型在 annotator 目录(如果整合包有的话)。如果报错指向某具体文件名,直接在文件管理器里全局搜索该文件名,看它实际被放在了哪里。这类问题基本重放一次文件就能解决,不需要重装整包。
5.3 线条断裂,生成结果像虚线连成的
现象:生成的线稿线条断续,尤其长线条明显断裂。
原因:参考图分辨率过低所致。输入图小于 512 像素时,线条提取环节的采样点不够密集,提取结果呈点状;ControlNet 内部处理分辨率不足,长线条生成到一半就断。
解决:用Image Scale把参考图分辨率提到 1024 以上再进预处理。放大后线条连续性有明显改善。如果仍断,把end_percent调大,让 ControlNet 在采样后期继续干预,帮助长线条“连起来”。另外可以试试线稿提取前先转灰度,降低色彩干扰。
5.4 显存不够,跑大图时爆内存
现象:生成 1344 分辨率以上大图时,ComfyUI 直接卡死,或崩溃退出,控制台显示 Out of Memory。
原因:大分辨率下 UNet 的中间激活值占用显存成倍增长,8GB 显存很容易被撑爆。很多人误以为内存(RAM)大就能硬扛,但 SD 生成的主力是显存,内存再大也只能当后备缓存,速度骤降。
解决:出大图前先生成小图确认构图与线条布局,然后用 ComfyUI 的Upscale Image(模型放大)节点把图放大到目标分辨率,再做一次Detailer高清修复或仅增加步数重采样。这套“小图定稿,大图细化”的流程比直接一步生成大图稳定得多,速度也更快。不要跟显存硬碰硬,那是白花冤枉钱。
5.5 出图结果跟参考图风马牛不相及,检查 ControlNet 节点是否真正生效
现象:strength明明调到 0.9 了,成图跟参考图却几乎没有关系,跟纯文生图一样。
原因:ControlNet Apply 节点的连线没有接对。常见错误是把参考图接到了 Load Image 上,却没有把它连到 ControlNet Apply 的 image 接口;或者 Apply 节点接的是 CLIP 输出而非 conditioning 输出。
解决:在 ControlNet Apply 节点上把 conditioning 接到输出侧,把参考图接到 image 输入侧。接线正确后可以在节点图上右键运行到该节点,预览它的输出张量效果,或者直接看预览图,确认 ControlNet 有在采样阶段介入。这套链路本身就是节点式的,排查比 WebUI 直观得多。我最严重的一次翻车就是这个原因,白白浪费了两个小时调采样器参数,最后发现只是连错一根线。
6. 进阶玩法:从单图线稿到批量草图与多角度控制的验证技巧
单张线稿跑通后,整个方案才算开始真正发力。我日常用得最多的是批量生成:先画一个或几个基础姿势的参考图,放在一个文件夹里,用 ComfyUI 的Load Image Batch节点一次性读入,配合ControlNetApply逐图施加控制,批量输出构图一致但细节各异的线稿。给甲方的分镜提案阶段,这能极大提升比稿效率。
验证 ControlNet 控制效果有一个土办法:把同一张参考图分别用strength=0.3, 0.5, 0.8, 1.0跑四张,叠在一起看轮廓偏差。线条边缘完全重合度越高,控制力越强。这也适合用来校准单个项目的“手感”。
多角度控制是另一个值得专门讲的技能点。比如画角色三视图,先准备角色正面、侧面、背面的三张轮廓参考图,在 ComfyUI 里可以用控制模型对每张参考图分别设定start_percent=0.0, end_percent=1.0, strength=0.85并联跑三次,然后在图层面板里手动拼接,也可以直接摆在一个画布上作为宽幅参考图输入给 ControlNet。前提是你得把三张草图的位置和比例先对齐,否则 ControlNet 会把跨图线条搭错。
有一段时间我疯狂痴迷于研究多角度骨骼方案,后来发现线稿环节最值得投入的不是控制模型本身,而是你对“线条疏密”的把控。AI 生成的线稿,即便在 ControlNet 约束下,线条分布依然偏均匀,而手绘线稿的精彩在于疏密对比——关节内侧密、外侧疏,暗部密、亮部疏。所以我的习惯是:让 AI 出底稿,再用 PS 把关键部位的线条加重、次要线条减淡,这个过程十分钟就能完成,但画面质感提升是肉眼可见的。不要试图让 AI 一步到位,它的价值在于省掉起稿,而不是取代收尾。
最后给控线稿流程做一个验证习惯的总结:每次改动参数,我固定跑一个 3 张的 mini batch(同一个参考图、三个随机种子),观察控制稳定性和线条质量;确认稳定后再进入正式批量。这种“小样本先行”的习惯帮我避开了绝大多数批量生成翻车的场景。
整条链路走到这里,从“这是什么”到“怎么搭”“怎么调”“坑在哪”就都覆盖了。这套方案真正适用于那些需要大量草图输出、又讲究构图控制的设计岗位。希望你在自己电脑上操作时,能少走一些我绕过的弯路——尤其记得,先预览中间线稿,再谈最终效果。希望帮到你。
本文还有配套的精品资源,点击获取