
    9i)                     h   S SK r S SKJr  S SKJs  Jr   " S S\R                  5      r " S S\R                  5      r\	S:X  a  \ R                  " SSS	S	5      R                  5       r\" S
SSS5      R                  5       r\" \5      r\R                  5       u  rr\R$                  " \\\SSS9r\" \\-
  5        \ R                  " SSS	S	5      R                  5       S-  r\" SSSSSS9R                  5       r\" \5      r\R                  5       u  rr\R$                  " \\\SSS9r\" \\-
  5        gg)    Nc                   4   ^  \ rS rSrU 4S jrS rS rSrU =r$ )
SeqConv3x3
   c                   > [         [        U ]  5         Xl        X l        X0l        U R                  S:X  a  [        X4-  5      U l        [        R                  R                  U R                  U R                  SSS9nUR                  U l        UR                  U l        [        R                  R                  U R                  U R
                  SS9nUR                  U l        UR                  U l        g U R                  S:X  Ga  [        R                  R                  U R                  U R
                  SSS9nUR                  U l        UR                  U l        [        R"                  " U R
                  SSS4S9S	-  n[        R$                  " U5      U l        [        R"                  " U R
                  5      S	-  n[        R(                  " XR
                  45      n[        R$                  " U5      U l        [        R*                  " U R
                  SSS4[        R,                  S
9U l        [1        U R
                  5       Hu  n	SU R.                  U	SSS4'   SU R.                  U	SSS4'   SU R.                  U	SSS4'   SU R.                  U	SSS4'   SU R.                  U	SSS4'   SU R.                  U	SSS4'   Mw     [        R$                  " U R.                  SS9U l        g U R                  S:X  Ga  [        R                  R                  U R                  U R
                  SSS9nUR                  U l        UR                  U l        [        R"                  " U R
                  SSS4S9S	-  n[        R$                  " [        R2                  " U5      5      U l        [        R"                  " U R
                  5      S	-  n[        R(                  " XR
                  45      n[        R$                  " [        R2                  " U5      5      U l        [        R*                  " U R
                  SSS4[        R,                  S
9U l        [1        U R
                  5       Hu  n	SU R.                  U	SSS4'   SU R.                  U	SSS4'   SU R.                  U	SSS4'   SU R.                  U	SSS4'   SU R.                  U	SSS4'   SU R.                  U	SSS4'   Mw     [        R$                  " U R.                  SS9U l        g U R                  S:X  Ga  [        R                  R                  U R                  U R
                  SSS9nUR                  U l        UR                  U l        [        R"                  " U R
                  SSS4S9S	-  n[        R$                  " [        R2                  " U5      5      U l        [        R"                  " U R
                  5      S	-  n[        R(                  " XR
                  45      n[        R$                  " [        R2                  " U5      5      U l        [        R*                  " U R
                  SSS4[        R,                  S
9U l        [1        U R
                  5       Hb  n	SU R.                  U	SSS4'   SU R.                  U	SSS4'   SU R.                  U	SSS4'   SU R.                  U	SSS4'   SU R.                  U	SSS4'   Md     [        R$                  " U R.                  SS9U l        g [5        S5      e)Nconv1x1-conv3x3   r   kernel_sizepadding   )r
   conv1x1-sobelx)sizegMbP?)dtype      ?g       @   g      g       F)datarequires_gradconv1x1-sobelyconv1x1-laplaciang      z%the type of seqconv is not supported!)superr   __init__type
inp_planes
out_planesint
mid_planestorchnnConv2dweightk0biasb0k1b1randn	Parameterscalereshapezerosfloat32maskrangeFloatTensor
ValueError)selfseq_typer   r   depth_multiplierconv0conv1r(   r"   i	__class__s             i/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/models/cv/super_resolution/ecb.pyr   SeqConv3x3.__init__   s   j$(*	$$99))!*"?@DOHHOOa $ LEllDGjjDGHHOOa $ AEllDGjjDGYY**HHOOa $ LEllDGjjDG KKdooq!Q%?@4GEe,DJ ;;t/$6D==':;DT*DIT__aA$>*/--9DI4??+(+		!Q1*%(+		!Q1*%(+		!Q1*%(,		!Q1*%(,		!Q1*%(,		!Q1*% , $))5IDIYY**HHOOa $ LEllDGjjDG KKdooq!Q%?@4GEe&7&7&>?DJ ;;t/$6D==':;DU%6%6t%<=DIT__aA$>*/--9DI4??+(+		!Q1*%(+		!Q1*%(+		!Q1*%(,		!Q1*%(,		!Q1*%(,		!Q1*% , $))5IDIYY--HHOOa $ LEllDGjjDG KKdooq!Q%?@4GEe&7&7&>?DJ ;;t/$6D==':;DU%6%6t%<=DIT__aA$>*/--9DI4??+(+		!Q1*%(+		!Q1*%(+		!Q1*%(+		!Q1*%(,		!Q1*% , $))5IDIDEE    c                    U R                   S:X  a  [        R                  " XR                  U R                  SS9n[        R
                  " USSS5      nU R                  R                  SSSS5      nX2S S 2S S 2SS2S S 24'   X2S S 2S S 2SS 2S S 24'   X2S S 2S S 2S S 2SS24'   X2S S 2S S 2S S 2SS 24'   [        R                  " X R                  U R                  SS9nU$ [        R                  " XR                  U R                  SS9n[        R
                  " USSS5      nU R                  R                  SSSS5      nX2S S 2S S 2SS2S S 24'   X2S S 2S S 2SS 2S S 24'   X2S S 2S S 2S S 2SS24'   X2S S 2S S 2S S 2SS 24'   [        R                  " UU R                  U R                  -  U R                  SU R                  S9nU$ )	Nr   r   )inputr    r"   stride)r   r   r   r   constantr   )r;   r    r"   r<   groups)r   Fconv2dr!   r#   padviewr$   r%   r(   r,   r"   r   )r0   xy0b0_pady1s        r7   forwardSeqConv3x3.forwardq   s   99))''JBr<Q7BWW\\!RA.F%q!QqS!|%q!RS!|%q!Q!|%q!Q|77KB" 	 ''JBr<Q7BWW\\!RA.F%q!QqS!|%q!RS!|%q!Q!|%q!Q|zzDII-YY(B 	r9   c           	         U R                   R                  5       nUS:  a  S nU R                  S:X  a  [        R                  " U R
                  U R                   R                  SSSS5      S9n[        R                  " SU R                  SSUS9U R                  R                  SSSS5      -  n[        R                  " X0R
                  S9R                  S5      U R                  -   nX#4$ U R                  U R                  -  n[        R                  " U R                   U R                   SS4US9n[#        U R                   5       H  nXFSS S 2S S 24   XVUS S 2S S 24'   M     U R$                  n[        R                  " XPR                   R                  SSSS5      S9n[        R                  " SU R                   SSUS9U R                  R                  SSSS5      -  n[        R                  " X5S9R                  S5      U-   nX#4$ )	Nr   r   r   r   r   )r;   r    devicer>   )r!   
get_devicer   r@   rA   r$   permuter   onesr   r#   rC   r%   r(   r,   r*   r   r-   r"   )r0   rL   RKRBtmpr$   r5   r%   s           r7   
rep_paramsSeqConv3x3.rep_params   s   ##%A:F99))1a0KLB4??Aq9;?77<<r1a<!!B 77388>HB v **tyy(Cdoot1E$*,B4??+!$1aZaA: ,B77??1aA+FGB4??Aq9;?77<<r1a<!!B .33B9B>Bvr9   )r#   r%   r"   r   r!   r$   r,   r   r   r(   r   	__name__
__module____qualname____firstlineno__r   rH   rS   __static_attributes____classcell__r6   s   @r7   r   r   
   s    cFJ> r9   r   c                   <   ^  \ rS rSr  SU 4S jjrS rS rSrU =r$ )ECB   c                   > [         [        U ]  5         X0l        Xl        X l        X@l        U(       a"  U R                  U R
                  :X  a  SU l        OSU l        [        R                  R                  U R                  U R
                  SSS9U l        [        SU R                  U R
                  U R                  5      U l        [        SU R                  U R
                  S5      U l        [        S	U R                  U R
                  S5      U l        [        S
U R                  U R
                  S5      U l        U R                  S:X  a$  [        R"                  " U R
                  S9U l        g U R                  S:X  a  [        R&                  " SS9U l        g U R                  S:X  a  [        R(                  " SSS9U l        g U R                  S:X  a  [        R*                  " 5       U l        g U R                  S:X  a  g [-        S5      e)NTFr   r   r	   r   r   r>   r   r   prelu)num_parametersrelu)inplacerrelugg?)loweruppersoftpluslinearz&The type of activation if not support!)r   r^   r   r2   r   r   act_typewith_idtr   r   r   conv3x3r   conv1x1_3x3conv1x1_sbxconv1x1_sbyconv1x1_lplPReLUactReLURReLUSoftplusr/   )r0   r   r   r2   rj   rk   r6   s         r7   r   ECB.__init__   s    	c4!# 0$$ DOO; DM!DMxxOOT__!Q ' H%&7&*oot7L7LN%&6&*oor;%&6&*oor;%&94??&*oor; ==G#xxt?DH]]f$wwt,DH]]g%xxe48DH]]j({{}DH]]h&EFFr9   c                    U R                   (       ao  U R                  U5      U R                  U5      -   U R                  U5      -   U R	                  U5      -   U R                  U5      -   nU R                  (       a  X!-  nO)U R                  5       u  p4[        R                  " XUSSS9nU R                  S:w  a  U R                  U5      nU$ )Nr   r;   r    r"   r<   r   ri   )trainingrl   rm   rn   ro   rp   rk   rS   r@   rA   rj   rr   )r0   rD   yrP   rQ   s        r7   rH   ECB.forward   s    ==Q  #$  #$   #$   #	$A
 }}__&FBq"QJA==H$Ar9   c                 v   U R                   R                  U R                   R                  p!U R                  R	                  5       u  p4U R
                  R	                  5       u  pVU R                  R	                  5       u  pxU R                  R	                  5       u  pX-   U-   U-   U	-   X$-   U-   U-   U
-   pU R                  (       ar  UR                  5       nUS:  a  S n[        R                  " U R                  U R                  SSUS9n[        U R                  5       H  nSXUSS4'   M     SnX-   UU-   pX4$ )Nr   r   rK   r   r   g        )rl   r    r"   rm   rS   rn   ro   rp   rk   rM   r   r*   r   r-   )r0   K0B0K1B1K2B2K3B3K4B4rP   rQ   rL   K_idtr5   B_idts                    r7   rS   ECB.rep_params   s   $$dll&7&7B!!,,.!!,,.!!,,.!!,,.'B,#b(BGbL2,=,BB==]]_FzKK!QvGE4??+$'Aqj! ,EZevr9   )rr   rj   rm   rp   rn   ro   rl   r2   r   r   rk   )ra   FrU   r\   s   @r7   r^   r^      s!     "(GT  r9   r^   __main__r   r      r   r   rx      ri   T)rj   rk   )r   torch.nnr   torch.nn.functional
functionalr@   Moduler   r^   rV   r&   cudarD   convrE   rS   rP   rQ   rA   rG   printecb r9   r7   <module>r      s4  
    a aHN")) Nb z 	Aq!Q$$&A'Aq1668D	aB__FB	
"2a	CB	"r'N 	Aq!Q$$&,A
aA4
8
=
=
?C	QB^^FB	
"2a	CB	"r'N# r9   