【diffusion model】扩散模型入门

news/2024/7/10 19:53:22 标签: stable diffusion, python

写在最前,参加DataWhale 10月组队学习。
参考资料:
HuggingFace 开源diffusion-models-class

1.扩散模型介绍

2.调用模型生成一张赛博风格的猫咪图片

2.1 安装依赖包

python">%pip install -qq -U diffusers datasets transformers accelerate ftfy pyarrow==9.0.0

2.2 notebook登录huggingface账号

python">from huggingface_hub import notebook_login

notebook_login()

建议创建可写token,后续如果要上传模型的话有write权限
https://huggingface.co/settings/tokens
在这里插入图片描述

2.3 配置命令

python">%%capture
!sudo apt -qq install git-lfs
!git config --global credential.helper store

这两个命令用于在Jupyter Notebook中运行Shell命令,并将输出捕获(capture)起来,而不直接在Notebook中显示输出。

%%capture是一个Jupyter Notebook的魔法命令(magic command),它会捕获后续单元格中所有命令的标准输出(stdout)和标准错误输出(stderr),并将其保存在一个变量中,以便进一步处理或分析。

!sudo apt -qq install git-lfs用于在Shell中以sudo权限(管理员权限)安装git-lfs(Git Large File Storage)。-qq参数表示安装过程中不显示详细信息。

!git config --global credential.helper store用于在Shell中设置git的全局配置,将认证信息存储在文件中,而不是在内存中。这可以使得git在每次需要认证时都不再询问用户名和密码,而是从文件中读取认证信息。

请注意,sudo命令需要输入密码来确认你有权限进行系统级的安装。在Jupyter Notebook中执行这些命令时,你可能需要手动输入密码。如果你使用的是虚拟环境,你可能不需要使用sudo权限来安装包。请根据你的需求和系统权限进行相应的调整。

2.4 引入依赖

python">import numpy as np
import torch
import torch.nn.functional as F
from matplotlib import pyplot as plt
from PIL import Image
# Mac users may need device = 'mps' (untested)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

2.5 下载模型

python">from diffusers import StableDiffusionPipeline
import torch
model_id = "prompthero/openjourney"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16)
pipe = pipe.to("cuda")

2.6 输入提示词出图

python">prompt = "A cat wearing smart sunglasses, holding a laser, wearing a space suit, cyberpunk style"
image = pipe(prompt).images[0]
image.save("./cat1.png")
image

在这里插入图片描述


http://www.niftyadmin.cn/n/5108760.html

相关文章

阿里云10M带宽服务器价格、下载和上传速度限制说明

阿里云服务器10M带宽价格表年付85折,10M带宽一年优惠价5355元,10M带宽下载速度1280KB/秒,即1.25M/秒,阿腾云atengyun.com分享腾讯云服务器10M公网带宽优惠价格、流量价格、上传速度和下载速度限制: 目录 云服务器10M…

页面查询多项数据组合的线程池设计 | 京东云技术团队

背景 我们应对并发场景时一般会采用下面方式去预估线程池的线程数量,比如QPS需求是1000,平均每个任务需要执行的时间是t秒,那么我们需要的线程数是t * 1000。 但是在一些情况下,这个t是不好估算的,即便是估算出来了&…

Java数组[I

一、什么是数组 数组?什么是数组?在我印象中的数组是应该这样的:通过new关键字创建并组装他们,通过使用整形索引值访问它的元素,并且它的尺寸是不可变的! 但是这只是数组的最表面的东西!深一点&…

Android AMS——进程优先级更新(十八)

AMS 中的 updateOomAdjLocked 方法实现了进程优先级的动态更新。 获取 oom_adj: adb shell ps|grep com.xiaoxu.mytest adb shell cat /proc/21375/oom_adj 每个等级的进程又有对应的优先级,使用oom_adj值来表示,进程回收机制就是根据这个adj值来进行的 前台进程adj值最…

FPGA【紫光语法】

寄存器数据类型: reg 默认为 1 bit wide,如果超过 1 bit,则需要 range declaration 设置 reg 的位宽integer 默认位宽为 32 bit,不允许有 range declarationtime 默认位宽为 64 bit,不允许有 range declarat…

xhadmin多应用Saas框架如何下载安装?

xhadmin是什么? xhadmin 是一套基于最新技术的研发的多应用 Saas 框架,支持在线升级和安装模块及模板,拥有良好的开发框架、成熟稳定的技术解决方案、提供丰富的扩展功能。为开发者赋能,助力企业发展、国家富强,致力于…

公司注册类型分类标准是怎样的

公司法上的分支机构、分公司、子公司是什么 - 公司法 (一)以公司股东的责任范围为标准分类 以公司股东的责任范围为标准,亦即以公司股东是否对公司债务承担责任为标准,可将公司分为无限责任公司、两合公司、股份两合公司、股份有限公司和有限责任公司。…

KF-GINS源码阅读(下)

文章目录 七、捷联惯导更新:insPropagation()1、insPropagation():捷联惯导递推2、imuCompensate():IMU数据误差补偿3、insMech():IMU 状态更新(机械编排)4、velUpdate():速度更新1. 算法2. 代码…