o
    پi                     @   s6   d Z ddlZddlZddlZddlZG d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                   @   s(   e Zd Zd	ddZdd Zd
ddZdS )RealLabelsImagenetN      c              	   C   s   |d urt |}t|}W d    n1 sw   Y  nttttj	dd
d}dd t|D }|| _|| _t| jt| jksJJ || _dd |D | _d| _d S )N_infozimagenet_real_labels.jsonzutf-8c                 S   s$   i | ]\}}d |d dd|qS )ILSVRC2012_val_r   08dz.JPEG ).0ilabelsr	   r	   I/home/ubuntu/.local/lib/python3.10/site-packages/timm/data/real_labels.py
<dictcomp>   s   $ z/RealLabelsImagenet.__init__.<locals>.<dictcomp>c                 S   s   i | ]}|g qS r	   r	   r
   kr	   r	   r   r      s    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   r	   r	   r   __init__   s   

zRealLabelsImagenet.__init__c              	      s   t j}||ddd\}}|  }|D ]6}jj  tj  j	  rFjD ]}j
| t fdd|d | D  q- jd7  _qd S )Nr   Tc                    s   g | ]	}|j   v qS r	   )r   )r
   pfilenamer#   r	   r   
<listcomp>(   s    z1RealLabelsImagenet.add_result.<locals>.<listcomp>)maxr    cpunumpyr   r"   r   r   basenamer   r!   appendany)r#   outputmaxk_
pred_batchpredr   r	   r'   r   
add_result   s   



zRealLabelsImagenet.add_resultc                    s4   |d u r fdd j D S tt j| d S )Nc                    s&   i | ]}|t t j| d  qS )d   )floatnpmeanr!   r   r#   r	   r   r   -   s   & z3RealLabelsImagenet.get_accuracy.<locals>.<dictcomp>r6   )r    r7   r8   r9   r!   )r#   r   r	   r:   r   get_accuracy+   s   zRealLabelsImagenet.get_accuracy)Nr   )N)r   
__module____qualname__r%   r5   r;   r	   r	   r	   r   r      s    
r   )__doc__r   r   r,   r8   r   r   r	   r	   r	   r   <module>   s    