Loading...

文章背景图

ControlNet:给文生图扩散模型加条件控制的官方实现|部署与使用全指南

2026-11-02
0
- 字
- 分钟
|

ControlNet 官方结构示意

仓库:https://github.com/lllyasviel/ControlNet 论文:https://arxiv.org/abs/2302.05543 权重:https://huggingface.co/lllyasviel/ControlNet 运行形态:conda 环境 + Gradio 脚本

1. 项目简介

ControlNet 是论文《Adding Conditional Control to Text-to-Image Diffusion Models》的官方实现:一种给扩散模型加额外条件的神经网络结构。它把神经网络块权重复制成"锁定"副本与"可训练"副本——可训练副本学条件,锁定副本保留原模型,配合 zero convolution,使小数据集图像对训练也不会破坏生产级扩散模型。

1.1 核心信息一览

项目 内容
仓库 lllyasviel/ControlNet
定位 给文生图扩散模型加条件控制
环境 conda(environment.yaml)
权重 HF lllyasviel/ControlNet
入口 gradio_canny2image.py 等 Gradio 脚本
1.1 nightly https://github.com/lllyasviel/ControlNet-v1-1-nightly

1.2 适用场景

  • 想给 Stable Diffusion 加边缘 / 深度 / 姿态 / 涂鸦等条件控制;
  • 想在小数据集上微调而不破坏原模型;
  • 研究可控生成结构。

1.3 能力边界(官方口径)

  • 主仓库为 ControlNet 1.0;1.1 在 nightly 仓库,稳定后再合并;
  • 需自备 SD 模型与各检测器权重;
  • 更常见的实际使用是通过 ComfyUI / WebUI 等集成,而非本仓库脚本。

2. 功能特性

  • 锁定 + 可训练双副本:小数据训练不破坏原模型;
  • Zero Convolution:1×1 卷积权重偏置初始化为 0,训练前不引入畸变;
  • 复用 SD encoder backbone:计算高效,显存增幅不大;
  • 多种条件:canny、hough、hed、scribble、pose、seg、depth、normal 等 Gradio 入口。

3. 官方界面预览

ControlNet 官方结构示意

上图为官方 README 的结构示意(README 官方素材)。

4. 官方跳转链接汇总

5. 前置要求与服务器配置

  • conda 环境;
  • GPU 与 SD 模型权重;
  • 从 HF 下载 SD 模型到 ControlNet/models、检测器到 ControlNet/annotator/ckpts(含 HED、Midas depth、Openpose 等)。

6. 方式一:conda 环境 + Gradio 脚本(官方)

git clone https://github.com/lllyasviel/ControlNet.git
cd ControlNet

conda env create -f environment.yaml
conda activate control

按 README 从 https://huggingface.co/lllyasviel/ControlNet 下载权重与检测器,放到 ControlNet/models 与 ControlNet/annotator/ckpts。

跑一个 Gradio 入口:

python gradio_canny2image.py

7. 方式二:常用入口脚本

python gradio_hough2image.py
python gradio_hed2image.py
python gradio_scribble2image.py
python gradio_pose2image.py
python gradio_seg2image.py
python gradio_depth2image.py
python gradio_normal2image.py

实际生产中更多通过 ComfyUI / WebUI 的 ControlNet 节点集成使用。

8. 配置项说明

配置 说明
ControlNet/models SD 模型权重目录
ControlNet/annotator/ckpts HED / Midas / Openpose 等检测器
各 gradio_*.py 对应一种条件控制入口
1.1 nightly 更新模型见 nightly 仓库

9. 常用运维命令

# 建环境
conda env create -f environment.yaml
conda activate control

# 启动条件入口
python gradio_canny2image.py

# 关闭
# Ctrl+C

10. 常见故障排查

  • 缺检测器权重:按 HF 页下载 HED / Midas / Openpose 等;
  • 显存不足:本仓库结构对显存增幅较小,仍需够跑 SD;
  • 想用最新模型:切到 ControlNet-v1-1-nightly 仓库;
  • 实际集成:优先用 ComfyUI / WebUI 的 ControlNet 节点。

11. 风险与合规说明

  • 许可证以仓库 LICENSE 为准;
  • SD 模型与权重遵守各自许可;
  • GPU 成本由使用者承担;
  • 本文为社区部署笔记,命令以官方 README 最新版本为准。
评论交流

文章目录