o
    `)i                     @   sl   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 deZd	S )
    )Path)AnyCallableOptionalTupleUnion   )default_loaderfind_classesmake_dataset)download_and_extract_archiveverify_str_arg)VisionDatasetc                       s   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dZdefddZd d! Zd"edeeef fd#d$Zdefd%d&Z  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.tgzZ fe2fc210e6bb7c5664d602c3cd71e612)z>https://s3.amazonaws.com/fast-ai-imageclas/imagenette2-320.tgzZ 3df6f0d01a2c9592104656642f5e78a3)z>https://s3.amazonaws.com/fast-ai-imageclas/imagenette2-160.tgzZ e793b78cc4c9e9a4ccc0c1155377a412fullZ320pxZ160px)ZtenchzTinca tinca)zEnglish springerzEnglish springer spaniel)zcassette player)z	chain sawZchainsaw)churchzchurch building)zFrench hornZhorn)zgarbage truckZdustcart)zgas pumpzgasoline pumpzpetrol pumpzisland dispenser)z	golf ball)Z	parachuteZchute)
Z	n01440764Z	n02102040Z	n02979186Z	n03000684Z	n03028079Z	n03394916Z	n03417042Z	n03425413Z	n03445777Z	n03888257trainr   FNrootsplitsize	transformtarget_transformloaderreturnc                    s   t  j|||d t|dddg _t|dg d _ j j \ _ _t j	t jj
  _t j j  _|rA   n  sItdt j\ _ _ fdd	 jD  _ fd
d j D  _t j jdd _| _d S )N)r   r   r   r   valr   r   z<Dataset not found. You can use download=True to download it.c                    s   g | ]} j | qS  _WNID_TO_CLASS).0wnidselfr   k/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/torchvision/datasets/imagenette.py
<listcomp>K   s    z'Imagenette.__init__.<locals>.<listcomp>c                    s&   i | ]\}} j | D ]}||qqS r   r   )r   r    idx
class_namer!   r   r#   
<dictcomp>L   s
    z'Imagenette.__init__.<locals>.<dictcomp>z.jpeg)
extensions)super__init__r   _split_size	_ARCHIVES_url_md5r   r   stem
_size_rootstrZ_image_root	_download_check_existsRuntimeErrorr
   ZwnidsZwnid_to_idxclassesitemsZclass_to_idxr   _samplesr   )r"   r   r   r   downloadr   r   r   	__class__r!   r#   r*   2   s"   



zImagenette.__init__c                 C   s
   | j  S N)r1   existsr!   r   r   r#   r4   R      
zImagenette._check_existsc                 C   s$   |   rd S t| j| j| jd d S )N)md5)r4   r   r.   r   r/   r!   r   r   r#   r3   U   s   zImagenette._downloadr%   c                 C   sH   | j | \}}| |}| jd ur| |}| jd ur | |}||fS r<   )r8   r   r   r   )r"   r%   pathlabelimager   r   r#   __getitem__[   s   




zImagenette.__getitem__c                 C   s
   t | jS r<   )lenr8   r!   r   r   r#   __len__g   r>   zImagenette.__len__)__name__
__module____qualname____doc__r-   r   r	   r   r2   r   r   r   r   r*   boolr4   r3   intr   rC   rE   __classcell__r   r   r:   r#   r   	   sT    
	 r   N)pathlibr   typingr   r   r   r   r   folderr	   r
   r   utilsr   r   Zvisionr   r   r   r   r   r#   <module>   s    