Back to Annotated Deep Learning Paper Implementations

ගුප්ත විසරණ ආකෘති

docs/si/diffusion/stable_diffusion/latent_diffusion.html

latest7.8 KB
Original Source

homediffusionstable_diffusion

View code on Github

#

ගුප්ත විසරණ ආකෘති

ගුප්ත විසරණය ආකෘති රූප අවකාශය සහ ගුප්ත අවකාශය අතර සිතියම් ගත කිරීම සඳහා ස්වයංක්රීය එන්කෝඩරයක් භාවිතා කරයි. විසරණ ආකෘතිය සැහැල්ලු අවකාශය මත ක්රියා කරයි, එය පුහුණු කිරීම පහසු කරයි. එය පදනම් වී ඇත්තේ ගුප්ත විසරණ ආකෘති සමඟ කඩදාසි අධි-විභේදන රූප සංශ්ලේෂණය මත ය.

ඔවුන් පෙර පුහුණු කරන ලද ස්වයංක්රීය එන්කෝඩරයක් භාවිතා කරන අතර පෙර පුහුණු කරන ලද ස්වයංක්රීය එන්කෝඩරයේ ගුප්ත අවකාශය මත විසරණය යූ-නෙට් පුහුණු කරයි.

සරල විසරණය ක්රියාත්මක කිරීම සඳහා අපගේ DDPM ක්රියාත්මක කිරීම වෙත යොමු වන්න. βt​කාලසටහන්αt​ ආදිය සඳහා අපි එකම අංකන භාවිතා කරමු.

24fromtypingimportList2526importtorch27importtorch.nnasnn2829fromlabml\_nn.diffusion.stable\_diffusion.model.autoencoderimportAutoencoder30fromlabml\_nn.diffusion.stable\_diffusion.model.clip\_embedderimportCLIPTextEmbedder31fromlabml\_nn.diffusion.stable\_diffusion.model.unetimportUNetModel

#

මෙය යූ-නෙට් වටා හිස් දවටන පන්තියකි. චෙක්පොයින්ට් බර පැහැදිලිව සිතියම් ගත කිරීමට අවශ්ය නොවන පරිදි කොම්විස්/ස්ථාවර විසරණය හා සමාන ආකෘති ව්යුහයක් තිබීම සඳහා අපි මෙය තබා ගනිමු.

34classDiffusionWrapper(nn.Module):

#

42def\_\_init\_\_(self,diffusion\_model:UNetModel):43super().\_\_init\_\_()44self.diffusion\_model=diffusion\_model

#

46defforward(self,x:torch.Tensor,time\_steps:torch.Tensor,context:torch.Tensor):47returnself.diffusion\_model(x,time\_steps,context)

#

ගුප්ත විසරණය ආකෘතිය

පහත සඳහන් සංරචක අඩංගු වේ:

50classLatentDiffusion(nn.Module):

#

60model:DiffusionWrapper61first\_stage\_model:Autoencoder62cond\_stage\_model:CLIPTextEmbedder

#

  • unet_model ගුප්ත අවකාශයේ ශබ්දයϵcond​(xt​,c) පුරෝකථනය කරන යූ-නෙට්
  • autoencoder මෙම ස්වයං ආකේතකය වේ
  • clip_embedderCLIP කාවැද්දීම් උත්පාදක යන්ත්රය
  • latent_scaling_factor ගුප්ත අවකාශය සඳහා පරිමාණ සාධකය වේ. යූ-නෙට් වෙත පෝෂණය කිරීමට පෙර ඔටෝඑන්කෝඩරයේ කේතීකරණ මේ මගින් පරිමාණය කරනු ලැබේ.
  • n_steps යනු විසරණය කිරීමේ පියවර ගණන වේT.
  • linear_startβකාලසටහනේ ආරම්භය වේ.
  • linear_endβකාලසටහනේ අවසානයයි.
64def\_\_init\_\_(self,65unet\_model:UNetModel,66autoencoder:Autoencoder,67clip\_embedder:CLIPTextEmbedder,68latent\_scaling\_factor:float,69n\_steps:int,70linear\_start:float,71linear\_end:float,72):

#

84super().\_\_init\_\_()

#

Compvis/ස්ථාවර විසරණ ලෙස එම ආකෘතිය ව්යුහය තබා ගැනීමටU-ශුද්ධ ආවරණය කරනවා.

87self.model=DiffusionWrapper(unet\_model)

#

ස්වයංක්රීය එන්කෝඩරය සහ පරිමාණ සාධකය

89self.first\_stage\_model=autoencoder90self.latent\_scaling\_factor=latent\_scaling\_factor

#

CLIP කාවැද්දීම් උත්පාදක යන්ත්රය

92self.cond\_stage\_model=clip\_embedder

#

පියවර ගණනT

95self.n\_steps=n\_steps

#

βකාලසටහන

98beta=torch.linspace(linear\_start\*\*0.5,linear\_end\*\*0.5,n\_steps,dtype=torch.float64)\*\*299self.beta=nn.Parameter(beta.to(torch.float32),requires\_grad=False)

#

αt​=1−βt​

101alpha=1.-beta

#

αt​ˉ​=∏s=1t​αs​

103alpha\_bar=torch.cumprod(alpha,dim=0)104self.alpha\_bar=nn.Parameter(alpha\_bar.to(torch.float32),requires\_grad=False)

#

ආදර්ශ උපාංගය ලබා ගන්න

106@property107defdevice(self):

#

111returnnext(iter(self.model.parameters())).device

#

පෙළ විමසුම් ලැයිස්තුවක් සඳහා CLIP කාවැද්දීම් ලබා ගන්න

113defget\_text\_conditioning(self,prompts:List[str]):

#

117returnself.cond\_stage\_model(prompts)

#

රූපයේ පරිමාණය කරන ලද ගුප්ත අවකාශය නිරූපණය ලබා ගන්න

එන්කෝඩර් ප්රතිදානය බෙදා හැරීමකි. අපි එයින් නියැදි කර පරිමාණය කිරීමේ සාධකය මගින් ගුණ කරමු.

119defautoencoder\_encode(self,image:torch.Tensor):

#

126returnself.latent\_scaling\_factor\*self.first\_stage\_model.encode(image).sample()

#

ගුප්ත නිරූපණයෙන් රූපය ලබා ගන්න

අපි පරිමාණ සාධකය අනුව පරිමාණය කර විකේතනය කරමු.

128defautoencoder\_decode(self,z:torch.Tensor):

#

134returnself.first\_stage\_model.decode(z/self.latent\_scaling\_factor)

#

ශබ්දය පුරෝකථනය කරන්න

ගුප්ත නිරූපණයxt​, කාල පියවරt සහ කන්ඩිෂනේෂන් සන්දර්භය අනුව ශබ්දය පුරෝකථනය කරන්නc.

ϵcond​(xt​,c)

136defforward(self,x:torch.Tensor,t:torch.Tensor,context:torch.Tensor):

#

145returnself.model(x,t,context)

Trending Research Paperslabml.ai