a
    þd}	  ã                   @   s@   d dl mZ d dlmZ ddlmZ e ¡ G dd„ deƒƒZdS )é    )Úget_root_logger)ÚMODEL_REGISTRYé   )ÚVideoBaseModelc                       s4   e Zd ZdZ‡ fdd„Zdd„ Z‡ fdd„Z‡  ZS )Ú	EDVRModelzsEDVR Model.

    Paper: EDVR: Video Restoration with Enhanced Deformable Convolutional Networks.  # noqa: E501
    c                    s*   t t| ƒ |¡ | jr&|d  d¡| _d S )NÚtrainZtsa_iter)Úsuperr   Ú__init__Zis_trainÚgetÚtrain_tsa_iter)ÚselfÚopt©Ú	__class__© úb/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/basicsr/models/edvr_model.pyr	      s    zEDVRModel.__init__c           
      C   sÞ   | j d }| dd¡}tƒ }| d|› d¡ |dkrB| j ¡ }nbg }g }| j ¡ D ]&\}}d|v rp| |¡ qT| |¡ qT||d d d	œ||d d | d	œg}|d  d
¡}	| j	|	|fi |d ¤Ž| _
| j | j
¡ d S )Nr   Ú
dcn_lr_mulr   z(Multiple the learning rate for dcn with Ú.ZdcnZoptim_gÚlr)Úparamsr   Útype)r   r
   r   ÚinfoÚnet_gÚ
parametersÚnamed_parametersÚappendÚpopZget_optimizerZoptimizer_gZ
optimizers)
r   Z	train_optr   ÚloggerZoptim_paramsZnormal_paramsZ
dcn_paramsÚnameÚparamZ
optim_typer   r   r   Úsetup_optimizers   s,    

þþûzEDVRModel.setup_optimizersc                    s   | j r||dkrLtƒ }| d| j › d¡ | j ¡ D ]\}}d|vr2d|_q2n0|| j kr|tƒ }| d¡ | j ¡ D ]
}d|_qptt	| ƒ 
|¡ d S )Nr   zOnly train TSA module for z iters.ZfusionFzTrain all the parameters.T)r   r   r   r   r   Zrequires_gradÚwarningr   r   r   Úoptimize_parameters)r   Zcurrent_iterr   r   r   r   r   r   r"   0   s    


zEDVRModel.optimize_parameters)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   r    r"   Ú__classcell__r   r   r   r   r      s   r   N)Zbasicsr.utilsr   Zbasicsr.utils.registryr   Zvideo_base_modelr   Úregisterr   r   r   r   r   Ú<module>   s   