§
    �ÅjÅ  ã                  ó®   — d dl mZ d dlmZ d dlmZ d dlmZmZ ddl	m
Z
mZmZmZ ddlmZ dd	lmZ eeef         Z G d
„ de
e         ¦  «        Zg d¢ZdS )é    )Úannotations)ÚUnion)Úoverride)ÚKeyConditionÚget_seq_lené   )ÚArchitectureÚImageModelDescriptorÚSizeRequirementsÚ	StateDicté   )ÚKBNet_l)ÚKBNet_sc                  óH   ‡ — e Zd Zd
ˆ fd„Zdd„Zdd„Zedd	„¦   «         Zˆ xZS )Ú	KBNetArchÚreturnÚNonec                óÊ   •— t          ¦   «                              dt          j        t          j        ddddd¦  «        t          j        ddd	d
¦  «        ¦  «        ¬¦  «         d S )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    €úVC:\Projects\Historical\venv\Lib\site-packages\spandrel/architectures/KBNet/__init__.pyr   zKBNetArch.__init__   s~   ø€ Ý‰Œ×ÒØÝÔ'ÝÔ$à"Ø+Ø%Ø+Ø#ñô õ Ô$à-Ø=Ø-Ø7ñô ñô ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
ó    Ú
state_dictr   c                óÄ  — d}d}d}g d¢}d}g d¢}d}d}	|d         j         d	         }|d
         j         d         }|d         j         d         }t          |d¦  «        |d<   t          |d¦  «        |d	<   t          |d¦  «        |d<   t          |d¦  «        |d<   t          |d¦  «        }|d         j         d         |d<   |d         j         d         |d	<   |d         j         d         |d<   |d         j         d         |d<   d|v }	|d         j         d	         }
|
|z  }t          ||||||||	¬¦  «        }t          ||| dd|› d�gddd	||t	          d¬¦  «        ¬¦  «        S ) 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ÚLr0   Té   )Úmultiple_of)	ÚarchitectureÚpurposeÚtagsÚsupports_halfÚsupports_bfloat16ÚscaleÚinput_channelsÚoutput_channelsÚsize_requirements)Úshaper   r   r
   r   )r   r"   Úin_ncÚout_ncr0   r1   r2   r3   r4   r5   Úhidden_featuresÚmodels               r    Ú_load_lzKBNetArch._load_l-   sÍ  € ØˆØˆØˆØ!�\�\ˆ
Ø !ÐØ��ˆØ"ÐØˆàÐ4Ô5Ô;¸AÔ>ˆØ˜OÔ,Ô2°1Ô5ˆàÐ2Ô3Ô9¸!Ô<ˆå# JÐ0@ÑAÔAˆ
�1‰Ý# JÐ0@ÑAÔAˆ
�1‰Ý# JÐ0@ÑAÔAˆ
�1‰Ý# J°Ñ9Ô9ˆ
�1‰å +¨J¸Ñ EÔ EÐàÐ@ÔAÔGÈÔJˆˆa‰ØÐ@ÔAÔGÈÔJˆˆa‰ØÐ@ÔAÔGÈÔJˆˆa‰ØÐ8Ô9Ô?ÀÔBˆˆa‰à.°*Ð<ˆð %Ð%@ÔAÔGÈÔJˆØ.°Ñ4ÐåØØØØ!Ø"7ØØ!5Øð	
ñ 	
ô 	
ˆõ $ØØØØ!Ø˜#�{�{�{Ð#ØØ"ØØ Ø"Ý.¸2Ð>Ñ>Ô>ð
ñ 
ô 
ð 	
r!   c                óˆ  — d}d}d}g d¢}g d¢}d}d}|d         j         d	         }|d         j         d
         }t          |d¦  «        }t          |d¦  «        }	d	g|	z  }t          |	¦  «        D ]}
t          |d|
› �¦  «        ||
<   Œt          |d¦  «        }d	g|z  }t          |¦  «        D ]}
t          |d|
› �¦  «        ||
<   Œ|d         j         d	         }|d         j         d
         }||z  }|d         j         d         }|dk    }t          |||||||¬¦  «        }t	          ||| dd|› d�g|rdgng ¢ddd	||¬¦
  «
        S )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_scaler6   ÚSÚwrT   T)r:   r;   r<   r=   r>   r?   r@   rA   )rC   r   Úranger   r
   )r   r"   rO   rP   rQ   rR   rS   rT   rU   Ú	enc_countÚiÚ	dec_countÚtemp_cÚtemp_ffn_chÚkernel_sizerG   s                   r    Ú_load_szKBNetArch._load_sg   sÒ  € ØˆØˆØˆØ#�|�|ˆØ#�|�|ˆØˆØˆ	à  Ô0Ô6°qÔ9ˆØ˜>Ô*Ô0°Ô3ˆå$ Z°Ñ?Ô?ˆå 
¨JÑ7Ô7ˆ	Ø�s˜Y‘ˆÝ�yÑ!Ô!ð 	Gð 	GˆAÝ)¨*°oÀ!°o°oÑFÔFˆL˜‰OˆOå 
¨JÑ7Ô7ˆ	Ø�s˜Y‘ˆÝ�yÑ!Ô!ð 	Gð 	GˆAÝ)¨*°oÀ!°o°oÑFÔFˆL˜‰OˆOð Ð8Ô9Ô?ÀÔBˆØ Ð!=Ô>ÔDÀQÔGˆØ &Ñ(ˆ	ð !Ð!?Ô@ÔFÀqÔIˆØ! QÒ&ˆåØ#ØØ)Ø%Ø%Ø#Øð
ñ 
ô 
ˆõ $ØØØØ!àØ���ðð &1Ð8�=�/�/°bðð
  Ø"ØØ&Ø'ð
ñ 
ô 
ð 	
r!   úImageModelDescriptor[_KBNet]c                ó^   — d|v r|                       |¦  «        S |                      |¦  «        S )Nr   )rH   r_   )r   r"   s     r    ÚloadzKBNetArch.load£   s1   € à$¨
Ð2Ð2Ø—<’< 
Ñ+Ô+Ð+à—<’< 
Ñ+Ô+Ð+r!   )r   r   )r"   r   )r"   r   r   r`   )	Ú__name__Ú
__module__Ú__qualname__r   rH   r_   r   rb   Ú__classcell__)r   s   @r    r   r      s‡   ø€ € € € € ð
ð 
ð 
ð 
ð 
ð 
ð,8
ð 8
ð 8
ð 8
ðt:
ð :
ð :
ð :
ðx ð,ð ,ð ,ñ „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__© r!   r    ú<module>rq      s  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð ð ð ð ð ð ð ð ð $Ð #Ð #Ð #Ð #Ð #Ø #Ð #Ð #Ð #Ð #Ð #ð 
ˆw˜ÐÔ	 €ðR,ð R,ð R,ð R,ð R,�˜VÔ$ñ R,ô R,ð R,ðj .Ð
-Ð
-€€€r!   