Spaces:
Runtime error
Runtime error
import torch | |
def add_diffusion_noise(image_tensor, noise_step): | |
num_steps = 1000 # Number of diffusion steps | |
# decide beta in each step | |
betas = torch.linspace(-6,6,num_steps) | |
betas = torch.sigmoid(betas) * (0.5e-2 - 1e-5) + 1e-5 | |
# decide alphas in each step | |
alphas = 1 - betas | |
alphas_prod = torch.cumprod(alphas, dim=0) | |
alphas_prod_p = torch.cat([torch.tensor([1]).float(), alphas_prod[:-1]],0) # p for previous | |
alphas_bar_sqrt = torch.sqrt(alphas_prod) | |
one_minus_alphas_bar_log = torch.log(1 - alphas_prod) | |
one_minus_alphas_bar_sqrt = torch.sqrt(1 - alphas_prod) | |
def q_x(x_0,t): | |
noise = torch.randn_like(x_0) | |
alphas_t = alphas_bar_sqrt[t] | |
alphas_1_m_t = one_minus_alphas_bar_sqrt[t] | |
return (alphas_t*x_0 + alphas_1_m_t*noise) | |
noise_delta = int(noise_step) # from 0-999 | |
noisy_image = image_tensor.clone() | |
image_tensor_cd = q_x(noisy_image,noise_step) | |
return image_tensor_cd | |