latent-diffusion model环境配置--我转载的

latent-diffusion model环境配置,这可能是你能够找到的最细的博客了_latent diffusion model 训练 autoencoder-CSDN博客

 

前言

最近在研究diffusion模型,并对目前最火的stable-diffusion模型很感兴趣,又因为stable-diffusion是一种latent-diffusion模型,故尝试复现latent-diffusion model,并训练自己的LDM。

写这篇博客的出发点是因为,当我跟随github页面上的install教程进行安装的时候,遇到了很多问题,有些是因为网络问题,服务器无法直接下载国外服务器的资源;有些则是软件版本其实是错的,照着安装就是不对。

一、环境配置

我修改了以下项目中environment.yaml文件里的配置,这里请跟着我的步骤进行安装
我将environment.yaml文件中的配置提取了出来,防止直接安装yaml文件时出现网络错误,导致无法继续安装
1.创建requirement.txt文件

把下面的内容复制到requirement.txt文件里

albumentations==0.4.3
opencv-python==4.1.2.30
pudb==2019.2
imageio==2.9.0
imageio-ffmpeg==0.4.2
pytorch-lightning==1.4.2
omegaconf==2.1.1
test-tube>=0.7.5
streamlit>=0.73.1
einops==0.3.0
torch-fidelity==0.3.0
transformers==4.6.0
torchmetrics==0.6
kornia==0.5.10
six
-e git+https://github.com/CompVis/taming-transformers.git@master#egg=taming-transformers
-e git+https://github.com/openai/CLIP.git@main#egg=clip
-e .

 

2.提前从Github上下载好taming-transformers和clip

https://github.com/CompVis/taming-transformers

 https://github.com/openai/CLIP

 下载好后解压,然后将两个项目的文件夹名分别修改为taming-transformers和clip,然后把这两个文件夹复制到latent-diffusion项目下的src文件夹下(如果没有src文件夹,自己创建一个),如下图所示:

3.创建conda环境,并安装requirement.txt文件

执行下面命令创建ldm环境

conda create -n ldm python=3.8.5    # 创建新环境
conda activate ldm                    # 激活新环境

  

安装requirement.txt文件

pip install -r requirement.txt

Tips:
1.为什么我没有提前安装torch,因为安装好requirement.txt后,会自动安装上torch2.0,而torch2.0在执行代码时会报错,版本是错误的,因此我手动将其删除,再重新安装低版本的torch
2.如果按照LDM项目里的environment.yaml安装的话,会缺一些包,并且包的版本也是错的,进到导致代码执行报错。于是我Google好久找到了解决方法,以及合适的包。我已经将合适的包以及版本添加进了requirement.txt文件。如:
transformers升级为4.6.0版本,添加torchmetrics=0.6 (解决Bug的Answer)
添加kornia=0.5.10 (torch和kornia的对应关系),
添加six包。
照着安装你们就不用再走一遍弯路了。

 

 删除toch2.0

pip uninstall torch

4.安装torch 1.8

不要跟着environment.yaml里的torch版本安装,安装完执行代码依然会报错,cudatookit11.0 就是会出错,要用cudatookit11.1。执行下面命令安装

pip install torch==1.8.1+cu111 torchvision==0.9.1+cu111 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html

5.本地下载Bert模型权重,修改加载Bert的代码

因为国内的服务器大多数是无法直接访问huggingface网站的,进而导致无法联网下载模型,因而被迫只能先将模型下载到本地,然后再上传至服务器。
在这里下载bert-base-uncased的权重,只需要下载如图方块所示的文件即可:

https://huggingface.co/bert-base-uncased/tree/main

将这三个文件放在一个文件夹内,然后你可以将文件夹上传到服务器上LDM项目下的models目录下,

然后修改LDM项目下ldm/modules/encoders/modules.py这个文件
对应代码在第58行,修改from_pretrained的路径为本地路径,注意是权重文件对应文件夹名。也就是刚才那三个文件,放到bert文件夹下面

class BERTTokenizer(AbstractEncoder):
    """ Uses a pretrained BERT tokenizer by huggingface. Vocab size: 30522 (?)"""
    def __init__(self, device="cuda", vq_interface=True, max_length=77):
        super().__init__()
        from transformers import BertTokenizerFast  # TODO: add to reuquirements
        # self.tokenizer = BertTokenizerFast.from_pretrained("bert-base-uncased")
        # 需要提前从huggingface上把模型文件下载到本地,然后进行本地加载,否则会出现联网错误的问题,导致模型无法下载
        self.tokenizer = BertTokenizerFast.from_pretrained("models/bert")   # 加载本地文件
        self.device = device
        self.vq_interface = vq_interface
        self.max_length = max_length

6.测试环境

测试Text-to-Image任务
如果模型文件你无法在服务器上直接下载,请在本地单独下载,然后再上传至服务器

# 下载预训练权重(5.7GB):
mkdir -p models/ldm/text2img-large/
wget -O models/ldm/text2img-large/model.ckpt https://ommer-lab.com/files/latent-diffusion/nitro/txt2img-f8-large/model.ckpt

# 执行脚本
python scripts/txt2img.py --prompt "a virus monster is playing guitar, oil on canvas" --ddim_eta 0.0 --n_samples 4 --n_iter 4 --scale 5.0  --ddim_steps 50

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

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

相关文章

【QT+QGIS跨平台编译】之十五:【libTiff+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、libTiff介绍二、文件下载三、文件分析四、pro文件五、编译实践一、libTiff介绍 libTiff是一个用于处理TIFF图像文件格式的开源软件库。 TIFF(Tagged Image File Format)是一种灵活且广泛支持的图像文件格式,常用于存储照片和其他高质量图像。libTiff提供了一套…

Qt QPlainTextEdit高亮显示当前行

Qt QPlainTextEdit高亮显示当前行 文章目录 Qt QPlainTextEdit高亮显示当前行摘要错误的代码正确的代码QTextEdit::ExtraSelection 关键字: Qt、 QPlainTextEdit、 QTextBlock、 ExtraSelection、 GPT 摘要 今天要在说一下GPT,当下如果你还不会用G…

STM32读取MPU6050数据并通过角度值控制舵机运动(STM32、GY-521 MPU6050、SG90舵机、MG946舵机)

通过STM32F103C8T6读取MPU6050数据控制舵机运动(STM32、GY-521 MPU6050、SG90舵机、MG946舵机) 最终现象一、MPU6050数据读取二、舵机控制原理①什么是PWM?②STM32F103C8T6如何生成PWM?③控制舵机需要什么样的PWM波? 三…

qemu调试kernel启动(从第一行汇编开始)

一、背景 大部分qemu调试kernel 都是讲解从start_kernel开始设置断点,然后开启调试; 但是我们熟悉linux启动流程的伙伴肯定知道,在start_kernel之前还有一段汇编,包括初始化页表及mmu等操作, 这部分如何调试呢&#x…

cocos添加节点事件的3种方式

我们以button为例来说明一下cocos怎样为节点添加事件: 直接通过cocos熟悉检查器绑定 添加事件脚本 import { _decorator, Component, Node, input, Input, Button, EventKeyboard } from cc; const { ccclass, property } _decorator;ccclass(Attack) export cla…

【vue】图片加载骨架

一、前言 在网速较低或者网站的服务器宽带只有几MB的情况下,网页中的图片加载时,要么空白,要么像打印机一样一行一行地“扫描”出来,为了提升用户体验,可以给图片标签外加一层骨架。 无骨架 有骨架 二、详细设计 每张…

无人机在三维空间中的转动问题

前提 这篇博客是对最近一个有关无人机拍摄图像项目中所学到的新知识的一个总结,比较杂乱,没有固定的写作顺序。 无人机坐标系旋转问题 上图是无人机坐标系,绕x轴是翻滚(Roll),绕y轴是俯仰(Pitch),绕z轴是偏航(Yaw)。…

sqli-labs第一关

1.判断是否存在注入,注入是字符型还是数字型? ?id1 and 11 ?id1 and 12 因为输入and 11与and 12 回显正常,所以该地方不是数字型。 ?id1 ?id1-- 输入单引号后报错,在单引号后添加--恢复正常,说明存在字符注入 2.猜解SQL查…

Spark Exchange节点和Partitioning

​Exchange 在explain时,常看到Exchange节点,这个节点其实就是发生了数据交换 此图片来自于网络截取 BroadcastExchangeExec 主要是用来广播的 ShuffleExchangeExec 里面决定了数据分布的方式和采用哪种shuffle 在这里可以看到好几种不同的分区器 shuf…

Windows11搭建GPU版本PyTorch环境详细过程

Anaconda安装 https://www.anaconda.com/ Anaconda: 中文大蟒蛇,是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。从官网下载Setup:点击安装,之后勾选上可以方便在普通命令行cmd和PowerShell中使用…

聊聊Git合并和变基

一、 Git Merge 合并策略 1.1 Fast-Forward Merge&#xff08;快进式合并&#xff09; //在分支1下操作&#xff0c;会将分支1合并到分支2中 git merge <分支2>最简单的合并算法&#xff0c;它是在一条不分叉的两个分支之间进行合并。快进式合并是默认的合并行为&#…

微信小程序wx.getRealtimeLogManager无法查看log内容

解决方案&#xff1a; 首先&#xff0c;检查在we分析是否启用实时日志&#xff0c;入口如下&#xff1a; 其次&#xff0c;检查基本语法是否正确&#xff0c;参考如下&#xff1a; var logger wx.getRealtimeLogManager() logger.error("error message") 最后&a…

你好,C++对象

你好&#xff0c;对象 面向对象开发对象的定义 类与对象类的定义类的访问限定符及封装类的实例化类对象模型结构体内存对齐规则 this指针this指针的引入 this指针的特性 类的默认成员函数构造函数析构函数拷贝构造函数结语 面向对象开发 对象的定义 对象的含义是指具体的某一…

在docker中安装MQTT教程

网上的好多关于在docker中安装MQTT教程都是错误的不完整的。这篇博客是完整的&#xff0c;实践过的&#xff0c;踩过了很多的坑得来的&#xff0c;欢迎大家享用&#xff01; 1、首先在docker中拉取镜像 docker pull eclipse-mosquitto2、创建配置文件目录 mkdir -p /docker/…

axure如何载入元件库

首先&#xff0c;安装axure后打开 1.打开axure软件后&#xff0c;左侧可以看到一个叫元件库的菜单 2.点击元件库右侧的选项按钮 然后在出现的下拉菜单中点击载入元件库 3.找到自己下载好的元件库&#xff08;Axure元件库合集&#xff09;&#xff0c;双击它就可以载入了 可以看…

Linux:共享内存

文章目录 System V共享内存的原理管理共享内存shmgetshmatshmdtshmctl 共享内存和管道实现进程间同步通信 前面介绍完了匿名管道和命名管道&#xff0c;那么本篇要引入的主题是共享内存 System V 作为进程通信部分的内容&#xff0c;共享内存必然有其存在的意义和价值&#x…

༺༽༾ཊ—Unity之-04-工厂方法模式—ཏ༿༼༻

首先创建一个项目&#xff0c; 在这个初始界面我们需要做一些准备工作&#xff0c; 建基础通用文件夹&#xff0c; 创建一个Plane 重置后 缩放100倍 加一个颜色&#xff0c; 任务&#xff1a;使用工厂方法模式 创建 飞船模型&#xff0c; 首先资源商店下载飞船模型&#xff0c…

mkcert的安装和使用,5分学会在本地开启localhost的https访问方式

mkcert官方仓库地址&#xff1a;https://github.com/FiloSottile/mkcert#installation mkcert 是一个简单的工具&#xff0c;用于制作本地信任的开发证书。它不需要配置。 简化我们在本地搭建 https 环境的复杂性&#xff0c;无需操作繁杂的 openssl 实现自签证书了&#xff…

风速编辑一下

clear clc % 假设已知的南北和东西风速分量时程 time 0:1:999; % 时间步长为1秒 north_south_wind_speed 8 2 * sin(2 * pi * 0.1 * time); % 南北风向分量 east_west_wind_speed 6 1 * sin(2 * pi * 0.1 * time); % 东西风向分量 % 计算合风速和风向 total_wind_spe…

Node.js的学习1

Node.js简介 浏览器是JavaScript的前端运行环境Node.js是JavaScript的后端运行环境Node.js中无法调用DOM和BOM等浏览器内置API 终端中的快捷键 使用向上箭头&#xff0c;可以快速定位到上一次执行的命令使用tab键&#xff0c;可以快速补全路径使用esc键&#xff0c;可以快速清…
最新文章