在 Stable Diffusion 中控制光线的三种方式

2024-06-17 13:12

本文主要是介绍在 Stable Diffusion 中控制光线的三种方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

光线在摄影中扮演着至关重要的角色,并对图像的整体质量和意境产生重要影响。你可以利用光线来增强主题,创造深度和立体感,传达情感,并突出重要细节。

在本文中,你将了解通过以下方法来控制光线:

  • 光线提示词
  • 区域光线控制
  • ControlNet img2img

软件

我们将使用 AUTOMATIC1111 的 Stable Diffusion GUI 来进行图片生成。你可以在 Google ColabWindows 或者 Mac 上使用这个 GUI

使用光线提示词

最简单的方法是将 光线提示词 添加到提示中。

我将使用以下基本提示和负面提示来说明效果。

fashion photography, a woman

disfigured, ugly, bad, immature, cartoon, anime, 3d, painting, b&w, nsfw

  • Model: DreamShaper v6 (c249d7853b)
  • Width: 512
  • Height: 768
  • CFG scale: 7
  • Seed: 94858136 – 94858143

使用基本提示生成的示例图像。它们的光线充足,外形美观,但照明效果并不有趣。

Volumetric lighting(立体光线)是指图像上的明显光线束。在摄影中,它被用于增加体积感。

向提示中添加提示词 volumetric

使用 Rim lighting(边缘光线)为主体添加了一个发亮的轮廓。这可能会使主体变暗。你可以与其他光线提示词结合使用以突出主体。

向提示中添加提示词 rim lighting

使用 Sunlight(阳光)在图像中添加阳光效果。它通常用于渲染大自然背景。

向提示中添加提示词 sunlight

Backlight(背光)会将光源放在图片主体后面。通过添加这个提示词,你可以产生一些时尚的效果。

向提示中添加 backlight

众所周知,Stable Diffusion 不会无人指导地生成暗图像。解决这个问题的方法有很多,包括使用模型和 LoRA。但一个更简单的方法是添加一些昏暗的光线提示词。

向提示中添加 dimly lit

Crepuscular rays(晨光射线)用于添加光线穿过云层,产生的光线效果。它可以创造出令人惊叹的视觉效果。

该提示和纵横比通常用于生成全身图像,添加 crepuscular rays 会放大图像。我使用 crepuscular rays, face 略微放大了面部。

提示:

  • 如果未看到效果,请增加提示词的权重。
  • 这些光线提示词并不总是有效的。尝试一次生成几张图像进行测试。

区域光线控制

提示中的光线提示词适用于整个图像。你可以使用工具进一步调整光线效果以适应特定区域。

你需要安装 Regional Prompter 扩展。请查阅文章以了解安装说明。

在这个例子中,你将为图像的上部和下部应用不同的光线。

txt2img 页面上,展开 Regional Prompter 部分。

  • Active: Yes
  • Use common prompt: Yes
  • Split mode: Vertical
  • Divide Ratio: 2,3

点击 visualize and make template,确认图像被分为两个垂直区域。

输入提示:

fashion photography, a woman
BREAK
( hard light:1.2), (volumetric:1.2), well-lit
BREAK
(dimly lit:1.4)

并使用下面的负面提示:

disfigured, ugly, bad, immature, cartoon, anime, 3d, painting, b&w, nsfw

其他参数保持不变。

你将得到一些在顶部光线良好但底部较暗的图像。

现在试试交换光线分配。

fashion photography, a woman
BREAK
(dimly lit:1.4)
BREAK
( hard light:1.2), (volumetric:1.2), well-lit

光线相应地交换了。

提示:

  • 如果未看到效果,请调整提示词的权重。
  • 区域提示并不总是百分之百有效。生成多一些的图片,并挑选出最好的结果。

使用 ControlNet 控制光照

现在,任何教程都离不开提到 ControlNet… 所以本文也不可避免!

这种方法允许你精确控制光线。

Txt2img 设置

txt2img 页面上,按照通常的方式生成图像。

选择要添加光线的图像。

将其保存到本地存储(我们稍后会用到 ControlNet)。

点击 Send to img2img

Img2img 设置

你的提示、负面提示、图像大小和种子值现在已经传输到 img2img 页面。

img2img 页面上,导航到 ControlNet 部分。

上传刚才保存的图像到 ControlNet Unit 0

使用以下设置。

  • Enable: Yes
  • Pixel Perfect: Yes
  • Allow preview: Yes
  • Control Type: Depth
  • Preprocessor: depth_zoe
  • Model: control_xxxx_depth
  • Control Weight: 0.6

滚动到 img2img canvas,删除图像。

我们将使用以下图像来控制光线。该图像指定了靠近顶部的聚光灯。

将此图像上传到 img2img canvas

resize mode 设置为 Just Resize

denoising strength 设置为 0.95

按下 Generate

你应该得到带有光源在顶部的图像。

你可以使用位于右上角的 Edit Tool(铅笔图标)来放大 img2img 画布中的某个区域。

点击铅笔图标后,拖动突出显示区域的角来调整大小。目前该工具中存在一些问题,你可能需要执行两次。

例如,下面的截图显示了将相同的图像裁剪,以便光源位于左上角。

请参考面部和帽子的左侧,比之前的图像更亮。

同样地,使用光源位于左下角,从底部左侧照亮图像。

或者使用更高对比度的对角光。

以下是一些光源图案的示例。

使用它们就可以不需要针对某个区域进行修改而实现所需的光线效果。

你可以不使用深度控制模型。而可以使用其他模型,如 cannyline art realistic。尝试不同的预处理器,看看哪个适合你。

如果看到不自然的颜色,请降低 Controlnet weight。调整降噪强度并观察效果。

写在最后

感兴趣的小伙伴,赠送全套AIGC学习资料,包含AI绘画、AI人工智能等前沿科技教程和软件工具,具体看这里。

AIGC技术的未来发展前景广阔,随着人工智能技术的不断发展,AIGC技术也将不断提高。未来,AIGC技术将在游戏和计算领域得到更广泛的应用,使游戏和计算系统具有更高效、更智能、更灵活的特性。同时,AIGC技术也将与人工智能技术紧密结合,在更多的领域得到广泛应用,对程序员来说影响至关重要。未来,AIGC技术将继续得到提高,同时也将与人工智能技术紧密结合,在更多的领域得到广泛应用。

在这里插入图片描述

一、AIGC所有方向的学习路线

AIGC所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

在这里插入图片描述

二、AIGC必备工具

工具都帮大家整理好了,安装就可直接上手!
在这里插入图片描述

三、最新AIGC学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述
在这里插入图片描述

四、AIGC视频教程合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

这篇关于在 Stable Diffusion 中控制光线的三种方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1069541

相关文章

Nginx屏蔽服务器名称与版本信息方式(源码级修改)

《Nginx屏蔽服务器名称与版本信息方式(源码级修改)》本文详解如何通过源码修改Nginx1.25.4,移除Server响应头中的服务类型和版本信息,以增强安全性,需重新配置、编译、安装,升级时需重复... 目录一、背景与目的二、适用版本三、操作步骤修改源码文件四、后续操作提示五、注意事项六、总结一、背景与

SpringBoot中@Value注入静态变量方式

《SpringBoot中@Value注入静态变量方式》SpringBoot中静态变量无法直接用@Value注入,需通过setter方法,@Value(${})从属性文件获取值,@Value(#{})用... 目录项目场景解决方案注解说明1、@Value("${}")使用示例2、@Value("#{}"php

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

Spring创建Bean的八种主要方式详解

《Spring创建Bean的八种主要方式详解》Spring(尤其是SpringBoot)提供了多种方式来让容器创建和管理Bean,@Component、@Configuration+@Bean、@En... 目录引言一、Spring 创建 Bean 的 8 种主要方式1. @Component 及其衍生注解

python中的显式声明类型参数使用方式

《python中的显式声明类型参数使用方式》文章探讨了Python3.10+版本中类型注解的使用,指出FastAPI官方示例强调显式声明参数类型,通过|操作符替代Union/Optional,可提升代... 目录背景python函数显式声明的类型汇总基本类型集合类型Optional and Union(py

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优