
    Ng                        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n# e$ r dZY nw xY w	 ddlmZ dZn# e$ r dZY nw xY w	 dd	lmZ dZn# e$ r dZY nw xY w	 dd
lmZ dZn# e$ r dZY nw xY w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fd!ZdS )#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                 0    |                     d          d         }t          j                             |          }t          j                            |          r|S  fd}|t
          v r |t
                     n|t          v r |t                      S )N[r   c                     | D ]E}t           j                            |          }t           j                            |          r|c S FS N)ospathjoinexists)synstry_rootroots      U/var/www/html/ai-engine/env/lib/python3.11/site-packages/timm/data/dataset_factory.py_tryz_search_split.<locals>._try2   sP     	  	 Aw||D!,,Hw~~h''       )splitr!   r"   r#   r$   _TRAIN_SYNONYM_EVAL_SYNONYM)r(   r,   
split_namer'   r*   s   `    r)   _search_splitr0   +   s    S!!!$Jw||D*--H	w~~h      ^##tN##	}	$	$tM""Kr+   r   *   RGBnamer(   r,   search_split	class_map
load_bytesis_trainingdownload
batch_sizenum_samplesseedrepeatsinput_img_modec                 v   d |                                 D             }|                                 } |                     d          r|                     dd          d         } t	          d'||d|}| t
          v r"t
          |          }|t          v } |d'd|i|}n| dk    s| d	k    rt          s
J d
            d}|                    d          }t          |          dk    r>|d                             d          }t          |          dk    r|d         }|d         }|t          v rd}n|t          v rd}t          d'||d|}n| dk    r8t          s
J d            |t          v rd}n|t          v rd}t          d'd|i|}n| dk    r*t          s
J d            |t          v }t          d'd|i|}n| dk    r,t          s
J d            |t          v rd}t!          d'd|i|}nM| dk    s| dk    r@|r/t"          j                            |          rt)          ||          }t+          |fi |}nJ d|              |                     d          rt-          |f| |||d |}n|                     d!          rt/          |f| ||||||	||
|d"
|}n|                     d#          rt/          |f| ||||||	||
|d"
|}np|                     d$          rt/          |f| |||||	||
|d%	|}nC|r/t"          j                            |          rt)          ||          }t-          |f| |||d&|}|S )(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
      * 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/folder)
        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 (HFDS, 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)
        batch_size: batch size hint for (TFDS, WDS)
        seed: seed for iterable datasets (TFDS, WDS)
        repeats: dataset repeats per iteration i.e. epoch (TFDS, WDS)
        input_img_mode: Input image color conversion mode e.g. 'RGB', 'L' (folder, TFDS, WDS, HFDS)
        **kwargs: other args to pass to dataset

    Returns:
        Dataset object
    c                     i | ]
\  }}|||S r     ).0kvs      r)   
<dictcomp>z"create_dataset.<locals>.<dictcomp>m   s    ???tq!ar+   ztorch//   )r(   r8   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.imagenetzFPlease update to a newer PyTorch and torchvision for ImageNet dataset.image_folderfolderFzUnknown torchvision dataset zhfds/)readerr,   r5   r=   zhfids/)
rU   r,   r5   r7   r8   r9   r:   r<   r;   r=   ztfds/zwds/)	rU   r,   r5   r7   r9   r:   r<   r;   r=   )rU   r5   r6   r=   r@   )itemslower
startswithr,   dict_TORCH_BASIC_DSr-   has_inaturalistlenr.   r   has_places365r
   
has_qmnistr   has_imagenetr   r!   r"   isdirr0   r	   r   r   )r3   r(   r,   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   kwargstorch_kwargsds_class	use_traindsrO   split_splits                       r)   create_datasetrg   ?   s   \ @?v||~~???F::<<Dx   p
zz#q!!"%CCCFCC?""&t,H/I::	:\::BB]""dfnn"ff$ffff K++c**K;!##)!n22377{##q(("-a.K#B&&$-''$TUTT|TTBB[   kk"kkkk&&(-''777,77BBXeeeeee/I88i8<88BBZii!iiii%%66666BB^##tx'7'7 2d 3 3 2$T511T,,V,,BB???????		!	! C
 
)
 
 
 
 
	"	" 8
!
#!#)
 
 
 
 
	!	! )
!
#!#)
 
 
 
 
	 	  
!
#!#)
 
 
 
  	.BGMM$// 	. u--D
!)
 
 
 
 Ir+   )Nr   TNFFFr   Nr1   r   r2   ) __doc__r!   typingr   torchvision.datasetsr   r   r   r   r   r	   r
   r]   ImportErrorr   r[   r   r^   r   r_   datasetr   r   rY   rZ   r-   r.   r0   strboolintrg   r@   r+   r)   <module>rp      s    
			       \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \......MM   MMM000000OO   OOO++++++JJ   JJJ------LL   LLL 8 7 7 7 7 7 7 7$
   D4000TdRVWWW  , #!! !%)#a aasma a 	a
 a a a a a c]a a a a a a a a as?   ' 11> AAA AA#A, ,A65A6