o
    )i
                     @   sX   d dl mZ d dlmZmZmZmZ d dlZddl	m
Z
 ddlmZ G dd deZdS )	    )Path)AnyCallableOptionalTupleN   )download_and_extract_archive)VisionDatasetc                       s   e Zd ZdZdZdZ			ddedee dee d	e	d
df
 fddZ
d
efddZded
eeef fddZd
e	fddZdddZ  ZS )SUN397a  `The SUN397 Data Set <https://vision.princeton.edu/projects/2010/SUN/>`_.

    The SUN397 or Scene UNderstanding (SUN) is a dataset for scene recognition consisting of
    397 categories with 108'754 images.

    Args:
        root (string): Root directory of the dataset.
        transform (callable, optional): A function/transform that  takes in an PIL image and returns a transformed
            version. E.g, ``transforms.RandomCrop``.
        target_transform (callable, optional): A function/transform that takes in the target and transforms it.
        download (bool, optional): If true, downloads the dataset from the internet and
            puts it in root directory. If dataset is already downloaded, it is not
            downloaded again.
    z;http://vision.princeton.edu/projects/2010/SUN/SUN397.tar.gzZ 8ca2778205c41d23104230ba66911c7aNFroot	transformtarget_transformdownloadreturnc                    s   t  j|||d t jd  _|r     stdt jd }dd |D  _	W d    n1 s9w   Y  t
t j	tt j	 _t jd _ fdd jD  _d S )	N)r   r   r
   z;Dataset not found. You can use download=True to download itzClassName.txtc                 S   s   g | ]
}|d d   qS )   N)strip).0c r   j/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/torchvision/datasets/sun397.py
<listcomp>.   s    z#SUN397.__init__.<locals>.<listcomp>z	sun_*.jpgc                    s.   g | ]} j d | jjdd  qS )/r   )class_to_idxjoinrelative_to	_data_dirparts)r   pathselfr   r   r   3   s    ")super__init__r   r   r   	_download_check_existsRuntimeErroropenclassesdictziprangelenr   listrglob_image_files_labels)r    r   r   r   r   f	__class__r   r   r"      s   
zSUN397.__init__c                 C   s
   t | jS N)r+   r.   r   r   r   r   __len__7      
zSUN397.__len__idxc                 C   sP   | j | | j| }}tj|d}| jr| |}| jr$| |}||fS )NRGB)r.   r/   PILZImager&   convertr   r   )r    r6   Z
image_filelabelimager   r   r   __getitem__:   s   

zSUN397.__getitem__c                 C   s
   | j  S r3   )r   is_dirr   r   r   r   r$   F   r5   zSUN397._check_existsc                 C   s$   |   rd S t| j| j| jd d S )N)Zdownload_rootmd5)r$   r   _DATASET_URLr   _DATASET_MD5r   r   r   r   r#   I   s   zSUN397._download)NNF)r   N)__name__
__module____qualname____doc__r?   r@   strr   r   boolr"   intr4   r   r   r<   r$   r#   __classcell__r   r   r1   r   r
   
   s,    r
   )pathlibr   typingr   r   r   r   Z	PIL.Imager8   utilsr   Zvisionr	   r
   r   r   r   r   <module>   s    