a
    d                     @   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    q^1 s00    Y  n"ttttj	dd
d}dd t|D }|| _|| _t| jt| jksJ || _dd |D | _d| _d S )N_infozimagenet_real_labels.jsonzutf-8c                 S   s$   i | ]\}}d |d dd|qS )ZILSVRC2012_val_r   Z08dz.JPEG ).0ilabelsr   r   ^/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/timm/data/real_labels.py
<dictcomp>       z/RealLabelsImagenet.__init__.<locals>.<dictcomp>c                 S   s   i | ]
}|g qS r   r   r   kr   r   r   r      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   Z	real_jsonr   r   r   r   r   __init__   s    
*zRealLabelsImagenet.__init__c              	      s   t j}||ddd\}}|  }|D ]l}jj  tj  j	  rjD ]0}j
| t fdd|d | D  qZ jd7  _q.d S )Nr   Tc                    s   g | ]}|j   v qS r   )r   )r   pfilenamer"   r   r   
<listcomp>(   r   z1RealLabelsImagenet.add_result.<locals>.<listcomp>)maxr   cpunumpyr   r!   r   r   basenamer   r    appendany)r"   outputZmaxk_Z
pred_batchpredr   r   r%   r   
add_result   s    



zRealLabelsImagenet.add_resultc                    s8   |d u r fdd j D S tt j| d S d S )Nc                    s&   i | ]}|t t j| d  qS )d   )floatnpmeanr    r   r"   r   r   r   -   r   z3RealLabelsImagenet.get_accuracy.<locals>.<dictcomp>r2   )r   r3   r4   r5   r    )r"   r   r   r6   r   get_accuracy+   s    zRealLabelsImagenet.get_accuracy)Nr   )N)r   
__module____qualname__r#   r1   r7   r   r   r   r   r      s   
r   )__doc__r   r   r*   r4   r   r   r   r   r   r   <module>   s
   