Ë
    DêñiÚ"  ã                   ó�  — d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
mZmZ d dlZddlmZ ddlmZmZmZ d	d
ddœZdZ G d„ de«      Zddeeef   dee   deeeef   ee   f   fd„Zdeeef   dededdfd„Zddeeef   dee   ddfd„Zddeeef   dee   deddfd„Z	 ddeeef   dee   deee      deddf
d„Zy)é    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            	       ój   ‡ — e Zd ZdZddeeef   dededdfˆ fd„Zdd„Z	e
defd	„«       Zdefd
„Zˆ xZS )ÚImageNeta<  `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                 ó  •— t         j                  j                  |«      x}| _        t	        |dd«      | _        | j                  «        t        | j                  «      d   }t        ‰	| �$  | j                  fi |¤Ž || _        | j                  | _        | j                  | _        | j                  D �cg c]  }||   ‘Œ	 c}| _        t        | j                  «      D ���ci c]  \  }}|D ]  }||“Œ Œ c}}}| _        y c c}w c c}}}w )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
            €ú_/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/torchvision/datasets/imagenet.pyr!   zImageNet.__init__4   sß   ø€ ÜŸ7™7×-Ñ-¨dÓ3Ð3ˆˆtŒyÜ# E¨7Ð4DÓEˆŒ
à×ÑÔÜ(¨¯©Ó3°AÑ6ˆä‰Ñ˜×*Ñ*Ñ5¨fÒ5ØˆŒ	à—\‘\ˆŒ
Ø×,Ñ,ˆÔØ:>¿*¹*ÖE°$˜¨Ó-ÒEˆŒÜ7@ÀÇÁÓ7N×_Ð_©)¨#¨tÐZ^Ò_ÐSV˜S #™XÐ_˜SÔ_ˆÕùò FùÜ_s   Â3C?Ã Dc                 ó„  — t        t        j                  j                  | j                  t
        «      «      st        | j                  «       t        j                  j                  | j                  «      sK| j                  dk(  rt        | j                  «       y | j                  dk(  rt        | j                  «       y y y )Nr   r   )r   r   r   Újoinr   Ú	META_FILEÚparse_devkit_archiveÚisdirr"   r   Úparse_train_archiveÚparse_val_archive©r(   s    r/   r   zImageNet.parse_archivesC   sy   € ÜœrŸw™wŸ|™|¨D¯I©I´yÓAÔBÜ  §¡Ô+ä�w‰w�}‰}˜T×.Ñ.Ô/Ø�z‰z˜WÒ$Ü# D§I¡IÕ.Ø—‘˜uÒ$Ü! $§)¡)Õ,ð %ð 0ó    c                 ój   — t         j                  j                  | j                  | j                  «      S ©N)r   r   r1   r   r   r7   s    r/   r"   zImageNet.split_folderM   s   € ä�w‰w�|‰|˜DŸI™I t§z¡zÓ2Ð2r8   c                 ó:   —  dj                   di | j                  ¤ŽS )NzSplit: {split}© )ÚformatÚ__dict__r7   s    r/   Ú
extra_reprzImageNet.extra_reprQ   s   € Ø&Ð×&Ñ&Ñ7¨¯©Ñ7Ð7r8   )r   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ústrr   r   r!   r   Úpropertyr"   r?   Ú__classcell__)r.   s   @r/   r   r      sd   ø„ ññ8`˜U 3¨ 9Ñ-ð `°cð `Èsð `ÐW[õ `ó-ð ð3˜cò 3ó ð3ð8˜C÷ 8r8   r   r   Úfiler   c                 óÐ   — |€t         }t        j                  j                  | |«      }t	        |«      rt        j                  |d¬«      S d}t        |j                  || «      «      ‚)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.)	r2   r   r   r1   r   ÚtorchÚloadÚRuntimeErrorr=   )r   rG   Úmsgs      r/   r   r   U   s\   € Ø€|ÜˆÜ�7‰7�<‰<˜˜dÓ#€Dä�tÔÜ�z‰z˜$¨TÔ2Ð2ðJð 	ô ˜3Ÿ:™: d¨DÓ1Ó2Ð2r8   Úmd5c                 ó’   — t        t        j                  j                  | |«      |«      sd}t	        |j                  || «      «      ‚y )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   r1   rL   r=   )r   rG   rN   rM   s       r/   Ú_verify_archiverP   d   sC   € Üœ2Ÿ7™7Ÿ<™<¨¨dÓ3°SÔ9ðEð 	ô ˜3Ÿ:™: d¨DÓ1Ó2Ð2ð :r8   c           
      óÐ  ‡— ddl mŠ dt        dt        t        t
        t        f   t        t        t        t        df   f   f   fˆfd„}dt        dt        t
           fd„}t        dt        t           fd„«       }t        d	   }|€|d   }|d
   }t        | ||«        |«       5 }t        t        j                  j                  | |«      |«       t        j                  j                  |d«      } ||«      \  }	}
 ||«      }|D �cg c]  }|	|   ‘Œ	 }}t        j                   |
|ft        j                  j                  | t"        «      «       ddd«       yc c}w # 1 sw Y   yxY w)aI  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                 ó  •— t         j                  j                  | dd«      }‰j                  |d¬«      d   }t	        t        |Ž «      d   }t        |«      D ��cg c]  \  }}|dk(  sŒ||   ‘Œ }}}t	        t        |Ž «      d d \  }}}|D �	cg c]  }	t        |	j                  d	«      «      ‘Œ }}	t        ||«      D ��
ci c]  \  }}
||
“Œ
 }}}
t        ||«      D �
�	ci c]  \  }
}	|
|	“Œ
 }}
}	||fS c c}}w c c}	w c c}
}w c c}	}
w )
NÚdatazmeta.matT)Ú
squeeze_meÚsynsetsé   r   é   z, )	r   r   r1   ÚloadmatÚlistÚzipr'   Útupler   )rR   ÚmetafileÚmetaÚnums_childrenr+   Únum_childrenÚidcsr$   r#   r,   r*   Úidx_to_wnidr)   Úsios                €r/   Úparse_meta_matz,parse_devkit_archive.<locals>.parse_meta_matx   s  ø€ Ü—7‘7—<‘< ¨V°ZÓ@ˆØ�{‰{˜8°ˆ{Ó5°iÑ@ˆÜœS $˜ZÓ(¨Ñ+ˆÜ3<¸]Ó3K×aÑ/˜c <È|Ð_`ÓO`��S“	ÐaˆÑaÜ#¤C¨ JÓ/°°Ð3Ñˆˆe�WØ7>Ö?¨t”5˜Ÿ™ DÓ)Õ*Ð?ˆÐ?Ü25°d¸EÓ2B×C¡Y S¨$�s˜D‘yÐCˆÑCÜ8;¸EÀ7Ó8K×L©*¨$°˜4 ™:ÐLˆÑLØ˜OÐ+Ð+ùó bùâ?ùÛCùÛLs   ÁC4Á)C4Â!C:ÃC?Ã Dc                 óà   — t         j                  j                  | dd«      }t        |«      5 }|j	                  «       }d d d «       D �cg c]  }t        |«      ‘Œ c}S # 1 sw Y   Œ"xY wc c}w )NrT   z&ILSVRC2012_validation_ground_truth.txt)r   r   r1   ÚopenÚ	readlinesÚint)rR   rG   ÚtxtfhÚval_idcsÚval_idxs        r/   Úparse_val_groundtruth_txtz7parse_devkit_archive.<locals>.parse_val_groundtruth_txtƒ   sZ   € Ü�w‰w�|‰|˜K¨Ð1YÓZˆÜ�$‹Zð 	)˜5Ø—‘Ó(ˆH÷	)à,4Ö5 ”�G•Ò5Ð5÷	)ð 	)üâ5s   ­AÁ
A+ÁA(c               3   óœ   K  — t        j                  «       } 	 | –— t        j                  | «       y # t        j                  | «       w xY w­wr:   )ÚtempfileÚmkdtempÚshutilÚrmtree)Útmp_dirs    r/   Úget_tmp_dirz)parse_devkit_archive.<locals>.get_tmp_dir‰   s6   è ø€ ä×"Ñ"Ó$ˆð	#ØŠMä�M‰M˜'Õ"øŒF�M‰M˜'Õ"üs   ‚A˜2 œA²A	Á	Ar   r	   ÚILSVRC2012_devkit_t12)Úscipy.ioÚiorD   r\   Údictrh   rZ   r   r   ÚARCHIVE_METArP   r   r   r   r1   rJ   Úsaver2   )r   rG   rd   rl   rs   Úarchive_metarN   rr   rR   rb   r)   rj   r+   Ú	val_wnidsrc   s                 @r/   r3   r3   m   sS  ø€ õ ð	,¤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˜$ Ô$á	‹ð P˜'ÜœŸ™Ÿ™ T¨4Ó0°'Ô:ä—g‘g—l‘l 7Ð,CÓDˆÙ'5°kÓ'BÑ$ˆ�_Ù,¨[Ó9ˆØ19Ö:¨#�[ Ó%Ð:ˆ	Ð:ä�
‰
�O YÐ/´·±·±¸dÄIÓ1NÔO÷Pð Pùò ;÷Pð Pús   Â$A"EÄEÄ<EÅEÅE%Úfolderc                 óÐ  — t         d   }|€|d   }|d   }t        | ||«       t        j                  j	                  | |«      }t        t        j                  j	                  | |«      |«       t        j                  |«      D �cg c]"  }t        j                  j	                  ||«      ‘Œ$ }}|D ]0  }t        |t        j                  j                  |«      d   d¬«       Œ2 yc c}w )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)rx   rP   r   r   r1   r   ÚlistdirÚsplitext)r   rG   r|   rz   rN   Ú
train_rootÚarchiveÚarchivess           r/   r5   r5   £   sÀ   € ô   Ñ(€LØ€|Ø˜A‰ˆØ
�q‰/€Cä�D˜$ Ô$ä—‘—‘˜d FÓ+€JÜ”B—G‘G—L‘L  tÓ,¨jÔ9äACÇÁÈJÓAWÖX°g”—‘—‘˜Z¨Õ1ÐX€HÐXØò UˆÜ˜¤§¡×!1Ñ!1°'Ó!:¸1Ñ!=ÈtÖTñUùò Ys   Â'C#r$   c                 óž  ‡	— t         d   }|€|d   }|d   }|€t        | «      d   }t        | ||«       t        j                  j                  | |«      Š	t        t        j                  j                  | |«      ‰	«       t        ˆ	fd„t        j                  ‰	«      D «       «      }t        |«      D ]5  }t        j                  t        j                  j                  ‰	|«      «       Œ7 t        ||«      D ]W  \  }}t        j                  |t        j                  j                  ‰	|t        j                  j                  |«      «      «       ŒY y)az  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   ó^   •K  — | ]$  }t         j                  j                  ‰|«      –— Œ& y ­wr:   )r   r   r1   )Ú.0ÚimageÚval_roots     €r/   ú	<genexpr>z$parse_val_archive.<locals>.<genexpr>Ø   s    øè ø€ ÒT°e”B—G‘G—L‘L ¨5×1ÑTùs   ƒ*-)rx   r   rP   r   r   r1   r   Úsortedr   ÚsetÚmkdirr[   rp   ÚmoveÚbasename)
r   rG   r$   r|   rz   rN   Úimagesr*   Úimg_filerˆ   s
            @r/   r6   r6   ½   s  ø€ ô   Ñ&€LØ€|Ø˜A‰ˆØ
�q‰/€CØ€}Ü˜tÓ$ QÑ'ˆä�D˜$ Ô$ä�w‰w�|‰|˜D &Ó)€HÜ”B—G‘G—L‘L  tÓ,¨hÔ7äÓT¼r¿z¹zÈ(Ó?SÔTÓT€Fä�E“
ò /ˆÜ
�‰”—‘—‘˜h¨Ó-Õ.ð/ô ˜e VÓ,ò X‰ˆˆhÜ�‰�HœbŸg™gŸl™l¨8°T¼2¿7¹7×;KÑ;KÈHÓ;UÓVÕWñXr8   r:   )Nr   )NNr   ) r   rp   rn   Úcollections.abcr   Ú
contextlibr   Úpathlibr   Útypingr   r   r   rJ   r|   r
   Úutilsr   r   r   rx   r2   r   rD   r\   rw   rZ   r   rP   r3   r5   r6   r<   r8   r/   ú<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r8   