AI绘画Stable-Diffusion风格化实战

前言

在社交软件和短视频平台上,我们时常能看到各种特色鲜明的视觉效果,比如卡通化的图片和中国风的视频剪辑。这些有趣的风格化效果其实都是图像风格化技术的应用成果。

风格化效果举例

MidLibrary 这个网站提供了不同的图像风格,每一种都带有鲜明的特色。MidLibrary

它总共包含了以下几大类别的样式:

  • 艺术技法(Artistic Techniques):367种

  • 艺术流派和题材(Genres + Art Movements):286种

  • 标题(Titles):256种

  • 画家(Painters):1308种

  • 插画师(Illustrators):820种

  • 摄影师(Photographers):637种

  • 各种艺术家(Various Artists):254种

  • 雕塑家和装置艺术家(Sculptors + Installation Artists):212种

  • 设计师(Designers):145种

  • 时装设计师(Fashion Designers):125种

  • 导演(Filmmakers):104种

  • 建筑师(Architects):100种

  • 街头艺术家(Street Artists):57种

  • 版画家(Printmakers):34种

总共有4705种不同的艺术风格被收录在这个库中。从具体的艺术家,画派,题材等多个维度对 Midjourney 的图片风格进行了分类和汇总,可以说是非常全面和系统的一个Midjourney样式参考库。这对使用Midjourney的用户来说可以提供很大的便利和灵感。

图生图代码实战

关于图生图背后的原理,前面文章有讲过。在 ControlNet 提出之前,我们在各种短视频平台上看到的图像风格化效果,大多是使用图生图的方法来完成的。我们简单回顾一下图生图背后的原理。在图生图中,我们对原始图像进行加噪,通过重绘强度这个参数控制加噪的步数,并把加噪的结果作为图像生成的初始潜在表示,然后使用你提供的 prompt 来引导输出图像的风格。

AI绘画Stable Diffusion关键技术解析

import requests   import torch   from PIL import Image   from io import BytesIO      from diffusers import StableDiffusionImg2ImgPipeline      device = "cuda"   pipe = StableDiffusionImg2ImgPipeline.from_pretrained("zhyemmmm/ToonYou")   pipe = pipe.to(device)      url = "https://ice.frostsky.com/2023/08/26/2c809fbfcb030dd8a97af3759f37ee29.png"#   response = requests.get(url)   init_image = Image.open(BytesIO(response.content)).convert("RGB")   init_image = init_image.resize((512, 512))      prompt = "1girl, fashion photography"      images = []      # 我们的重绘强度分别设置为0.05, 0.15, 0.25, 0.35, 0.5, 0.75   for strength in [0.05, 0.15, 0.25, 0.35, 0.5, 0.75]:     image = pipe(prompt=prompt, image=init_image, strength=strength, guidance_scale=7.5).images[0]     images.append(image)   

1.导入需要的库:requests用于网络请求,torch为深度学习框架,PIL用于图像处理,BytesIO用于在内存中读取网络图片。

2.初始化Stable Diffusion的图片到图片模型,加载一个预训练的卡通化模型。

3.定义设备为GPU。将模型加载到GPU上。

4.定义网络图片URL,发送请求获取图片,读取为PIL Image格式。调整图片大小为512x512。

5.定义prompt,表示目标风格,这里是"1girl, fashion photography",意为单人女性时尚照。

6.定义一个空列表images,用于保存生成图片。

7.循环生成图片:分别设置不同的strength参数,代表噪声重绘强度,值越大表示风格迁移越完整。调用模型pipe生成图片,添加到images中。

8.循环结束后,images列表中即为不同程度风格迁移的图片。


整理和输出教程属实不易,觉得这篇教程对你有所帮助的话,可以点击👇二维码领取资料😘
在这里插入图片描述

ControlNet-使用边缘轮廓条件

我们仍旧以蒙娜丽莎的图片为例,分别使用 SDXL 模型的 Canny 控制模式和 SD1.5 模型的指令级修图控制模式。首先,我们可以加载蒙娜丽莎的图片,并使用 Canny 算子提取图片的轮廓线。

# 加载原始图片,这里你也可以使用自己的图片   original_image = load_image("https://ice.frostsky.com/2023/08/26/2c809fbfcb030dd8a97af3759f37ee29.png").convert('RGB')      # 提取Canny边缘   image = np.array(original_image)   image = cv2.Canny(image, 100, 200)   image = image[:, :, None]   image = np.concatenate([image, image, image], axis=2)   image = Image.fromarray(image)   

然后,我们使用 SDXL-1.0 模型和 Canny 控制条件的 ControlNet 模型。

# 加载ControlNet模型   controlnet = ControlNetModel.from_pretrained("diffusers/controlnet-Canny-sdxl-1.0-mid", torch_dtype=torch.float16)        # 加载VAE模型     vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16)      # 创建StableDiffusionXLControlNetPipeline管道   pipe = StableDiffusionXLControlNetPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", controlnet=controlnet, vae=vae, torch_dtype=torch.float16)      # 启用CPU卸载加速   pipe.enable_model_cpu_offload()      # 后面可以通过pipe生成控制网络图   

完成这些准备工作后,我们就可以通过prompt来控制生成图像的风格了。例如可以使用下面4条prompt,依次将蒙娜丽莎图像转换为卡通风格、梵高风格、赛博朋克风格和机器人风格。当然,也建议你发挥创造力,实现更多有趣的风格转换。

# 结合ControlNet进行文生图      # 这里可以更换为你想要的风格,只需要修改prompt即可   prompt = "a smiling woman, winter backbround, cartoon style"   # prompt = "a smiling woman, summer backbround, van gogh style"   # prompt = "a smiling woman, busy city, cyberpunk style"   # prompt = "a smiling robot"      # 设置随机种子   generator = torch.manual_seed(1025)       # 设置负prompt,避免生成不合需求的内容   negative_prompt = "lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, Normal quality, jpeg artifacts, signature, watermark, username, blurry"      # 设置ControlNet条件缩放参数     controlnet_conditioning_scale = 0.6        # 生成图像   images = pipe(       [prompt]*2, # 提示        num_inference_steps=50,        negative_prompt=[negative_prompt]*2,        image=image,        controlnet_conditioning_scale=controlnet_conditioning_scale,       generator = generator   ).images         

在这里插入图片描述

ControlNet-使用指令级修图模式

指令修图模式下,只需提供指令式提示,说明执行的转换操作,ControlNet 即可生成目标图像。比如让图像着火,无需添加复杂信息,在指令修图模式中说明“add fire”,整个画面立即燃起火焰。显然,指令修图模式更加灵活高效,无需额外控制条件输入(如轮廓线等),即可生成新图像。这种能力是否可用于图像风格化?当然可以。我们仍以蒙娜丽莎画像为例,先加载 SD1.5 基础模型和对应的 ControlNet 指令修图模型。

# 加载ControlNet模型   checkpoint = "lllyasviel/control_v11e_sd15_ip2p"   controlnet = ControlNetModel.from_pretrained(checkpoint, torch_dtype=torch.float16)      # 创建StableDiffusionControlNetPipeline管道   pipe = StableDiffusionControlNetPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", controlnet=controlnet, torch_dtype=torch.float16)       # 启用CPU卸载加速   pipe.enable_model_cpu_offload()        # 定义prompt   prompt = "make it spring"   prompt = "make it summer"    prompt = "make it autumn"   prompt = "make it winter"      # 设置随机种子   generator = torch.manual_seed(0)      # 生成图像     image_style1 = pipe(prompt, num_inference_steps=30, generator=generator, image=original_image).images[0]      # 通过pipe和prompt控制生成不同季节风格图片   

在这里插入图片描述

模型融合的技巧

实际上,除了使用自己训练的模型进行风格化,使用不同SD模型进行融合也是一种常见技巧,可以快速调制出特色鲜明的AI绘画风格。

模型融合本质上是对多个模型进行加权混合,得到一个合并后的新模型。比如希望将Anything V5和ToonYou两个模型进行融合,只需给每个模型的权重分别乘以一个系数,然后相加。在WebUI中,可以选择Checkpoint Merger窗口完成模型融合。例如在Weighted sum模式下,融合后模型权重计算方式如下:Anything V5模型ToonYou

新模型权重 = 模型A (1 - M) + 模型B * M

其中M为加权系数。通过调节系数大小可以控制不同模型在融合模型中的贡献度。在 Add difference 这个模式下,我们需要提供三个模型,将模型 B 和模型 C 的权重差值以一定的权重加到原始模型 A 上。融合后模型权重的计算方式你可以看后面的公式,公式中的 M 仍是加权系数。

新模型权重 = 模型 A + (模型 B - 模型 C) * M

我们可以分别测试一下融合模型的生成效果。对于 Weighted sum 模式,我们将 Anything V5 模型和 ToonYou 模型按照加权系数 0.5 的方式进行融合。你可以点开图片查看我的参数设置。

Prompt:1girl, fashion photography [女生形象]   Prompt:1boy, fashion photography  [男生形象]   Negative Prompt:EasyNegative    采样器:Eular a   随机种子:603579160   采样步数:20   分辨率:512x512   CFG Scale: 7   

这里直接将该软件分享出来给大家吧~
在这里插入图片描述

1.stable diffusion安装包

随着技术的迭代,目前 Stable Diffusion 已经能够生成非常艺术化的图片了,完全有赶超人类的架势,已经有不少工作被这类服务替代,比如制作一个 logo 图片,画一张虚拟老婆照片,画质堪比相机。

最新 Stable Diffusion 除了有win多个版本,就算说底端的显卡也能玩了哦!此外还带来了Mac版本,仅支持macOS 12.3或更高版本

在这里插入图片描述

2.stable diffusion视频合集

我们在学习的时候,往往书籍源码难以理解,阅读困难,这时候视频教程教程是就很适合了,生动形象加上案例实战,一步步带你入坑stable diffusion,科学有趣才能更方便的学习下去。

在这里插入图片描述

3.stable diffusion模型下载

stable diffusion往往一开始使用时图片等无法达到理想的生成效果,这时则需要通过使用大量训练数据,调整模型的超参数(如学习率、训练轮数、模型大小等),可以使得模型更好地适应数据集,并生成更加真实、准确、高质量的图像。

在这里插入图片描述

4.stable diffusion提示词

提示词是构建由文本到图像模型解释和理解的单词的过程。可以把它理解为你告诉 AI 模型要画什么而需要说的语言,整个SD学习过程中都离不开这本提示词手册。

在这里插入图片描述

5.SD从0到落地实战演练

在这里插入图片描述

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名SD大神的正确特征了。

这份完整版的stable diffusion资料我已经打包好,需要的点击下方插件,即可前往免费领取!

在这里插入图片描述

  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值