
    9i                         S SK r S SKrS SKrS SKrSSKJr  S r " S S\R                  R                  5      r	 " S S\	5      r
S	 rS
 r\S:X  a  \" 5       r\" \5        gg)    N   )loggingc                      [         R                  " 5       n U R                  S[        SS9  U R                  S[        SS9  U R                  S[        S9  U R                  S[        S9  U R                  5       nU$ )	zParse all argumentsz--prediction_json_pathz./pre_res.json)typedefaultz--gt_val_pathz	./val.txtz--image_dir)r   z--num_classes)argparseArgumentParseradd_argumentstrint
parse_args)parserargss     d/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/paddlex/modules/base/utils/topk_eval.pyr   r      su    $$&F
0sDTU
c;G
C0
c2DK    c                   L   ^  \ rS rSrSrU 4S jr\S 5       r\S 5       rSr	U =r
$ )
AvgMetrics%   zAverage metricsc                 0   > [         TU ]  5         0 U l        g )N)super__init__
avg_meters)self	__class__s    r   r   AvgMetrics.__init__(   s    r   c                     U R                   (       a-  U R                    H  nU R                   U   R                  s  $    gg)z#Return average value of each metricN)r   avg)r   
metric_keys     r   r   AvgMetrics.avg,   s3     ??"oo
z2666 . r   c                     SR                  U R                   Vs/ s H  oR                  U   R                  PM     sn5      $ s  snf )z5Return a formatted string of average values and namesz, )joinr   avg_info)r   keys     r   r"   AvgMetrics.avg_info3   s6     yy4??S?C//#.77?STTSs   "A)r   )__name__
__module____qualname____firstlineno____doc__r   propertyr   r"   __static_attributes____classcell__r   s   @r   r   r   %   s5     7 7 U Ur   r   c                   6   ^  \ rS rSrSrSU 4S jjrS rSrU =r$ )TopkAcc9   zTop-k accuracy metricc                    > [         TU ]  5         [        U[        [        [
        45      (       d   e[        U[        5      (       a  U/nXl        SU l        g )NF)r   r   
isinstancer   listtupletopkwarned)r   r5   r   s     r   r   TopkAcc.__init__<   sH    $dE 23333dC  6D	r   c                    [        U[        5      (       a  US   nUR                  S   n[        5       n[        U R                  5       H  u  pVX6:  aD  U R
                  (       d)  SU SU SU S3n[        R                  " U5        SU l        SUS	U 3'   MN  [        R                  R                  XUS
9R                  5       US	U 3'   M     U$ )zforward functionlogitszThe output dims(z) is less than k(z), so the Top-z metric is meaningless.T   top)k)r2   dictshape	enumerater5   r6   r   infopaddlemetricaccuracyitem)r   xlabeloutput_dimsmetric_dictidxr=   msgs           r   forwardTopkAcc.forwardD   s    a(Aggbkf		*FC{{,[M9J1#^\][^^uvCLL%"&DK)*c!I&)/)?)?A)?)N)S)S)Uc!I& + r   )r5   r6   ))r;      )	r%   r&   r'   r(   r)   r   rL   r+   r,   r-   s   @r   r/   r/   9   s     r   r/   c                 P    S/U-  n[        U S   U S   5       H	  u  p4XBU'   M     U$ )z2Parse prediction information to probability vectorg        	class_idsscores)zip)pt_infonum_classespre_listrJ   vals        r   prase_pt_inforW   X   s8    u{"H,gh.?@ AOr   c                    [        U R                  S5       n[        R                  " U5      nSSS5        0 n/ n/ n[        U R                  5       HE  nUR                  5       R                  S5      u  pxUR                  S5      S   n[        U5      X7'   MG     W Hh  n	[        R                  R                  U	S   U R                  5      nUR                  [        XR                  5      5        UR                  X7   /5        Mj     [        5       " [         R"                  " U5      [         R"                  " U5      5      n
[$        R&                  " U
5        g! , (       d  f       GN1= f)zmain functionrN /r:   	file_name)openprediction_json_pathjsonloadgt_val_pathstripsplitr   ospathrelpath	image_dirappendrW   rT   r/   rB   	to_tensorr   rA   )r   fppredication_resultgt_infopredrG   lineimg_filegt_labelrS   rI   s              r   mainrq   `   s   	d''	-!YYr] 
.GDET%%&!ZZ\//4>>#&r*M ' &77??7;#7HM'+;+;<=g'() & )F,,T2F4D4DU4KLKLL 
.	-s   E
E'__main__)r   r_   rd   rB   utilsr   r   nnLayerr   r/   rW   rq   r%   r    r   r   <module>rw      sd       	  	U U(j >( z<DJ r   