
    3j"                         S SK r S SKJr  S SKJr  S SKJrJrJr  SSK	J
r
JrJrJrJr  SSKJr   " S	 S
\
\   5      rS
S/rg)    N)nn)override)KeyConditionget_pixelshuffle_paramsget_seq_len   )ArchitectureImageModelDescriptorModelTilingSizeRequirements	StateDict   )SwinIRc                   N   ^  \ rS rSrSU 4S jjr\S\S\\   4S j5       r	Sr
U =r$ )
SwinIRArch   returnc           
      z   > [         TU ]  S[        R                  " S[        R                  " SS5      SS5      S9  g )Nr   z-layers.0.residual_group.blocks.0.norm1.weightconv_first.weightconv_first.1.weight-layers.0.residual_group.blocks.0.mlp.fc1.bias=layers.0.residual_group.blocks.0.attn.relative_position_index)iddetect)super__init__r   has_allhas_any)self	__class__s    `/home/wildlama/miniconda3/lib/python3.13/site-packages/spandrel/architectures/SwinIR/__init__.pyr   SwinIRArch.__init__   sF    ''?$$') @O 	 	
    
state_dictc                    SnSnSn/ SQn/ SQnSnSnSn	S n
SnSnS	n[         R                  nS
nSnS
nSnSnSnSnSnSnSU;   a  SU;   a  SnOSnOSU;   a  SnOSnSU;   aZ  UR                  S5      US'   UR                  S5      US'   [        [        R
                  " US   R                  S   S-  5      5      nUS   R                  S   nSU;   a  US   R                  S   nOUnSnUS:X  a1  U Vs/ s H  nSU;   d  M  SU;  d  M  UPM     nnU H  nUS-  nM
     ONUS:X  a  [        US5      u  nnO8US:X  a2  [        [        R
                  " US   R                  S   U-  5      5      nUS   R                  S   n[        US    R                  S   U-  5      n[        [        R
                  " US!   R                  S   5      5      nS"U;   a2  [        [        R
                  " US"   R                  S   5      U-  5      n[        US#5      n/ n/ n[        U5       HG  nUR                  [        US$U S%35      5        UR                  US$U S&3   R                  S   5        MI     S'U;   a  SnOS(nUS:X  a  S)OSnUUS-  -  nUn [        SO0 S*U_S+U_S,U_S-U_S.U_S/U_S0U_S1U_S2U	_S3U
_S4U_S5U_S6U_S7U_S8U_S9U_S:U_S;U_S<U_S=U_S>U_S?U_6n![        U5      n"U"S@::  a  SAn#OU"SB:  a  SCn#OSDn#U#SEU SFU 3U SG3U SH3U U SI3/n$UU-  n%[        U!UU U%S:X  a  SJOSKU$S
SU%UU [!        SLUS-  SM9["        R$                  SN9$ s  snf )PN@   r   `   )   r(   r(   r(      g      @Tg        g?F   g      ? 1convzconv_before_upsample.0.weightzconv_up1.weightznearest+convpixelshufflezupsample.0.weightpixelshuffledirectr   r   zconv_first.1.biaszconv_first.biasr   zconv_last.weightr   conv_upbiasupsamplezupsample.0.biasr   r   z*layers.0.residual_group.blocks.1.attn_masklayerszlayers.z.residual_group.blocksz:.residual_group.blocks.0.attn.relative_position_bias_tablezconv_after_body.weight3convg     o@img_size
patch_sizein_chans	embed_dimdepths	num_headswindow_size	mlp_ratioqkv_biasqk_scale	drop_rateattn_drop_ratedrop_path_rate
norm_layerape
patch_normuse_checkpointupscale	img_range	upsamplerresi_connectionstart_unshuffle   small	   mediumlargeswnfdimunshufRestorationSR   )minimummultiple_of)
architecturepurposetagssupports_halfsupports_bfloat16scaleinput_channelsoutput_channelssize_requirementstiling )r   	LayerNormpoproundmathsqrtshaper   intfloatr   rangeappendr   lenr
   r   r   DISCOURAGED)&r   r$   r4   r5   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   num_featrI   	num_in_ch
num_out_chxupsample_keys_upsample_key
num_layersiin_ncout_ncmodelhead_lengthsize_tagr[   real_upscales&                                         r!   loadSwinIRArch.load!   s    
	 			\\

		!*j8 J.*	*	 J.,II J..8nn=R.SJ*+,6NN;N,OJ()#		*%89??BaGHO 2399!<	+#$67==a@J"J&%%aaF!O:   "/1 "/.( 7
J OGX..		*%67==a@JNOG 2399!<	FGMMaP
	
 IIS%
 8:E		KLRRSTU H !X6
	z"AMM+jGA3>T2UVWaS Z[% # $z1%O%O )A-E3	_a// 

!
 
  	

 
  
 $
  
 
 
  
 *
 *
 "
 
  "!
" *#
$ %
&  '
(  )
* ,+
, ,-
2 &k!H1_HHz;-(jOkv&
 /1#%1Q%6MD" ".(: **
 	
Ms   5
MMMrc   )r   N)__name__
__module____qualname____firstlineno__r   r   r   r
   r   r~   __static_attributes____classcell__)r    s   @r!   r   r      s4    
 g
y g
-A&-I g
 g
r#   r   r   )rg   torchr   typing_extensionsr   spandrel.utilr   r   r   __helpers.model_descriptorr	   r
   r   r   r   __arch.SwinIRr   r   __all__rc   r#   r!   <module>r      sC      & L L  "w
f% w
t 
"r#   