
    kh                     <    d Z ddlZddlZddlZddlZ G d d      Zy)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y)RealLabelsImagenetNc           	      H   |*t        |      5 }t        j                  |      }d d d        nZt        j                  t	        j
                  t        t        j                  j                  dd            j                  d            }t              D ci c]  \  }}d|dz   dd| }}}|| _        || _        t        | j                        t        | j                        k(  sJ || _        |D ci c]  }|g  c}| _        d| _        y # 1 sw Y   xY wc c}}w c c}w )	N_infozimagenet_real_labels.jsonzutf-8ILSVRC2012_val_   08dz.JPEGr   )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   ilabelsks           Q/var/www/teggl/fontify/venv/lib/python3.12/site-packages/timm/data/real_labels.py__init__zRealLabelsImagenet.__init__   s    i 5K"ii45 5 **  277<<A\+]^eefmnpKS\]hSijiaQs596Ajj&"4>>"c$*:*:&;;;;	*./Q1b5/5 5
 k
 0s   DD3
DDc                    t        | j                        }|j                  |ddd      \  }}|j                         j                         }|D ]  }| j                  | j
                     }t        j                  j                  |      }| j                  |   rX| j                  D ]I  }| j                  |   j                  t        |d | D cg c]  }|| j                  |   v  c}             K | xj
                  dz  c_         y c c}w )Nr   T)maxr   cpunumpyr   r   r   r   basenamer   r   appendany)	r   outputmaxk_
pred_batchpredfilenamer    ps	            r!   
add_resultzRealLabelsImagenet.add_result   s    499~D!T48:^^%++-
 	!D~~doo6Hww''1H) RAOOA&--d2AhOQ$"2"28"<<OPRR OOq O	! Ps   
Dc           
          |G| j                   D ci c]1  }|t        t        j                  | j                  |               dz  3 c}S t        t        j                  | j                  |               dz  S c c}w )Nd   )r   floatnpmeanr   )r   r    s     r!   get_accuracyzRealLabelsImagenet.get_accuracy+   se    9IMSAAuRWWT__Q%789C??SS!345;; Ts   6A8)N)r      )N)r   
__module____qualname__r"   r1   r7        r!   r   r      s    !<r<   r   )__doc__r   r   r&   r5   r   r   r;   r<   r!   <module>r>      s"    
   "< "<r<   