o
    *jr                     @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlmZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm   m!Z" d dl#m$Z% d dl&m'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z- e- Z.g dZ/da0dqddZ1dd Z2dd Z3e4 dd Z5dd Z6de7d7e8e9:ddd dfddZ;dd Z<i e<_=dd Z>drd d!Z?dsd"d#Z@dsd$d%ZAdsd&d'ZBd(d) ZCdtd+d,ZDdsd-d.ZEdsd/d0ZFdsd1d2ZGdsd3d4ZHdsd5d6ZIe4 			7	8	dud9d:ZJe4 dvd<d=ZKe4 g d>g d>d	dfd?d@ZLe4 g d>g d>d	dd7dd;fdAdBZMe4 g d>g d>d	dfdCdDZNe4 g d>g d>d	dfdEdFZOe4 g d>g d>dddfdGdHZPe4 dwdIdJZQe4 dsdKdLZRe4 dtdMdNZSdxdPdQZTdRdS ZUdydTdUZVdzdVdWZWd{dXdYZXdZd[ ZYd|d]d^ZZG d_d` d`e[Z\dsdadbZ]dcdd Z^dedf Z_dzdgdhZ`didj Zad}dldmZbd~dodpZcdS )    N)BytesIO)
ThreadPool	rearrange)Image)DiagonalGaussianDistribution)
get_logger)$parse_oss_urlparse_bucketread
read_image	read_gzipceil_divide	to_device
put_objectput_torch_objectput_object_from_file
get_objectget_object_to_file	rand_name
save_image
save_videosave_video_vs_conditions(save_video_multiple_conditions_with_datasave_video_multiple_conditionsdownload_video_to_filesave_video_grid_mp4	save_capsemaparallelexistsdownloadunzipload_state_dictinverse_indicesdetect_duplicatesread_tfsmd5ropeformat_statebreakup_gridhuggingface_tokenizerhuggingface_model    c                 C   s8   t t| d}|r|dsd| }||7 }|S )Nutf-8.)binasciib2a_hexosurandomdecode
startswith)lengthsuffixname r:   v/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/modelscope/models/multi_modal/videocomposer/ops/utils.pyr   6   s   
r   c
                 C   s  d}
d|
 | }|j d }t|d}td|j d }tj||j d | dd}g }|D ]}||}|| q+tj|dd}t|d|d}|d | }tj	
|jd	}t
|jd
}tj	|jsht|j z>| d t| d  d = | d t| d  d = t||| |||j|jd|j|	d
 d
|d | }t|d| W n ty } ztd|  W Y d }~nd }~ww td|  d S )N{P?      ?r   zb c f h w -> (b f) c h w   dimz(b f) c h w -> b c f h w)bzrank.gifztext_description.txt   )nrowsave_origin_videoduration
wzSave text or video error. zSave videos to )shaper   mintorchchunkr5   appendcatr3   pathjoinZlog_dirospr    mkdirlistkeysr   meanstdrD   open
writelines	Exceptionloggererrorinfo)model_kwargsZ
video_dataZautoencoderZ	ori_videoZviz_numstepcapspalettecfgrE   scale_factorZbs_vd
chunk_sizeZvideo_data_listZdecode_dataZvd_datatmposs_keyZtext_keytextser:   r:   r;   save_with_model_kwargs?   sR   


rg   c                 C   sf   | D ]}|dv s
J q|du r|  d i i g}| D ]}|d | |d |< |d | |d |< q|S )N)	ydepthZcannyZmaskedZsketchimageZmotionZlocal_imageZsingle_sketchTfpsr   rB   )rL   )Zpartial_keysZfull_model_kwargsZuse_fps_conditionZpartial_keyZpartial_model_kwargsr:   r:   r;   prepare_model_kwargsp   s   
rl   c                 C   sJ   d}t | tr|  }|| S t | tjr| }|| S tdt|  d)Nr<   zencoder_posterior of type 'z' not yet implemented)
isinstancer   samplerJ   TensorNotImplementedErrortype)Zencoder_posteriorra   zr:   r:   r;   get_first_stage_encoding   s   
rs   c                 C   sL   g }t |D ]\}}|tj| | d|  d| gdd qtj|ddS )NrB   r?   r   )	enumeraterL   rJ   rM   stack)ZimgsZmasksZmasked_imgsimaskr:   r:   r;   make_masked_images   s    rx   /Zmodel_weightsc                 C   s   t ||p	t | }|S )zDownload OSS [file or folder] to the cache folder.
        Only the 0th process on each node will run the downloading.
        Barrier all processes until the downloading is completed.
    )rP   rO   basename)rd   Zfile_or_dirname	cache_dir	base_pathr:   r:   r;   DOWNLOAD_TO_CACHE   s   
r~   c           	      C   s   dd l }| dr| tdd  } tdd tdd tdd tdd d}| jdd	d
\}} d|v rS|jdd	d
\}}|dD ]}|jdd	d
\}}|||< qCtj| dt	  |
 }|j||d |d |d ||d}|| fS )Nr   oss://ZOSS_ENDPOINTZOSS_ACCESS_KEY_IDZOSS_ACCESS_KEY_SECRETZOSS_SECURITY_TOKEN)endpointaccessKeyIDaccessKeySecretZsecurityTokenry   rB   )maxsplit?&=@r   r   r   )authr   Zbucket_namesession)Zoss2r6   lenr3   getenvsplitr	   	_sessions
setdefaultgetpidSessionZBucketZAuth)	rN   ZossZconfigsbucketconfigpairkvr   r:   r:   r;   r	      s0   





r	   c                 C   s   t t| dd S )NZ_placeholderr   )r	   rP   rO   )urlr:   r:   r;   r
      s   r
   r   c           
      C   s   |dv sJ d }t |D ]f}zP| dr+t| \}}|| }|dkr*|d}n/| dr@t| j}|dkr?|d}nt	| |d}| }W d    n1 sUw   Y  |W   S  t
yr }	 z|	}W Y d }	~	qd }	~	ww |)N)r   rbr   r   r/   http)mode)ranger6   r	   r   r   r5   requestsgetcontentrV   rX   )
filenamer   retry	exception_r   rN   r   frf   r:   r:   r;   r      s2   





r   c                 C   s\   d }t |D ]%}zttt| d|dW   S  ty+ } z|}W Y d }~qd }~ww |)Nr   )r   r   )r   r   rV   r   r   rX   )r   r   r   r   rf   r:   r:   r;   r      s   r   c                 C   s^   d }t |D ]&}zt| \}}||| W  d S  ty, } z|}W Y d }~qd }~ww |N)r   r	   r   rX   )r   
local_filer   r   r   r   rN   rf   r:   r:   r;   r      s   r   c           
      C   s   d }t |D ]Z}zDd}| dr(t| \}}tt| d d} |||  d}t| }|	 }W d    n1 s<w   Y  |rHt
|  |W   S  ty` }	 z|	}W Y d }	~	qd }	~	ww |)NFr   rB   r8   T)r   r6   r	   r   rP   splitextr   gziprV   r   r3   removerX   )
r   r   r   r   r   r   rN   r   r   rf   r:   r:   r;   r     s*   



r   c                 C   s   t t| | S r   )intmathceil)arA   r:   r:   r;   r     s   r   Fc                    s|   t | ttfrt|  fdd| D S t | tr*t|  fdd|  D S t | tjr<| j kr<| j	 d} | S )Nc                    s   g | ]}t | qS r:   r   .0udevicenon_blockingr:   r;   
<listcomp>!      zto_device.<locals>.<listcomp>c                    s    g | ]\}}|t | fqS r:   r   r   r   r   r   r:   r;   r   #  s    )r   )
rm   rR   tuplerq   dictitemsrJ   ro   r   to)batchr   r   r:   r   r;   r     s   
r   c                 C   j   d }t |D ]}z	| ||W   S  ty% } z|}W Y d }~qd }~ww tjd| d| dd d S )Nzput_object to  failed with error: Tflush)r   r   rX   rY   r[   )r   rd   datar   r   r   rf   r:   r:   r;   r   *     
r   c                 C   s   d }t |D ]*}zt }t|| | || W   S  ty0 } z|}W Y d }~qd }~ww tjd| d| dd d S )Nzput_torch_object to r   Tr   )	r   r   rJ   saver   getvaluerX   rY   r[   )r   rd   r   r   r   r   bufferrf   r:   r:   r;   r   8  s   
r   c                 C   r   )Nzput_object_from_file to r   Tr   )r   r   rX   rY   rZ   r   rd   r   r   r   r   rf   r:   r:   r;   r   H  r   r   c                 C   sl   d }t |D ] }z
| | W   S  ty& } z|}W Y d }~qd }~ww tjd| d| dd d S )Nzget_object from r   Tr   )r   r   r   rX   rY   rZ   )r   rd   r   r   r   rf   r:   r:   r;   r   V  s   
r   c                 C   r   )Nzget_object_to_file from r   Tr   )r   r   rX   rY   rZ   r   r:   r:   r;   r   d  r   r   TrB   c                 C   s   t dd}d g| D ]+}ztj|||||d | || d }	W  n ty5 }
 z|
}	W Y d }
~
q
d }
~
ww t|r@t| |	d urQt	j
d||	dd d S d S )Nz.jpgr   )rC   	normalizer   z"save image to {} failed, error: {}Tr   )r   tvutilsr   r   rX   rP   r    r3   r   rY   rZ   format)r   rd   tensorrC   r   r   r   r   r   r   rf   r:   r:   r;   r   r  s,   





r      c                 C   s>   |  dddd} | jdd}dd |D }tj|||d |S )	NrB         r   r?   c                 S   s   g | ]}|  d  dqS )   uint8)numpyastype)r   rj   r:   r:   r;   r     s    z'video_tensor_to_gif.<locals>.<listcomp>rE   )permuteZunbindimageioZmimwrite)r   rN   rE   loopoptimizeZimagesr:   r:   r;   video_tensor_to_gif  s
   r   )      ?r   r   c                 C   s  t j||jdddddd}t j||jdddddd}|||}|dd tdd}d g| D ]-}zt|d|d}	t	|	| | 
|| d }
W  n tyc } z|}
W Y d }~q6d }~ww t|rnt| |
d urtjd	||
d
d d S d S )Nr   rB   r   r   .gifr    (i j) c f h w -> c f (i h) (j w)rv   "save video to {} failed, error: {}Tr   )rJ   r   r   viewmul_add_clamp_r   r   r   r   rX   rP   r    r3   r   rY   rZ   r   )r   rd   r   rT   rU   rC   r   r   r   Zone_gifr   rf   r:   r:   r;   r     s6   





r   c                     sp  t j||jdddddd}t j||jdddddd}|||}z|dd W n tyM } zt	| |
 dd}W Y d }~nd }~ww | }|j\}}}}}t||||f}| }i }|d  D ]\}}|jd dkr{qot|jdkr|  }g }|D ]}g }|D ]}||j|dddd	 q|t| qt t|}t|d
}n|ddkrt j|||gdd}t||||f}|ddkrt j||d d d df gdd}t||||f}nE|ddkrt||||f}n3|ddkr9|d d ddf d d }|d d ddf }|| dd|   }t||||f}|jrA| n|||< qo| }d g| D ]X}z@t|d d} fdd| D }t|d d}|	rzt j|g| |g dd}n
t j||g dd}t|||d d }W  n ty } z	|}W Y d }~qMd }~ww |d urtd| | d S d S )Nr   rB   r   r   i   r   Z      Z
percentilewidthheightb n h w c -> b c n h wr?   r      r=          @r   r   c                       g | ]\}}t |d  dqS )r   r   r   r   r   conrC   r:   r;   r         z2save_video_multiple_conditions.<locals>.<listcomp>r   r   )rJ   r   r   r   r   r   r   rX   rY   rZ   floatcpurH   Fadaptive_avg_pool3dr   r   r   rL   get_palette_imagenpru   
from_numpyr   sizerM   is_cudar   loggingr[   r   ) rd   video_tensorr\   source_imgsr_   rT   rU   rC   r   rD   r   rE   rf   rA   cnhrG   model_kwargs_channel3key
conditionsconditions_nprv   vis_ijcoloralphar   r   vid_gif	cons_listr   r:   r   r;   r     s   



r   c           &         sf  t j||jdddddd}t j|	|jdddddd}	||	|}|dd |j\}}}}}t	||||f}|
 }i }|d  D ]\}}t|jdkr|
  }g }|D ]}g }|D ]}||j|dddd qd|t| q^t t|}t|d	}n|ddkrt j|||gdd
}t	||||f}|ddkrt j||d d d df gdd
}t	||||f}nD|ddkrt	||||f}n3|ddkr
|d d ddf d d }|d d ddf }|| dd|   }t	||||f}|jr|
 n|||< qI| }| }tdd}d g| D ]N}z6t|d d} fdd| D }t|d d}t j|g| |g dd
}t|| | || d } W  n tyw }! z	|!} W Y d }!~!q)d }!~!ww t|rt| tdd}"d g| D ]8}z| d  d}#t!"|#t#|"d | ||" W  n ty }! zt$%d||! W Y d }!~!qd }!~!ww t|"rt|" tdd}$d g| D ]8}z| d  d}%t!"|%t#|$d | ||$ W  n ty }! zt$%d||! W Y d }!~!qd }!~!ww t|$rt|$ | d ur1t$j%d&|| dd d S d S )Nr   rB   r   r   r   r   r   r   r   r?   r   r   r=   r   r   r   r   r   c                    r   )r   )r  r   r   r   r:   r;   r   ]  r   z<save_video_multiple_conditions_with_data.<locals>.<listcomp>z.pklr   r   wbzerror! r   Tr   )'rJ   r   r   r   r   r   r   rH   r   r   r   r   r   r   rL   r   r   ru   r   r   r   rM   r   cloner   r   r   rX   rP   r    r3   r   r   pickledumprV   rY   rZ   r   )&r   Zvideo_save_keyZgt_video_save_keyZvis_oss_keyr   r\   r   r_   rT   rU   rC   r   rA   r   r   r   rG   r  r  r  r  rv   r  r  r  r  Zcopy_video_tensorZcopy_source_imgsr   r   r	  r
  r   rf   Zfilename_predZcopy_video_npZfilename_gtZcopy_source_npr:   r   r;   r     s   









r   c	                 C   s  t j||jdddddd}t j||jdddddd}|||}|dd |j\}	}
}}}t	||||f}|
 }|ddkr[t j|||gdd}t	||||f}tdd}d g| D ]J}z/t|d|d	}t|d|d	}t|d|d	}t j|||gd
d}t|| | || d }W  n ty } z|}t| W Y d }~qed }~ww t|rt| |d urtjd||dd d S d S )Nr   rB   r   r   r?   r   r   r   r   r   r   Tr   )rJ   r   r   r   r   r   r   rH   r   r   r   r   rM   r   r   r   r   rX   rY   rZ   rP   r    r3   r   r   )r   rd   r   r  r   rT   rU   rC   r   rA   r   r   r   rG   r   r   r	  Zcon_gifr   rf   r:   r:   r;   r     sR   







r   c                 C   s  t j||jdddddd}t j||jdddddd}|||}|dd |j\}}	}
}}|ddddd}|	 
 d d	}td
d}d g| D ]}zr|d u ratt|}t|| }d}tj|
|| | | || | | |	fd	d}t|D ])}|| }|| }|| | }|| | }|| |d d ||| ||| f< qtjj||dt|id | || d }W  n ty } z|}t| W Y d }~qRd }~ww t|rt| |d urtjd||dd d S d S )Nr   rB   r   r   r   r   r   r   r   z.mp4r   )Zdtypez-r)Z	inputdictr   Tr   ) rJ   r   r   r   r   r   r   rH   r   r   r   r   r   r   r   sqrtr   Zzerosr   skvideoioZvwritestrr   rX   rY   rZ   rP   r    r3   r   r   )r   rd   r   rT   rU   rC   rk   r   rA   r   tr   rG   r   r   ncolpaddingZ
video_gridrv   r   Zc_Zstart_rZstart_cr   rf   r:   r:   r;   r     s\   	






r   c                 C   s   |j d }t|| }||| ksJ d}t|D ]}t|D ]}	t||| |	  }
||
d 7 }q|d7 }qd g| D ]&}z| || d }W  n tyb } z|}t| W Y d }~q<d }~ww |d urttjd||dd d S d S )Nr   r.   rF   r   Tr   )	rH   r   r   Zdec_bytes2objr   rX   rY   rZ   r   )r   rd   r   rC   r   r   Znum_per_rowre   rv   r  textr   r   rf   r:   r:   r;   	save_text  s4   




r  c           	      C   s   d}|D ]
}||7 }|d7 }qd g| D ]&}z|  || d }W  n ty: } z|}t| W Y d }~qd }~ww |d urLtjd||dd d S d S )Nr.   rF   r   Tr   )r   rX   rY   rZ   r   )	r   rd   r^   r   re   capr   r   rf   r:   r:   r;   r      s*   



r   c                 C   s|   d|  krdksJ  J t |  | D ]\}}|||| q|r:t |  | D ]\}}|| q0d S d S )Ng        r=   )zip
parametersZcopy_Zlerpbuffers)Znet_emanetbetaZcopy_bufferZp_emapZb_emarA   r:   r:   r;   r   6  s   r       c                    s   t |tsJ t |d tsdd |D }|dkr" fdd|D S t|d fdd|D }fdd|D }W d    |S 1 sFw   Y  |S )Nr   c                 S   s   g | ]}|fqS r:   r:   r   argsr:   r:   r;   r   C  s    zparallel.<locals>.<listcomp>c                    s   g | ]} | qS r:   r:   r   )funcr:   r;   r   E  s    )Z	processesc                    s   g | ]}  |qS r:   )Zapply_asyncr   )r"  poolr:   r;   r   G  r   c                    s   g | ]}|j  d qS )timeout)r   )r   resr$  r:   r;   r   H  r   )rm   rR   r   Pool)r"  Z	args_listZnum_workersr%  resultsr:   )r"  r#  r%  r;   r   @  s   
r   c                 C   s*   |  drt| \}}||S t| S )Nr   )r6   r	   Zobject_existsrP   r    )r   r   rN   r:   r:   r;   r    L  s   


r    c              
   C   s   |d u r	t | }t |r|rQz*| dr#t| \}}||| ntj| | |s9t	j
d|  d| dd W n tyP } z
td| d| d }~ww t |S )Nr   zDownloaded z to Tr   zDownloading z failed with error )rP   r{   r    r6   r	   r   urllibrequesturlretrieverY   rZ   rX   
ValueErrorabspath)r   r   replacequietr   rd   rf   r:   r:   r;   r!   T  s    


r!   c                 C   sN   |d u r	t | }t| d}|| W d    d S 1 s w   Y  d S )Nr   )rP   dirnamezipfileZipFile
extractall)r   Zdst_dirZzip_refr:   r:   r;   r"   e  s
   
"r"   c                    s   ||    rt fdd D fddD }fddD }fdd  @ D }t|| tfdd D | jdd t|d	krhtjd
d	| dd t|d	krztjdd	| dd t|d	krtjdd	| dd d S d S )Nc                    s2   g | ]\}}|  r|t d  n||fqS r   )r6   r   r   )drop_prefixr:   r;   r   p  s     z#load_state_dict.<locals>.<listcomp>c                       g | ]}| vr|qS r:   r:   r   r   )srcr:   r;   r   t  r   c                    r5  r:   r:   r6  )dstr:   r;   r   u  r   c                    s$   g | ]}| j  | j kr|qS r:   )rH   r6  )r8  r7  r:   r;   r   v  s    c                    s    g | ]\}}| vr||fqS r:   r:   r   )incompatibler:   r;   r   |  s     F)strictr   z  Missing: z, Tr   z  Unexpected: z  Shape unmatched: )

state_dictrq   r   rS   setr#   r   rY   r[   rO   )moduler;  r4  missingZ
unexpected	unmatchedr:   )r4  r8  r9  r7  r;   r#   l  s(   r#   c                 C   s&   t | }t t| | || < |S )zXInverse map of indices.
        E.g., if A[indices] == B, then B[inv_indices] == A.
    )rJ   Z
empty_likearanger   r   )indicesZinv_indicesr:   r:   r;   r$     s   
r$   ?c                 C   sb   | j dksJ tj| ddd} t| | j}|d tj  |	|j
dd }t|d S )Nr   rB   )r  r@   r   r?   )ndimr   r   rJ   mmTZtriu_cudaZsynchronizegtanywhere)ZfeatsZthrZsimmatrw   r:   r:   r;   r%     s   

r%   c                   @   s.   e Zd Z		d
ddZedd Zdd Zd	S )	TFSClient!restful-store.vip.tbsite.net:38005354c9fae75f5c                 C   sV   || _ || _dd td| d ddd  D | _t| jdks&J d| _d S )Nc                 S   s   g | ]}d |v r|qS ):r:   r   r:   r:   r;   r     s
    z&TFSClient.__init__.<locals>.<listcomp>http://z	/url.listrF   rB   r   )hostapp_keyr   stripr   serversr   _TFSClient__server_id)selfrO  rP  r:   r:   r;   __init__  s    
zTFSClient.__init__c                 C   s"   | j d t| j | _ | j| j  S )NrB   )rS  r   rR  )rT  r:   r:   r;   server  s   zTFSClient.serverc                 C   sh   t |}ttd| j d| j d| d}tt	td| j d| j d| d|d  d}|S )	NrN  z/v1/z
/metadata/z?force=0ry   z?offset=0&size=ZSIZEr   )
rP   r{   jsonloadsr   rV  rP  r   rV   r   )rT  tfsmetaimgr:   r:   r;   r     s   
"zTFSClient.readN)rK  rL  )__name__
__module____qualname__rU  propertyrV  r   r:   r:   r:   r;   rJ    s    

rJ  c                 C   s\   d }t |D ]%}ztd u rt at| W   S  ty+ } z|}W Y d }~qd }~ww |r   )r   
TFS_CLIENTrJ  r   rX   )rY  r   r   r   rf   r:   r:   r;   r&     s   r&   c                 C   s@   t | d}t|  W  d    S 1 sw   Y  d S )Nr   )rV   hashlibr'   r   	hexdigest)r   r   r:   r:   r;   r'     s   $r'   c           
   	   C   s   | j }| | dd| d} | j dd \}}|d dks!J |d }tt|| tdt|| | }t	|t
|}}| jddd\}}	tj|| |	|  |	| ||  gdd} | |S )zQApply rotary position embedding on x of shape [B, *(spatial dimensions), C].
    r   r   rz   Nr   i'  r?   )rH   r   r   rJ   outerr@  r   powdivsincosrK   rM   )
xrH   lr   ZhalfZsinusoidrf  rg  x1Zx2r:   r:   r;   r(     s   *
r(   c                 C   sZ   d dd |  D }|r+t|d}|| W d   dS 1 s$w   Y  dS dS )z'For comparing/aligning state_dict.
    rF   c                 S   s$   g | ]\}}| d t |j qS )	)r   rH   r   r:   r:   r;   r     s   $ z format_state.<locals>.<listcomp>rG   N)rO   r   rV   write)stater   r   r   r:   r:   r;   r)     s   "r)   c                 C   s   | j | }| j| }d }}g }t|D ]-}t|D ]&}|| |d |  }	|| |d |  }
|| |	|
|	| |
| f qq|S )z=The inverse operator of ``torchvision.utils.make_grid``.
    r   rB   )r   r   r   rL   crop)r[  Z	grid_sizerC   r  ZwrowZwcolZgridsrv   r  rj  y1r:   r:   r;   r*     s   

"r*   google/mt5-xxlc                 K   s*   ddl m} |jtd|  | fi |S )Nr   )AutoTokenizerzhuggingface/tokenizers/)transformersrq  from_pretrainedr~   )r9   kwargsrq  r:   r:   r;   r+     s   r+   	AutoModelc                 K   s,   dd l }t||jtd|  | fi |S )Nr   zhuggingface/models/)rr  getattrrs  r~   )r9   Z
model_typert  rr  r:   r:   r;   r,     s   
r,   )r-   r.   )r   r   )r   )F)r-   Tr   r   )r   r   T)r-   r   )r  N)NFFr   )r.   )rB  )rp  )rp  ru  )dbase64r1   copyglobr   ra  r   r   r3   Zos.pathrN   rP   r  systimeurllib.requestr)  r1  r  r   Zmultiprocessing.poolr   r'  r   rW  r   r   r   Z
skvideo.ior  rJ   Ztorch.nn.functionalnnZ
functionalr   Ztorchvision.utilsutilsr   Zeinopsr   ZPILr   Z7modelscope.models.multi_modal.videocomposer.autoencoderr   Zmodelscope.utils.loggerr   rY   __all__r`  r   rg   rl   Zno_gradrs   rx   rO   r-  __file__r   r~   r	   r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r    r!   r"   r#   r$   r%   objectrJ  r&   r'   r(   r)   r*   r+   r,   r:   r:   r:   r;   <module>   s   
	1


!









"b	|35
	



	
#
	
