
    kh!                        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      U/var/www/teggl/fontify/venv/lib/python3.12/site-packages/timm/data/dataset_factory.py_tryz_search_split.<locals>._try2   sB     	 Aww||D!,Hww~~h'	      )splitr    r!   r"   r#   _TRAIN_SYNONYM_EVAL_SYNONYM)r'   r+   
split_namer&   r)   s   `    r(   _search_splitr/   +   sx    S!!$Jww||D*-H	ww~~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  &||~?tq!ad?F?::<Dx zz#q!"%CCFC?"&t,H/I:	:\:B\ I[ ]"dfn"f$ff? K++c*K;!#)!n2237{#q("-a.K#B&$-'$TUT|TB@ I [  k"kk=&(-'77,7Br Iq Xeee:/I8i8<8Bj Ii ZZ(i!ii<%666B^ I] ^#tx'7d 3$T51T,V,BR IO @8??5		! 
)/
 
F Iu 
	"!
#!#)/
 
r IU 
	!!
#!#)
 
R I7 
	 !
#!#)
 
4 I BGGMM$/ u-D
!)
 
 Im @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
 D40TdRVW, #!! !%)#"'ggsm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