
    3j.                        S SK Jr  S SKJr  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)    )annotations)LiteralN)override)KeyConditionget_seq_len   )ArchitectureImageModelDescriptorSizeRequirements	StateDict   )DnCNNc                  @   ^  \ rS rSrSU 4S jjr\SS j5       rSrU =r$ )	DnCNNArch   c                   > [         TU ]  S[        R                  " SSSS[        R                  " [        R                  " SSSS	S
SSSSSSS5      [        R                  " SSSSSSSS	SSS
S5      5      5      S9  g )Nr   model.0.weightzmodel.0.biaszmodel.2.weightzmodel.2.biaszmodel.4.weightzmodel.4.biaszmodel.6.weightzmodel.6.biaszmodel.8.weightzmodel.8.biaszmodel.10.weightzmodel.10.biaszmodel.12.weightzmodel.12.biaszmodel.14.weightzmodel.14.biasmodel.3.weightzmodel.3.biaszmodel.3.running_meanzmodel.3.running_varzmodel.5.weightzmodel.5.biaszmodel.6.running_meanzmodel.6.running_var)iddetect)super__init__r   has_allhas_any)self	__class__s    _/home/wildlama/miniconda3/lib/python3.13/site-packages/spandrel/architectures/DnCNN/__init__.pyr   DnCNNArch.__init__   s    ''  $$ (((&(&(&)')')' !(((&.-(&(&.-(&!% 	 (	
    c                   SnUS   R                   S   nUS   R                   S   n[        US5      nUSUS-
   S3   R                   S   nSU;   a  S	nUS
-
  S
-  S-   nOSnUS
-
  S-  S-   nX6:w  a  Sn[        UUUUUUS9n	U S3U S3/n
US:X  a  U
R                  SS5        US-  nSS jn[	        U	UU SU
SSSUU[        5       US9$ )Nr   r   r   r   modelzmodel.z.weightr   BRr      RFDnCNN)in_ncout_ncncnbact_modemoder(   r)   c                    U R                   S:X  aX  UR                  u    p#nSn[        R                  " SSX45      R	                  U5      U-   nU " [        R
                  " X/SS95      $ U " U5      $ )Nr%   g?r   )dim)r+   shapetorchzerostocat)r!   image_HWnoise_level	noise_maps          r   callDnCNNArch.load.<locals>.callf   sg    zzX%"[[
1&!KK1a366u=K	UYY'9qABBU|#r   RestorationFT)
architecturepurposetagssupports_halfsupports_bfloat16scaleinput_channelsoutput_channelssize_requirementscall_fn)r!   r   r3   torch.TensorreturnrF   )r.   r   r   insertr
   r   )r   
state_dictr+   r&   r(   layersr'   r*   r)   r!   r>   r9   s               r   loadDnCNNArch.load?   s3    ,3+,2215()//2Z1fVAXJg67==a@z)H1*"Q&BH1*"Q&B?D
 $b	bT9%8KK8$QJE
	$ $!" ".0
 	
r    )rG   None)rI   r   rG   zImageModelDescriptor[DnCNN])	__name__
__module____qualname____firstlineno__r   r   rK   __static_attributes____classcell__)r   s   @r   r   r      s    )
V ?
 ?
r   r   r   )
__future__r   typingr   r/   typing_extensionsr   spandrel.utilr   r   __helpers.model_descriptorr	   r
   r   r   __arch.network_dncnnr   r   __all__rM   r   r   <module>r\      sC    "   & 3  (l
U# l
^ 
 r   