
    y hS                     l    d dl Z d dlmZ  G d dej                        Z G d dej                        Zy)    Nc                   >     e Zd Z fdZdej
                  fdZ xZS )
MaskL1Lossc                 *    t         t        |           y N)superr   __init__)self	__class__s    z/home/developers/rajanand/mypropertyqr-fmb-refixing-v2/venv/lib/python3.12/site-packages/easyocr/DBNet/decoders/l1_loss.pyr   zMaskL1Loss.__init__   s    j$(*    predc                     |j                         }|j                         dk(  r|t        |      fS t        j                  |d d df   |z
        |z  j                         |z  }|t        |      fS )Nr   )l1_loss)sumitemdicttorchabs)r	   r   gtmaskmask_sumlosss         r   forwardzMaskL1Loss.forward	   sh    88:==?aT(333IId1a4j2o.5::<xGDd+++r   __name__
__module____qualname__r   r   Tensorr   __classcell__r
   s   @r   r   r      s    +,ELL ,r   r   c                   @     e Zd Zd fd	Zdej
                  fdZ xZS )BalanceL1Lossc                 8    t         t        |           || _        y 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        |j                               }t	        t        d|z
  j                               t        || j
                  z              }t        j                  |j                  d      |      \  }	}
|	j                         |z  }	|j                         |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     yyadb)$;1t8$TXXZQXNN$%NT%8%889; !::hmmB&7Hq%))+n< 7},MBC 	Cr   )g      @r   r    s   @r   r"   r"      s    -CELL Cr   r"   )r   torch.nnnnModuler   r"    r   r   <module>r8      s-     
, 
,CBII Cr   