CoolFace
Apppublic

Doubiiu/DynamiCrafter_interp_loop

sourceHugging Faceotherupdated 2mo agoView on Hugging Face
165likes
autoencoder.cpython-39.pyc74 linesDownload Raw Back to __pycache__
1a

2�fe!�@s�ddlZddlmZddlZddlZddlmZddlm	m3ZddlZ
ddlmZmZddlmZddlmZGdd�de
j�ZGd	d4�d5ej	j�ZdS)�N)�contextmanager)�	rearrange)�Encoder�Decoder)�DiagonalGaussianDistribution)�instantiate_from_configc	s�eZdZdgdddddddf	�fdd�	Zdd�Ze�fd	d6�Zdd�Zd
d�Zd dd�Z	dd�Z7dd�Zdd�Zdd�Z
dd�Ze��d!dd��Zdd�Z�ZS)"�
AutoencoderKLN�imageF�c

	s�t���||_tfi|��|_tfi|��|_t|�|_|dsFJ�t	j8�d|dd|d�|_t	j9�||dd�|_
||_||_|	|_||_|10|_|dur�t|�tks�J�|�dt	�d|dd��|dur�||_|dur�|j||d�|jr�|��dS)NZdouble_z�Z11z_channels��colorize�)�ignore_keys)�super�__init__�	image_keyr�encoderr�decoderr�loss�torch�nn�Conv2d�12quant_conv�post_quant_conv�	embed_dim�	input_dim�test�	test_args�logdir�type�int�register_buffer�randn�monitor�init_from_ckpt�	init_test)
�self�ddconfigZ13lossconfigr�	ckpt_pathrrZcolorize_nlabelsr$rrrr��	__class__��t/apdcephfs_cq2/share_1290939/jinboxing/Experiments/DynamiCrafter/scripts/evaluation/../../lvdm/models/autoencoder.pyrs,1415zAutoencoderKL.__init__cCsHd|_tj�|jd�}d|jvrXtj�|jj��d�dd|j	��}tj�||�|_16n||_17d|jvr|tj�||jj�|_18tj�|j19d�|_tj�|j20d	�|_
tj�|j21d22�|_tj|j23dd�|jjr�tj|jdd�|jjr�tj|j
dd�|jj�rtj|jdd�|jdu�sJ�t|jdd�|_d|_i|_g|_d
|_dS)NTr�ckptz.ckptr�_epoch�test_subdir�zs�reconstructions�inputs)�exist_ok�test_maximumi)r�os�path�joinrr�basenamer.�split�24_cur_epoch�rootr0Zroot_zsZroot_decZroot_inputs�makedirsZsave_zZsave_reconstructionZ25save_input�getattrr5�countZeval_metricsZdecodesZsave_decode_samples)r'�save_dir�	ckpt_namer,r,r-r&3s026&2728zAutoencoderKL.init_testcCs�tj|dd�}z|d|_|d}Wnd|_Yn0t|���}|D],}|D]"}|�|�rPtd�|��||=qPqH|j|dd�td	|���dS)29N�cpu)�map_location�epoch�30state_dict�nullz Deleting key {} from state_dict.F)�strictzRestored from )	r�loadr;�list�keys�31startswith�print�format�load_state_dict)r'r7r�sdrJ�k�ikr,r,r-r%Ps323334zAutoencoderKL.init_from_ckptcKs |�|�}|�|�}t|�}|S�N)rrr)r'�x�kwargs�h�moments�	posteriorr,r,r-�encodeas3536zAutoencoderKL.encodecKs|�|�}|�|�}|SrR)rr)r'�zrT�decr,r,r-�decodehs3738zAutoencoderKL.decodeTcCs2|�|�}|r|��}n|��}|�|�}||fSrR)rX�sample�moder[)r'�inputZsample_posteriorrWrYrZr,r,r-�forwardms394041zAutoencoderKL.forwardc	CsH||}|��dkrD|jdkrD|j\}}}}}||_||_t|d�}|S)N�r42zb c t h w -> (b t) c h w)�dimr�shape�b�tr)	r'�batchrPrSrc�crdrU�wr,r,r-�	get_inputvs43zAutoencoderKL.get_inputc	Cs�|�||j�}||�\}}|dkrr|j|||||j|��dd�\}}|jd|ddddd�|j|ddddd�|S|dkr�|j|||||j|��dd�\}	}44|jd	|	ddddd�|j|45ddddd�|	SdS)46Nr�train�Z47last_layerr:�aelossT)�prog_bar�logger�on_step�on_epochFr�discloss�rhrr�global_step�get_last_layer�log�log_dict)r're�	batch_idx�
optimizer_idxr3r2rWrk�log_dict_aerp�
log_dict_discr,r,r-�
training_step�s �48�49zAutoencoderKL.training_stepc50	Cs�|�||j�}||�\}}|j|||d|j|��dd�\}}|j|||d|j|��dd�\}}	|�d|d�|�|�|�|	�|jS)Nr�valrjrzval/rec_lossrq)51r'rervr3r2rWrkrxrpryr,r,r-�validation_step�s�52�535455zAutoencoderKL.validation_stepcCsr|j}tjjt|j���t|j���t|j���t|j	���|dd�}tjj|j56j��|dd�}||ggfS)N)g�?g�������?)�lr�betas)�
learning_rater�optim�AdamrIr�57parametersrrrrZ
discriminator)r'r}Zopt_aeZopt_discr,r,r-�configure_optimizers�s�����z"AutoencoderKL.configure_optimizerscCs58|jjjSrR)r�conv_out�weight)r'r,r,r-rs�szAutoencoderKL.get_last_layercKs�t�}|�||j�}|�|j�}|s�||�\}}|jddkrd|jddksPJ�|�|�}|�|�}|�t�	|�59���|d<||d<||d<|S)Nrr�samplesr2r3)�dictrhr�to�devicerb�to_rgbr[r�60randn_liker\)r're�only_inputsrTrtrSZxrecrWr,r,r-�61log_images�s6263zAutoencoderKL.log_imagesc	Cst|jdksJ�t|d�s<|�dt�d|jddd��|��tj||j	d�}d||�64�|��|�65�d}|S)N�segmentationr
rr)r�g@g�?)r�hasattrr"rr#rbr��F�conv2dr
�min�max)r'rSr,r,r-r��s66$$zAutoencoderKL.to_rgb)T)F)�__name__�67__module__�__qualname__rr&rIr%rXr[r_rhrzr|r�rsr�no_gradr�r��
__classcell__r,r,r*r-r
s.�%68	69rcsBeZdZdd��fdd�70Zdd�Zdd�Zd	d71�Zdd�Z�ZS)
�IdentityFirstStageF��vq_interfacecs||_t���dSrR)r�rr)r'r��argsrTr*r,r-r�szIdentityFirstStage.__init__cOs|SrRr,�r'rSr�rTr,r,r-rX�szIdentityFirstStage.encodecOs|SrRr,r�r,r,r-r[�szIdentityFirstStage.decodecOs|jr|dgd�fS|S)N)NNNr�r�r,r,r-�quantize�szIdentityFirstStage.quantizecOs|SrRr,r�r,r,r-r_�szIdentityFirstStage.forward)	r�r�r�rrXr[r�r_r�r,r,r*r-r��s72r�)r6�73contextlibrr�numpy�np�einopsrZtorch.nn.functionalr�74functionalr��pytorch_lightning�plZ lvdm.modules.networks.ae_modulesrr�lvdm.distributionsr�utils.utilsr�LightningModuler�Moduler�r,r,r,r-�<module>s>