
    9iN                        S SK r S SKrS SKrS SKrS SKrS SKJr  S SKJr  S SKJ	r
  SSKJrJrJrJr   " S S\R                   5      rS	 r " S
 S\R                   5      r " S S\R                   5      r " S S\R                   5      r " S S\R                   5      r " S S\R                   5      r " S S\R                   5      r " S S\R                   5      r " S S\R                   5      r " S S\R                   5      r " S S\R                   5      r " S S\R                   5      r " S  S!\R<                  5      r " S" S#\R                   5      r  " S$ S%\R                   5      r!g)&    N)nn)Function)
functional   )FusedLeakyReLUconv2d_gradfixfused_leaky_relu	upfirdn2dc                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )	PixelNorm   c                 "   > [         TU ]  5         g N)super__init__self	__class__s    n/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/models/cv/face_generation/stylegan2.pyr   PixelNorm.__init__   s        c           	      h    U[         R                  " [         R                  " US-  SSS9S-   5      -  $ )N   r   T)dimkeepdim:0yE>)torchrsqrtmeanr   inputs     r   forwardPixelNorm.forward   s3    u{{JJuaxQ5<> > 	>r    __name__
__module____qualname____firstlineno__r   r"   __static_attributes____classcell__r   s   @r   r   r      s    > >r   r   c                     [         R                  " U [         R                  S9n U R                  S:X  a  U S S S 24   U S S 2S 4   -  n X R	                  5       -  n U $ )N)dtyper   )r   tensorfloat32ndimsum)ks    r   make_kernelr4      sM    Qemm,Avv{dAgJ1d7#LAHr   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )Upsample%   c                    > [         TU ]  5         X l        [        U5      US-  -  nU R	                  SU5        UR
                  S   U-
  nUS-   S-  U-   S-
  nUS-  nXE4U l        g )Nr   kernelr   r   r   r   factorr4   register_buffershapepadr   r9   r;   ppad0pad1r   s         r   r   Upsample.__init__'   sq    V$	2Xv.LLOf$A!|f$q(Av<r   c                 Z    [        XR                  U R                  SU R                  S9nU$ Nr   )updownr>   r
   r9   r;   r>   r   r!   outs      r   r"   Upsample.forward5   s)    ;;4;;QDHHF 
r   r;   r>   r   r%   r,   s   @r   r6   r6   %         r   r6   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )
Downsample<   c                    > [         TU ]  5         X l        [        U5      nU R	                  SU5        UR
                  S   U-
  nUS-   S-  nUS-  nXE4U l        g )Nr9   r   r   r   r:   r?   s         r   r   Downsample.__init__>   s^    V$Xv.LLOf$A!|Av<r   c                 Z    [        XR                  SU R                  U R                  S9nU$ rE   rH   rI   s      r   r"   Downsample.forwardL   s)    ;;14;;DHHF 
r   rL   rM   r%   r,   s   @r   rP   rP   <   rN   r   rP   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )BlurS   c                    > [         TU ]  5         [        U5      nUS:  a  XS-  -  nU R                  SU5        X l        g )Nr   r   r9   )r   r   r4   r<   r>   )r   r9   r>   upsample_factorr   s       r   r   Blur.__init__U   sB    V$Q12FXv.r   c                 B    [        XR                  U R                  S9nU$ )Nr>   )r
   r9   r>   rI   s      r   r"   Blur.forwarda   s    {{9
r   r]   )r   r%   r,   s   @r   rW   rW   S   s    
 r   rW   c                   >   ^  \ rS rSr   SU 4S jjrS rS rSrU =r$ )EqualConv2dg   c                 \  > [         TU ]  5         [        R                  " [        R
                  " X!X35      5      U l        S[        R                  " XS-  -  5      -  U l	        X@l
        XPl        U(       a0  [        R                  " [        R                  " U5      5      U l        g S U l        g )Nr   r   )r   r   r   	Parameterr   randnweightmathsqrtscalestridepaddingzerosbias)r   
in_channelout_channelkernel_sizeri   rj   rl   r   s          r   r   EqualConv2d.__init__i   sz     	llKKJL:Q#>??
U[[%=>DI DIr   c                     [         R                  " UU R                  U R                  -  U R                  U R
                  U R                  S9nU$ )N)rl   ri   rj   )r   conv2dre   rh   rl   ri   rj   rI   s      r   r"   EqualConv2d.forward   sA    ##KK$**$;;LL
 
r   c                    U R                   R                   SU R                  R                  S    SU R                  R                  S    SU R                  R                  S    SU R                   SU R
                   S3$ )	N(r   , r   r   z	, stride=z
, padding=))r   r&   re   r=   ri   rj   r   s    r   __repr__EqualConv2d.__repr__   s|    ~~&&'q):):1)=(>bARARSTAU@V W!!!$%Yt{{m:dll^STV	
r   )rl   rj   rh   ri   re   )r   r   T	r&   r'   r(   r)   r   r"   ry   r*   r+   r,   s   @r   r`   r`   g   s"     ,	
 
r   r`   c                   @   ^  \ rS rSr    SU 4S jjrS rS rSrU =r$ )EqualLinear   c                   > [         TU ]  5         [        R                  " [        R
                  " X!5      R                  U5      5      U l        U(       a?  [        R                  " [        R                  " U5      R                  U5      5      U l
        OS U l
        X`l        S[        R                  " U5      -  U-  U l        XPl        g Nr   )r   r   r   rc   r   rd   div_re   rk   fill_rl   
activationrf   rg   rh   lr_mul)r   in_dimout_dimrl   	bias_initr   r   r   s          r   r   EqualLinear.__init__   s     	ll5;;w#?#D#DV#LMU[[%9%?%?	%JKDI DI$$))F++v5
r   c                 P   U R                   (       aQ  [        R                  " XR                  U R                  -  5      n[        X R                  U R                  -  5      nU$ [        R                  " XR                  U R                  -  U R                  U R                  -  S9nU$ )Nrl   )r   Flinearre   rh   r	   rl   r   rI   s      r   r"   EqualLinear.forward   sy    ??((5++

":;C"3		DKK(?@C 
 (({{TZZ/dii$++6MOC 
r   c                     U R                   R                   SU R                  R                  S    SU R                  R                  S    S3$ )Nru   r   rv   r   rw   )r   r&   re   r=   rx   s    r   ry   EqualLinear.__repr__   sJ    ~~&&'q):):1)=(>bARARSTAU@VVWX	
r   )r   rl   r   rh   re   )Tr   r   Nr{   r,   s   @r   r}   r}      s%    
  ,	
 
r   r}   c                   F   ^  \ rS rSrSSS/ SQS4U 4S jjrS rS rSrU =r$ )	ModulatedConv2d   TFr      r   r   c
           	      ^  > [         TU ]  5         SU l        X0l        Xl        X l        X`l        Xpl        U(       a=  Sn
[        U5      U
-
  US-
  -
  nUS-   S-  U
-   S-
  nUS-  S-   n[        XU4U
S9U l
        U(       a3  Sn
[        U5      U
-
  US-
  -   nUS-   S-  nUS-  n[        XU4S9U l
        XS-  -  nS[        R                  " U5      -  U l        US-  U l        [        R                   " ["        R$                  " SX!X35      5      U l        [)        XASS9U l        XPl        Xl        g )Nr   r   r   )r>   rZ   r]   )r   )r   r   epsro   rm   rn   upsample
downsamplelenrW   blurrf   rg   rh   rj   r   rc   r   rd   re   r}   
modulation
demodulatefused)r   rm   rn   ro   	style_dimr   r   r   blur_kernelr   r;   r@   rA   rB   fan_inr   s                  r   r   ModulatedConv2d.__init__   s<    	&$& $F[!F*{Q?AEa<&(1,D6A:DvGDI F[!F*{Q?AEa<D6D[Tl;DI1n,6**
"a'llKK;KMO &iqI$
r   c                     U R                   R                   SU R                   SU R                   SU R                   SU R
                   SU R                   S3$ )Nru   rv   z, upsample=z, downsample=rw   )r   r&   rm   rn   ro   r   r   rx   s    r   ry   ModulatedConv2d.__repr__   s`    ~~&&'q(9D<L<L;MRPTP`P`Oa bmDOO3DAG	Hr   c                    UR                   u  p4pVU R                  (       Gd  U R                  U R                  R	                  S5      -  nU R                  U5      nU R                  (       aW  UR                  S5      UR                  USUSS5      -  nUR                  5       R                  S5      S-   R                  5       n	XR                  X4SS5      -  nU R                  (       a:  UR                  SS5      n[        R                   " XSSS9n
U R#                  U
5      n
OXU R$                  (       a(  U R#                  U5      n[        R&                  " XSSS9n
O[        R&                  " XU R(                  S9n
U R                  (       a  U
W	R                  USSS5      -  n
U
$ U R                  U5      R                  USUSS5      nU R                  U R                  -  U-  nU R                  (       aY  [*        R                  " UR-                  S5      R                  / SQ5      S-   5      nX{R                  X0R.                  SSS5      -  nUR                  X0R.                  -  UU R0                  U R0                  5      nU R                  (       a  UR                  SX4-  XV5      nUR                  X0R.                  UU R0                  U R0                  5      nUR                  SS5      R                  X4-  U R.                  U R0                  U R0                  5      n[        R                   " XSSUS	9n
U
R                   u    pnU
R                  X0R.                  XV5      n
U R#                  U
5      n
U
$ U R$                  (       a{  U R#                  U5      nUR                   u    pnUR                  SX4-  XV5      n[        R&                  " XSSUS	9n
U
R                   u    pnU
R                  X0R.                  XV5      n
U
$ UR                  SX4-  XV5      n[        R&                  " XU R(                  US
9n
U
R                   u    pnU
R                  X0R.                  XV5      n
U
$ )Nr   r   r   r      r   r   )rj   ri   rj   )rj   ri   groups)rj   r   )r=   r   rh   re   squeezer   r   	unsqueezeviewsquarer2   r   reshaper   	transposer   conv_transpose2dr   r   rr   rj   r   powrn   ro   )r   r!   stylebatchrm   heightwidthre   wdcoefsrJ   demod_s                r   r"   ModulatedConv2d.forward   s   +0;;(6zzzZZ$++"5"5a"88FOOE*E$$Q'%**UAz156+8 8((*..3d:AACMM%QBBE}}))!Q/$551Q8iin		%($++E1QO %++4<<9 FKKr1a88J&++E1j!QGdkk)E1??KK

1 1 1) <t CDEjj0@0@!QJJFU%5%55z!--t/?/?A ==JJq%"4fDE[[(8(8*!%!1!143C3CEF%%a+33E4F484D4D484D4D484D4DFF !11q5BC"%))Aq%((5"2"2FBC))C.C$ 
! __IIe$E"'++Aq%JJq%"4fDE ''q5BC"%))Aq%((5"2"2FBC 
 JJq%"4fDE ''t||ECC"%))Aq%((5"2"2FBC
r   )r   r   r   r   r   rm   ro   r   rn   rj   rh   r   re   )	r&   r'   r(   r)   r   ry   r"   r*   r+   r,   s   @r   r   r      s,      0dH
I Ir   r   c                   2   ^  \ rS rSrU 4S jrSS jrSrU =r$ )NoiseInjectioni?  c                    > [         TU ]  5         [        R                  " [        R
                  " S5      5      U l        g r   )r   r   r   rc   r   rk   re   r   s    r   r   NoiseInjection.__init__A  s&    ll5;;q>2r   c                     Uc0  UR                   u  p4pVUR                  USXV5      R                  5       nXR                  U-  -   $ r   )r=   	new_emptynormal_re   )r   imagenoiser   r   r   r   s          r   r"   NoiseInjection.forwardF  sB    =&+kk#EfOOE1f<DDFE{{U***r   )re   r   r%   r,   s   @r   r   r   ?  s    3
+ +r   r   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )ConstantInputiN  c                    > [         TU ]  5         [        R                  " [        R
                  " SXU5      5      U l        g r   )r   r   r   rc   r   rd   r!   )r   channelsizer   s      r   r   ConstantInput.__init__P  s+    \\%++a"EF
r   c                 `    UR                   S   nU R                  R                  USSS5      nU$ )Nr   r   )r=   r!   repeat)r   r!   r   rJ   s       r   r"   ConstantInput.forwardU  s.    Ajjq!Q/
r   )r!   )r   r%   r,   s   @r   r   r   N  s    G
 r   r   c                   @   ^  \ rS rSrS/ SQS4U 4S jjrSS jrSrU =r$ )	
StyledConvi\  Fr   Tc           
         > [         TU ]  5         [        UUUUUUUS9U l        [	        5       U l        [        U5      U l        g )N)r   r   r   )r   r   r   convr   r   r   activate)	r   rm   rn   ro   r   r   r   r   r   s	           r   r   StyledConv.__init__^  sK     	##!
	 $%
 '{3r   c                 h    U R                  X5      nU R                  XCS9nU R                  U5      nU$ )Nr   )r   r   r   )r   r!   r   r   rJ   s        r   r"   StyledConv.forwardy  s3    ii%jjj*mmC 
r   )r   r   r   r   r%   r,   s   @r   r   r   \  s      46 r   r   c                   >   ^  \ rS rSrS/ SQ4U 4S jjrSS jrSrU =r$ )ToRGBi  Tr   c                    > [         TU ]  5         U(       a  [        U5      U l        [	        USSUSS9U l        [        R                  " [        R                  " SSSS5      5      U l
        g )Nr   r   F)r   )r   r   r6   r   r   r   r   rc   r   rk   rl   )r   rm   r   r   r   r   s        r   r   ToRGB.__init__  sU    
 	$[1DM#1iE;	LLQ1a!89	r   c                 t    U R                  X5      nX@R                  -   nUb  U R                  U5      nXC-   nU$ r   )r   rl   r   )r   r!   r   skiprJ   s        r   r"   ToRGB.forward  s;    ii%IIo==&D*C
r   )rl   r   r   r   r%   r,   s   @r   r   r     s    
 )	:	 	r   r   c                   `   ^  \ rS rSrS/ SQS4U 4S jjrS rS rS r       SS	 jrS
r	U =r
$ )	Generatori  r   r   g{Gz?c                   > [         TU ]  5         Xl        X l        [	        5       /n[        U5       H  nUR                  [        UUUSS95        M      [        R                  " U6 U l
        SSSSSU-  SU-  SU-  SU-  SU-  S	.	U l        [        U R                  S
   5      U l        [        U R                  S
   U R                  S
   SUUS9U l        [!        U R                  S
   USS9U l        [%        [&        R(                  " US5      5      U l        U R*                  S-
  S-  S-   U l        [        R.                  " 5       U l        [        R.                  " 5       U l        [        R.                  " 5       U l        [        R6                  " 5       U l        U R                  S
   n	[        U R,                  5       HG  n
U
S-   S-  nSSSU-  SU-  /nU R8                  R;                  SU
 3[<        R>                  " U6 5        MI     [        SU R*                  S-   5       H  nU R                  SU-     nU R0                  R                  [        U	USUSUS95        U R0                  R                  [        UUSUUS95        U R4                  R                  [!        X5      5        Un	M     U R*                  S-  S-
  U l         g )Nfused_lrelu)r   r            @       r   	r      r   r   r   r   r   r   i   r   r   )r   F)r   r   r      noise_T)r   r   )!r   r   r   r   r   rangeappendr}   r   
Sequentialr   channelsr   r!   r   conv1r   to_rgb1intrf   loglog_size
num_layers
ModuleListconvs	upsamplesto_rgbsModulenoisesr<   r   rd   n_latent)r   r   r   n_mlpchannel_multiplierr   lr_mlplayersirm   	layer_idxresr=   rn   r   s                 r   r   Generator.__init__  s    		"+uAMM!,	./  ]]F+
 (())(((())

 #4==#34
MM!MM!#%
 T]]1-y5IDHHT1-.==1,1A5]]_
}}iik]]1%
t/Iq=Q&C1c61c6*EKK''&(<(-U(;= 0 q$--!+,A--1-KJJ! + JJ +-. LLk =>$J/ -2 )A-r   c                 6   U R                   R                   R                  n[        R                  " SSSSUS9/n[	        SU R
                  S-   5       HB  n[	        S5       H0  nUR                  [        R                  " SSSU-  SU-  US95        M2     MD     U$ )Nr   r   devicer   r   )r!   r  r   rd   r   r   r   )r   r  r   r   r   s        r   
make_noiseGenerator.make_noise  s    !!((++aD$v>?q$--!+,A1Xekk!Q1ad6JK  - r   c                     [         R                  " XR                  U R                  R                  R                  S9nU R                  U5      R                  SSS9nU$ )Nr  r   T)r   )r   rd   r   r!   r  r   r   )r   r   	latent_inlatents       r   mean_latentGenerator.mean_latent  sM    KKnnTZZ-=-=-D-DF	I&++At+<r   c                 $    U R                  U5      $ r   )r   r    s     r   
get_latentGenerator.get_latent  s    zz%  r   c	           	         U(       d   U V	s/ s H  oR                  U	5      PM     nn	UcT  U(       a  S /U R                  -  nO<[        U R                  5       V
s/ s H  n
[        U R                  SU
 35      PM     nn
US:  a&  / nU H  nUR                  UXLU-
  -  -   5        M     Un[        U5      S:  aK  U R                  nUS   R                  S:  a&  US   R                  S5      R                  SUS5      nOUS   nOUc$  [        R                  " SU R                  S-
  5      nUS   R                  S5      R                  SUS5      nUS   R                  S5      R                  SU R                  U-
  S5      n[        R                  " X/S5      nU R                  U5      nU R!                  XS S 2S4   US   S9nU R#                  XS S 2S4   5      nSn
[%        U R&                  S S S2   U R&                  SS S2   USS S2   USS S2   U R(                  5       H@  u  nnnnnU" XS S 2U
4   US9nU" XS S 2U
S-   4   US9nU" XS S 2U
S-   4   U5      nU
S-  n
MB     UnU(       a  UU4$ US 4$ s  sn	f s  sn
f )Nr   r   r   r   r   r   )r   r   r   getattrr   r   r   r   r1   r   r   randomrandintr   catr!   r   r   zipr   r   )r   stylesreturn_latentsinject_index
truncationtruncation_latentinput_is_latentr   randomize_noisesr   style_tr   r  latent2rJ   r   r   conv2noise1noise2to_rgbr   s                          r   r"   Generator.forward  s    -34VjjmVF4=0 #4??33 DKK6!63  
 >G0!+7H/H!I J K   Fv;?==Lay~~!,,Q/66q,J   #%~~a1BCAY((+221lAFFQi))!,334==</4G YY0!4Fjj jjQTl%(j;||C1.47

3Q3ADqD!15A;add50E5&&& AqD\8CAq1uH-V<C#aQh/6DFA5 &=  $;y 5s   I:#I?)r   r   r   r!   r   r   r   r   r   r   r   r   r   r   )FNr   NFNT)r&   r'   r(   r)   r   r  r  r  r"   r*   r+   r,   s   @r   r   r     sG      Y.v	! H Hr   r   c                   8   ^  \ rS rSrS/ SQSS4U 4S jjrSrU =r$ )	ConvLayeri[  Fr   Tc                   > / nU(       aG  Sn	[        U5      U	-
  US-
  -   n
U
S-   S-  nU
S-  nUR                  [        X[U4S95        SnSU l        OSnUS-  U l        UR                  [	        UUUU R                  UU=(       a    U(       + S95        U(       a  UR                  [        X&S95        [        TU ]  " U6   g )Nr   r   r]   r   )rj   ri   rl   r   )r   r   rW   rj   r`   r   r   r   )r   rm   rn   ro   r   r   rl   r   r   r;   r@   rA   rB   ri   r   s                 r   r   ConvLayer.__init__]  s     F[!F*{Q?AEa<D6DMM${t=>FDL F&!+DL*(l	 MM.@A&!r   r   )r&   r'   r(   r)   r   r*   r+   r,   s   @r   r'  r'  [  s      (" ("r   r'  c                   8   ^  \ rS rSr/ SQ4U 4S jjrS rSrU =r$ )ResBlocki  r   c           	         > [         TU ]  5         [        XS5      U l        [        XSSS9U l        [        UUSSSSS9U l        g )Nr   T)r   r   F)r   r   rl   )r   r   r'  r   r!  r   )r   rm   rn   r   r   s       r   r   ResBlock.__init__  sJ    zq9
zdK
	r   c                     U R                  U5      nU R                  U5      nU R                  U5      nX#-   [        R                  " S5      -  nU$ )Nr   )r   r!  r   rf   rg   )r   r!   rJ   r   s       r   r"   ResBlock.forward  sD    jjjjoyyzTYYq\)
r   )r   r!  r   r%   r,   s   @r   r+  r+    s    <H  r   r+  c                   :   ^  \ rS rSrS/ SQ4U 4S jjrS rSrU =r$ )Discriminatori  r   r   c           
      0  > [         T
U ]  5         SSSSSU-  SU-  SU-  SU-  SU-  S.	n[        SXA   S	5      /n[        [        R
                  " US
5      5      nXA   n[        US
S5       H+  nUS
US	-
  -     n	UR                  [        XyU5      5        U	nM-     [        R                  " U6 U l        SU l        S	U l        [        US	-   US   S5      U l        [        R                  " [        US   S-  S-  US   SS9[        US   S	5      5      U l        g )Nr   r   r   r   r   r   r   r   r   r   r   r   r   )r   )r   r   r'  r   rf   r   r   r   r+  r   r   r   stddev_groupstddev_feat
final_convr}   final_linear)r   r   r   r   r   r   r   rm   r   rn   r   s             r   r   Discriminator.__init__  s8    (())(((())

 1hna01txxa()^
xB'A"1q1u:.KLL*;GH$J ( ]]E*
#JNHQKCMMa!#Xa[]LQ'
r   c                    U R                  U5      nUR                  u  p4pV[        X0R                  5      nUR	                  USU R
                  X@R
                  -  XV5      n[        R                  " UR                  SSS9S-   5      nUR                  / SQSS9R                  S	5      nUR                  US
XV5      n[        R                  " X(/S
5      nU R                  U5      nUR	                  US5      nU R                  U5      nU$ )Nr   r   F)unbiasedr   r   T)keepdimsr   r   )r   r=   minr3  r   r4  r   rg   varr   r   r   r  r5  r6  )	r   r!   rJ   r   r   r   r   groupstddevs	            r   r"   Discriminator.forward  s    jj(+		%E,,-%T%5%5!%5%55vFFJJq5J9D@AY6>>qAua7iiq)ooc"hhub!$
r   )r   r5  r6  r4  r3  r%   r,   s   @r   r1  r1    s    01| &
P r   r1  )"	functoolsrf   operatorr  r   r   torch.autogradr   torch.nnr   r   opr   r   r	   r
   r   r   r4   r6   rP   rW   r`   r}   r   r   r   r   r   r   r   r'  r+  r1  r$   r   r   <module>rE     s$         # $ K K>		 >ryy . .299 ('
")) '
T&
")) &
RBbii BJ+RYY +BII # #LBII 8z		 zz*" *"Zryy 4;BII ;r   