
    9i                         S SK Jr  S SK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Jr  \R                  " \	\R                   S	9 " S
 S\5      5       rg)    )DictN)Metrics)
OutputKeys)default_group   )Metric)METRICS
MetricKeys)	group_keymodule_namec                   d   ^  \ rS rSrSrU 4S jrS\S\4S jrS rSS jr	S	 r
S
 rSS jrSrU =r$ )AveragePrecisionMetric   zThe metric computation class for multi average precision classes.

This metric class calculates multi average precision for the whole input batches.
c                 p   > [         TU ]  " U0 UD6  / U l        / U l        UR	                  SS5      U l        g )N	threshold      ?)super__init__predslabelsgetthresh)selfargskwargs	__class__s      ]/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/metrics/map_metric.pyr   AveragePrecisionMetric.__init__   s5    $)&)
jjc2    outputsinputsc                    [         R                  U;   a  [         R                  O[         R                  nX#   nX   n[         R                  [         R                  [         R
                  [         R                  [         R                  4 H  nXa;   d  M
  X   c  M  X   n  O   [        U5      [        U5      :X  d   eU H  nU R                  R                  U5        M      U Hn  n[        W[        5      (       a;  U R                  R                  UR                  5       R                  SS5      5        MS  U R                  R                  U5        Mp     g )N  )r   LABELLABELSCAPTIONTEXTBOXESSCOREStyper   append
isinstancestrr   stripreplace)	r   r    r!   
label_nameground_truthseval_resultskeytruthresults	            r   addAveragePrecisionMetric.add   s   )3)9)9V)CZ%%IZIZ
**""JOOZ5E5E!!:#4#4
C ~',":&|
 M"d<&8888"EKKu% #"F%%%

!!&,,."8"8b"AB

!!&)	 #r   c                    [        U R                  5      [        U R                  5      :X  d   eU R                  U R                  U R                  U R                  5      n[
        R                  UR                  5       R                  5       0$ N)	lenr   r   _calculate_ap_scorer   r
   mAPmeanitem)r   scoress     r   evaluateAveragePrecisionMetric.evaluate0   s_    4::#dkk"2222))$**dkk4;;O 2 2 455r   c                     U R                   R                  UR                   5        U R                  R                  UR                  5        g r:   )r   extendr   )r   others     r   mergeAveragePrecisionMetric.merge5   s.    

%++&5<<(r   c                 H    U R                   U R                  U R                  4$ r:   )r   r   r   )r   s    r   __getstate__#AveragePrecisionMetric.__getstate__9   s    zz4;;33r   c                 N    U R                  5         Uu  U l        U l        U l        g r:   )r   r   r   r   )r   states     r   __setstate__#AveragePrecisionMetric.__setstate__<   s    /4,
DKr   c                    [         R                  " U5      n[         R                  " U5      n[         R                  " US S 2S S24   US S 2S S24   :  US S 2S S24   US S 2S S24   5      n[         R                  " US S 2SS 24   US S 2SS 24   :  US S 2SS 24   US S 2SS 24   5      n[         R                  " Xg/SS9nUS S 2S4   US S 2S4   -
  US S 2S4   US S 2S4   -
  -  n	US S 2S4   US S 2S4   -
  US S 2S4   US S 2S4   -
  -  n
US S 2S4   US S 2S4   -
  nUS S 2S4   US S 2S4   -
  nX-  nUX-   U-
  S-   -  nX:  US:  -  US:  -  $ )N   r   )axisr      gư>)nparraywhereconcatenate)r   r   r   r   hypsrefsab	interactsarea_predictionsarea_targetsinteracts_winteracts_harea_interactsiouss                  r   r<   *AveragePrecisionMetric._calculate_ap_score@   s   xxxxHHT!RaR%[42A2;.QUT!RaR%[IHHT!QR%[412;.QUT!QR%[INNA62	 AJad3AJad#%QT
T!Q$Z/DAJad4KL1o	!Q$71o	!Q$7$2+n<tCE;?3{QGGr   )r   r   r   )rE   r   )r   )__name__
__module____qualname____firstlineno____doc__r   r   r7   rA   rF   rI   rM   r<   __static_attributes____classcell__)r   s   @r   r   r      s@    
3*4 * *(6
)45H Hr   r   )typingr   numpyrS   modelscope.metainfor   modelscope.outputsr   modelscope.utils.registryr   baser   builderr	   r
   register_modulemulti_average_precisionr    r   r   <module>rt      sR      ' ) 3  ( 	)H)HJ>HV >HJ>Hr   