Stablediffusion模型diffusesr格式和ckpt格式相互转换

news2025/1/14 4:07:24

  参考资料:

  diffusers的源码 [github]

  因为小博客可能看的人很少,所以我写的啰嗦一点,想直接看如何互相转换的朋友可以直接转到文末的代码段。

  当你在学习Stablediffusion这个开源的t2i模型时,不可避免地会碰到两种模型权重的存储格式,即diffusers格式和ckpt格式:

  如上图所示,这是一个hugging face的仓库,仓库里有文件夹和.ckpt文件.safetensors文件。这个截图同时包含了两种格式的权重,那么哪些属于diffusers格式?哪些属于ckpt格式?

  答:明摆着的,后缀为.ckpt的文件就是ckpt格式。而diffusers格式其实包含:feature_extractor, scheduler, text_encoder, tokenizer, unet, vae这些文件夹以及model_index.json这个文件。大的二进制文件主要位于text_encoder,unet和vae文件夹下。

  safetensors是ckpt转换得到的,防止别有用心之人在ckpt文件中加入恶意代码。safetensor和ckpt文件都能直接用于AUTOMATIC111这个为T2I模型开发的WebUI上,而diffusers不行。而diffusers提供的一些代码example又非常有借鉴意义,但一旦使用,其存储类型是一系列目录,这就催生了两种各格式相互转化的需求。

  怎么转化?使用diffusers官方提供的转化脚本即可,这些转换脚本在diffuser源代码仓库的scripts文件夹下:主要涉及两个文件:convert_original_stable_diffusion_to_diffusers.py和convert_diffusers_to_original_stable_diffusion.py。

  diffusers to ckpts

  使用convert_diffusers_to_original_stable_diffusion.py脚本,一个典型的使用场景是你训练了一个模型,然后就想把这个模型转换成.ckpt文件放到webui上。使用范例如下:

python convert_diffusers_to_original_stable_diffusion.py --model_path model_dir --checkpoint_path path_to_ckpt.ckpt

  还有两个参数--half和--use_safetensors,如果加上就会把数值存为fp16以及把ckpt存为safetensors

  ckpts to diffusers

  使用convert_original_stable_diffusion_to_diffusers.py脚本,一个典型的使用场景是把ckpt文件(自己训练的或者是SD官方发布的)解包成diffusers的目录形式上传hugging face或者是自己使用。需要注意的是diffuser的目录存储形式实际上提供了比ckpt文件更多的(实际上多得多)信息。为什么?因为ckpt是pytorch使用的存储权重的二进制文件,你在load_state_dict的时候需要先初始化model,然后再load权重,但是ckpts文件中没有这些信息(或很少),就只能靠脚本来推断到底用了哪些参数初始化的model。所以你会发现diffusers to ckpts的脚本很简单,ckpts to diffusers的脚本很复杂。下面提供一个范例:

python convert_original_stable_diffusion_to_diffusers.py --checkpoint_path path_to_ckpt.ckpt --dump_path model_dir --image_size 512 --prediction_type epsilon

  在使用v2-base或v2.1-base的时候,一定要加上--image_size 512和--prediction_type epsilon这两个参数,不然脚本就会推断错模型的类型(ckpt中的信息太少)。由于脚本已经写的很完备了,大多数情况下只需要--checkpoint_path和--dump_path两个参数就能正常完成转换。

  最后,diffusers这个代码仓库日新月异,每天都在高强度更新,所以读者需要多git pull安装最新版本,这两个转换脚本什么时候发生变化也不能保证滴。

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

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

相关文章

在rk3568移植rtl8723du,配置成wifi ap模式

1、在路径添加rtl8723du模块代码 kernel/drivers/net/wireless/rockchip_wlan 添加rtl8723du 2、修改Makefile 修改对应的路径 修改交叉编译的工具的路径和内核路径 3、修改rockchip_wlan目录下的Makefile 添加这个 obj-$(CONFIG_RTL8723DU) rtl8723du/ 4、修改rockchip_w…

淘宝按关键字搜索淘宝商品 API 参数及返回值说明 翻页展示 含调用示例

淘宝关键字搜索接口,是复原我们在淘宝购物时,在搜索栏内输入关键字,即可获取到相关商品列表,商品信息齐全,支持翻页展示。同时,传入参数sort可按价格排序,也可筛选响应价格段的商品。商品信息是…

关于【Stable-Diffusion WEBUI】基础模型对应VAE的问题

文章目录 (零)前言(一)什么是VAE(二)模型嵌入VAE了么(三)我们能做什么(3.1)准备常见的VAE(3.2)下载模型对应的VAE(3.3&…

小航编程题库GoC南海区小学四年级模拟测试题(含题库教师账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)_程序猿下山的博客-CSDN博客 填空题8.0分 删除编辑 答案:100 第1题画一条高度为100,粗为5的竖线。 //程序名:直线 //作者: int main() { pen.size(5)…

Python 面向对象高级--继承,方法重写,权限,类成员,实例成员

1.继承入门 class 子类名(父类名): 面向对象中的继承: 指的是多个类之间的所属关系,即子类默认继承父类的所有属性和方法. 面向对象中继承的作用: 提高代码的复用率, 减少重复代码的书写. class Animal():def __init__(self,name,age):self.name nameself.age a…

聚焦珠宝产业数字化变革 世界珠宝数字化发展论坛在厦门举办

家庭周报厦门讯 5月18日,世界珠宝数字化发展论坛在厦门举办。本活动由北京北大宝石鉴定中心作为指导单位,中国广告主协会品牌建设与营销专业委员会、世界珠宝数字化发展论坛组委会主办,北京真心红珠宝有限公司承办。这是在数字中国建设整体布…

S20330-SRS步进电机最简单的驱动方法

​ S20330-SRS步进电机最简单的驱动方法 步进电机最简单的驱动方法,了解四轴步进电机驱动器原理 四轴步进电机驱动器原理-简介四轴步进电机驱动器,其实就是一种将电脉冲转化为角位移的执行机构。首先步进驱动器会接收到一个脉冲信号,然后它按…

小航编程题库2022年NOC决赛图形化(小高组)(含题库教师学生账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)_程序猿下山的博客-CSDN博客 单选题3.0分 删除编辑 答案:A 第1题运行下面的程序,最终“我的变量”的值是多少? A、5B、10C、25D、30 答案…

排序算法——冒泡排序详解及优化

冒泡排序 排序的稳定性冒泡排序优化后的冒泡排序冒泡排序的复杂度 排序的稳定性 对于一个排序算法&#xff0c;假设两个相同的元素Ai和Aj 在排序前这两个元素满足条件i<j&#xff0c;即Ai在Aj之前 在排序后Ai仍在Aj之前&#xff0c;则称为排序算法为稳定排序 否则称这个算法…

【Linux】多进程实现并发服务器

多进程实现并发服务器 1.此时来一个客户端请求时 创建cfd1 属于是阻塞状态 如果再有一个客户端就没办法提取了 2.所以要fork一个子进程&#xff0c;此时关闭父进程的cfd1&#xff0c;关闭子进程的lfd;不影响其它客户端请求连接 具体流程&#xff1a; 创建套接字 绑定 监听 …

DNDC模型二:减排潜力模拟

查看原文>>>生态系统模型&#xff1a;DNDC、CMIP6、GEE林业、无人机遥感、InVEST、Noah-MP、ArcGIS Pro、APSIM模型等 由于全球变暖、大气中温室气体浓度逐年增加等问题的出现&#xff0c;“双碳”行动特别是碳中和已经在世界范围形成广泛影响。国家领导人在多次重要…

ZooKeeper 用的好好地,Kafka 为什么要抛弃 ZooKeeper?

ZooKeeper 的作用 ZooKeeper 是一个开源的分布式协调服务框架&#xff0c;你也可以认为它是一个可以保证一致性的分布式(小量)存储系统。特别适合存储一些公共的配置信息、集群的一些元数据等等。 它有持久节点和临时节点&#xff0c;而临时节点这个玩意再配合 Watcher 机制就…

升级到PyTorch 2.0的技巧总结

PyTorch 2.0 发布也有一段时间了&#xff0c;大家是不是已经开始用了呢&#xff1f; PyTorch 2.0 通过引入 torch.compile&#xff0c;可以显着提高训练和推理速度。 与 eagerly 模式相反&#xff0c;编译 API 将模型转换为中间计算图&#xff08;FX graph&#xff09;&#xf…

App外包开发上线Google Play流程

完成App开发后需要在各大应用市场上线&#xff0c;国内的应用市场比较多&#xff0c;各自的规则也不相同&#xff0c;上线审核也比较复杂&#xff1b;国外上线主要是Google Play市场&#xff0c;它更重视隐私的保护&#xff0c;必须严格按照规范来保护个人隐私&#xff0c;因此…

chatgpt赋能Python-python_gantt

Python Gantt&#xff1a;更高效的项目管理工具 在当今快节奏的环境下&#xff0c;项目管理的重要性愈发凸显。Gantt图作为一种常见的项目计划图表工具&#xff0c;已经得到了广泛的应用。Python作为一种高效的编程语言&#xff0c;自然而然地成为了Gantt图的一种实现方式。 …

chatgpt赋能Python-python_header怎么写

Python是一种高级编程语言&#xff0c;已经被广泛地应用于人工智能、数据分析、网站开发等多个领域。在使用Python编写代码时&#xff0c;我们经常需要在编写代码之前添加一些注释&#xff0c;来对代码进行说明或者提醒。在Python中&#xff0c;我们可以通过编写Header&#xf…

泰克Tektronix MDO4054C混合域示波器

附加功能&#xff1a; 带宽&#xff1a;500 兆赫 带宽可升级至 1 GHz频道&#xff1a;4采样率&#xff1a;2.5 GS/s 所有通道上的 20 M 记录长度> 340,000 wfm/s 最大波形捕获率数字电压表/频率计数器&#xff08;产品注册免费&#xff09;性能 6 合 1 集成示波器&#xff…

chatgpt赋能Python-python_head

Python.head——一款优秀的SEO工具 在当今数字化时代&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;对于企业的网络营销来说是非常关键的。而Python.head就是一款非常优秀的SEO工具&#xff0c;它可以让你更好地优化你的网站&#xff0c;提升搜索引擎排名。 什么是Pyt…

burpsuite导入网站的客户端证书

0x01 背景 个别网站需要导入客户端的XX.P12证书&#xff0c;如果没有导入直接访问网站&#xff0c;浏览器会提示&#xff1a;400 Bad Request , 出现&#xff1a;No required SSL certificate was sent等提示&#xff0c;如下图 此时需要在burpsuite中导入证书 0x02 网站客户…

增收不增利?Mobileye困局

作为全球头部ADAS芯片供应商&#xff0c;Mobileye的财务数据变化也在一定程度上反映市场的走向。 本周&#xff0c;该公司发布今年一季度财报&#xff0c;数据显示&#xff0c;季度营收同比增长16%&#xff0c;至4.58亿美元。其中&#xff0c;产品平均交付价格从去年同期的51.0…