
    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	 jrSS
 jr " S S\
\   5      rSS/rg)    )annotations)Literal)override)KeyConditionget_seq_len   )ArchitectureImageModelDescriptorSizeRequirements	StateDict   )MMRRDBNet_testc                
   XUS-  US-  4;   a  UnO8U S-  S:X  a  SnO,U S-  S:X  a  U S:  a  U S-  nOU S-  S:w  a  U nOU S:X  a  SnOSnUS-  U :X  a  SnX#4$ US-  U :X  a  SnX#4$ US-  U :X  a  SnX#4$ [        SU SU 35      e)	N      r   r   r      z%Could not infer scale from num_in_ch=z and num_out_ch=)
ValueError)combined
num_out_ch	num_in_chscales       b/home/wildlama/miniconda3/lib/python3.13/site-packages/spandrel/architectures/MMRealSR/__init__.py_get_in_ch_and_scaler      s     
Q
R@@		A			B!	2N		A		 r>I I1}   
Q(	"  
R8	# 	 3I;>Nzl[
 	
    c                   / n/ n/ nS nSnSn SU S3U ;   aa  U SU S3   R                   S   nUc  UnSnOXt:X  a  US-  nOUR                  U5        UR                  U5        UR                  S5        UnSnO~SU S3U ;   a=  Uc   eUR                  U5        UR                  U5        UR                  S5        S nSnO7Ub3  UR                  U5        UR                  U5        UR                  S5        OUS-  nM  XU4$ )Nr   zde_net.body.0.z.conv1.weightr   z.weightr   )shapeappend)
state_dict	num_feats
num_blocks
downscales
last_featsblocksifeatss           r   $_get_num_feats_blocks_and_downscalesr&   ;   sL    IJ&(J!JF	A
A3m,
:s-@AGGJE!"
$!  ,!!&)!!!$"
aS(J6
 )))Z(f%a JF %  ,!!&)!!!$	QO R *,,r   c                  @   ^  \ rS rSrSU 4S jjr\SS j5       rSrU =r$ )MMRealSRArchs   c                `   > [         TU ]  S[        R                  " SSSSSSSS	S
SSS5      S9  g )NMMRealSRconv_first.weightzconv_body.weightzconv_up1.weightzconv_up2.weightzconv_hr.weightconv_last.weightbody.0.rdb1.conv1.weightzam_list.0.fc.0.weightzde_net.conv_first.0.weightzde_net.body.0.0.conv1.weightzde_net.fc_degree.0.0.weightdd_embed.0.weight)iddetect)super__init__r   has_all)self	__class__s    r   r3   MMRealSRArch.__init__t   sJ    ''#"!! "*',.-# 	 	
r   c                   SnSnSnSnSnSnSnSn	/ SQn
/ S	Qn/ S
QnUS   R                   S   nUS   R                   S   nUS   R                   S   n[        X5      u  p$[        US5      nUS   R                   S   nUS   R                   S   n[        U5      u  pn[	        UUUUUUUU	U
UUS9n[        UUU US:X  a  SOSU S3U S3/SSUUU[        SS9S S9$ )Nr   r   @          r   sigmoid)r9         i   )r   r   r   r   )r   r   r   r   r-   r   r   r,   bodyr.   r/   )r   r   r   num_feat	num_blocknum_grow_chnum_degradationdegradation_degree_actvr   r    r!   RestorationSRnfnbTr   )minimumc                    U " U5      S   $ )Nr    )modelimages     r   <lambda>#MMRealSRArch.load.<locals>.<lambda>   s    uar   )
architecturepurposetagssupports_halfsupports_bfloat16r   input_channelsoutput_channelssize_requirementscall_fn)r   r   r   r&   r+   r
   r   )r5   r   r   r   r   r@   rA   rB   rC   rD   r   r    r!   r   rL   s                  r   loadMMRealSRArch.load   sY    	
	"+'	!
!
 2399!<
0177:1288;/E	
F3	 !;<BB1E$%89??B,P-
)	z !#+$;!!
 $%*aZMT*B+R  "$&.r:8
 	
r   rK   )returnNone)r   r   r[   zImageModelDescriptor[MMRealSR])	__name__
__module____qualname____firstlineno__r3   r   rY   __static_attributes____classcell__)r6   s   @r   r(   r(   s   s    
& ;
 ;
r   r(   r+   N)r   intr   rc   r[   ztuple[int, int])r   r   )
__future__r   typingr   typing_extensionsr   spandrel.utilr   r   __helpers.model_descriptorr	   r
   r   r   __arch.mmrealsr_archr   r+   r   r&   r(   __all__rK   r   r   <module>rk      sL    "  & 3  =&R5-pP
<) P
f :
&r   