AI 日报

Stable Diffusion教程:使用 lambda 扩散器的稳定扩散图像变化

  • By aihubon
  • Nov 13, 2023 - 2 min read



Stable Diffusion教程:使用 lambda 扩散器的稳定扩散图像变化

🧐 稳定扩散的简短介绍

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'))
Stable Diffusion教程:使用 lambda 扩散器的稳定扩散图像变化

生成图像

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)

正如您在这里看到的,我们有初始图像的不同变体

Stable Diffusion教程:使用 lambda 扩散器的稳定扩散图像变化

在 Colab 中打开

谢谢你!– AI未来百科 ; 探索AI的边界与未来! 懂您的AI未来站