写在最前,参加DataWhale 10月组队学习。
参考资料:
HuggingFace 开源diffusion-models-class
1.扩散模型介绍
2.调用模型生成一张赛博风格的猫咪图片
2.1 安装依赖包
%pip install -qq -U diffusers datasets transformers accelerate ftfy pyarrow==9.0.0
2.2 notebook登录huggingface账号
from huggingface_hub import notebook_loginnotebook_login()
建议创建可写token,后续如果要上传模型的话有write权限
https://huggingface.co/settings/tokens
2.3 配置命令
%%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 引入依赖
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 下载模型
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 输入提示词出图
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