
    9iYS                        S SK rS SKrS SKJr  S SKJs  Jr  S/rS r	SS jr
 " S S\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                  R                  5      rg)    NAutoencoderKLc                 4    U [         R                  " U 5      -  $ N)torchsigmoid)xs    w/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/models/multi_modal/videocomposer/autoencoder.pynonlinearityr
      s    u}}Q    c                 @    [         R                  R                  XSSS9$ )Ngư>T)
num_groupsnum_channelsepsaffine)r   nn	GroupNorm)in_channelsr   s     r	   	Normalizer      s'    88T$  P Pr   c                   D    \ rS rSrS
S jrS rSS jr/ SQ4S jrS rS	r	g)DiagonalGaussianDistribution   c                    Xl         [        R                  " USSS9u  U l        U l        [        R
                  " U R                  SS5      U l        X l        [        R                  " SU R                  -  5      U l        [        R                  " U R                  5      U l	        U R                  (       aN  [        R                  " U R                  5      R                  U R                   R                  S9=U l	        U l        g g )N      dimg      >g      4@      ?device)
parametersr   chunkmeanlogvarclampdeterministicexpstdvar
zeros_liketor   )selfr    r%   s      r	   __init__%DiagonalGaussianDistribution.__init__   s    $!&Z!B	4;kk$++ud;*99S4;;./99T[[)"'"2"2		#2T__%;%;2<=DHtx r   c                     U R                   U R                  [        R                  " U R                   R                  5      R                  U R                  R                  S9-  -   nU$ )Nr   )r"   r'   r   randnshaper*   r    r   r+   r   s     r	   sample#DiagonalGaussianDistribution.sample"   sL    II5;;IIOO$Rt'='=R>? ?r   Nc                    U R                   (       a  [        R                  " S/5      $ UcV  S[        R                  " [        R                  " U R
                  S5      U R                  -   S-
  U R                  -
  / SQS9-  $ S[        R                  " [        R                  " U R
                  UR
                  -
  S5      UR                  -  U R                  UR                  -  -   S-
  U R                  -
  UR                  -   / SQS9-  $ )N        r   r         ?r   r      r   )r%   r   Tensorsumpowr"   r(   r#   )r+   others     r	   klDiagonalGaussianDistribution.kl'   s    <<%%}UYYIIdii+dhh6<t{{J!# # # UYYIIdii%**4a8599Dhh*+-0137;;?AFN!# # #r   r7   c                 J   U R                   (       a  [        R                  " S/5      $ [        R                  " S[        R
                  -  5      nS[        R                  " X0R                  -   [        R                  " XR                  -
  S5      U R                  -  -   US9-  $ )Nr5          @r   r   r   )r%   r   r9   nplogpir:   r#   r;   r"   r(   )r+   r2   dimslogtwopis       r	   nll DiagonalGaussianDistribution.nll5   sz    <<%%66#+&UYY{{"ii*A.9:  	r   c                     U R                   $ r   )r"   r+   s    r	   mode!DiagonalGaussianDistribution.mode>   s    yyr   )r%   r#   r"   r    r'   r(   )Fr   )
__name__
__module____qualname____firstlineno__r,   r2   r=   rF   rJ   __static_attributes__ r   r	   r   r      s     	=
#  ) r   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )
DownsampleB   c                    > [         TU ]  5         X l        U R                  (       a&  [        R                  R                  XSSSS9U l        g g Nr8   r   r   kernel_sizestridepaddingsuperr,   	with_convr   r   Conv2dconvr+   r   r]   	__class__s      r	   r,   Downsample.__init__D   B    ">>a1 ( NDI r   c                     U R                   (       a>  Sn[        R                  R                  R	                  XSSS9nU R                  U5      nU$ [        R                  R                  R                  USSS9nU$ N)r   r   r   r   constantr   )rJ   valuer   )rX   rY   r]   r   r   
functionalpadr_   
avg_pool2dr+   r   rj   s      r	   forwardDownsample.forwardL   k    >>C##''Zq'IA		!A  ##..qa.JAr   r_   r]   rL   rM   rN   rO   r,   rm   rP   __classcell__ra   s   @r	   rS   rS   B       N r   rS   c                   :   ^  \ rS rSrSSSS.U 4S jjrS rSrU =r$ )	ResnetBlockV   NFi   )out_channelsconv_shortcuttemb_channelsc                  > [         TU ]  5         Xl        Uc  UOUnX l        X0l        [        U5      U l        [        R                  R                  XSSSS9U l
        US:  a$  [        R                  R                  XR5      U l        [        U5      U l        [        R                  R                  U5      U l        [        R                  R                  X"SSSS9U l        U R                  U R                  :w  a_  U R                  (       a'  [        R                  R                  UUSSSS9U l        g [        R                  R                  UUSSSS9U l        g g )Nr8   r   rW   r   )r\   r,   r   rx   use_conv_shortcutr   norm1r   r   r^   conv1Linear	temb_projnorm2Dropoutdropoutconv2ry   nin_shortcut)r+   r   rx   ry   r   rz   ra   s         r	   r,   ResnetBlock.__init__X   s4    	&&2&:{(!.{+
XX__1Q % K
1"XX__]IDN|,
xx''0XX__Aa % L
t000%%%*XX__  ! &5 &" %*HHOO  ! %4 %! 1r   c                    UnU R                  U5      n[        U5      nU R                  U5      nUb'  X0R                  [        U5      5      S S 2S S 2S S 4   -   nU R	                  U5      n[        U5      nU R                  U5      nU R                  U5      nU R                  U R                  :w  a7  U R                  (       a  U R                  U5      nX-   $ U R                  U5      nX-   $ r   )r}   r
   r~   r   r   r   r   r   rx   r|   ry   r   )r+   r   tembhs       r	   rm   ResnetBlock.forward~   s    JJqMOJJqMNN<#56q!T47GHHAJJqMOLLOJJqMt000%%&&q) u %%a(ur   )r~   r   ry   r   r   r   r}   r   rx   r   r|   rq   rs   s   @r	   rv   rv   V   s#    
 #$"$ $L r   rv   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )	AttnBlock   c                 v  > [         TU ]  5         Xl        [        U5      U l        [
        R                  R                  XSSSS9U l        [
        R                  R                  XSSSS9U l	        [
        R                  R                  XSSSS9U l
        [
        R                  R                  XSSSS9U l        g Nr   r   rW   r\   r,   r   r   normr   r   r^   qkvproj_outr+   r   ra   s     r	   r,   AttnBlock.__init__       &k*	!Aq ! J!Aq ! J!Aq ! J!Aq ( Jr   c                    UnU R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nUR                  u  pgpUR                  XgX-  5      nUR                  SSS5      nUR                  XgX-  5      n[        R                  " X45      n
U
[        U5      S-  -  n
[        R                  R                  R                  U
SS9n
UR                  XgX-  5      nU
R                  SSS5      n
[        R                  " XZ5      nUR                  XgX5      nU R                  U5      nX-   $ Nr   r   r   g      r   r   r   r   r   r0   reshapepermuter   bmmintr   ri   softmaxr   r+   r   h_r   r   r   bcr   ww_s              r	   rm   AttnBlock.forward      YYr]FF2JFF2JFF2J WW
aIIaAE"IIaAIIaAE"YYq_3q6D>"XX  (((3 IIaAE"ZZ1a YYZZa#]]2vr   r   r   r   r   r   r   rq   rs   s   @r	   r   r          J r   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )r      c                 v  > [         TU ]  5         Xl        [        U5      U l        [
        R                  R                  XSSSS9U l        [
        R                  R                  XSSSS9U l	        [
        R                  R                  XSSSS9U l
        [
        R                  R                  XSSSS9U l        g r   r   r   s     r	   r,   r      r   r   c                    UnU R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nUR                  u  pgpUR                  XgX-  5      nUR                  SSS5      nUR                  XgX-  5      n[        R                  " X45      n
U
[        U5      S-  -  n
[        R                  R                  R                  U
SS9n
UR                  XgX-  5      nU
R                  SSS5      n
[        R                  " XZ5      nUR                  XgX5      nU R                  U5      nX-   $ r   r   r   s              r	   rm   r      r   r   r   rq   rs   s   @r	   r   r      r   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Upsample   c                    > [         TU ]  5         X l        U R                  (       a&  [        R                  R                  XSSSS9U l        g g )Nr8   r   rW   r[   r`   s      r	   r,   Upsample.__init__   sB    ">>a1 ( NDI r   c                     [         R                  R                  R                  USSS9nU R                  (       a  U R                  U5      nU$ )Nr@   nearest)scale_factorrJ   )r   r   ri   interpolater]   r_   r1   s     r	   rm   Upsample.forward   sA    HH++Ci , 1>>		!Ar   rp   rq   rs   s   @r	   r   r      s    N r   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )rS      c                    > [         TU ]  5         X l        U R                  (       a&  [        R                  R                  XSSSS9U l        g g rV   r[   r`   s      r	   r,   rb      rc   r   c                     U R                   (       a>  Sn[        R                  R                  R	                  XSSS9nU R                  U5      nU$ [        R                  R                  R                  USSS9nU$ re   rh   rl   s      r	   rm   rn     ro   r   rp   rq   rs   s   @r	   rS   rS      rt   r   c                   @   ^  \ rS rSrSSSSSSS.U 4S jjrS	 rS
rU =r$ )Encoderi  r   r         r5   TFvanilla)ch_multr   resamp_with_convdouble_zuse_linear_attn	attn_typec                  > [         TU ]  5         Xl        SU l        [	        U5      U l        X@l        Xl        Xl        [        R                  R                  XR                  SSSS9U l        U	nS[        U5      -   nUU l        [        R                  " 5       U l        [#        U R
                  5       GH  n[        R                  " 5       n[        R                  " 5       nUUU   -  nXU   -  n[#        U R                  5       HK  nUR%                  ['        UUU R                  US95        UnX;   d  M1  UR%                  [)        U5      5        MM     [        R*                  " 5       nUUl        UUl        UU R
                  S-
  :w  a  [1        UU5      Ul        US-  nU R                   R%                  U5        GM     [        R*                  " 5       U l        ['        WUU R                  US9U R4                  l        [)        U5      U R4                  l        ['        UUU R                  US9U R4                  l        [=        U5      U l        [        R                  R                  UU(       a  SU
-  OU
SSSS9U l         g )Nr   r8   r   rW   )r   r   rx   rz   r   r   )!r\   r,   chtemb_chlennum_resolutionsnum_res_blocks
resolutionr   r   r   r^   conv_intuple
in_ch_mult
ModuleListdownrangeappendrv   r   ModuleblockattnrS   
downsamplemidblock_1attn_1block_2r   norm_outconv_out)r+   r   out_chr   r   attn_resolutionsr   r   r   r   
z_channelsr   r   r   ignore_kwargscurr_resr   i_levelr   r   block_in	block_outi_blockr   ra   s                           r	   r,   Encoder.__init__  s"     	"7|,$& xxa1 ' F U7^+
$MMO	T112GMMOE==?DJw//HW--I !4!45$,%.&*ll '	)* %/KK	( 34 6 99;DDJDI$..22",X7G"H#q=IIT"+ 30 99;& !,,	
 $H-& !,,	 "(+&A
NJ ( r   c                 *   S nU R                  U5      /n[        U R                  5       H  n[        U R                  5       H  nU R                  U   R
                  U   " US   U5      n[        U R                  U   R                  5      S:  a"  U R                  U   R                  U   " U5      nUR                  U5        M     X@R                  S-
  :w  d  M  UR                  U R                  U   R                  US   5      5        M     US   nU R                  R                  Xb5      nU R                  R                  U5      nU R                  R                  Xb5      nU R                  U5      n[        U5      nU R!                  U5      nU$ )Nr   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r   )r+   r   r   hsr   r   r   s          r	   rm   Encoder.forwardb  sT    ll1oT112G !4!45IIg&,,W5bfdCtyy)../!3		'*//8;A		!	 6
 ..22		$))G,772?@ 3 rFHHQ%HHOOAHHQ% MM!OMM!r   )r   r   r   r   r   r   r   r   r   r   r   r   rq   rs   s   @r	   r   r     s2     & "& !&$L L\ r   r   c                   B   ^  \ rS rSrSSSSSSSS.U 4S jjrS	 rS
rU =r$ )Decoderi~  r   r5   TFr   )r   r   r   give_pre_endtanh_outr   r   c                  > [         TU ]  5         Xl        SU l        [	        U5      U l        X@l        Xl        Xl        Xl	        Xl
        XU R
                  S-
     -  nU	SU R
                  S-
  -  -  nSU
UU4U l        [        SR                  U R                  [        R                  " U R                  5      5      5        [         R"                  R%                  U
USSSS9U l        ["        R(                  " 5       U l        [-        UUU R                  US9U R*                  l        [1        U5      U R*                  l        [-        UUU R                  US9U R*                  l        ["        R6                  " 5       U l        [;        [=        U R
                  5      5       H  n["        R6                  " 5       n["        R6                  " 5       nXU   -  n[=        U R                  S-   5       HL  nUR?                  [-        UUU R                  US95        UnUU;   d  M2  UR?                  [1        U5      5        MN     ["        R(                  " 5       nUUl         UUl!        US:w  a  [E        UU5      Ul#        US-  nU R8                  RI                  SU5        M     [K        U5      U l&        [         R"                  R%                  UUSSSS9U l'        g )Nr   r   r   z+Working with z of shape {} = {} dimensions.r8   rW   r   )(r\   r,   r   r   r   r   r   r   r   r   r   z_shapeprintformatrA   prodr   r   r^   r   r   r   rv   r   r   r   r   r   upreversedr   r   r   r   r   upsampleinsertr   r   r   )r+   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ignorekwargsr   r   r   r   r   r   r   r   ra   s                           r	   r,   Decoder.__init__  sh   " 	"7|,$&(   4 4q 899T%9%9A%=!>>:x:;BBLL"''$,,/1 	2 xxa1 ' F 99;& !,,	
 $H-& !,,	 --/d&:&: ;<GMMOE==?DW--I !4!4q!89$,%.&*ll '	)* %//KK	( 34 : BBHBG!|&x1AB#a<GGNN1b!) =. "(+f!Aq ( Br   c                 j   UR                   U l        S nU R                  U5      nU R                  R	                  X25      nU R                  R                  U5      nU R                  R                  X25      n[        [        U R                  5      5       H  n[        U R                  S-   5       Ho  nU R                  U   R                  U   " X25      n[        U R                  U   R                  5      S:  d  MM  U R                  U   R                  U   " U5      nMq     US:w  d  M  U R                  U   R                  U5      nM     U R                   (       a  U$ U R#                  U5      n[%        U5      nU R'                  U5      nU R(                  (       a  [*        R,                  " U5      nU$ )Nr   r   )r0   last_z_shaper   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r   r   r   tanh)r+   zr   r   r   r   s         r	   rm   Decoder.forward  s^   GG  LLO HHQ%HHOOAHHQ%  d&:&: ;<G !4!4q!89GGG$**73A<twww',,-1(--g6q9A : !|GGG$--a0 = HMM!OMM!==

1Ar   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rq   rs   s   @r	   r   r   ~  s7     & "& $!&$OB OBb   r   r   c                      ^  \ rS rSrS/ SSSSS4U 4S jjr\" 5       4S jr\" 5       4S jrS rS	 r	S
 r
SS jrS rS r\R                  " 5       SS j5       rS rSrU =r$ )r   i  NimageFc
           	        > [         T
U ]  5         Xl        XPl        [	        S0 UD6U l        [        S0 UD6U l        US   (       d   e[        R                  R                  SUS   -  SU-  S5      U l        [        R                  R                  UUS   S5      U l        X l        Ub>  [        U5      [        :X  d   eU R!                  S[        R"                  " SUSS5      5        Ub  Xpl        US LU l        Ub  U R)                  X4S9  g g )	Nr   r   r   r   colorizer8   )ignore_keysrQ   )r\   r,   learn_logvar	image_keyr   encoderr   decoderr   r   r^   
quant_convpost_quant_conv	embed_dimtyper   register_bufferr/   monitoruse_emainit_from_ckpt)r+   ddconfigr  	ckpt_pathr  r	  colorize_nlabelsr  	ema_decayr  ra   s             r	   r,   AutoencoderKL.__init__  s    	("****
###((//!h|.D*D*+i-<$xxy/7/Eq J"'()S000  !&Q0@!Q!GI"L , 	C !r   c                    [         R                  " USS9S   n[        UR                  5       5      nU H  n[	        XSU   R
                  5        M     SS KnUR                  5       nU H4  nUR                  S5      S:  d  M  UR                  S5      S   n	X8   Xy'   M6     U R                  USS	9  [	        S
U 35        g )Ncpumap_location
state_dictr   first_stage_modelzfirst_stage_model.r   TstrictRestored from )r   loadlistkeysr   r0   collectionsOrderedDictfindsplitload_state_dict)
r+   pathr  sdr$  keyr%  sd_newr   k_news
             r	   r  AutoencoderKL.init_from_ckpt  s    ZZ51,?BGGIC##w}}% ((*Avv)*a/ 45b9 "  	VD1tf%&r   c                 :   [         R                  " USS9S   n[        UR                  5       5      n[          U H@  nU H7  nUR                  U5      (       d  M  [        SR                  U5      5        X5	 M9     MB     U R                  USS9  [        SU 35        g )Nr  r  r  z Deleting key {} from state_dict.Fr  r!  )	r   r"  r#  r$  r  
startswithr   r   r)  )r+   r*  r  r+  r$  r   iks          r	   init_from_ckpt2AutoencoderKL.init_from_ckpt2#  s    ZZ51,?BGGIA!<<##<CCAFG " 
 	R.tf%&r   c                 J    U R                   (       a  U R                  U 5        g g r   )r  	model_ema)r+   argskwargss      r	   on_train_batch_end AutoencoderKL.on_train_batch_end0  s    <<NN4  r   c                 `    U R                  U5      nU R                  U5      n[        U5      nU$ r   )r
  r  r   )r+   r   r   moments	posteriors        r	   encodeAutoencoderKL.encode4  s-    LLO//!$09	r   c                 J    U R                  U5      nU R                  U5      nU$ r   )r  r  )r+   r  decs      r	   decodeAutoencoderKL.decode:  s$      #ll1o
r   c                     U R                  U5      nU(       a  UR                  5       nOUR                  5       nU R                  U5      nXS4$ r   )r>  r2   rJ   rB  )r+   inputsample_posteriorr=  r  rA  s         r	   rm   AutoencoderKL.forward?  sB    KK&	  "A Akk!n~r   c                     X   n[        UR                  5      S:X  a  US   nUR                  SSSS5      R                  [        R
                  S9R                  5       nU$ )Nr8   ).Nr   r   r   )memory_format)r   r0   r   r*   r   contiguous_formatfloat)r+   batchr   r   s       r	   	get_inputAutoencoderKL.get_inputH  sY    Hqww<1)AIIaA%*A*AB557 	
r   c                 B    U R                   R                  R                  $ r   )r  r   weightrI   s    r	   get_last_layerAutoencoderKL.get_last_layerP  s    ||$$+++r   c                 8   [        5       nU R                  XR                  5      nUR                  U R                  5      nU(       Gd<  U " U5      u  pxUR
                  S   S:  a7  UR
                  S   S:  d   eU R                  U5      nU R                  U5      nU R                  [        R                  " UR                  5       5      5      US'   XuS'   U(       d  U R                  (       a  U R                  5          U " U5      u  pUR
                  S   S:  a&  U	R
                  S   S:  d   eU R                  U	5      n	U R                  [        R                  " U
R                  5       5      5      US'   XS'   S S S 5        XeS'   U$ ! , (       d  f       N= f)Nr   r8   samplesreconstructionssamples_emareconstructions_emainputs)dictrM  r	  r*   r   r0   to_rgbrB  r   
randn_liker2   r  	ema_scope)r+   rL  only_inputslog_emar8  rB   r   xrecr=  xrec_emaposterior_emas              r	   
log_imagesAutoencoderKL.log_imagesS  sM   fNN5..1DD"1gODwwqzA~zz!}q(((KKN{{4(![[)9)9):J:J:L)MNC	N%)!"$,,^^%.21g+HwwqzA~'~~a01444#';;x#8)-(()=)=)?@*BC&19-. & H
 &%s   ?A>F
Fc           	         U R                   S:X  d   e[        U S5      (       dE  U R                  S[        R                  " SUR
                  S   SS5      R                  U5      5        [        R                  " XR                  S9nSXR                  5       -
  -  UR                  5       UR                  5       -
  -  S-
  nU$ )Nsegmentationr  r8   r   )rP  r@   r6   )r	  hasattrr  r   r/   r0   r*   Fconv2dr  minmaxr1   s     r	   rZ  AutoencoderKL.to_rgbn  s    ~~///tZ((  !&Q
Aq!A!D!DQ!GIHHQ}}-!eeg+!%%'AEEG"34r9r   )	r  r  r
  r	  r  r  r  r  r  )T)FF)rL   rM   rN   rO   r,   r#  r  r3  r9  r>  rB  rm   rM  rQ  r   no_gradrb  rZ  rP   rr   rs   s   @r	   r   r     sz    
  ""&#D> 04v ' 15 '!
, ]]_ 4 r   c                   H   ^  \ rS rSrSS.U 4S jjrS rS rS rS rSr	U =r
$ )	IdentityFirstStageix  Fvq_interfacec                .   > Xl         [        TU ]	  5         g r   )rp  r\   r,   )r+   rp  r7  r8  ra   s       r	   r,   IdentityFirstStage.__init__z  s    (r   c                     U$ r   rQ   r+   r   r7  r8  s       r	   r>  IdentityFirstStage.encode~      r   c                     U$ r   rQ   rt  s       r	   rB  IdentityFirstStage.decode  rv  r   c                 6    U R                   (       a  US / SQ4$ U$ )N)NNNro  rt  s       r	   quantizeIdentityFirstStage.quantize  s    d...r   c                     U$ r   rQ   rt  s       r	   rm   IdentityFirstStage.forward  rv  r   )rL   rM   rN   rO   r,   r>  rB  rz  rm   rP   rr   rs   s   @r	   rn  rn  x  s)    +0  
 r   rn  )    )numpyrA   r   torch.nnr   torch.nn.functionalri   rg  __all__r
   r   objectr   r   rS   rv   r   r   r   r   r   rn  rQ   r   r	   <module>r     s        
 
P
*6 *Z (<")) <~)		 )X)		 )Xryy " (ibii iXsbii slABII AH r   