- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
基于Stable Diffusion的哪些图像操作们:
StableDiffusionPipeline
StableDiffusionImg2ImgPipeline
StableDiffusionInpaintPipeline
StableDiffusionUpscalePipeline
StableDiffusionImageVariationPipeline
StableDiffusionInstructPix2PixPipeline
import requests
from PIL import Image
from io import BytesIO
def show_images(imgs, rows=1, cols=3):
assert len(imgs) == rows*cols
w_ori, h_ori = imgs[0].size
for img in imgs:
w_new, h_new = img.size
if w_new != w_ori or h_new != h_ori:
w_ori = max(w_ori, w_new)
h_ori = max(h_ori, h_new)
grid = Image.new('RGB', size=(cols*w_ori, rows*h_ori))
grid_w, grid_h = grid.size
for i, img in enumerate(imgs):
grid.paste(img, box=(i%cols*w_ori, i//cols*h_ori))
return grid
def download_image(url):
response = requests.get(url)
return Image.open(BytesIO(response.content)).convert("RGB")
根据文本生成图像,在 diffusers 使用 StableDiffusionPipeline 实现,必要输入为 prompt ,示例代码:
from diffusers import StableDiffusionPipeline
image_pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4")
device = "cuda"
image_pipe.to(device)
prompt = ["a photograph of an astronaut riding a horse"] * 3
out_images = image_pipe(prompt).images
for i, out_image in enumerate(out_images):
out_image.save("astronaut_rides_horse" + str(i) + ".png")
示例输出:
根据文本prompt和原始图像,生成新的图像。在 diffusers 中使用 StableDiffusionImg2ImgPipeline 类实现,可以看到,pipeline的必要输入有两个: prompt 和 init_image 。示例代码:
import torch
from diffusers import StableDiffusionImg2ImgPipeline
device = "cuda"
model_id_or_path = "runwayml/stable-diffusion-v1-5"
pipe = StableDiffusionImg2ImgPipeline.from_pretrained(model_id_or_path, torch_dtype=torch.float16)
pipe = pipe.to(device)
url = "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/assets/stable-samples/img2img/sketch-mountains-input.jpg"
init_image = download_image(url)
init_image = init_image.resize((768, 512))
prompt = "A fantasy landscape, trending on artstation"
images = pipe(prompt=prompt, image=init_image, strength=0.75, guidance_scale=7.5).images
grid_img = show_images([init_image, images[0]], 1, 2)
grid_img.save("fantasy_landscape.png")
示例输出:
给定一个mask图像和一句提示,可编辑给定图像的特定部分。使用 StableDiffusionInpaintPipeline 来实现,输入包含三部分:原始图像,mask图像和一个prompt, 。
示例代码:
from diffusers import StableDiffusionInpaintPipeline
img_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"
mask_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"
init_image = download_image(img_url).resize((512, 512))
mask_image = download_image(mask_url).resize((512, 512))
pipe = StableDiffusionInpaintPipeline.from_pretrained("runwayml/stable-diffusion-inpainting", torch_dtype=torch.float16)
pipe = pipe.to("cuda")
prompt = "Face of a yellow cat, high resolution, sitting on a park bench"
images = pipe(prompt=prompt, image=init_image, mask_image=mask_image).images
grid_img = show_images([init_image, mask_image, images[0]], 1, 3)
grid_img.save("overture-creations.png")
示例输出:
对低分辨率图像进行超分辨率,使用 StableDiffusionUpscalePipeline 来实现,必要输入为 prompt 和低分辨率图像(low-resolution image),示例代码:
from diffusers import StableDiffusionUpscalePipeline
# load model and scheduler
model_id = "stabilityai/stable-diffusion-x4-upscaler"
pipeline = StableDiffusionUpscalePipeline.from_pretrained(model_id, torch_dtype=torch.float16, cache_dir="./models/")
pipeline = pipeline.to("cuda")
# let's download an image
url = "https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/sd2-upscale/low_res_cat.png"
low_res_img = download_image(url)
low_res_img = low_res_img.resize((128, 128))
prompt = "a white cat"
upscaled_image = pipeline(prompt=prompt, image=low_res_img).images[0]
grid_img = show_images([low_res_img, upscaled_image], 1, 2)
grid_img.save("a_white_cat.png")
print("low_res_img size: ", low_res_img.size)
print("upscaled_image size: ", upscaled_image.size)
示例输出,默认将一个 128 x 128 的小猫图像超分为一个 512 x 512 的:
默认是将原始尺寸的长和宽均放大四倍,即:
input: 128 x 128 ==> output: 512 x 512
input: 64 x 256 ==> output: 256 x 1024
...
个人感觉, prompt 没有起什么作用,随便写吧.
关于此模型的详情, 参考 .
重要参考 。
根据输入的指令prompt对图像进行编辑,使用 StableDiffusionInstructPix2PixPipeline 来实现,必要输入包括 prompt 和 image ,示例代码如下:
import torch
from diffusers import StableDiffusionInstructPix2PixPipeline
model_id = "timbrooks/instruct-pix2pix"
pipe = StableDiffusionInstructPix2PixPipeline.from_pretrained(model_id, torch_dtype=torch.float16, cache_dir="./models/")
pipe = pipe.to("cuda")
url = "https://huggingface.co/datasets/diffusers/diffusers-images-docs/resolve/main/mountain.png"
image = download_image(url)
prompt = "make the mountains snowy"
images = pipe(prompt, image=image, num_inference_steps=20, image_guidance_scale=1.5, guidance_scale=7).images
grid_img = show_images([image, images[0]], 1, 2)
grid_img.save("snowy_mountains.png")
示例输出:
最后此篇关于Diffusers中基于StableDiffusion的哪些图像操作的文章就讲到这里了,如果你想了解更多关于Diffusers中基于StableDiffusion的哪些图像操作的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在开发一个控制客户端,将后端系统连接到主题树。后端有几千个端点,主题树有相应数量的主题。 在开发和测试过程中,我多次停止并重新启动我的客户端,但之前放置在服务器上的 session 又持续了 60
我正在使用 Diffusion v5.6.6 创建一个移动应用程序,重要的是当客户端失去移动连接并稍后再次获得连接时,该应用程序会恢复。我可以在 Connectors.xml 中看到与此相关的两个设置
我正在研究 Diffusion JS API 的一些代码示例,但我不了解重新连接的示例。什么是start和 abort reconnectionStrategy 的参数? // Create a re
有没有办法为半径和高度部分呈现不同的内容 我正在尝试使用圆柱体形状的对象并使用 SCMaterial 实例的 diffe.contents 在其上渲染图像 myCustomMaterial.diffu
我可以从文档中看到如何集成 Java 网络服务器或 IIS,但我看不到如何使用带有 Diffusion 或 Reappt 的 PHP 集成我们的 Apache 服务器。我看到有一个 C 客户端,但我无
稳定扩散给我一个警告:“警告:捕获异常‘在您的系统上找不到NVIDIA驱动程序。”,但我有AMD显卡。如果我没有写“--Skip-Torch-cuda-test”,控制台会给我一个异常:“Torch无
从我读到的内容来看,当 A 是二维数组时,使用 FFTW.jl/AbstractFFTs.jl 的 fft(A) 应该在二维中执行 fft,而不是按列执行。知道为什么当(我认为)我将缩放的二阶空间导数
我正在尝试实现 Phong 照明。在某些教程中,将镜面光照添加到环境光照和漫射光照中,然后将总光照乘以纹理颜色。我还看到了一个教程,其中在添加环境光和漫射光并乘以纹理颜色后单独添加镜面照明。 这是一个
我正在尝试使用 Diffusion 的 .NET 客户端库更新 JSON 主题。我知道目前在 .NET 中仅部分支持 JSON 主题,但我认为可以更新主题。所以我使用 Javascript 客户端 a
我刚刚创建了项目:Xcode:文件 > 新建 > 项目 > 增强现实应用程序。 我想将 ship.scn 的颜色更改为黄色,但没有任何反应。如何更改 ship.scn 的颜色?? override f
刚刚获得了SDXL模型的访问权限,希望为即将发布的版本进行测试...不幸的是,我们当前用于我们服务的代码似乎不能与稳定ai/稳定-扩散-xl-base-0.9一起工作,我不完全确定SDXL有什么不同,
我是一名优秀的程序员,十分优秀!