
    3j                        S SK Jr  S SKJ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	KJr  \\\4   r " S
 S\
\   5      r/ SQrg)    )annotations)Union)override)KeyConditionget_seq_len   )ArchitectureImageModelDescriptorSizeRequirements	StateDict   )KBNet_l)KBNet_sc                  T   ^  \ rS rSrSU 4S jjrSS jrSS jr\S	S j5       rSr	U =r
$ )
	KBNetArch   c                   > [         TU ]  S[        R                  " [        R                  " SSSSS5      [        R                  " SSS	S
5      5      S9  g )NKBNetintro.weightzencoders.0.0.attgammazmiddle_blks.0.wzdecoders.0.0.attgammazending.weightpatch_embed.proj.weightz'encoder_level3.0.ffn.project_out.weightzlatent.0.ffn.qkv.weightz!refinement.0.attn.dwconv.0.weight)iddetect)super__init__r   has_anyhas_all)self	__class__s    _/home/wildlama/miniconda3/lib/python3.13/site-packages/spandrel/architectures/KBNet/__init__.pyr   KBNetArch.__init__   s_    ''$$"+%+# $$-=-7 	 	
    c                b   SnSnSn/ SQnSn/ SQnSnSn	US   R                   S	   nUS
   R                   S   nUS   R                   S   n[        US5      US'   [        US5      US	'   [        US5      US'   [        US5      US'   [        US5      nUS   R                   S   US'   US   R                   S   US	'   US   R                   S   US'   US   R                   S   US'   SU;   n	US   R                   S	   n
X-  n[        UUUUUUUU	S9n[        UUU SSU S3/SSS	UU[	        SS9S9$ ) Nr   0   )      r%      r$   )r      r$   r&   g      ?Fr   r   zoutput.weightr   encoder_level1encoder_level2encoder_level3r'   latent
refinementz encoder_level1.0.ffn.temperaturez encoder_level2.0.ffn.temperaturez encoder_level3.0.ffn.temperaturezlatent.0.ffn.temperaturezencoder_level1.0.ffn.qkv.biaszencoder_level1.0.attn.ga1)inp_channelsout_channelsdim
num_blocksnum_refinement_blocksheadsffn_expansion_factorbiasRestorationLr/   T   )multiple_of)	architecturepurposetagssupports_halfsupports_bfloat16scaleinput_channelsoutput_channelssize_requirements)shaper   r   r
   r   )r   
state_dictin_ncout_ncr/   r0   r1   r2   r3   r4   hidden_featuresmodels               r   _load_lKBNetArch._load_l-   s   !
 !"45;;A>O,22152399!<#J0@A
1#J0@A
1#J0@A
1#J9
1 +J E@AGGJa@AGGJa@AGGJa89??Ba.*< %%@AGGJ.4!"7!5	
 $!#c{#" ".2>
 	
r!   c                <   SnSnSn/ SQn/ SQnSnSnUS   R                   S	   nUS   R                   S
   n[        US5      n[        US5      n	S	/U	-  n[        U	5       H  n
[        USU
 35      XZ'   M     [        US5      nS	/U-  n[        U5       H  n
[        USU
 35      Xj'   M     US   R                   S	   nUS   R                   S
   nX-  nUS   R                   S   nUS:H  n[        UUUUUUUS9n[	        UUU SSU S3/U(       a  S/O/ QSSS	UUS9
$ )Nr   @      )r'   r'   r$   r&   )r'   r'   r'   r'   Fr'   r   r   r   middle_blksencodersz	encoders.decodersz	decoders.zmiddle_blks.0.conv4.weightzencoders.0.0.conv11.1.weight)img_channelwidthmiddle_blk_numenc_blk_numsdec_blk_numslightweight	ffn_scaler5   SwrU   T)r9   r:   r;   r<   r=   r>   r?   r@   )rB   r   ranger   r
   )r   rC   rP   rQ   rR   rS   rT   rU   rV   	enc_counti	dec_counttemp_ctemp_ffn_chkernel_sizerG   s                   r   _load_sKBNetArch._load_sg   s   ##	 066q9>*003$Z?
J7	sYy!A)*	!oFLO "  
J7	sYy!A)*	!oFLO " 89??B !=>DDQG(	 !!?@FFqI!Q&#)%%#
 $!' &1=/b
  "&'
 	
r!   c                R    SU;   a  U R                  U5      $ U R                  U5      $ )Nr   )rH   r`   )r   rC   s     r   loadKBNetArch.load   s(    $
2<<
++<<
++r!    )returnNone)rC   r   )rC   r   rf   zImageModelDescriptor[_KBNet])__name__
__module____qualname____firstlineno__r   rH   r`   r   rc   __static_attributes____classcell__)r   s   @r   r   r      s(    
,8
t:
x , ,r!   r   )r   r   r   N)
__future__r   typingr   typing_extensionsr   spandrel.utilr   r   __helpers.model_descriptorr	   r
   r   r   __arch.kbnet_lr   __arch.kbnet_sr   _KBNetr   __all__re   r!   r   <module>rw      sO    "  & 3  $ # 
w	 R,V$ R,j .r!   