[深度学习思想] ControlNet 工作原理

news2024/12/30 3:25:22

Stable Diffusion (2021 https://arxiv.org/abs/2112.10752) 带领了vision领域,具体是AI绘画领域达到了一个新高度。但是可控性成为使用的一个大瓶颈。Controlnet (2023 https://arxiv.org/abs/2302.05543) 提出一个深度学习模型框架,很好解决这个问题, 我们普通人使用复杂模型带来了希望。 其支持多种控制方式的输入,给创作带来了大大的便利。

有很多文章解释了controlNet的原理, 不在这里详细讨论。其文章主要发明创作是zero convolution。 

Q: 为什么zero convolution可以用小数据来训练呢?

- 模型初始化的时候权重为训练好的权重,并且generation 部分的网络权重是固定的。右侧网络在没有学习的时候不影响最终输出,输出为0,最终效果只是微调。因此不需要大的数据量,收敛速度更快。

Q: 为什么zero convolution 可以提供如此强大的功能呢? 

如果没有这一层,其实也可以训练的,但是训练难度增加,参见上一个问题。依然是因为只是微调。

Thoughts:

controlnet中蕴含了很多与resnet中skip connnection类似的思想,可以类比为将skip connection中直接连接神经网络的输入和输出,换成 在这个链接过程中也加入一个学习过程。

在进一步,我们可以看到 模型输入x 是直接作为一个数据直接连接到controlnet上。我们是否可以加一层网络进来呢? 答案应该是肯定,这就有点类似attention的思想了:只使用有用的信息来使用。只是现在还不知道什么样的任务需要这样的attention module。期待后续更多的工作。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/530459.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Liunx基础命令 - touch命令

touch命令 – 创建空文件与修改时间戳 touch命令的功能是用于创建空文件与修改时间戳。如果文件不存在,则会创建出一个空内容的文本文件;如果文件已经存在,则会对文件的Atime(访问时间)和Ctime(修改时间&a…

带头双向循环链表(增、删 、查、改)基本操作详细介绍 必看!!!

文章目录 链表介绍链表初始化链表打印查找元素增加节点头插尾插在指定位置插入 删除节点头删尾删删除指定位置节点 链表判空获取链表中元素的个数链表销毁 链表介绍 前面说到,链表的结构一共有八种:带头单向循环链表、带头单向非循环链表、带头双向循环…

渗透测试--3.2捕获和监听网络数据

目录 1.监听捕获数据方法 2.kali监听捕获工具介绍 arpspoof driftnet 1.监听捕获数据方法 渗透测试中,捕获和监听网络数据是非常重要的一项任务,可以帮助我们发现潜在的漏洞和攻击面。以下是一些常见的捕获和监听网络数据的方法: 抓包工…

Liunx基础命令 - cp复制命令

cp命令 – 复制文件或目录 cp命令来自英文单词“copy”的缩写,中文译为“复制”,其功能是用于复制文件或目录。cp命令能够将一个或多个文件或目录复制到指定位置,亦常用于文件的备份工作。-r参数用于递归操作,复制目录时若忘记添…

网络编程——UDP编程

UDP编程 UDP编程步骤通信流程serverclient 函数接口socketbindrecvfromsendto 举例UDP客户端UDP服务器 UDP编程步骤 在C语言中进行UDP编程的一般步骤如下: (1)包含头文件: 在代码中包含必要的头文件,以便使用UDP编程所…

借助国内ChatGPT平替+剪映/百度AIGC平台快速制作短视频

系列文章目录 借助国内ChatGPT平替MindShow,飞速制作PPT 借助国内ChatGPT平替markmap/Xmind飞速生成思维导图 文章目录 系列文章目录前言一、科大讯飞“星火”认知大模型二、使用步骤1.借助讯飞星火生成短视频的文案2.选择剪映生成短视频3.选择百度AIGC平台生成短…

redis复制机制

文章目录 1. Redis 复制机制2. 基本命令3. 修改配置文件4. 代码案例4.1 一主二仆4.2 薪火相传4.3 反客为主 5. Redis复制工作流程6. Redis 复制的缺点 1. Redis 复制机制 概念 : Redis 复制机制 能干的活 : 读写分离 : 写 就找 主机 master , 读就找从机…

Centos7离线安装Docker

在我们部署Docker镜像时,难免会遇到服务器没有网络情况,这时候我们就需要离线安装Docker 参考文档:https://docs.docker.com/engine/install/binaries 下载Docker安装包 下载地址:https://download.docker.com/linux/static/st…

玩转Google开源C++单元测试框架Google Test系列(gtest)之六 - 运行参数

一、前言 使用gtest编写的测试案例通常本身就是一个可执行文件,因此运行起来非常方便。同时,gtest也为我们提供了一系列的运行参数(环境变量、命令行参数或代码里指定),使得我们可以对案例的执行进行一些有效的控制。…

OpenCL编程指南-4.3类型转换

隐式类型转换 隐式类型转换是一种自动的类型转换,只要混合使用不同的类型,编译器就会完成这种隐式类型转换。这里支持表4-1中定义的标量类型(除void、double和half以外)的隐式转换。完成隐式转换时,并不只是重新解释一…

c/c++中的数据内存分布

c/c中的数据内存分布 1. C/C内存分布2. C语言中动态内存管理方式3. C中动态内存管理4. operator new与operator delete函数5. new和delete的实现原理6. malloc/free和new/delete的区别7.内存泄漏**什么是内存泄漏,内存泄漏的危害****内存泄漏分类(了解&a…

练习时长两年半的扫雷

目录 设计思路 游戏运行效果 函数的声明 头文件game.h 游戏主体(源文件) 1.game.c 2.test.c 各文件的阐述 各部分设计心得 1.打印菜单 2.初始化雷池 3.打印雷池以及玩家界面 打印效果 如何改变雷的数量与雷池大小 4.生成随机雷 5.排雷与对局判断 对于越界的看法 设计…

Pruning 系列 (五)Dropout、Dropconnect剪枝

环境 python 3.9numpy 1.24.1pytorch 2.0.0+cu117一、Dropout dropout在全连接层使用。 假设丢弃概率是P,有两种实现方式,不管是在《测试阶段》还是《训练阶段》对每层的输出做缩放,都是为了保持伯努利分布的期望np。《测试阶段》没dropout 而是全量神经元参与运算,不然预…

JAVA8的新特性——lambda表达式

JAVA8的新特性——lambda表达式 此处,我们首先对于Java8的一些特性作为一个简单介绍 Java 8是Java编程语言的一个重要版本,于2014年发布。Java 8引入了许多新特性和改进,以提高开发效率和性能。以下是Java 8的一些主要新特性: Lam…

Liunx基础命令 - pwd命令

pwd命令 – 显示当前工作目录的路径 ​ pwd 命令来自英文词组“print working directory”的缩写,其功能是用于显示当前工作目录的路径,即显示所在位置的绝对路径。在实际工作中,我们经常会在不同目录之间进行切换,为了防止“迷路…

【Android】Exam5 ListView组件简单应用

Exam5 ListView组件简单应用 ListView组件简单应用 Exam5 ListView组件简单应用目的实验内容及实验步骤采用SimpleAdapter自定义Adapter运行及结果:实验总结 目的 掌握常用的UI布局及组件; 掌握使用Intent启动Activity的方法 掌握ListView组件的简单应用…

什么是微服务中的熔断器设计模式?

在本文中,我将解释什么是熔断器设计模式以及它解决了什么问题。 我们将仔细研究熔断器设计模式,并探讨如何使用Spring Cloud Netflix Hystrix在Java中实现它。到本文结束时,您将更好地了解如何使用熔断器设计模式提高微服务架构的弹性。 熔断…

创建基于oracle jdk8的自定义docker镜像

创建基于oracle jdk8的自定义docker镜像 1:查看服务器java版本: 如果服务器的版本是open-jdk,则进行如下操作 拷贝相关jdk压缩包(.tar.gz后缀)到服务器目录(例:/usr/local) 解压:…

Liunx基础命令 - ls命令

ls命令 – 显示目录中文件及其属性信息 ls命令来自英文单词”list“的缩写,中文译为“列出”,其功能是用于显示目录中文件及其属性信息,是最常被使用到的Linux命令之一。 默认不添加任何参数的情况下,ls命令会列出当前工作目录中的…

Servlet编程---Day 04

一、HttpServletRequest (请求对象) (一)HttpServletRequest对象 HttpServletRequest对象是 tomcat 为我们封装的对象 HttpServletRequest是 ServletRequest 接口的子接口 , 专门做 http 协议的请求对象 (二)常用方法 //设置…