Ë
    éÓ^j³!  ã                   ó²  — d Z ddlZddlmZ ddlmZmZmZmZm	Z	m
Z
 	 ddlmZ dZ	 ddlmZ dZ	 dd	lmZ dZ	 dd
lmZ dZddlmZmZ  eeeeee	¬«      Z edd¬«      Z eddddd¬«      Zd„ Z	 	 	 	 	 	 	 	 	 	 	 	 	 d dedee   dedededededededee   dedededefd„Zy# e$ r dZY Œˆw xY w# e$ r dZY ŒŒw xY w# e$ r dZY Œ�w xY w# e$ r dZY Œ”w xY w)!zE Dataset Factory

Hacked together by / Copyright 2021, Ross Wightman
é    N)ÚOptional)ÚCIFAR100ÚCIFAR10ÚMNISTÚKMNISTÚFashionMNISTÚImageFolder)Ú	Places365TF)ÚINaturalist)ÚQMNIST)ÚImageNeté   )ÚIterableImageDatasetÚImageDataset)Úcifar10Úcifar100ÚmnistÚkmnistÚfashion_mnist)ÚtrainÚtraining)ÚvalÚvalidÚ
validationÚevalÚ
evaluationc                 ó  ‡ — |j                  d«      d   }t        j                  j                  ‰ |«      }t        j                  j	                  |«      r|S ˆ fd„}|t
        v r |t
        «      Š ‰ S |t        v r |t        «      Š ‰ S )Nú[r   c                 óœ   •— | D ]E  }t         j                  j                  ‰|«      }t         j                  j                  |«      sŒC|c S  ‰S )N)ÚosÚpathÚjoinÚexists)ÚsynÚsÚtry_rootÚroots      €úd/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/data/dataset_factory.pyÚ_tryz_search_split.<locals>._try2   sB   ø€ Øò 	 ˆAÜ—w‘w—|‘| D¨!Ó,ˆHÜ�w‰w�~‰~˜hÕ'Ø’ð	 ð ˆó    )Úsplitr    r!   r"   r#   Ú_TRAIN_SYNONYMÚ_EVAL_SYNONYM)r'   r+   Ú
split_namer&   r)   s   `    r(   Ú_search_splitr/   +   sx   ø€ à—‘˜SÓ! !Ñ$€JÜ�w‰w�|‰|˜D *Ó-€HÜ	‡w�w‡~�~�hÔØˆôð ”^Ñ#Ù”NÓ#ˆð €Kð 
”}Ñ	$Ù”MÓ"ˆØ€Kr*   Únamer'   r+   Úsearch_splitÚ	class_mapÚ
load_bytesÚis_trainingÚdownloadÚ
batch_sizeÚnum_samplesÚseedÚrepeatsÚinput_img_modeÚtrust_remote_codec                 óÚ  — |j                  «       D ��ci c]  \  }}|€Œ	||“Œ }}}| j                  «       } | j                  d«      �r»| j                  dd«      d   } t	        d'||dœ|¤Ž}| t
        v rt
        |    }|t        v } |d'd|i|¤Ž}|S | dk(  s| dk(  rt        sJ d	«       ‚d
}|j                  d«      }t        |«      dkD  r,|d   j                  d«      }t        |«      dk(  r|d   }|d   }|t        v rd}n
|t        v rd}t        d'||dœ|¤Ž}|S | dk(  r1t        sJ d«       ‚|t        v rd}n
|t        v rd}t        d'd|i|¤Ž}|S | dk(  r$t        sJ d«       ‚|t        v }t        d'd|i|¤Ž}|S | dk(  r7|j                  d«       t         sJ d«       ‚|t        v rd}t#        d'd|i|¤Ž}|S | dk(  s| dk(  r;|r+t$        j&                  j)                  |«      rt+        ||«      }t-        |fi |¤Ž}|S J d| › �«       ‚| j                  d«      rt/        |f| ||||dœ|¤Ž}|S | j                  d «      rt1        |f| ||||||	||
||d!œ|¤Ž}|S | j                  d"«      rt1        |f| ||||||	||
|d#œ
|¤Ž}|S | j                  d$«      rt1        |f| |||||	||
|d%œ	|¤Ž}|S |r+t$        j&                  j)                  |«      rt+        ||«      }t/        |f| |||d&œ|¤Ž}|S c c}}w )(a   Dataset factory method

    In parentheses after each arg are the type of dataset supported for each arg, one of:
      * Folder - default, timm folder (or tar) based ImageDataset
      * Torch - torchvision based datasets
      * HFDS - Hugging Face Datasets
      * HFIDS - Hugging Face Datasets Iterable (streaming mode, with IterableDataset)
      * TFDS - Tensorflow-datasets wrapper in IterabeDataset interface via IterableImageDataset
      * WDS - Webdataset
      * All - any of the above

    Args:
        name: Dataset name, empty is okay for folder based datasets
        root: Root folder of dataset (All)
        split: Dataset split (All)
        search_split: Search for split specific child fold from root so one can specify
            `imagenet/` instead of `/imagenet/val`, etc on cmd line / config. (Folder, Torch)
        class_map: Specify class -> index mapping via text file or dict (Folder)
        load_bytes: Load data, return images as undecoded bytes (Folder)
        download: Download dataset if not present and supported (HFIDS, TFDS, Torch)
        is_training: Create dataset in train mode, this is different from the split.
            For Iterable / TDFS it enables shuffle, ignored for other datasets. (TFDS, WDS, HFIDS)
        batch_size: Batch size hint for iterable datasets (TFDS, WDS, HFIDS)
        seed: Seed for iterable datasets (TFDS, WDS, HFIDS)
        repeats: Dataset repeats per iteration i.e. epoch (TFDS, WDS, HFIDS)
        input_img_mode: Input image color conversion mode e.g. 'RGB', 'L' (folder, TFDS, WDS, HFDS, HFIDS)
        trust_remote_code: Trust remote code in Hugging Face Datasets if True (HFDS, HFIDS)
        **kwargs: Other args to pass through to underlying Dataset and/or Reader classes

    Returns:
        Dataset object
    ztorch/ú/é   éÿÿÿÿ)r'   r5   r   ÚinaturalistÚinatz@Please update to PyTorch 1.10, torchvision 0.11+ for InaturalistÚfullr   r   Ú_Ú
2021_trainÚ
2021_valid)ÚversionÚtarget_typeÚ	places365zGPlease update to a newer PyTorch and torchvision for Places365 dataset.ztrain-standardr   r+   ÚqmnistzDPlease update to a newer PyTorch and torchvision for QMNIST dataset.Úimagenetr5   zFPlease update to a newer PyTorch and torchvision for ImageNet dataset.Úimage_folderÚfolderzUnknown torchvision dataset zhfds/)Úreaderr+   r2   r:   r;   zhfids/)rM   r+   r2   r4   r5   r6   r7   r9   r8   r:   r;   ztfds/)
rM   r+   r2   r4   r5   r6   r7   r9   r8   r:   zwds/)	rM   r+   r2   r4   r6   r7   r9   r8   r:   )rM   r2   r3   r:   © )ÚitemsÚlowerÚ
startswithr+   ÚdictÚ_TORCH_BASIC_DSr,   Úhas_inaturalistÚlenr-   r   Úhas_places365r
   Ú
has_qmnistr   ÚpopÚhas_imagenetr   r    r!   Úisdirr/   r	   r   r   )r0   r'   r+   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   ÚkwargsÚkÚvÚtorch_kwargsÚds_classÚ	use_trainÚdsrG   Úsplit_splits                          r(   Úcreate_datasetrc   ?   s  € ðb  &Ÿ|™|›~×?‘t�q˜!°±ˆa�‰dÐ?€FÑ?Ø�:‰:‹<€DØ‡��xÕ Ø�z‰z˜#˜qÓ! "Ñ%ˆÜÐC °ÑC¸FÑCˆØ”?Ñ"Ü& tÑ,ˆHØ¤Ð/ˆIÙÑ: 	Ð:¨\Ñ:ˆBð\ €Ið[ �]Ò" d¨f¢nÝ"ÐfÐ$fÓf�?Ø ˆKØŸ+™+ cÓ*ˆKÜ�;Ó !Ò#Ø)¨!™n×2Ñ2°3Ó7�Ü�{Ó# qÒ(Ø"-¨a¡.�KØ# B™�ØœÑ&Ø$‘Øœ-Ñ'Ø$�ÜÐT U¸ÑTÀ|ÑTˆBð@ €Ið �[Ò Ý ÐkÐ"kÓk�=ØœÑ&Ø(‘Øœ-Ñ'Ø�ÜÑ7 Ð7¨,Ñ7ˆBðr €Iðq �XÒÝÐeÐeÓe�:Ø¤Ð/ˆIÜÑ8˜iÐ8¨<Ñ8ˆBðj €Iði �ZÒØ×Ñ˜ZÔ(ÝÐiÐ!iÓi�<ØœÑ%Ø�ÜÑ6 Ð6¨Ñ6ˆBð^ €Ið] �^Ò# t¨xÒ'7á¤§¡§¡¨dÔ 3ä$ T¨5Ó1�Ü˜TÑ, VÑ,ˆBðR €IðO @Ð8¸¸Ð?Ó?�5Ø	�‰˜Ô	!ô Øð
àØØØ)Ø/ñ
ð ñ
ˆðF €Iðu 
�‰˜Ô	"Ü!Øð
àØØØ#ØØ!Ø#ØØØ)Ø/ñ
ð ñ
ˆðr €IðU 
�‰˜Ô	!Ü!Øð
àØØØ#ØØ!Ø#ØØØ)ñ
ð ñ
ˆðR €Ið7 
�‰˜Ô	 Ü!Øð
àØØØ#Ø!Ø#ØØØ)ñ
ð ñ
ˆð4 €Iñ œBŸG™GŸM™M¨$Ô/ä   uÓ-ˆDÜØð
àØØ!Ø)ñ
ð ñ
ˆð €Iùóm @s
   ”
K'ŸK')Nr   TNFFFr   Né*   r   ÚRGBF) Ú__doc__r    Útypingr   Útorchvision.datasetsr   r   r   r   r   r	   r
   rV   ÚImportErrorr   rT   r   rW   r   rY   Údatasetr   r   rR   rS   r,   r-   r/   ÚstrÚboolÚintrc   rN   r*   r(   ú<module>rn      s³  ðñó 
Ý ç \× \ðÝ.Ø€MðÝ0Ø€OðÝ+Ø€JðÝ-Ø€L÷ 8áØØØ
ØØô€ñ ˜D¨4Ô0€Ù˜ T°dÀÐRVÔW€òð, #Ø!Ø!ØØ Ø!ØØØ%)ØØØ#Ø"'ñgØðgà�s‰mðgð ðgð ð	gð
 ðgð ðgð ðgð ðgð ðgð ˜c‘]ðgð ðgð ðgð ðgð  ôgøðg ò Ø‚Mðûð
 ò Ø‚Oðûð
 ò Ø‚Jðûð
 ò Ø‚LðúsD   žB% §B2 °B? ¹C Â%B/Â.B/Â2B<Â;B<Â?C	ÃC	ÃCÃC