
    Ng                     D    d Z ddlZddlZddlZddlZ G d d          ZdS )z Real labels evaluator for ImageNet
Paper: `Are we done with ImageNet?` - https://arxiv.org/abs/2006.07159
Based on Numpy example at https://github.com/google-research/reassessed-imagenet

Hacked together by / Copyright 2020 Ross Wightman
    Nc                   $    e Zd ZddZd ZddZdS )RealLabelsImagenetN      c           	          |<t          |          5 }t          j        |          }d d d            n# 1 swxY w Y   n]t          j        t	          j        t          t          j        	                    dd                    
                    d                    }d t          |          D             }|| _        || _        t          | j                  t          | j                  k    sJ || _        d |D             | _        d| _        d S )N_infozimagenet_real_labels.jsonzutf-8c                 *    i | ]\  }}d |dz   dd|S )ILSVRC2012_val_r   08dz.JPEG ).0ilabelss      Q/var/www/html/ai-engine/env/lib/python3.11/site-packages/timm/data/real_labels.py
<dictcomp>z/RealLabelsImagenet.__init__.<locals>.<dictcomp>   s1    jjjia9Q99996jjj    c                     i | ]}|g S r   r   )r   ks     r   r   z/RealLabelsImagenet.__init__.<locals>.<dictcomp>   s    ///Q1b///r   r   )openjsonloadloadspkgutilget_data__name__ospathjoindecode	enumeratereal_labels	filenameslentopk
is_correct
sample_idx)selfr#   	real_jsonr%   r"   s        r   __init__zRealLabelsImagenet.__init__   s4    i 5K"i445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 * 27<<A\+]+]^^eefmnnp pKjjS\]hSiSijjj&"4>""c$*:&;&;;;;;	//$///s   377c           
          t           j                  }|                    |ddd          \  }}|                                                                }|D ]} j         j                 t          j                                       j	                 rL j        D ]D} j
        |                             t           fd|d |         D                                  E xj        dz  c_        d S )Nr   Tc                 .    g | ]}|j                  v S r   )r"   )r   pfilenamer(   s     r   
<listcomp>z1RealLabelsImagenet.add_result.<locals>.<listcomp>(   s&    OOOQ$"28"<<OOOr   )maxr%   cpunumpyr#   r'   r   r   basenamer"   r&   appendany)r(   outputmaxk_
pred_batchpredr   r.   s   `      @r   
add_resultzRealLabelsImagenet.add_result   s   49~~D!T488:^^%%++--
 	! 	!D~do6Hw''11H) R R RAOA&--OOOOOd2A2hOOOPPR R R ROOq OOO	! 	!r   c                      | fd j         D             S t          t          j         j        |                             dz  S )Nc           	      p    i | ]2}|t          t          j        j        |                             d z  3S )d   )floatnpmeanr&   )r   r   r(   s     r   r   z3RealLabelsImagenet.get_accuracy.<locals>.<dictcomp>-   s9    SSSAAuRWT_Q%78899C?SSSr   r>   )r%   r?   r@   rA   r&   )r(   r   s   ` r   get_accuracyzRealLabelsImagenet.get_accuracy+   sH    9SSSSSSSS!34455;;r   )Nr   )N)r   
__module____qualname__r*   r;   rB   r   r   r   r   r      sK           ! ! !< < < < < <r   r   )__doc__r   r   r2   r@   r   r   r   r   r   <module>rF      sj     
			      "< "< "< "< "< "< "< "< "< "<r   