部署前先搞清楚ControlNet适合做什么
ControlNet是扩散图像生成流程中的条件控制组件,常用于让AI图像更稳定地参考线稿、边缘、姿态、深度图、分割图等信息。对设计师、插画学习者、三维草图转概念图、产品视觉草案制作来说,它能明显降低“提示词写得很长但画面不听话”的概率。macOS用户部署时通常会搭配Stable Diffusion WebUI使用,优点是界面成熟、扩展生态完善;缺点是首次配置步骤较多,且不同芯片、内存容量会影响速度。

本教程以新手可执行为目标,默认你使用的是macOS 13或更新系统,机器可以是Apple Silicon芯片或Intel芯片。建议至少16GB内存,硬盘预留30GB以上空间。8GB内存也能尝试,但分辨率、批量数量和模型体积都要保守设置,否则容易报错或长时间无响应。
一、准备基础环境
首先安装命令行工具。打开“终端”,输入:xcode-select --install,按提示完成安装。它会提供编译和基础开发组件,是后续安装依赖的前提。
接着安装Homebrew。如果电脑已经安装,可用brew -v检查版本。未安装时,到Homebrew官网复制官方安装命令执行即可。安装完成后,建议执行:brew update,确保软件源信息是新的。
然后安装必要依赖:brew install cmake protobuf rust python@3.10 git wget。这里推荐Python 3.10,原因是当前许多AI图像工具对3.10兼容性更稳。若系统里已有多个Python版本,不要随意删除系统自带Python,只需在WebUI启动脚本中指定合适版本即可。
二、安装Stable Diffusion WebUI
选择一个空间充足的目录,例如用户目录下的AI文件夹:mkdir -p ~/AI && cd ~/AI。随后拉取WebUI项目:git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git。进入目录:cd stable-diffusion-webui。
首次启动可执行:./webui.sh。脚本会自动创建运行环境并安装Python依赖,首次耗时较长,期间终端不要关闭。如果出现权限问题,先执行:chmod +x webui.sh。当终端出现本地访问地址时,在浏览器打开对应地址,一般是https://127.0.0.1:7860。
如果你是Apple Silicon机型,建议在启动参数中开启对M系列芯片更友好的设置。可编辑目录下的webui-user.sh,找到COMMANDLINE_ARGS,设置为:--skip-torch-cuda-test --no-half。部分机器使用--opt-split-attention也有帮助。Intel机型如果没有独立显卡,速度会较慢,建议先用小分辨率测试,避免一上来就设置高参数。
三、安装ControlNet扩展
打开WebUI后,进入“Extensions”页面,选择“Install from URL”。在地址栏填入ControlNet扩展项目地址:https://github.com/Mikubill/sd-webui-controlnet,点击安装。安装完成后切换到“Installed”,点击“Apply and restart UI”重启界面。
也可以使用终端安装:进入stable-diffusion-webui/extensions目录,执行:git clone https://github.com/Mikubill/sd-webui-controlnet.git,然后重新运行./webui.sh。如果页面底部或文生图区域能看到ControlNet面板,说明扩展已经加载成功。
四、下载并放置模型文件
扩展只是控制模块,真正用于推理的ControlNet模型需要单独下载。常见模型包括canny、depth、openpose、scribble、lineart、tile等。新手建议先准备canny和depth两个,前者适合根据边缘控制构图,后者适合保留空间层次。
模型文件通常为.safetensors格式,放置路径为:stable-diffusion-webui/extensions/sd-webui-controlnet/models。放好后重启WebUI,或在ControlNet面板中点击刷新模型列表。注意模型要与基础大模型的大版本匹配,例如SD1.5体系使用SD1.5对应ControlNet模型,SDXL体系使用SDXL对应ControlNet模型,混用可能无法加载或效果异常。
基础大模型则放在:stable-diffusion-webui/models/Stable-diffusion。如果只是测试,选择体积适中、来源清晰的模型即可,不建议一次下载大量文件,先跑通流程更重要。
五、推荐配置参数
新手首次测试可选择文生图页面,尺寸设置为512×512或640×640;采样器选择DPM++ 2M Karras或Euler a;采样步数20到28;CFG Scale设为6到8;Batch size设为1。macOS上不要一开始就开高分辨率修复,确认ControlNet流程稳定后再逐步提高。
ControlNet面板中勾选Enable。上传一张结构清晰的参考图,Preprocessor选择canny,Model选择对应的canny模型。Control Weight可设为0.8到1.0;Starting Control Step保持0;Ending Control Step可设为0.8到1.0。若发现画面被参考图限制过强,可把Control Weight降到0.5到0.7;若构图跑偏,则提高到1.0附近。
使用depth时,Preprocessor选择depth_midas或类似深度预处理器,Model选择depth模型。它更适合室内、建筑、人物与背景层次较明显的图。Openpose适合姿态控制,但对输入图清晰度要求较高;lineart适合线稿上色;tile常用于细节增强,但参数不当容易让纹理过重。
六、测试方法:从最小案例开始
建议准备一张简单参考图,例如一张杯子、椅子或室内角落照片。提示词写得简洁一些,例如“a clean product concept render, soft light, simple background”,负面提示词可填“low quality, blurry, distorted”。先用canny模型生成一张,观察构图是否跟随参考图边缘;再把Control Weight从1.0降到0.6,比较画面自由度变化。
第二轮测试可换depth模型,观察主体前后关系是否更稳定。记录每次的预处理器、模型、权重、尺寸、步数和随机种子。ControlNet调参最怕“凭感觉乱改”,新手用表格记录三五组结果,很快就能理解各参数的影响。
如果要验证安装是否完整,可重点看三点:ControlNet面板是否出现;预处理后是否能生成边缘图或深度图预览;终端是否没有持续报红色错误。三项都正常,说明部署基本成功。
七、常见问题与处理
问题一:启动很慢或卡在安装依赖。通常是网络连接不稳定或Python包下载失败。可重新执行./webui.sh,脚本会继续未完成的步骤。不要频繁删除整个目录,先看终端最后20行错误信息。
问题二:ControlNet面板不显示。先确认扩展目录名称为sd-webui-controlnet,再到Extensions页面确认已启用。更新扩展后要重启WebUI,不只是刷新浏览器。
问题三:模型列表为空。检查模型是否放在ControlNet扩展的models目录,而不是基础大模型目录;同时确认文件后缀是扩展支持的格式。放入新模型后点击刷新,仍无效再重启。
问题四:生成时报内存不足。降低分辨率到512×512,Batch size保持1,关闭高分辨率修复,减少同时启用的ControlNet单元。Apple Silicon机型可尝试退出占用内存较大的应用后再运行。
问题五:生成结果像被“描边图”锁死。降低Control Weight,或把Ending Control Step调到0.6到0.8,让后半段生成有更多发挥空间。若参考图线条太密,也可换lineart或depth方案。
八、更新、回退与安全边界
更新WebUI可在项目目录执行git pull,更新ControlNet可进入扩展目录执行同样命令。更新前建议复制一份webui-user.sh和常用参数记录,避免配置被覆盖后找不到原因。若更新后异常,可回到项目页面查看近期变更,必要时使用较早提交版本,但新手更建议先等待扩展修复。
安全方面,模型和扩展尽量从官方项目页或可信发布页获取,不要运行来源不明的脚本。下载文件后注意后缀,警惕伪装成模型的可执行文件。生成内容用于商业项目时,还要确认基础模型、ControlNet模型和素材来源的授权条款。涉及他人肖像、商标、未授权作品风格时,应谨慎处理,避免用于误导性传播或不当用途。
对于macOS新手来说,ControlNet部署的关键不是一次装齐所有模型,而是先跑通“WebUI启动、扩展加载、模型识别、单图测试”这条最小链路。等流程稳定后,再逐步增加SDXL模型、多ControlNet单元、局部重绘等进阶玩法,效率会高得多。
