
    3j0                     d    S SK r S SKJrJrJr  SSKJrJrJr  SSK	J
r
   " S S\\
   5      rSS	/rg)
    N)KeyConditionget_pixelshuffle_paramsget_seq_len   )ArchitectureImageModelDescriptor	StateDict   )RCANc                   @   ^  \ rS rSrU 4S jrS\S\\   4S jrSr	U =r
$ )RCANArch	   c                    > [         TU ]  S[        R                  " [        R                  " SSSS5      [        R                  " SSSS5      5      S9  g )Nr   zhead.0.weighttail.1.weightzbody.0.body.0.body.0.weight%body.0.body.0.body.3.conv_du.0.weightzhead.1.weight)iddetect)super__init__r   has_anyhas_all)self	__class__s    ^/home/wildlama/miniconda3/lib/python3.13/site-packages/spandrel/architectures/RCAN/__init__.pyr   RCANArch.__init__
   s\    ''$$##1;	 $$##1;	 	 	
    
state_dictreturnc                 B   [        US5      S-
  n[        US5      S-
  nSn[        US5      u  pV[        US5      S:  nUS   R                  S   nU(       aA  US-  nUSU S	3   R                  S   n	[        [        R
                  " X-  5      5      n
S
U
-  nSnUSU S	3   R                  S   nSU;   nXaS   R                  S   -  nSnSn[        UUUUUUUUUUUUS9nU S3U S3U S3/nU(       a  UR                  S5        [        UUU US:X  a  SOSUSSUUUS9
$ )Nbodyr
   zbody.0.bodyr   ztail.0headr   zhead.z.weight      zsub_mean.weightr   relu)scalen_resgroupsn_resblocksn_colors	rgb_rangenormkernel_sizen_feats	reduction	res_scaleact_modeunshuffle_modnfnrgnrb	unshuffleRestorationSRFT)architecturepurposetagssupports_halfsupports_bfloat16r&   input_channelsoutput_channels)	r   r   shapeintmathsqrtr   appendr   )r   r   r'   r(   
head_indexr&   r-   r1   r)   unshuffled_channelsdownscale_factorr*   r,   r+   r.   r/   r0   modelr:   s                      r   loadRCANArch.load   s   !*f59!*m<q@
0XF#J7!;o.44Q7!OJ",uZL-H"I"O"OPQ"R"499-@-K#LM))E	 5G!<=CCBG J."IJPPQRSS 	 	###'
 )2;-s 3}C5HIKK$#%*aZMT"#$
 	
r    )__name__
__module____qualname____firstlineno__r   r	   r   r   rH   __static_attributes____classcell__)r   s   @r   r   r   	   s&    
&4
y 4
-A$-G 4
 4
r   r   r   )rA   spandrel.utilr   r   r   __helpers.model_descriptorr   r   r	   __arch.rcan_archr   r   __all__rJ   r   r   <module>rU      s7     L L W W "H
|D! H
V v
r   