在 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

相关文章

gradle第三方Jar包依赖统一管理方式

《gradle第三方Jar包依赖统一管理方式》:本文主要介绍gradle第三方Jar包依赖统一管理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景实现1.顶层模块build.gradle添加依赖管理插件2.顶层模块build.gradle添加所有管理依赖包

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

Spring Boot读取配置文件的五种方式小结

《SpringBoot读取配置文件的五种方式小结》SpringBoot提供了灵活多样的方式来读取配置文件,这篇文章为大家介绍了5种常见的读取方式,文中的示例代码简洁易懂,大家可以根据自己的需要进... 目录1. 配置文件位置与加载顺序2. 读取配置文件的方式汇总方式一:使用 @Value 注解读取配置方式二

JAVA保证HashMap线程安全的几种方式

《JAVA保证HashMap线程安全的几种方式》HashMap是线程不安全的,这意味着如果多个线程并发地访问和修改同一个HashMap实例,可能会导致数据不一致和其他线程安全问题,本文主要介绍了JAV... 目录1. 使用 Collections.synchronizedMap2. 使用 Concurren

C# foreach 循环中获取索引的实现方式

《C#foreach循环中获取索引的实现方式》:本文主要介绍C#foreach循环中获取索引的实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、手动维护索引变量二、LINQ Select + 元组解构三、扩展方法封装索引四、使用 for 循环替代

Spring Security+JWT如何实现前后端分离权限控制

《SpringSecurity+JWT如何实现前后端分离权限控制》本篇将手把手教你用SpringSecurity+JWT搭建一套完整的登录认证与权限控制体系,具有很好的参考价值,希望对大家... 目录Spring Security+JWT实现前后端分离权限控制实战一、为什么要用 JWT?二、JWT 基本结构