o
    *j
                     @   s   d Z ddlmZmZ ddlZddlm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
d dejZdS )zx
Part of the implementation is borrowed and modified from LaMa, publicly available at
https://github.com/saic-mdal/lama
    )DictTupleN)
get_logger   )NonSaturatingWithR1)FFCResNetGenerator)ResNetPL)NLayerDiscriminatorc                       s   e Zd Z									d fdd		Zd
eeejf deeejf fddZde	ejeeejf f fddZ
de	ejeeejf f fddZ  ZS )BaseInpaintingTrainingModule TFd   +?0u  
   c
                    s   t    td|  t | _|| _|sFt | _t	ddddd| _
|| _|| _|| _|| _d | _d| _|	| _tjdd| _td	|d
| _|| _td d S )Nz:BaseInpaintingTrainingModule init called, predict_only is r   gMbP?T)weightZgp_coefZmask_as_fake_targetZallow_scale_masknone)Z	reduction   )r   Zweights_pathz&BaseInpaintingTrainingModule init done)super__init__LOGGERinfor   	generatoruse_ddpr	   Zdiscriminatorr   Zadversarial_lossaverage_generatorgenerator_avg_betaaverage_generator_start_stepaverage_generator_periodZgenerator_averageZlast_generator_averaging_stepstore_discr_outputs_for_visnnZL1LossZloss_l1r   Zloss_resnet_plvisualize_each_iters)selfZ	model_dirr   Zpredict_onlyr    r   r   r   r   r   kwargs	__class__ k/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/modelscope/models/cv/image_inpainting/base.pyr      s2   
z%BaseInpaintingTrainingModule.__init__batchreturnc                 C      t  )zUPass data through generator and obtain at leas 'predicted_image' and 'inpainted' keysNotImplementedErrorr!   r'   r%   r%   r&   forward@   s   z$BaseInpaintingTrainingModule.forwardc                 C   r)   Nr*   r,   r%   r%   r&   generator_lossE      z+BaseInpaintingTrainingModule.generator_lossc                 C   r)   r.   r*   r,   r%   r%   r&   discriminator_lossI   r0   z/BaseInpaintingTrainingModule.discriminator_loss)	r   TFr   Fr   r   r   F)__name__
__module____qualname__r   r   strtorchZTensorr-   r   r/   r1   __classcell__r%   r%   r#   r&   r
      s,    *

r
   )__doc__typingr   r   r6   Ztorch.nnr   Ztorch.nn.functionalZ
functionalFZmodelscope.utils.loggerr   Zmodules.adversarialr   Zmodules.ffcr   Zmodules.perceptualr   Zmodules.pix2pixhdr	   r   Moduler
   r%   r%   r%   r&   <module>   s    