深入解析SDXL潜在空间以及如何改善其生成图像的方法
要点:
SDXL潜在空间包括4个通道,分别是亮度、青/红、绿/紫、图案/结构。
SDXL生成的颜色范围偏向黄色,原因是模型在生成过程中更偏向认知中的亮度、青/红、绿/紫,而相对较少使用蓝色。
通过实验性地探索SDXL潜在空间,作者提出了一些纠正SDXL输出的方法,包括去除异常值、平衡颜色、增加颜色范围等。
近日,Hugging Face社区成员Timothy Alexis Vass撰写了一篇名为《Explaining the SDXL latent space》的文章,重点解释了SDXL(可能是Super Diffusion XL)潜在空间的特性以及如何改善其生成图像的方法。
据了解,SDXL潜在空间的结构包括四个通道,分别对应图像的亮度、青/红、绿/紫、以及图案/结构。这为理解SDXL生成的图像提供了基础。
SDXL生成的图像往往存在颜色偏向黄色的问题,这是因为模型更倾向于使用亮度、青/红、绿/紫这几个主要颜色,而相对较少使用蓝色。通过对SDXL潜在空间的实验性探索,Timothy Alexis Vass提供了一种直接将SDXL潜在空间转换为RGB图像的线性逼近方法。此方法允许在生成图像之前对颜色范围进行调整,从而避免在后处理阶段进行矫正。
我们可以创建一个近似函数,直接将潜在变量转换为 RGB:
deflatents_to_rgb(latents):
在实际操作中,Timothy Alexis Vass提出了一些纠正SDXL输出的方法,包括去除异常值、平衡颜色、增加颜色范围等。通过一系列的代码实现,他展示了如何在生成图像的过程中应用这些方法,从而改善图像的质量。这些方法包括对潜在空间进行软裁剪、颜色平衡和范围增加等。
SDXL 颜色范围偏向黄色的可能原因
自然界中相对较少的东西是蓝色或白色的。在愉快的条件下,这些颜色在天空中最为突出。因此,该模型通过图像了解现实,以亮度(通道0)青色/红色(通道1)和石灰/中紫色(通道2)进行思考,其中红色和绿色是主要的,蓝色是次要的。这就是为什么 SDXL 世代通常偏向黄色(红色 绿色)。
在推理过程中,张量中的值将从min < -30和开始max >30,解码时的最小/最大边界大约-4为4。guidance_scale值越高,min和之间的差异就越大max。
理解边界的关键之一是查看解码过程中发生的情况:
decoded=vae.decode(latents/vae.scaling_factor).sample#(SDXLvae.scaling_factor=0.13025)decoded=decoded.div(2).add(0.5).clamp(0,1)#Thedynamicsoutsideof0to1atthispointwillbelost
如果此时的值超出0到1的范围,则钳位中的一些信息将会丢失。因此,如果我们能够在去噪过程中进行修正,以满足 VAE 的预期,我们可能会得到更好的结果。
需要纠正什么?
如何锐化模糊图像、白平衡、改善细节、增加对比度或增加颜色范围?最好的方法是从清晰的图像开始,该图像具有正确的白平衡、良好的对比度、清晰的细节和高范围。
模糊清晰的图像、改变色彩平衡、降低对比度、获取无意义的细节以及限制色彩范围比改善图像要容易得多。
SDXL 具有非常明显的颜色偏差倾向,并将值置于实际边界之外(左图)。通过将值居中并将它们置于边界内(右图)可以轻松解决这个问题:
defcenter_tensor(input_tensor,per_channel_shift=1,full_tensor_shift=1,channels=[0,1,2,3]):forchannelinchannels:
让我们以 SDXL 的输出为例
seed:77777777
请注意,我特意选择了较高的指导尺度。
我们如何修复这个图像?一半是绘画,一半是照片。颜色范围偏向黄色。右侧是具有完全相同设置的固定一代。
但在合理guidance_scale设置为7.5的情况下,我们仍然可以得出结论,固定输出更好,没有无意义的细节和正确的白平衡。
我们可以在潜在空间中做很多事情来总体改进一代,并且我们可以做一些非常简单的事情来针对一代中的特定错误:
异常值去除
这将通过修剪距分布平均值最远的值来控制无意义细节的数量。它还有助于以更高的guidance_scale进行生成。
#Shrinkingtowardsthemean(willalsoremoveoutliers)defsoft_clamp_tensor(input_tensor,threshold=3.5,boundary=4):ifmax(abs(input_tensor.max()),abs(input_tensor.min()))<4:returninput_tensor
色彩平衡和增加范围
我有两种主要方法来实现这一目标。第一个是在标准化值的同时向平均值收缩(这也将消除异常值),第二个是在值偏向某种颜色时进行修复。这也有助于生成更高的guidance_scale。
#Centertensor(balancecolors)defcenter_tensor(input_tensor,channel_shift=1,full_shift=1,channels=[0,1,2,3]):forchannelinchannels:
张量最大化
这基本上是通过将张量乘以一个非常小的量(例如1e-5几个步骤)来完成的,并确保最终张量在转换为 RGB 之前使用完整的可能范围(接近 -4/4)。请记住,在像素空间中,在保持完整动态的情况下降低对比度、饱和度和清晰度比增加对比度、饱和度和清晰度更容易。
#Maximize/normalizetensordefmaximize_tensor(input_tensor,boundary=4,channels=[0,1,2]):
回调实现示例
defcallback(pipe,step_index,timestep,cbk):iftimestep>950:
最后,Timothy Alexis Vass展示了在高引导比例下使用长提示进行生成的图像,通过对颜色范围的调整,使得整个提示成为可能。通过这些方法,可以在生成图像的初步阶段就对输出进行改善,而不是在后期进行矫正。这为提高SDXL生成图像质量提供了一种新的思路。
抖音内测视频带货新功能
抖音正在悄悄地内测的一个新功能值得看看。如果仅是简单推测,或会令内容带货这件事变得更容易,也会让内容创作者有了新的收入方式,以及,这个功能也或变成短视频平台的基础功能。这项测试的功能是:在抖音中点开一条视频,点按暂停,就会出现视频中产品的超链接标签,链接的直接就是商品页面,一键即可跳转。如下图所示:该功能在不影响抖音用户体验的情况下,暂停视频就能识别画面里的物品同款,直接给到用户商品链接。0000ChatGPT之父罢免要反转!OpenAI董事会正与奥特曼讨论返岗
快科技11月19日消息,当地时间11月17日,人工智能公司OpenAI突发人事地震。官方宣布,ChatGPT之父、CEO萨姆奥特曼(SamAltman)被解雇,CTO(首席技术官)临时接管OpenAI,立即生效。但让大家没想到的是,OpenAI解雇奥特曼一事或要迎来反转。0000滴滴客服上线可视化语音电话 提升问题解决速度
滴滴宣布,滴滴体验服务发展平台(ESE)上线了可视化“语音电话”功能,用户可以在滴滴出行App的客服中心,点击语音电话,即可免费接通。这种可视化语音电话功能结合了在线客服和热线电话的优势,让用户在打电话的过程中可以进行点选操作,提升问题解决的速度。站长网2023-12-06 16:45:060000Doppelgangers:通过学习算法区分相似结构的图像
Doppelgangers是一个基于学习的方法来区分视觉上非常相似但是物理上是不同3D表面的图像对(我们称之为“庞氏图像”)。研究人员构建了一个包含大量正负样本的图像数据集Doppelgangers,其中正样本是同一实际3D表面拍摄的图片,负样本是不同但视觉上相似的3D表面。论文地址:https://doppelgangers-3d.github.io/站长网2023-09-08 11:05:190000