
    9i
                         S r SSKJrJr  SSKrSSKJr  SSKJs  Jr	  SSK
Jr  SSKJr  SSKJr  SSKJr  SS	KJr  \" 5       r " S
 S\R*                  5      rg)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                      ^  \ rS rSr         S	U 4S jjrS\\\R                  4   S\\\R                  4   4S jr	S\
\R                  \\\R                  4   4   4S jrS\
\R                  \\\R                  4   4   4S jrSrU =r$ )
BaseInpaintingTrainingModule   c
                   > [         TU ]  5         [        R                  SU 35        [	        5       U l        X l        U(       dt  [        5       U l        [        SSSSS9U l
        XPl        X`l        Xpl        Xl        S U l        SU l        Xl        [$        R&                  " SS9U l        [+        S	US
9U l        X@l        [        R                  S5        g )Nz:BaseInpaintingTrainingModule init called, predict_only is 
   gMbP?T)weightgp_coefmask_as_fake_targetallow_scale_masknone)	reduction   )r   weights_pathz&BaseInpaintingTrainingModule init done)super__init__LOGGERinfor   	generatoruse_ddpr
   discriminatorr   adversarial_lossaverage_generatorgenerator_avg_betaaverage_generator_start_stepaverage_generator_periodgenerator_averagelast_generator_averaging_stepstore_discr_outputs_for_visnnL1Lossloss_l1r	   loss_resnet_plvisualize_each_iters)self	model_dirr   predict_onlyr,   r!   r"   r#   r$   r'   kwargs	__class__s              j/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/models/cv/image_inpainting/base.pyr   %BaseInpaintingTrainingModule.__init__   s     	HW	
 ,-!4!6D$7$(!%	%'D! &7"&8#0L-,D)%)D"13D./J,99v6DL"*"9"MD$8!<=    batchreturnc                     [        5       e)zUPass data through generator and obtain at leas 'predicted_image' and 'inpainted' keysNotImplementedErrorr-   r5   s     r2   forward$BaseInpaintingTrainingModule.forward@   s     "##r4   c                     [        5       eNr8   r:   s     r2   generator_loss+BaseInpaintingTrainingModule.generator_lossE       !##r4   c                     [        5       er>   r8   r:   s     r2   discriminator_loss/BaseInpaintingTrainingModule.discriminator_lossI   rA   r4   )r    r!   r$   r#   r   r   r%   r"   r&   r*   r+   r'   r   r,   )	 TFd   Fg+?i0u  r   F)__name__
__module____qualname____firstlineno__r   r   strtorchTensorr;   r   r?   rC   __static_attributes____classcell__)r1   s   @r2   r   r      s     #&)#($).3*,-2(>T$T#"',,#/ 0 $48ell9J4K$
$!&u||T#u||:K5L'L!M$$!%,,S%,,5F0G"GH$ $r4   r   )__doc__typingr   r   rL   torch.nnr(   torch.nn.functional
functionalFmodelscope.utils.loggerr   modules.adversarialr   modules.ffcr   modules.perceptualr	   modules.pix2pixhdr
   r   Moduler    r4   r2   <module>r]      sA         . 4 + ( 2	7$299 7$r4   