
    khG                         d dl Z d dlZd dlZd dlZd dlmZmZmZmZ ddl	m
Z
 ddddd	d
dZddddddddZdZdZdee   fdZ G d de
      Zy)    N)DictListOptionalUnion   )DatasetInfoimagenet-1kzimagenet-21k-miilzimagenet-12kzimagenet-22kzimagenet-22k-mszimagenet-21k-goog)i  i+  i-.  iQU  iRU  iSU  zimagenet_synsets.txtzimagenet12k_synsets.txtzimagenet22k_synsets.txtzimagenet21k_goog_synsets.txtzimagenet21k_miil_synsets.txtzimagenet22k_ms_synsets.txt)
imagenet1kimagenet12kimagenet22kimagenet21kimagenet21kgoogimagenet21kmiilimagenet22kmszimagenet_synset_to_lemma.txtz!imagenet_synset_to_definition.txtreturnc                     t        | t              r| j                  dd       }n.t        | dd       }|st        | di       }|j                  dd       }|r|t        vry t        |   S )Nnum_classespretrained_cfg)
isinstancedictgetgetattr_NUM_CLASSES_TO_SUBSET)model_or_cfgr   r   s      S/var/www/teggl/fontify/venv/lib/python3.12/site-packages/timm/data/imagenet_info.pyinfer_imagenet_subsetr   !   sk    ,%"&&}d;lM4@$\3CRHN ),,]DAK+-CC!+..    c                        e Zd Zddef fdZd Zd Zddededee	e   e
eef   f   fdZdefd	Zdd
ededefdZddededefdZ xZS )ImageNetInfosubsetc                 \   t         |           t        j                  dd|j	                               }|t
        v sJ d| d       t
        |   }t        j                  t        t        j                  j                  d|            }|j                  d      j                         | _        t        j                  t        t        j                  j                  dt                    }t!        j"                  |j                  d      j                         d      }t%        |      | _        t        j                  t        t        j                  j                  dt(                    }t!        j"                  |j                  d      j                         d      }t%        |      | _        y )	Nz[-_\s] zUnknown imagenet subset ._infozutf-8	)	delimiter)super__init__resublower_SUBSETSpkgutilget_data__name__ospathjoindecode
splitlines_synsets_LEMMA_FILEcsvreaderr   _lemmas_DEFINITION_FILE_definitions)selfr    synset_filesynset_data
lemma_datar8   definition_data	__class__s          r   r(   zImageNetInfo.__init__2   s0   	2v||~6!G%=fXQ#GG! v&&&xg{1ST#**73>>@ %%hWk0RS
J--g6AACtTF|!**8RWW\\'K[5\]O227;FFHTXY Lr   c                 ,    t        | j                        S Nlenr5   r<   s    r   r   zImageNetInfo.num_classesE   s    4==!!r   c                     | j                   S rC   )r5   rF   s    r   label_nameszImageNetInfo.label_namesH   s    }}r   detailedas_dictr   c                     |r,| j                   D ci c]  }|| j                  ||       c}S | j                   D cg c]  }| j                  ||       c}S c c}w c c}w N)rI   )r5   label_name_to_description)r<   rI   rJ   labels       r   label_descriptionszImageNetInfo.label_descriptionsK   sc    aeananoX]E499%(9SSooZ^ZgZghQVD22582Lhh phs
   AAc                     d|cxk  rt        | j                        k  s#n J d| dt        | j                         d       | j                  |   S )Nr   zIndex (z ) out of range for dataset with z	 classes.rD   )r<   indexs     r   index_to_label_namez ImageNetInfo.index_to_label_nameQ   sT    E.C.. 	[eW<S=O<PPYZ	[.}}U##r   rQ   c                 J    | j                  |      }| j                  ||      S rL   )rR   rM   )r<   rQ   rI   rN   s       r   index_to_descriptionz!ImageNetInfo.index_to_descriptionV   s(    ((/--eh-GGr   rN   c                 p    |r#| j                   |    d| j                  |    }|S | j                   |    }|S )Nz: )r9   r;   )r<   rN   rI   descriptions       r   rM   z&ImageNetInfo.label_name_to_descriptionZ   sL    !\\%01D4E4Ee4L3MNK  "\\%01Kr   )r	   )FF)F)r/   
__module____qualname__strr(   r   rH   boolr   r   r   rO   rR   intrT   rM   __classcell__)rA   s   @r   r   r   0   s    )s )&"i4 i$ iSXY]^aYbdhilnqiqdrYrSs i$C $
H# H H# Hs d s r   r   )r7   r0   r-   r)   typingr   r   r   r   dataset_infor   r   r,   r6   r:   rY   r   r    r   r   <module>r`      s}    
 	  	 . . %
   ),,1551 -6 /8C= //; /r   