🧐 稳定扩散的简短介绍
Stable Diffusion 是一种文本到图像的潜在扩散模型,由来自 CompVis、Stability AI 和 LAION 的研究人员和工程师创建。它使用来自 LAION-5B 数据库子集的 512×512 图像进行训练。
关于 lambda 扩散器
此版本的 Stable Diffusion 已从 CompVis/stable-diffusion-v1-3-original 进行了微调,以接受 CLIP 图像嵌入而不是文本嵌入。这允许使用稳定扩散创建类似于 DALLE-2 的“图像变化”。此版本的权重已移植到 huggingface Diffusers,要将其与 Diffusers 库一起使用需要 Lambda Diffusers 存储库。
让我们开始学习如何使用 lambda 漫射器来使用稳定的漫射图像变化!
要运行本教程,我们将使用 Google Colab 和 Google Drive
⚙️ 准备依赖项
下载必要的文件:
%cd /content!git clone https://github.com/LambdaLabsML/lambda-diffusers.git%cd /content/lambda-diffusers!git checkout 4d4386e5d2ae667d18987b1a505a47efc643e9c9
安装所需的库:
%cd /content/lambda-diffusers# for lambda-diffusers!pip install -r requirements.txt
导入所需的库
%cd /content/lambda-diffusersfrom pathlib import Pathfrom lambda_diffusers import StableDiffusionImageEmbedPipelinefrom PIL import Imageimport torchfrom torch import autocastfrom diffusers import StableDiffusionPipelinefrom google.colab.patches import cv2_imshowimport cv2device = "cuda" if torch.cuda.is_available() else "cpu"
🎥 图像到图像
加载管道。
pipe = StableDiffusionImageEmbedPipeline.from_pretrained("lambdalabs/sd-image-variations-diffusers")pipe = pipe.to(device)
下载初始图像:
!rm -rf outputs!rm -rf inputs!mkdir outputs inputs!wget -c https://raw.githubusercontent.com/Omarsesa/Lablab/main/R.jpg \ -O inputs/test_01.jpgcv2_imshow(cv2.imread('inputs/test_01.jpg'))
生成图像
input_img_path = "inputs/test_01.jpg"im = Image.open(input_img_path)num_samples = 2image = pipe(num_samples*[im], guidance_scale=3.0)image = image["sample"]base_path = Path("outputs")base_path.mkdir(exist_ok=True, parents=True)for idx, im in enumerate(image): im.save(base_path/f"{idx:06}.jpg")
我们加载图像运行模型保存输出图像
显示图像
在这里我们调整图像的大小然后水平连接它们并显示它们
def hconcat_resize_min(im_list, interpolation=cv2.INTER_CUBIC): h_min = min(im.shape[0] for im in im_list) im_list_resize = [cv2.resize(im, (int(im.shape[1] * h_min / im.shape[0]), h_min), interpolation=interpolation) for im in im_list] return cv2.hconcat(im_list_resize)
kinput_cv_im = cv2.imread(input_img_path)im_h = Nonefor i in range(num_samples): cv_im = cv2.imread(f"outputs/{i:06}.jpg") if i == 0: im_h = hconcat_resize_min([input_cv_im, cv_im]) else: im_h = cv2.hconcat([im_h, cv_im]) #passcv2_imshow(im_h)
正如您在这里看到的,我们有初始图像的不同变体
在 Colab 中打开
谢谢你!– AI未来百科 ; 探索AI的边界与未来! 懂您的AI未来站