
    YhS                     f    d dl Z d dlmZ  G d dej                  Z G d dej                  ZdS )    Nc                   4     e Zd Z fdZdej        fdZ xZS )
MaskL1Lossc                 V    t          t          |                                            d S N)superr   __init__)self	__class__s    p/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/easyocr/DBNet/decoders/l1_loss.pyr   zMaskL1Loss.__init__   s%    j$((*****    predc                    |                                 }|                                dk    r|t          |          fS t          j        |d d df         |z
            |z                                   |z  }|t          |          fS )Nr   )l1_loss)sumitemdicttorchabs)r	   r   gtmaskmask_sumlosss         r   forwardzMaskL1Loss.forward	   s    88::==??aT(33333Id111a4j2o..5::<<xGDd+++++r   __name__
__module____qualname__r   r   Tensorr   __classcell__r
   s   @r   r   r      sU        + + + + +,EL , , , , , , , ,r   r   c                   6     e Zd Zd fd	Zdej        fdZ xZS )BalanceL1Loss      @c                 d    t          t          |                                            || _        d S r   )r   r"   r   negative_ratio)r	   r%   r
   s     r   r   zBalanceL1Loss.__init__   s-    mT""++---,r   r   c                    t          j        |dddf         |z
            }||z  }|d|z
  z  }t          |                                          }t	          t          d|z
                                            t          || j        z                      }t          j        |                    d          |          \  }	}
|	                                |z  }	|                                |z  }||	z   t          ||	          fS )zo
        Args:
            pred: (N, 1, H, W).
            gt: (N, H, W).
            mask: (N, H, W).
        Nr      )r   nge_l1_loss)	r   r   intr   minr%   topkviewr   )r	   r   r   r   r   positivenegativepositive_countnegative_countnegative_loss_positive_losss               r   r   zBalanceL1Loss.forward   s     yaaadb))$;1t8$TXXZZQXNN$$%%NT%8899; ; !:hmmB&7&7HHq%))++n< 7},MBBBC 	Cr   )r#   r   r    s   @r   r"   r"      sc        - - - - - -CEL C C C C C C C Cr   r"   )r   torch.nnnnModuler   r"    r   r   <module>r9      s          
, 
, 
, 
, 
, 
, 
, 
,C C C C CBI C C C C Cr   