
    uj	                         d dl mZ d dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ dd	lmZ dd
lmZmZ  ej        eej                   G d de                      ZdS )    )DictN)Metrics)
OutputKeys)"remove_space_between_chinese_chars)default_group)torch_nested_numpify   )Metric)METRICS
MetricKeys)	group_keymodule_namec                   L     e Zd ZdZ fdZdedefdZd ZddZd	 Z	d
 Z
 xZS )AccuracyMetriczThe metric computation class for classification classes.

    This metric class calculates accuracy for the whole input batches.
    c                 V     t                      j        |i | g | _        g | _        d S N)super__init__predslabels)selfargskwargs	__class__s      r/lsinfo/ai/hellotax_ai/data_center/backend/venv/lib/python3.11/site-packages/modelscope/metrics/accuracy_metric.pyr   zAccuracyMetric.__init__   s1    $)&)))
    outputsinputsc                    t           j        |v rt           j        nt           j        }||         }d }t           j        t           j        t           j        t           j        t           j        t           j        fD ]}||v r||         
||         } nt          |          t          |          k    sJ t          |          }|D ]}| j	        
                    |           t          |          }|D ]}t          |t                    rdt          |t                    r|d         }t          |t                    s
J d            | j        
                    t          |                     {| j        
                    |           d S )Nr   zboth truth and pred are str)r   LABELLABELSCAPTIONTEXTBOXESSCOREStyper   r   append
isinstancestrlistr   r   )	r   r   r   
label_nameground_truthseval_resultskeytruthresults	            r   addzAccuracyMetric.add   s   )3)9V)C)CZ%%IZ
z*"JOZ5E *"3Z5F
 	 	C g~~'#,":&s|M""d<&8&88888,];;" 	& 	&EKu%%%%+L99" 	* 	*F%%% *fd++ '#AYF!&#..MM0MMM.
!!"DV"L"LMMMM
!!&))))	* 	*r   c                 &   t          | j                  t          | j                  k    sJ t          j        t          j        d t          | j        | j                  D                                                       	                                iS )Nc                      g | ]\  }}||k    S  r4   ).0predrefs      r   
<listcomp>z+AccuracyMetric.evaluate.<locals>.<listcomp>8   s-     . . . )c. . .r   )
lenr   r   r   ACCURACYnpasarrayzipmeanitemr   s    r   evaluatezAccuracyMetric.evaluate5   s~    4:#dk"2"22222"* . .-0T[-I-I. . . # #ttvv
 	
r   otherc                     | j                             |j                    | j                            |j                   d S r   )r   extendr   )r   rB   s     r   mergezAccuracyMetric.merge=   s8    
%+&&&5<(((((r   c                     | j         | j        fS r   )r   r   r@   s    r   __getstate__zAccuracyMetric.__getstate__A   s    z4;&&r   c                 L    |                                   |\  | _        | _        d S r   )r   r   r   )r   states     r   __setstate__zAccuracyMetric.__setstate__D   s!    "'
DKKKr   )rB   r   )__name__
__module____qualname____doc__r   r   r1   rA   rE   rG   rJ   __classcell__)r   s   @r   r   r      s         
    
*4 * * * * *2
 
 
) ) ) )' ' '( ( ( ( ( ( (r   r   )typingr   numpyr;   modelscope.metainfor   modelscope.outputsr   modelscope.utils.chinese_utilsr   modelscope.utils.registryr   modelscope.utils.tensor_utilsr   baser
   builderr   r   register_moduleaccuracyr   r4   r   r   <module>r[      s              ' ' ' ' ' ' ) ) ) ) ) ) M M M M M M 3 3 3 3 3 3 > > > > > >       ( ( ( ( ( ( ( ( =g>NOOO5( 5( 5( 5( 5(V 5( 5( PO5( 5( 5(r   