Adding Conditional Control to Text-to-Image Diffusion Models——【代码复现】

官方实现代码地址:lllyasviel/ControlNet: Let us control diffusion models! (github.com)

一、前言

此项目的使用需要显存大于8G,训练自己的ControlNet或需要更大,因此请注意查看自身硬件是否符合。

在此之前请确保已经安装好python以及相关IDE工具。

二、环境安装

这里主要还是基于官网文档来进行代码复现。

1.创建虚拟环境

conda env create -f environment.yaml
conda activate control

注:如果你之前安装过stablediffusion相关项目的虚拟环境,也可以继续使用,只需要安装没有装过的安装包即可,但可能在使用过程中会出现一些问题,大多可能都是安装包版本冲突的问题,需要更换安装包版本,后面我主要会讲一些我自己所遇到的问题。

2.下载clip-vit-large-patch14

将下载的所有文件存放于项目文件夹openai/clip-vit-large-patch14中。

3.下载想要运行的模型

lllyasviel/ControlNet · Hugging Face

从上述链接中下载想要运行使用的模型,项目中给出了多个不同的示例脚本,这里我以gradio_canny2image.py为例,可以在代码中看到对应所用的模型,我们将对应模型下载好了放到相应路径中即可,比如这里要运行gradio_canny2image.py则需要下载control_sd15_canny.pth并放到models文件夹下。

三、运行

这里主要还是以 gradio_canny2image.py为例:

python gradio_canny2image.py

如果一切正常,则会出现如下界面:

如果你是在本机运行的,直接点 http://0.0.0.0:7860这个URL即可,当然如果你和我一样是在服务器上跑的,则需要将0.0.0.0改成服务器的IP地址运行,运行所得界面如下:

 上面呢是一切都正常的情况,然而我在复现过程中还是遇到了很多问题,我总结了一些大多还是环境冲突的问题,因为我用了之前创建的虚拟环境,并没有重新建一个新的虚拟环境,下面主要是讲我在复现过程中遇到的一些问题:

(1).

这里出现了一个莫名参数,然后我看报错文件内容的路径确发现他跑到了stable diffusioin的项目文件夹下去了,其实这个问题在我复现Dreambooth等项目的时候也有出现过,说实话我也不太清楚为啥,解决的办法目前只有重新创建一个新的虚拟环境。

(2).

 这里是我在安装basicsr软件包的时候出现了冲突问题,我看了解决的方法主要是要先安装cython软件包,于是我就安装了cython,安装后还是出现了问题:

 说是找不到合适的tb-nightly版本,然后我看网上有人说可能是源的问题,于是我换成了阿里云的镜像:

python -m pip install tb-nightly -i https://mirrors.aliyun.com/pypi/simple

这次就安装好了,然后再次去安装basicsr软件包,就安装成功了!

 (3).

这里说是在transformer处遇到一个未知的key,原因是我的transformer版本太高了,于是我把高版本给卸载了重新安装了4.19.2版本,问题就得以解决了。

(4).

 然后我再次运行,又出现了一个未知参数,这次是发生在gradio上的,原因也是我安装的版本过高,于是我换成了项目给出的版本: gradio==3.16.2,但是!!!后面还是出现了问题!!!

如果你安装的也是 gradio==3.16.2版本,你也可以进入到gradio界面,但是你会发现你在运行的时候,一直在run但是不出结果,如果你查看资源管理器你也会发现你的GPU使用率为0%。

命令行会报错AssertionError: No event data

这里实际上也是版本问题,所以安装3.16.2也是会有问题的,我们需要安装 3.38.0版本,然后就可以顺利运行了!

测试、出图:

 四、训练自己的ControlNet

ControlNet/docs/train.md 位于主 ·lllyasviel/控制网 (github.com)

官方的训练文档我个人认为比较详细,并且我在训练过程中也没有遇到什么问题,所以这里不过多叙述,我自己也是按照上面的步骤试验了一下,目前还在训练中...我用的是一块RTX 3090,我把batchsize调成了1,可以根据自己的GPU大小来调整参数。

还有就是我并没有看到他所设置的epoch大小,不知道是如何设定的,研究ing...

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【UE Niagara学习笔记】05 - 喷射火焰顶部的蓝色火焰

在上一篇博客(【UE Niagara学习笔记】04 - 火焰喷射时的黑烟效果)的基础上继续实现在火焰喷射的起点位置生成蓝色火焰的效果。 目录 效果 步骤 1. 创建新的发射器 2. 减少粒子生成数量 3. 减小粒子初始大小 4. 减少粒子喷射距离 5. 减少粒子初始…

在Linux上搭建Maven仓库

目录 一、下载安装包二、安装maven三、修改配置文件settings.xml四、配置环境变量五、测试maven是否可用 一、下载安装包 我在这里为大家准备好了apache-maven-3.5.0-bin.tar.gz,百度网盘下载链接如下: 链接:https://pan.baidu.com/s/1bGun…

python编程使用selenium模拟登陆淘宝实例代码

selenium简介 selenium 是一个web的自动化测试工具,不少学习功能自动化的同学开始首选selenium ,相因为它相比QTP有诸多有点: * 免费,也不用再为破解QTP而大伤脑筋* 小巧,对于不同的语言它只是一个包而已&#xff0c…

AFL进阶教学——插桩、执行、覆盖率收集与反馈(解析)

AFL(American Fuzzy Lop)是一个面向安全的模糊测试工具,它使用编译时插桩技术和遗传算法,可以自动发现触发目标二进程程序的测试用例,从而大大提高测试代码的功能覆盖率。本文主要讲述AFL是如何实现插桩的,…

提升网络安全重要要素IP地址

在数字化时代,网络安全已经成为人们关注的焦点。本文将深入探讨网络安全与IP地址之间的紧密联系,以及IP地址在构建数字世界的前沿堡垒中的关键作用。 网络安全是当今数字社会中不可忽视的挑战之一。而IP地址,作为互联网通信的基础协议&#…

RT-Thread:ADC 框架应用,通过 STM32CubeMX 配置 STM32 ADC驱动

关键词:ADC,RT-Thread ADC,STM32 ADC应用 说明:本笔记是记录如何开启 RT-Thread 框架的ADC功能,使用系统自带的ADC函数,并通过 STM32CubeMX 配置 STM32 ADC驱动 。 1. 打开board.h 文件,找到ADC 使用配置的流程&…

Dell 机架式服务器 - 高级定制服务

Dell 机架式服务器 - 高级定制服务 1. Dell Technologies2. 机架式服务器 - 高级定制服务2.1. Servers & Storage (服务器及存储) -> Servers2.2. Rack Servers (机架式服务器)2.3. Shop2.4. PowerEdge Rack Servers (PowerEdge 机架式服务器)2.5. PowerEdge R760 Rack …

SpringBoot 注解超全详解

使用注解的优势: 采用纯java代码,不在需要配置繁杂的xml文件 在配置中也可享受面向对象带来的好处 类型安全对重构可以提供良好的支持 减少复杂配置文件的同时亦能享受到springIoC容器提供的功能 1 注解详解(配备了完善的释义&#xff0…

数据库的导入导出以及备份

1.数据库的导出和导入 一.navicat导入导出 导入:右键➡运行SQL文件 导出选:中要导出的表➡右键➡转储SQL文件➡数据和结构 mysqldump命 1. 进入navicat安装目录的bin目录,cmd打开命令窗口 2. mysql -u用户名 -p ➡ 输入密码 3. creat…

Python基础知识:整理7 字典的定义及其相关操作

1 字典的定义 # 1. 字典的定义 # 定义字典的字面量 # {key: value, key: value, ......, key: value}# 定义字典变量 # my_dict {key: value, key: value, ......, key: value}# 定义空字典 # my_dict {} # my_dict dict()定义重复Key的字典 my_dict1 {"张三": …

Proxmox VE 超融合集群销毁Ceph Pool

作者:田逸(formyz) 销毁Ceph Pool的目的 一套五节点的Proxmox VE超融合集群,当初为有效利用资源,配备了Nvme高性能磁盘和大容量的SATA机械磁盘(如图所示),高性能Nvme磁盘用于虚拟机…

图像中部分RGB矩阵可视化

图像中部分RGB可视化 今天室友有个需求就是模仿下面这张图画个示意图: 大致就是把图像中的一小部分区域的RGB值可视化了一下。他居然不知道该怎么画,我寻思这不直接秒了。 import cv2 as cv import numpy as np import matplotlib.pyplot as pltclass …

构建高效秒杀系统的设计原理及注意事项

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

OpenFegin日志增强

OpenFeign配置日志增强功能 OpenFeign提供了日志打印功能,我们可以通过配置来调整日恙级别,从而了解Feign 中 Http请求的细节。 说白了就是对Feign接口的调用情况进行监控和输出 日志级别 NONE:默认的,不显示任何日志; BASIC&…

Android平板浏览器远程Ubuntu服务器使用code-server编程写代码

文章目录 1.ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址6.结语 1.ubuntu本地安装code-server 准备一台虚拟机,Ubuntu或者centos都可以,这里以VMwhere ubuntu系统为例 下载code server服务,浏览器…

一文快速学会Docker软件部署

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:首期文章 📚订阅专栏:Docker 希望文章对你们有所帮助 做项目的时候,感觉很多地方的配置都特别…

RK3568上如何使用MPP进行硬解码

目录 前言正文一、FFmpeg 拉流处理二、RK3568 mpp硬解码1、简介2、普通mpp解码流程3、核心代码 END、总结的知识与问题1、一直出现jitter buffer full 这样的问题2、如何打印帧率?3、分析av_packet_alloc、av_init_packet、av_packet_unref、av_packet_free、av_fra…

zookeeper 与eureka区别

CAP定理 在分布式系统的发展中,影响最大的莫过于CAP定理了,是分布式系统发展的理论基石。 2000年,加州大学的计算机科学家 Eric Brewer提出了CAP猜想 2002 年,麻省理工学院的 Seth Gilbert 和 Nancy Lynch 从理论上证明了 CAP 猜…

PTA✨C语言 组合数的和

7-5 组合数的和 分数 15 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字。要求所有可能组合出来的 2 位数字的和。例如给定 2、5、8,则可以组合出:25、28、5…

指针的含义、表示、规范、存储、运用

指针的含义、表示、规范、存储、运用 指针的含义指针的表示指针的规范先声明再定义声明和定义一起表示错误表示 指针的存储理解一个变量的存储过程和原理理解一个指针的存储过程和原理理解多个指针的存储过程和原理 指针的运用 指针的含义 表示某个变量或数据所在的内存地址 注…