AI降维打击人类画家,文生图引入ControlNet,深度、边缘信息全能复用
来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习科技周边相关编程知识。下面本篇文章就来带大家聊聊《AI降维打击人类画家,文生图引入ControlNet,深度、边缘信息全能复用》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!
随着大型文本 - 图像模型的出现,生成一幅吸引人的图像已经变得非常简单,用户需要做的就是动动手指输入简单的 prompt 就可以。通过一系列操作得到图像后,我们不免又会产生这样几个问题:基于 prompt 生成的图像能够满足我们的要求吗?我们应该构建怎样的架构来处理用户提出的各种要求?在特定任务中,大型模型是否还能保持从数十亿张图像中获得的优势和能力?
为了回答这些问题,来自斯坦福的研究者对各种图像处理应用进行了大量调查,并得出以下三个发现:
首先,在特定领域中可用数据实际比训练通用模型的数据要少,这主要表现在,例如在特定问题上(例如姿态理解等)最大的数据集通常低于 100k,比大规模、多模态文本图像数据集 LAION 5B 少了 5 × 10^4 数量级。这就要求神经网络鲁棒性要好,以避免模型过度拟合,并在针对特定问题时具有良好的泛化性。
其次,当使用数据驱动处理图像任务时,大型计算集群并不总是可用的。这时快速训练方法就变得很重要,这种方法在可接受的时间和内存空间内能够针对特定任务对大模型进行优化。更进一步,在后续的处理过程中可能还需要微调、迁移学习等操作。
最后,在图像处理过程中遇到的各种问题会有不同形式的定义方式。在解决这些问题时,虽然图像扩散算法可以以「程序化(procedural)」方式进行调节,例如,约束去噪过程、编辑多头注意力激活等,但这些手工制定的规则基本上是由人类指令规定的,考虑到一些特定的任务,如深度 - 图像、姿态 - 人等,这些问题本质上需要将原始输入解释为对象级或场景级的理解,这使得手工制作的程序方法不太可行。因此,想要在多个任务中给出解决方案,端到端学习是必不可少的。
基于上述发现,本文提出了一种端到端的神经网络架构 ControlNet,该架构可以通过添加额外条件来控制扩散模型(如 Stable Diffusion),从而改善图生图效果,并能实现线稿生成全彩图、生成具有同样深度结构的图、通过手部关键点还能优化手部的生成等。
论文地址:https://arxiv.org/pdf/2302.05543.pdf
项目地址:https://github.com/lllyasviel/ControlNet
效果展示
那么 ControlNet 效果到底如何呢?
Canny 边缘检测:通过从原始图像中提取线稿,能够生成同样构图的图像。

深度检测:通过提取原始图像中的深度信息,可以生成具有同样深度结构的图。

带有语义分割的 ControlNet:
使用基于学习的深度霍夫变换从 Places2 中检测直线,然后使用 BLIP 生成字幕。

HED 边缘检测图示。

人体姿态识别图示。
方法介绍
ControlNet 是一种神经网络架构,它可以增强具有任务特定(task-specific)条件的预训练图像扩散模型。我们先来看 ControlNet 的基本结构。
ControlNet 操纵神经网络块的输入条件,从而进一步控制整个神经网络的整体行为。这里「网络块」指的是一组神经层,它们被放在一起作为一个构建神经网络的常用单元,例如 resnet 块、多头注意力块、Transformer 块。
以 2D 特征为例,给定一个特征图 x ϵ R^h×w×c,其中 {h, w, c} 分别为高度、宽度和通道数。具有一组参数 Θ 的神经网络块 F (・; Θ) 将 x 转换为另一个特征图 y,如下公式 (1) 所示。

这一过程如下图 2-(a) 所示。

神经网络块由一种被称为「零卷积」的独特卷积层连接,即权重和偏置都零初始化的 1×1 卷积层。研究者将零卷积运算表示为 Z (・;・) ,并使用两个参数实例 {Θ_z1, Θ_z2} 组成 ControlNet 结构,如下公式 (2) 所示。

其中 y_c 成为该神经网络块的输出,如下图 2-(b) 所示。
图像扩散模型中的 ControlNet
研究者以 Stable Diffusion 为例,介绍了如何使用 ControlNet 控制具有任务特定条件的大型扩散模型。Stable Diffusion 是一种在数十亿张图像上训练的大型文本到图像扩散模型,本质上是一个由编码器、中间块和残差连接解码器组成的 U-net。
如下图 3 所示,研究者使用 ControlNet 来控制 U-net 的每一层。需要注意,这里连接 ControlNet 的方式在计算上是高效的:由于原始权重被锁定,原始编码器上的梯度计算不需要进行训练。并且又由于原始模型上少了一半梯度计算,可以加快训练速度并节省 GPU 内存。使用 ControlNet 训练一个 Stable Diffusion 模型只需要在每次训练迭代中增加大约 23% 的 GPU 内存和 34% 的时间(在单个 Nvidia A100 PCIE 40G 上测试)。

具体地,研究者使用 ControlNet 创建了 12 个编码块和 1 个 Stable Diffusion 中间块的可训练副本。这 12 个编码块有 4 种分辨率,分别为 64×64、32×32、16×16 和 8×8,每种分辨率有 3 个块。输出被添加到 U-net 的 12 个残差连接和 1 个中间块。由于 Stable Diffusion 是典型的 U-net 结构,因此这种 ControlNet 架构很可能可以用于其他扩散模型。
训练及提升训练
给定图像 z_0,扩散算法渐进地向图像添加噪声并产生噪声图像 z_t,t 是添加噪声的次数。当 t 足够大时,图像近似于纯噪声。给定一组包括时间步长 t、文本 prompts c_t 的条件以及任务特定条件 c_f,图像扩散算法学习网络 ϵ_θ 以预测添加到噪声图像 z_t 的噪声,如下公式 (10) 所示。

在训练过程中,研究者随机将 50% 的文本 prompts c_t 替换为空字符串,这有利于 ControlNet 从输入条件 map 中识别语义内容的能力。
此外,研究者还讨论了几种改进 ControlNets 训练的策略,特别是在计算设备非常有限(如笔记本电脑)或非常强大(如具有可用大规模 GPU 的计算集群)的极端情况下。
更多技术细节请参阅原论文。
到这里,我们也就讲完了《AI降维打击人类画家,文生图引入ControlNet,深度、边缘信息全能复用》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于模型,研究的知识点!
微软在接近 EOL 时发出从 Windows 10 1909 和 20H2 升级的警告
- 上一篇
- 微软在接近 EOL 时发出从 Windows 10 1909 和 20H2 升级的警告
- 下一篇
- iFixit 拆掉 Mac Studio 和 Studio 显示器
-
- 科技周边 · 人工智能 | 4小时前 |
- Embedding 批量请求的长度和失败重试设计
- 383浏览 收藏
-
- 科技周边 · 人工智能 | 2天前 |
- RAG 文档切片怎样决定 overlap
- 278浏览 收藏
-
- 科技周边 · 人工智能 | 2天前 |
- ONNX 导出怎样声明动态 batch 和序列长度
- 131浏览 收藏
-
- 科技周边 · 人工智能 | 2天前 |
- RAG 检索结果怎样设置召回和重排的 Top K
- 491浏览 收藏
-
- 科技周边 · 人工智能 | 2天前 | LoRa PEFT merge_and_unload adapter unload disable_adapter delete_adapter
- PEFT 怎样卸载 adapter 并保留基础模型
- 485浏览 收藏
-
- 科技周边 · 人工智能 | 2天前 |
- Accelerate mixed_precision 怎样选择 fp16 或 bf16
- 386浏览 收藏
-
- 科技周边 · 人工智能 | 2天前 |
- Accelerate 怎样配置梯度累积
- 356浏览 收藏
-
- 科技周边 · 人工智能 | 2天前 | skip take Hugging Face Datasets streaming IterableDataset shard
- IterableDataset 只有一个 shard 时怎么继续切分数据
- 441浏览 收藏
-
- 科技周边 · 人工智能 | 2天前 | JSON split Hugging Face dataset Datasets
- Hugging Face Datasets 怎样从 JSON 加载数据集
- 266浏览 收藏
-
- 科技周边 · 人工智能 | 2天前 |
- Transformers 生成文本怎样理解 past_key_values 缓存
- 370浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 498次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 555次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 582次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 534次使用
-
- MMBench
- MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
- 346次使用
-
- 本地大模型反复输出同一句话怎么调整生成参数
- 2026-09-06 501浏览
-
- Python 调用大模型时如何用结构化输出校验 JSON:从解析失败到可重试
- 2026-08-29 501浏览
-
- AI写作工具免费版安装教程(含豆包Clawdbot)
- 2026-05-30 501浏览
-
- WPS AI能自动生成PPT吗?输入主题一键制作演示文稿
- 2026-05-27 501浏览
-
- Canva手机闪退解决方法及适配指南
- 2026-05-25 501浏览
