Stable Diffusion源码调试(二)
个人模型主页:https://liblib.ai/userpage/369b11c9952245e28ea8d107ed9c2746/model
Stable Diffusion版本:https://github.com/AUTOMATIC1111/stable-diffusion-webui/releases/tag/v1.4.1
分析StableDiffusionProcessingTxt2Img类中的sample函数
Sampler
/work/stable-diffusion-webui/modules/sd_samplers_kdiffusion.py
这个Sampler就是真正去执行生成 latent空间的图像了。
sample函数,接收了生图时需要的全部参数
可以看到初始latent图像就是 前面生成的随机图像x
最后就是self.launch_sampling函数的封装,进入到sample_euler_ancestral函数,生图,latent空间中的生图细节就在这个函数里面了。
这里我们用了euler采样器,换其他采样器同理。
这个函数返回x, 就是latent空间的图像,出去之后,调用decode部分的网络,就得到我们所看到的图像。
不执行数据增强的情况下,直接返回 latent空间的图像。
回到process_images_inner函数(/work/stable-diffusion-webui/modules/processing.py)
可以看到samples_ddim(latent空间的图像)经过decode_first_stage函数处理后,得到x,就是下图。
先整理到这里。