ó
    EñiÚ"  ã                   ó¢  • S SK r S SKrS SKrS SKJr  S SKJr  S SKJr  S SK	J
r
JrJr  S SKrSSKJr  SSKJrJrJr  S	S
SS.rSr " S S\5      rSS\\\4   S\\   S\\\\4   \\   4   4S jjrS\\\4   S\S\SS4S jrSS\\\4   S\\   SS4S jjrSS\\\4   S\\   S\SS4S jjr SS\\\4   S\\   S\\\      S\SS4
S jjrg)é    N)ÚIterator)Úcontextmanager)ÚPath)ÚAnyÚOptionalÚUnioné   )ÚImageFolder)Úcheck_integrityÚextract_archiveÚverify_str_arg)zILSVRC2012_img_train.tarÚ 1d675b47d978889d74fa0da5fadfb00e)zILSVRC2012_img_val.tarÚ 29b22e2961454d5413ddabcf34fc5622)zILSVRC2012_devkit_t12.tar.gzÚ fa75699e90414af021442c21a62c3abf)ÚtrainÚvalÚdevkitzmeta.binc            	       ó~   ^ • \ rS rSrSrSS\\\4   S\S\SS4U 4S jjjr	SS	 jr
\S\4S
 j5       rS\4S jrSrU =r$ )ÚImageNeté   aà  `ImageNet <http://image-net.org/>`_ 2012 Classification Dataset.

.. note::
    Before using this class, it is required to download ImageNet 2012 dataset from
    `here <https://image-net.org/challenges/LSVRC/2012/2012-downloads.php>`_ and
    place the files ``ILSVRC2012_devkit_t12.tar.gz`` and ``ILSVRC2012_img_train.tar``
    or ``ILSVRC2012_img_val.tar`` based on ``split`` in the root directory.

Args:
    root (str or ``pathlib.Path``): Root directory of the ImageNet Dataset.
    split (string, optional): The dataset split, supports ``train``, or ``val``.
    transform (callable, optional): A function/transform that takes in a PIL image or torch.Tensor, depends on the given loader,
        and returns a transformed version. E.g, ``transforms.RandomCrop``
    target_transform (callable, optional): A function/transform that takes in the
        target and transforms it.
    loader (callable, optional): A function to load an image given its path.
        By default, it uses PIL as its image loader, but users could also pass in
        ``torchvision.io.decode_image`` for decoding image data into tensors directly.

 Attributes:
    classes (list): List of the class name tuples.
    class_to_idx (dict): Dict with items (class_name, class_index).
    wnids (list): List of the WordNet IDs.
    wnid_to_idx (dict): Dict with items (wordnet_id, class_index).
    imgs (list): List of (image path, class_index) tuples
    targets (list): The class_index value for each image in the dataset
ÚrootÚsplitÚkwargsÚreturnNc                 ó   >• [         R                  R                  U5      =ol        [	        USS5      U l        U R                  5         [        U R                  5      S   n[        T	U ]$  " U R                  40 UD6  Xl        U R                  U l        U R                  U l        U R                   Vs/ s H  oTU   PM	     snU l        [        U R                  5       VVVs0 s H  u  pgU  H  oˆU_M     M     snnnU l        g s  snf s  snnnf )Nr   )r   r   r   )ÚosÚpathÚ
expanduserr   r   r   Úparse_archivesÚload_meta_fileÚsuperÚ__init__Úsplit_folderÚclassesÚwnidsÚclass_to_idxÚwnid_to_idxÚ	enumerate)
Úselfr   r   r   Úwnid_to_classesÚwnidÚidxÚclssÚclsÚ	__class__s
            €ÚZ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torchvision/datasets/imagenet.pyr"   ÚImageNet.__init__4   sÙ   ø€ ÜŸ7™7×-Ñ-¨dÓ3Ð3ˆŒyÜ# E¨7Ð4DÓEˆŒ
à×ÑÔÜ(¨¯©Ó3°AÑ6ˆä‰Ò˜×*Ñ*Ñ5¨fÒ5ØŒ	à—\‘\ˆŒ
Ø×,Ñ,ˆÔØ:>¿*º*ÓEº*°$¨Ô-¹*ÑEˆŒÜ7@ÀÇÁÔ7NÕ_Ò7N©)¨#ÔZ^ÐSV #šXÑZ^™SÑ7NÓ_ˆÕùò FùÜ_s   Â2DÃ!D	c                 óœ  • [        [        R                  R                  U R                  [
        5      5      (       d  [        U R                  5        [        R                  R                  U R                  5      (       dM  U R                  S:X  a  [        U R                  5        g U R                  S:X  a  [        U R                  5        g g g )Nr   r   )r   r   r   Újoinr   Ú	META_FILEÚparse_devkit_archiveÚisdirr#   r   Úparse_train_archiveÚparse_val_archive©r)   s    r0   r   ÚImageNet.parse_archivesC   s   € ÜœrŸw™wŸ|™|¨D¯I©I´yÓA×BÑBÜ  §¡Ô+ä�w‰w�}‰}˜T×.Ñ.×/Ñ/Ø�z‰z˜WÓ$Ü# D§I¡IÕ.Ø—‘˜uÓ$Ü! $§)¡)Õ,ð %ð 0ó    c                 ój   • [         R                  R                  U R                  U R                  5      $ ©N)r   r   r3   r   r   r9   s    r0   r#   ÚImageNet.split_folderM   s   € ä�w‰w�|‰|˜DŸI™I t§z¡zÓ2Ð2r;   c                 ó:   • SR                   " S0 U R                  D6$ )NzSplit: {split}© )ÚformatÚ__dict__r9   s    r0   Ú
extra_reprÚImageNet.extra_reprQ   s   € Ø×&Ò&Ñ7¨¯©Ñ7Ð7r;   )r&   r$   r   r   r'   r%   )r   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ústrr   r   r"   r   Úpropertyr#   rC   Ú__static_attributes__Ú__classcell__)r/   s   @r0   r   r      so   ø† ññ8`˜U 3¨ 9Ñ-ð `°cð `Èsð `ÐW[÷ `ð `ô-ð ð3˜có 3ó ð3ð8˜C÷ 8ò 8r;   r   r   Úfiler   c                 óÔ   • Uc  [         n[        R                  R                  X5      n[	        U5      (       a  [
        R                  " USS9$ Sn[        UR                  X5      5      e)NT)Úweights_onlyz‚The meta file {} is not present in the root directory or is corrupted. This file is automatically created by the ImageNet dataset.)	r4   r   r   r3   r   ÚtorchÚloadÚRuntimeErrorrA   )r   rN   Úmsgs      r0   r    r    U   s[   € Ø�|ÜˆÜ�7‰7�<‰<˜Ó#€Dä�t×ÑÜ�zŠz˜$¨TÑ2Ð2ðJð 	ô ˜3Ÿ:™: dÓ1Ó2Ð2r;   Úmd5c                 ó˜   • [        [        R                  R                  X5      U5      (       d  Sn[	        UR                  X5      5      eg )Nz{The archive {} is not present in the root directory or is corrupted. You need to download it externally and place it in {}.)r   r   r   r3   rS   rA   )r   rN   rU   rT   s       r0   Ú_verify_archiverW   d   sB   € Üœ2Ÿ7™7Ÿ<™<¨Ó3°S×9Ñ9ðEð 	ô ˜3Ÿ:™: dÓ1Ó2Ð2ð :r;   c           
      óâ  ^• SSK Jm  S[        S[        [        [
        [        4   [        [        [        [        S4   4   4   4U4S jjnS[        S[        [
           4S jn[        S[        [           4S j5       n[        S	   nUc  US   nUS
   n[        XU5        U" 5        n[        [        R                  R                  X5      U5        [        R                  R                  US5      nU" U5      u  pšU" U5      nU Vs/ s H  oÉU   PM	     nn[        R                   " X­4[        R                  R                  U ["        5      5        SSS5        gs  snf ! , (       d  f       g= f)a1  Parse the devkit archive of the ImageNet2012 classification dataset and save
the meta information in a binary file.

Args:
    root (str or ``pathlib.Path``): Root directory containing the devkit archive
    file (str, optional): Name of devkit archive. Defaults to
        'ILSVRC2012_devkit_t12.tar.gz'
r   NÚdevkit_rootr   .c                 ó  >• [         R                  R                  U SS5      nTR                  USS9S   n[	        [        U6 5      S   n[        U5       VVs/ s H  u  pEUS:X  d  M  X$   PM     nnn[	        [        U6 5      S S u  pgnU V	s/ s H  n	[        U	R                  S	5      5      PM     nn	[        Xg5       VV
s0 s H  u  pJXJ_M	     nnn
[        Xx5       V
V	s0 s H  u  p©X©_M	     nn
n	X¼4$ s  snnf s  sn	f s  sn
nf s  sn	n
f )
NÚdatazmeta.matT)Ú
squeeze_meÚsynsetsé   r   é   z, )	r   r   r3   ÚloadmatÚlistÚzipr(   Útupler   )rY   ÚmetafileÚmetaÚnums_childrenr,   Únum_childrenÚidcsr%   r$   r-   r+   Úidx_to_wnidr*   Úsios                €r0   Úparse_meta_matÚ,parse_devkit_archive.<locals>.parse_meta_matx   sÿ   ø€ Ü—7‘7—<‘< ¨V°ZÓ@ˆØ�{‰{˜8°ˆ{Ð5°iÑ@ˆÜœS $˜ZÓ(¨Ñ+ˆÜ3<¸]Ô3KÔaÒ3KÑ/˜cÈ|Ð_`ÑO`“	�”	Ñ3KˆÑaÜ#¤C¨ JÓ/°°Ð3Ñˆ�WÙ7>Ó?²w¨t”5˜Ÿ™ DÓ)Ö*±wˆÐ?Ü25°dÔ2BÔCÒ2B¡Y S�s’yÑ2BˆÑCÜ8;¸EÔ8KÔLÒ8K©*¨$˜4š:Ñ8KˆÑLØÐ+Ð+ùó bùâ?ùÛCùÛLs   ÁC5Á(C5Â$C;ÃD Ã!Dc                 óð   • [         R                  R                  U SS5      n[        U5       nUR	                  5       nS S S 5        W Vs/ s H  n[        U5      PM     sn$ ! , (       d  f       N*= fs  snf )Nr[   z&ILSVRC2012_validation_ground_truth.txt)r   r   r3   ÚopenÚ	readlinesÚint)rY   rN   ÚtxtfhÚval_idcsÚval_idxs        r0   Úparse_val_groundtruth_txtÚ7parse_devkit_archive.<locals>.parse_val_groundtruth_txtƒ   sV   € Ü�w‰w�|‰|˜K¨Ð1YÓZˆÜ�$ŒZ˜5Ø—‘Ó(ˆH÷ á,4Ó5ªH ”�G–©HÑ5Ð5÷ �Züâ5s   ­A"Á
A3Á"
A0c               3   ó¢   #   • [         R                  " 5       n  U v •  [        R                  " U 5        g ! [        R                  " U 5        f = f7fr=   )ÚtempfileÚmkdtempÚshutilÚrmtree)Útmp_dirs    r0   Úget_tmp_dirÚ)parse_devkit_archive.<locals>.get_tmp_dir‰   s5   é € ä×"Ò"Ó$ˆð	#ØŠMä�MŠM˜'Õ"øŒF�MŠM˜'Õ"üs   ‚A™4 �A´AÁAr   r	   ÚILSVRC2012_devkit_t12)Úscipy.ioÚiorJ   rc   Údictrp   ra   r   r   ÚARCHIVE_METArW   r   r   r   r3   rQ   Úsaver4   )r   rN   rk   rt   r|   Úarchive_metarU   r{   rY   ri   r*   rr   r,   Ú	val_wnidsrj   s                 @r0   r5   r5   m   s:  ø€ õ ð	,¤Cð 	,¬E´$´s¼C°x±.Ä$ÄsÌEÔRUÐWZÐRZÉOÐG[ÑB\Ð2\Ñ,]÷ 	,ð6¬sð 6´t¼C±yô 6ô ð#œ¤#™ó #ó ð#ô   Ñ)€LØ�|Ø˜A‰ˆØ
�q‰/€Cä�D Ô$á	Œ˜'ÜœŸ™Ÿ™ TÓ0°'Ô:ä—g‘g—l‘l 7Ð,CÓDˆÙ'5°kÓ'BÑ$ˆÙ,¨[Ó9ˆÙ19Ó:²¨# Ô%±ˆ	Ð:ä�
Š
�OÐ/´·±·±¸dÄIÓ1NÔO÷ 
ˆùò ;÷ 
�ús   Â(A E ÄEÄ<E ÅE Å 
E.Úfolderc                 óÐ  • [         S   nUc  US   nUS   n[        XU5        [        R                  R	                  X5      n[        [        R                  R	                  X5      U5        [        R                  " U5       Vs/ s H"  n[        R                  R	                  XV5      PM$     nnU H.  n[        U[        R                  R                  U5      S   SS9  M0     gs  snf )a¢  Parse the train images archive of the ImageNet2012 classification dataset and
prepare it for usage with the ImageNet dataset.

Args:
    root (str or ``pathlib.Path``): Root directory containing the train images archive
    file (str, optional): Name of train images archive. Defaults to
        'ILSVRC2012_img_train.tar'
    folder (str, optional): Optional name for train images folder. Defaults to
        'train'
r   Nr   r	   T)Úremove_finished)r‚   rW   r   r   r3   r   ÚlistdirÚsplitext)r   rN   r†   r„   rU   Ú
train_rootÚarchiveÚarchivess           r0   r7   r7   £   s´   € ô   Ñ(€LØ�|Ø˜A‰ˆØ
�q‰/€Cä�D Ô$ä—‘—‘˜dÓ+€JÜ”B—G‘G—L‘L Ó,¨jÔ9äACÇÂÈJÔAWÓXÒAW°g”—‘—‘˜ZÖ1ÑAW€HÐXÛˆÜ˜¤§¡×!1Ñ!1°'Ó!:¸1Ñ!=ÈtÔTò ùò Ys   Â)C#r%   c                 ó¨  ^	• [         S   nUc  US   nUS   nUc  [        U 5      S   n[        XU5        [        R                  R                  X5      m	[        [        R                  R                  X5      T	5        [        U	4S j[        R                  " T	5       5       5      n[        U5       H7  n[        R                  " [        R                  R                  T	U5      5        M9     [        X&5       HX  u  px[        R                  " U[        R                  R                  T	U[        R                  R                  U5      5      5        MZ     g)aR  Parse the validation images archive of the ImageNet2012 classification dataset
and prepare it for usage with the ImageNet dataset.

Args:
    root (str or ``pathlib.Path``): Root directory containing the validation images archive
    file (str, optional): Name of validation images archive. Defaults to
        'ILSVRC2012_img_val.tar'
    wnids (list, optional): List of WordNet IDs of the validation images. If None
        is given, the IDs are loaded from the meta file in the root directory
    folder (str, optional): Optional name for validation images folder. Defaults to
        'val'
r   Nr   r	   c              3   ód   >#   • U  H%  n[         R                  R                  TU5      v •  M'     g 7fr=   )r   r   r3   )Ú.0ÚimageÚval_roots     €r0   Ú	<genexpr>Ú$parse_val_archive.<locals>.<genexpr>Ø   s%   øé € ÐTÒ?S°e”B—G‘G—L‘L ¨5×1Ð1Ò?Sùs   ƒ-0)r‚   r    rW   r   r   r3   r   Úsortedr‰   ÚsetÚmkdirrb   ry   ÚmoveÚbasename)
r   rN   r%   r†   r„   rU   Úimagesr+   Úimg_filer’   s
            @r0   r8   r8   ½   sð   ø€ ô   Ñ&€LØ�|Ø˜A‰ˆØ
�q‰/€CØ�}Ü˜tÓ$ QÑ'ˆä�D Ô$ä�w‰w�|‰|˜DÓ)€HÜ”B—G‘G—L‘L Ó,¨hÔ7äÔT¼r¿zºzÈ(Ô?SÓTÓT€Fä�E–
ˆÜ
�Š”—‘—‘˜h¨Ó-Ö.ñ ô ˜eÖ,‰ˆÜ�Š�HœbŸg™gŸl™l¨8°T¼2¿7¹7×;KÑ;KÈHÓ;UÓVÖWò -r;   r=   )Nr   )NNr   ) r   ry   rw   Úcollections.abcr   Ú
contextlibr   Úpathlibr   Útypingr   r   r   rQ   r†   r
   Úutilsr   r   r   r‚   r4   r   rJ   rc   r�   ra   r    rW   r5   r7   r8   r@   r;   r0   Ú<module>r¡      sq  ðÛ 	Û Û Ý $Ý %Ý ß 'Ñ 'ã å ß CÑ Cð NØIØRñ€ð €	ô;8ˆ{ô ;8ñ|3˜˜s D˜yÑ)ð 3°¸#±ð 3È%ÐPTÐUXÐZ]ÐU]ÑP^Ð`dÐehÑ`iÐPiÑJjõ 3ð3˜%  T 	Ñ*ð 3°#ð 3¸Cð 3ÀDô 3ñ3P˜u S¨$ YÑ/ð 3P°xÀ±}ð 3PÐPTõ 3PñlU˜e C¨ IÑ.ð U°h¸s±mð UÐTWð UÐfjõ Uð6 joñ!XØ
��T�	Ñ
ð!XØ"*¨3¡-ð!XØ?GÈÈSÉ	Ñ?Rð!XØcfð!Xà	ö!Xr;   