
    3j                     p    S SK r S SKJr  S SKJrJr  SSKJrJrJ	r	J
r
  SSKJr   " S S	\\   5      rS	S
/rg)    N)override)KeyConditionget_seq_len   )ArchitectureImageModelDescriptorSizeRequirements	StateDict   )CRAFTc                   R   ^  \ rS rSr  SU 4S jjr\S\S\\   4S j5       r	Sr
U =r$ )	CRAFTArch   returnc                 L   > [         TU ]  S[        R                  " SS5      S9  g )Nr   conv_first.weightz4layers.0.residual_group.hf_blocks.0.attn.temperature)iddetect)super__init__r   has_all)self	__class__s    _/home/wildlama/miniconda3/lib/python3.13/site-packages/spandrel/architectures/CRAFT/__init__.pyr   CRAFTArch.__init__   s.     	''#F 	 	
    
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S
nUS   R                   S   nUS   R                   S   n[        US5      nS/U-  nS/U-  n[        U5       H/  n[        USU S35      UU'   USU S3   R                   S   UU'   M1     [        [        R
                  " US   R                   S   U-  5      5      nSU;   a  S
nOSnSU;   n
US   R                   S   n[        UU-  5      n	US   R                   S   nUS   R                   S   n[        S[        R
                  " SUS-  -  SU-  US-   -  -
  US-
  S-  -   5      * SU-  -   U-
  S-   -  5      nUU-  nUU-  U:w  a  [        S5      e[        UU5      n[        UU5      n[        UUUUUUUU	U
UUUUS9nU SU 3U S 3U /n[        UUU US:X  a  S!OS"USSUUU[        SSS#9S$9$ )%Nr   r   0   )   r    r    r    )   r!   r!   r!      g       @Tg      ?1convr   r   r   layersr    r!   zlayers.z.residual_group.hf_blocksz,.residual_group.hf_blocks.0.attn.temperaturezupsample.0.biaszconv_after_body.weightidentityz.layers.0.residual_group.srwa_blocks.0.qkv.biasz2layers.0.residual_group.srwa_blocks.0.mlp.fc1.biasrelative_position_index_hbiases_vg      ?   z2Could not find valid split_size_0 and split_size_1)in_chanswindow_size	embed_dimdepths	num_headssplit_size_0split_size_1	mlp_ratioqkv_biasqk_scaleupscale	img_rangeresi_connectionxdimRestorationSR)minimummultiple_of)	architecturepurposetagssupports_halfsupports_bfloat16scaleinput_channelsoutput_channelssize_requirements)shaper   rangeintmathsqrtfloat
ValueErrorminmaxr   r   r	   )r   r   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   
num_layersimlp_hidden_dimabs1s0modelr>   s                           r   loadCRAFTArch.load   s    	 			! 1288;2399!<	 X6
z!C*$	z"A#J'!<U0VWF1I%!HIeAIaL # dii
+< = C CA F QRS#z1%O(OCzQ#@

% .945	 2399!<z"((+ 		"q!t)a!eq1uo5Q1DEEAMPQQTUUW
 "W7a<QRR2r{2r{#%%+
" nAl^,k
 $%,\Mt"#$.rrJ
 	
r    )r   N)__name__
__module____qualname____firstlineno__r   r   r
   r   r   rV   __static_attributes____classcell__)r   s   @r   r   r      s<    	
		
 c
y c
-A%-H c
 c
r   r   r   )rH   typing_extensionsr   spandrel.utilr   r   __helpers.model_descriptorr   r   r	   r
   __arch.CRAFTr   r   __all__rX   r   r   <module>rd      s=     & 3   p
U# p
f 
 r   