Back to Annotated Deep Learning Paper Implementations

ස්ථාවර විසරණය සඳහා නියැදි ඇල්ගොරිතම

docs/si/diffusion/stable_diffusion/sampler/index.html

latest6.3 KB
Original Source

homediffusionstable_diffusionsampler

[View code on Github](https://github.com/labmlai/annotated_deep_learning_paper_implementations/tree/master/labml_nn/diffusion/stable_diffusion/sampler/ init.py)

#

ස්ථාවර විසරණය සඳහා නියැදි ඇල්ගොරිතම

අපි පහත සඳහන් නියැදි ඇල්ගොරිතම ක්රියාත්මක කර ඇත:

18fromtypingimportOptional,List1920importtorch2122fromlabml\_nn.diffusion.stable\_diffusion.latent\_diffusionimportLatentDiffusion

#

නියැදි ඇල්ගොරිතම සඳහා මූලික පන්තිය

25classDiffusionSampler:

#

29model:LatentDiffusion

#

  • model ශබ්දය පුරෝකථනය කිරීමේ ආකෘතියයිϵcond​(xt​,c)
31def\_\_init\_\_(self,model:LatentDiffusion):

#

35super().\_\_init\_\_()

#

ආකෘතිය සකසන්නϵcond​(xt​,c)

37self.model=model

#

ආකෘතිය පුහුණු කරන ලද පියවර ගණන ලබා ගන්නT

39self.n\_steps=model.n\_steps

#

ලබා ගන්නϵ(xt​,c)

  • x හැඩයෙන්xt​ යුක්ත වේ[batch_size, channels, height, width]
  • t හැඩයෙන්t යුක්ත වේ[batch_size]
  • c හැඩයේ කොන්දේසි සහිතc කාවැද්දීම් වේ[batch_size, emb_size]
  • uncond_scale යනු කොන්දේසි විරහිත මාර්ගෝපදේශs පරිමාණයයි. මෙය භාවිතා වේϵθ​(xt​,c)=sϵcond​(xt​,c)+(s−1)ϵcond​(xt​,cu​)
  • uncond_cond හිස් විමසුමක් සඳහා කොන්දේසි සහිත කාවැද්දීම වේcu​
41defget\_eps(self,x:torch.Tensor,t:torch.Tensor,c:torch.Tensor,\*,42uncond\_scale:float,uncond\_cond:Optional[torch.Tensor]):

#

පරිමාණය විටs=1ϵθ​(xt​,c)=ϵcond​(xt​,c)

55ifuncond\_condisNoneoruncond\_scale==1.:56returnself.model(x,t,c)

#

අනුපිටපත්xt​ සහt

59x\_in=torch.cat([x]\*2)60t\_in=torch.cat([t]\*2)

#

සංයුක්තc සහcu​

62c\_in=torch.cat([uncond\_cond,c])

#

ලබාϵcond​(xt​,c) ගන්නϵcond​(xt​,cu​)

64e\_t\_uncond,e\_t\_cond=self.model(x\_in,t\_in,c\_in).chunk(2)

#

ගණනය කරන්නϵθ​(xt​,c)=sϵcond​(xt​,c)+(s−1)ϵcond​(xt​,cu​)

67e\_t=e\_t\_uncond+uncond\_scale\*(e\_t\_cond-e\_t\_uncond)

#

70returne\_t

#

නියැදි ලූප

  • shape ස්වරූපයෙන් ජනනය කරන ලද රූපවල හැඩය[batch_size, channels, height, width]
  • cond කොන්දේසි සහිත කාවැද්දීම් වේc
  • temperature යනු ශබ්දයේ උෂ්ණත්වය (අහඹු ශබ්දය මෙයින් ගුණ කරනු ලැබේ)
  • x_last වේxT​. සපයා නොමැති නම් අහඹු ශබ්දය භාවිතා කරනු ඇත.
  • uncond_scale යනු කොන්දේසි විරහිත මාර්ගෝපදේශs පරිමාණයයි. මෙය භාවිතා වේϵθ​(xt​,c)=sϵcond​(xt​,c)+(s−1)ϵcond​(xt​,cu​)
  • uncond_cond හිස් විමසුමක් සඳහා කොන්දේසි සහිත කාවැද්දීම වේcu​
  • skip_steps මඟ හැරීමට කාල පියවර ගණන වේ.
72defsample(self,73shape:List[int],74cond:torch.Tensor,75repeat\_noise:bool=False,76temperature:float=1.,77x\_last:Optional[torch.Tensor]=None,78uncond\_scale:float=1.,79uncond\_cond:Optional[torch.Tensor]=None,80skip\_steps:int=0,81):

#

95raiseNotImplementedError()

#

පින්තාරු ලූප

  • x හැඩයෙන්xT′​ යුක්ත වේ[batch_size, channels, height, width]
  • cond කොන්දේසි සහිත කාවැද්දීම් වේc
  • t_start සිට ආරම්භ කිරීමට නියැදි පියවර වේ,T′
  • orig යනු මුල් රූපයයි ගුප්ත පිටුව අපි පැල්ලම් කරන.
  • mask මුල් රූපය තබා ගැනීම සඳහා වෙස්මුහුණ වේ.
  • orig_noise මුල් රූපයට එකතු කළ යුතු ස්ථාවර ශබ්දය.
  • uncond_scale යනු කොන්දේසි විරහිත මාර්ගෝපදේශs පරිමාණයයි. මෙය භාවිතා වේϵθ​(xt​,c)=sϵcond​(xt​,c)+(s−1)ϵcond​(xt​,cu​)
  • uncond_cond හිස් විමසුමක් සඳහා කොන්දේසි සහිත කාවැද්දීම වේcu​
97defpaint(self,x:torch.Tensor,cond:torch.Tensor,t\_start:int,\*,98orig:Optional[torch.Tensor]=None,99mask:Optional[torch.Tensor]=None,orig\_noise:Optional[torch.Tensor]=None,100uncond\_scale:float=1.,101uncond\_cond:Optional[torch.Tensor]=None,102):

#

116raiseNotImplementedError()

#

වෙතින් නියැදියq(xt​∣x0​)

  • x0 හැඩයෙන්x0​ යුක්ත වේ[batch_size, channels, height, width]
  • index යනු කාල පියවරt දර්ශකයයි
  • noise ශබ්දය,ϵ
118defq\_sample(self,x0:torch.Tensor,index:int,noise:Optional[torch.Tensor]=None):

#

126raiseNotImplementedError()

Trending Research Paperslabml.ai