
    3jF                        S SK Jr  S SK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  SSKJr  SS	 jr " S
 S\
\   5      rSS/rg)    )annotationsN)override)KeyConditionget_pixelshuffle_paramsget_seq_len   )ArchitectureImageModelDescriptorSizeRequirements	StateDict   )RGTc                `  ^^ U S   R                   S   mU S   R                   S   mS
UU4S jjn[        R                  " T5      nU" X"5      (       a  X"4$ [        SS5       H7  nSU-  n[        US-   S5       H  nSU-  nU" XF5      (       d  M  XF4s  s  $    M9     [	        ST< S	T< 35      e)N6layers.0.blocks.0.attn.attns.0.relative_position_indexr   )layers.0.blocks.0.attn.attns.0.rpe_biasesc                H   > X-  T:H  =(       a    SU -  S-
  SU-  S-
  -  T:H  $ )N   r    )sswsshabs     ]/home/wildlama/miniconda3/lib/python3.13/site-packages/spandrel/architectures/RGT/__init__.pyis_solution$_get_split_size.<locals>.is_solution   s.    yA~D1s7Q;1s7Q;"?1"DD    r   
   r   z No valid split_size found for a=z and b=)r   intr   r   returnbool)shapemathisqrtrange
ValueError)	
state_dictr   square_sizeir   jr   r   r   s	          @@r   _get_split_sizer*      s     	KLRRSTUA>?EEaHAE E **Q-K;,,'' 1b\dq1ub!AQ$C3$$x "  8aTqdC
DDr   c                  @   ^  \ rS rSrSU 4S jjr\SS j5       rSrU =r$ )RGTArch0   c                   > [         TU ]  S[        R                  " SSSSSSSS	S
SSSS[        R                  " SS5      SS5      S9  g )Nr   conv_first.weightzbefore_RG.1.weightzlayers.0.blocks.0.gammazlayers.0.blocks.0.norm1.weightz!layers.0.blocks.0.attn.qkv.weightz"layers.0.blocks.0.attn.proj.weightr   r   z2layers.0.blocks.0.attn.attns.0.pos.pos_proj.weight layers.0.blocks.0.mlp.fc1.weightz layers.0.blocks.0.mlp.fc2.weightzlayers.0.blocks.0.norm2.weightznorm.weightconv_after_body.weightzconv_after_body.0.weightzconv_before_upsample.0.weightzconv_last.weight)iddetect)super__init__r   has_allhas_any)self	__class__s    r   r5   RGTArch.__init__1   si    ''#$)034;HD220$$,.	 0"+ 	 	
r   c                f   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S
nSnSS/nSnUS   R                   S   nUS   R                   S   n[        US5      nS/U-  nS	/U-  n[        U5       HM  n[        USU S35      UU'   USU S3   R                   S   nUUS	-  -  S:X  a
  US	-  UU'   MB  US	-  S-   UU'   MO     SU;   nUS   R                   S   US   R                   S   -  nSU;   a  SnOSn[        U5       H;  u  nnUS	:  d  M  USU S3   R                   S   USU S3   R                   S   -  n  O   [	        US5      u  nn[        U5      n[        S10 SU_SU_SU_SU_SU_S U_S!U_S"U	_S#U
_S$U_S%U_S&U_S'U_S(U_S)U_S*U_6n[        UUU US:X  a  S+OS,/ S-SUUU[        S.S/9S09$ )2N@   r      )r   r   r   r   g      @Tg        g?r   g      ?1conv   g      ?r/   r   r   layerszlayers.z.blocksz(.blocks.0.attn.attns.0.pos.pos3.2.weightzlayers.0.blocks.0.attn.qkv.biasr0   r1   3convz.blocks.1.attn.conv.weightupsampleimg_sizein_chans	embed_dimdepth	num_heads	mlp_ratioqkv_biasqk_scale	drop_rateattn_drop_ratedrop_path_rateupscale	img_rangeresi_connection
split_sizec_ratioRestorationSRF   )minimum)	architecturepurposetagssupports_halfsupports_bfloat16scaleinput_channelsoutput_channelssize_requirementsr   )	r!   r   r$   	enumerater   r*   r   r
   r   )r8   r&   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   
num_layersr(   
heads_halfd_models                           r   loadRGTArch.loadM   s   	 				!V
1288;2399!<	 X6
j C*$	z"A":7/CDE!H $!DEeAJ JN+q0)A~	!)A~1	! # 5
B 9:@@C;<BB1EF 	
 $z1%O%O e$DAqAv+EFGMMaP 71#-G!HIOOPQRS   % -ZD
$Z0
 


  
 	

  
  
 
 
  
 *
 *
 
  
 ,
 "
  !
& $%,\Mt"#$.r:
 	
r   r   )r   None)r&   r   r   zImageModelDescriptor[RGT])	__name__
__module____qualname____firstlineno__r5   r   rf   __static_attributes____classcell__)r9   s   @r   r,   r,   0   s    
8 ]
 ]
r   r,   r   )r&   r   r   ztuple[int, int])
__future__r   r"   typing_extensionsr   spandrel.utilr   r   r   __helpers.model_descriptorr	   r
   r   r   
__arch.rgtr   r*   r,   __all__r   r   r   <module>ru      sI    "  & L L  E<{
l3 {
| e
r   