当前位置:   article > 正文

Stable Diffusion绘画入门_stablediffusionimg2imgpipeline

stablediffusionimg2imgpipeline

一,Stable Diffusion模型原理

目前开源的最火爆的AI绘画系统是 Stable Diffusion 模型(稳定扩散模型)。

可以完成 text2img, img2img, depth2img【深度图转图像】, seg2img【语义分割图转图像】 等基于提示信息【prompt】的图画创作功能。

其核心原理简要总结如下:

1,通过Attention机制引入text /semantic_map/ input_image ...等控制信息。--> 构图

2,在Attention控制下通过UNet模型在隐空间通过反向扩散机制从初始的噪声中一步一步(通常20到50步)清洗噪声生成隐空间图片信息(Latent Diffusion Model过程)。--> 底片

3,最后通过 AutoDecoder 从隐空间的图片信息还原成高清图片。--> 成片

从易到难的详细原理参考:

《零基础读懂Stable Diffusion》 https://zhuanlan.zhihu.com/p/597247221 (zero mathematics)

《Stable Diffusion原理解读》 https://zhuanlan.zhihu.com/p/583124756 (some mathematics)

《当我们谈论Text-to-image:Stable Model》https://zhuanlan.zhihu.com/p/550967884 (heavy mathematics)

公众号后台回复关键词:StableDiffusion 获取本文源代码和B站视频演示。

8ff98ac5e15784197b280f63978b1085.png

二,在线体验方法

英文原始: https://huggingface.co/spaces/runwayml/stable-diffusion-v1-5

百度中文:https://wenxin.baidu.com/ernie-vilg?curtype=exp

太乙中文:https://huggingface.co/spaces/IDEA-CCNL/Taiyi-Stable-Diffusion-Chinese-Webui

各种风格:https://civitai.com/

d88a1c4fa21ecf974458e05b8f690c1b.png

三,在Kaggle中体验

  1. !pip install diffusers
  2. !pip install transformers

1,text2img

  1. from PIL import Image
  2. import torch
  3. from diffusers import (
  4.     StableDiffusionPipeline,
  5.     StableDiffusionImg2ImgPipeline,
  6.     StableDiffusionInpaintPipeline
  7. )
  8. device=torch.device('cuda' if torch.cuda.is_available() else 'cpu')
  9. #model_id = "IDEA-CCNL/Taiyi-Stable-Diffusion-1B-Chinese-v0.1"
  10. #model_id = "IDEA-CCNL/Taiyi-Stable-Diffusion-1B-Chinese-EN-v0.1"
  11. #model_id = "IDEA-CCNL/Taiyi-Stable-Diffusion-1B-Anime-Chinese-v0.1" #漫画头像
  12. #model_id = "CompVis/stable-diffusion-v1-4"
  13. #model_id = "runwayml/stable-diffusion-v1-5"
  14. model_id = "stabilityai/stable-diffusion-2-1"
  15. pipe_text2img = StableDiffusionPipeline.from_pretrained(model_id, 
  16.                         torch_dtype=torch.float16).to(device)
  1. width = 960
  2. height = 680
  3. guide = 7
  4. steps = 20
  5. prompt = "a moutain full of flowers and snows"
  6. #prompt = "Bejing Autumn"
  7. #prompt = 'shanghai night'
  8. #prompt = 'a dog is runing after a mouse'
  9. #prompt = 'a little girl is smiling with a cat'
  10. negative_prompt = None
  11. output = pipe_text2img(prompt = prompt, negative_prompt=negative_prompt,width=width, height=height,
  12.                        guidance_scale=guide, num_inference_steps=steps)
  13. out_img = output.images[0]
  14. out_img

1221c74c4fc6b4f68c90c0891d0577e4.jpeg

2,img2img

  1. from PIL import Image
  2. import torch
  3. from diffusers import (
  4.     StableDiffusionPipeline,
  5.     StableDiffusionInpaintPipeline
  6. )
  7. device=torch.device('cuda' if torch.cuda.is_available() else 'cpu')
  8. #model_id = "IDEA-CCNL/Taiyi-Stable-Diffusion-1B-Chinese-v0.1"
  9. #model_id = "IDEA-CCNL/Taiyi-Stable-Diffusion-1B-Chinese-EN-v0.1"
  10. #model_id = "IDEA-CCNL/Taiyi-Stable-Diffusion-1B-Anime-Chinese-v0.1" 
  11. #model_id = "CompVis/stable-diffusion-v1-4"
  12. #model_id = "runwayml/stable-diffusion-v1-5"
  13. model_id = "stabilityai/stable-diffusion-2-1"
  14. pipe_img2img = StableDiffusionImg2ImgPipeline.from_pretrained(model_id, 
  15.                         torch_dtype=torch.float16).to(device)
  1. strength = 0.5
  2. revise_prompt = "there is a water fall"
  3. revised_output = pipe_img2img(revise_prompt, image=out_img, strength=strength, 
  4.                       guidance_scale=guide, 
  5.                       num_inference_steps=steps)
  6. revised_output.images[0]

2466b6693697010230a7ffcd7e0666d5.jpeg

3,pix2pix

  1. import PIL
  2. import requests
  3. import torch
  4. from diffusers import StableDiffusionInstructPix2PixPipeline, EulerAncestralDiscreteScheduler
  5. model_id = "timbrooks/instruct-pix2pix"
  6. pipe = StableDiffusionInstructPix2PixPipeline.from_pretrained(model_id, torch_dtype=torch.float16, safety_checker=None)
  7. pipe.to("cuda")
  8. pipe.scheduler = EulerAncestralDiscreteScheduler.from_config(pipe.scheduler.config)
  9. def download_image(url):
  10.     image = PIL.Image.open(requests.get(url, stream=True).raw)
  11.     image = PIL.ImageOps.exif_transpose(image)
  12.     image = image.convert("RGB")
  13.     return image
  14. url = "https://raw.githubusercontent.com/timothybrooks/instruct-pix2pix/main/imgs/example.jpg"
  15. image = download_image(url)
image

df68b4c02959af3cf12bbd66a5d6559c.jpeg

  1. #prompt = "turn him into cyborg" 
  2. #prompt = "turn him into oil painting"
  3. #prompt = "let he in the wild, green grass"
  4. #prompt = "a flower in his left hand"
  5. #prompt = "let he wear a coat"
  6. prompt = "let he wear a cap on the head"
  7. images = pipe(prompt, image=image, num_inference_steps=10, image_guidance_scale=1.0).images
  8. images[0]

234495b1e2e4845d9ad3f4d6bc5b1d63.jpeg

公众号后台回复关键词:StableDiffusion 获取本文源代码和B站视频演示。

e59af561f22152deaf65c44e273b6cf7.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/804238
推荐阅读
相关标签
  

闽ICP备14008679号