
    kh                     r    d dl mZ d dlmZmZmZmZmZ ddlm	Z	m
Z
mZ ddlmZmZ ddlmZ  G d de      Zy	)
    )Path)AnyCallableOptionalTupleUnion   )default_loaderfind_classesmake_dataset)download_and_extract_archiveverify_str_arg)VisionDatasetc                        e Zd ZdZddddZdddd	d
dddddd
Zdddddefdeee	f   dedede
e   de
e   deegef   ddf fdZdefdZd Zdedeeef   fd Zdefd!Z xZS )"
Imagenettea  `Imagenette <https://github.com/fastai/imagenette#imagenette-1>`_ image classification dataset.

    Args:
        root (str or ``pathlib.Path``): Root directory of the Imagenette dataset.
        split (string, optional): The dataset split. Supports ``"train"`` (default), and ``"val"``.
        size (string, optional): The image size. Supports ``"full"`` (default), ``"320px"``, and ``"160px"``.
        download (bool, optional): If ``True``, downloads the dataset components and places them in ``root``. Already
            downloaded archives are not downloaded again.
        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).
    )z:https://s3.amazonaws.com/fast-ai-imageclas/imagenette2.tgz fe2fc210e6bb7c5664d602c3cd71e612)z>https://s3.amazonaws.com/fast-ai-imageclas/imagenette2-320.tgz 3df6f0d01a2c9592104656642f5e78a3)z>https://s3.amazonaws.com/fast-ai-imageclas/imagenette2-160.tgz e793b78cc4c9e9a4ccc0c1155377a412full320px160px)tenchzTinca tinca)zEnglish springerzEnglish springer spaniel)zcassette player)z	chain sawchainsaw)churchzchurch building)zFrench hornhorn)zgarbage truckdustcart)zgas pumpzgasoline pumpzpetrol pumpzisland dispenser)z	golf ball)	parachutechute)
	n01440764	n02102040	n02979186	n03000684	n03028079	n03394916	n03417042	n03425413	n03445777	n03888257trainr   FNrootsplitsize	transformtarget_transformloaderreturnc                    t         |   |||       t        |dddg      | _        t        |dg d      | _        | j
                  | j                     \  | _        | _        t        | j                        t        | j                        j                  z  | _        t        | j                  | j                  z        | _        |r| j                          n| j                         st!        d      t#        | j                        \  | _        | _        | j$                  D cg c]  }| j(                  |    c}| _        | j&                  j-                         D 	
ci c]  \  }}	| j(                  |   D ]  }
|
|	  c}
}	}| _        t1        | j                  | j&                  d	      | _        || _        y c c}w c c}
}	}w )
N)r.   r/   r,   r*   valr-   r   z<Dataset not found. You can use download=True to download it.z.jpeg)
extensions)super__init__r   _split_size	_ARCHIVES_url_md5r   r+   stem
_size_rootstr_image_root	_download_check_existsRuntimeErrorr   wnidswnid_to_idx_WNID_TO_CLASSclassesitemsclass_to_idxr   _samplesr0   )selfr+   r,   r-   downloadr.   r/   r0   wnididx
class_name	__class__s              [/var/www/teggl/fontify/venv/lib/python3.12/site-packages/torchvision/datasets/imagenette.pyr6   zImagenette.__init__2   s{    	EUV$UGgu5EF#D&2LM
#~~djj9	49tyy/DO,@,@@t<=NN##%]^^'3D4D4D'E$
D$>BjjId++D1I-1-=-=-C-C-E
 
 )cX\XkXklpXq
JTJO

 %T%5%5t7G7GT[\ J
s   !F7!F<c                 6    | j                   j                         S N)r=   existsrJ   s    rP   rA   zImagenette._check_existsR   s    %%''    c                 ~    | j                         ry t        | j                  | j                  | j                         y )N)md5)rA   r   r:   r+   r;   rT   s    rP   r@   zImagenette._downloadU   s)    $TYY		tyyIrU   rM   c                     | j                   |   \  }}| j                  |      }| j                  | j                  |      }| j                  | j                  |      }||fS rR   )rI   r0   r.   r/   )rJ   rM   pathlabelimages        rP   __getitem__zImagenette.__getitem__[   s`    mmC(eD!>>%NN5)E  ,))%0Ee|rU   c                 ,    t        | j                        S rR   )lenrI   rT   s    rP   __len__zImagenette.__len__g   s    4==!!rU   )__name__
__module____qualname____doc__r9   rE   r
   r   r>   r   r   r   r   r6   boolrA   r@   intr   r\   r_   __classcell__)rO   s   @rP   r   r   	   s    . swwI .E).2,2U#+N  (,/3'5CI  	 H% #8, #$ 
@(t (J
s 
uS#X 
" "rU   r   N)pathlibr   typingr   r   r   r   r   folderr
   r   r   utilsr   r   visionr   r    rU   rP   <module>rm      s(     8 8 > > ? !_" _"rU   