简介:用自己妹妹以身试法,训练真实感人物人像Lora模型,本模型lora基于ChilloutMix大模型为底模模型训练majicMAX为底模增强, 在真实感以及写实等摄影类得大模型表现优秀

特点:面部泛化性很好、人像面部超级自然真实,且加强了面部细节皮肤质感以及纹理

创意概述:现阶段AI生图人像太工业化的脸让人乏味,缺乏特点,同质化严重,为了拒绝一眼AI脸,以及没有特色的网红脸,故训练此模型,让AI人像美的有特点,环肥燕瘦,各有千秋。

且人无完人,而我自己对真实感的理解,一颗痣,一些斑点,一些高原红,,粗糙的皮肤也何尝不是一种美呢?

生成建议:搭配真实感大模型 majicMAX系列,墨幽人造人系列,XXMIX系列,ChilloutMix或者其他写实类大模型

推荐关键词加上ray tracing,photorealistic,Detailed beautiful delicate face,finely detailed beautiful eyes and detailed face,Ray tracing,Cinematic Light,light source contrast等提高面部细节跟光影质感得prompt

建议权重(0.5-0.9)

推荐步数:35-50

VAE :vae-ft-mse-84000-ema

推荐开启高清修复

高清修复设置:

放大算法:4X-UltraSharp   重绘幅度 0.2-0.35     高清修复采样 25

建议使用ADetailer脸部优化插件   把LORA放入ADetailer 的 prompt里

以及CDTuner插件

插件语法:直接输入,或者在插件里拖动调整

<cdt:d1=2;col1=-3>

<cdt:d2=2;hrs=1>

<cdt:1>

<cdt:0;0;0;-2.3;0,2>

<cdt:0;0;0;-2.3;0;2;0;0;1>

听人劝吃饱饭,如有想法或者建议可以WX:BLUE601159

与V1.0比V2.0版本,加了些数据图,增强训练,泛化性良好,皮肤质感肌理有所增强,

(PS:炼丹是门玄学,为了弄好没少挨打,当事人不是很满意,硬着头皮继续弄)

模型拟合泛化测试图:

web/image/33c69036f5c134dc64887ad948cae716222ded5de807afb5f521c31171210b27.png

web/image/b5b8aba1c9e74033f32cb82f6a7c67be80a65d156c78dce2404f5d0c10796165.png

最后,说个题外话给大家推荐个我常用的采样器DPM++ 2M alt Karras

添加方法,用记事本打开stable-diffusion-webui/modules/sd_samplers_kdiffusion.py  在第38行添加

from tqdm.auto import trange


@torch.no_grad()

def sample_dpmpp_2m_alt(model, x, sigmas, extra_args=None, callback=None, disable=None):

   """DPM-Solver++(2M)."""

   extra_args = {} if extra_args is None else extra_args

   s_in = x.new_ones([x.shape[0]])

   sigma_fn = lambda t: t.neg().exp()

   t_fn = lambda sigma: sigma.log().neg()

   old_denoised = None


   for i in trange(len(sigmas) - 1, disable=disable):

       denoised = model(x, sigmas[i] * s_in, **extra_args)

       if callback is not None:

           callback({'x': x, 'i': i, 'sigma': sigmas[i], 'sigma_hat': sigmas[i], 'denoised': denoised})

       t, t_next = t_fn(sigmas[i]), t_fn(sigmas[i + 1])

       h = t_next - t

       if old_denoised is None or sigmas[i + 1] == 0:

           x = (sigma_fn(t_next) / sigma_fn(t)) * x - (-h).expm1() * denoised

       else:

           h_last = t - t_fn(sigmas[i - 1])

           r = h_last / h

           denoised_d = (1 + 1 / (2 * r)) * denoised - (1 / (2 * r)) * old_denoised

           x = (sigma_fn(t_next) / sigma_fn(t)) * x - (-h).expm1() * denoised_d

       sigma_progress = i / len(sigmas)

       adjustment_factor = 1 + (0.15 * (sigma_progress * sigma_progress))

       old_denoised = denoised * adjustment_factor

   return x


k_diffusion.sampling.sample_dpmpp_2m_alt = sample_dpmpp_2m_alt


samplers_data_k_diffusion.insert(9, sd_samplers_common.SamplerData('DPM++ 2M alt', lambda model: KDiffusionSampler('sample_dpmpp_2m_alt', model), ['k_dpmpp_2m_alt'], {}))

samplers_data_k_diffusion.insert(10, sd_samplers_common.SamplerData('DPM++ 2M alt Karras', lambda model: KDiffusionSampler('sample_dpmpp_2m_alt', model), ['k_dpmpp_2m_alt_ka'], {'scheduler': 'karras'}))


直接保存即可