
    9iS                     l    S SK r S SKJr   " S S\R                  5      r " S S\R                  5      rg)    Nc                   J   ^  \ rS rSrU 4S jrS\R                  4S jrSrU =r	$ )
MaskL1Loss   c                 *   > [         [        U ]  5         g N)superr   __init__)self	__class__s    ^/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/easyocr/DBNet/decoders/l1_loss.pyr	   MaskL1Loss.__init__   s    j$(*    predc                     UR                  5       nUR                  5       S:X  a  U[        US94$ [        R                  " US S 2S4   U-
  5      U-  R                  5       U-  nU[        US94$ )Nr   )l1_loss)sumitemdicttorchabs)r
   r   gtmaskmask_sumlosss         r   forwardMaskL1Loss.forward	   sh    88:==?aT(333IId1a4j2o.5::<xGDd+++r    
__name__
__module____qualname____firstlineno__r	   r   Tensorr   __static_attributes____classcell__r   s   @r   r   r      s    +,ELL , ,r   r   c                   N   ^  \ rS rSrSU 4S jjrS\R                  4S jrSrU =r	$ )BalanceL1Loss   c                 6   > [         [        U ]  5         Xl        g r   )r   r(   r	   negative_ratio)r
   r+   r   s     r   r	   BalanceL1Loss.__init__   s    mT+-,r   r   c                    [         R                  " USS2S4   U-
  5      nXC-  nUSU-
  -  n[        UR                  5       5      n[	        [        SU-
  R                  5       5      [        XpR
                  -  5      5      n[         R                  " UR                  S5      U5      u  pU	R                  5       U-  n	UR                  5       U-  nX-   [        XS94$ )zG
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   BalanceL1Loss.forward   s     yyadb);1t8$TXXZQXNN$%N%8%889; !::hmmB&7H%))+n< 7,BC 	Cr   )r+   )g      @r   r&   s   @r   r(   r(      s     -CELL C Cr   r(   )r   torch.nnnnModuler   r(   r   r   r   <module>r@      s-     
, 
,CBII Cr   