
    ڧg/                     ~    d dl Z d dlmZ d dlmZmZmZmZmZ d dl	m
Z
 ddlmZmZmZ ddlmZ  G d d	e          ZdS )
    N)Path)AnyCallableOptionalTupleUnion)Image   )check_integritydownload_and_extract_archivedownload_url)VisionDatasetc                        e Zd ZdZdZdZdZ	 	 	 ddeee	f         de
e         d	e
e         d
eddf
 fdZdedeeef         fdZdefdZdefdZddZ xZS )SBUa  `SBU Captioned Photo <http://www.cs.virginia.edu/~vicente/sbucaptions/>`_ Dataset.

    Args:
        root (str or ``pathlib.Path``): Root directory of dataset where tarball
            ``SBUCaptionedPhotoDataset.tar.gz`` exists.
        transform (callable, optional): A function/transform that takes in a 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.
    zHhttps://www.cs.rice.edu/~vo9/sbucaptions/SBUCaptionedPhotoDataset.tar.gzzSBUCaptionedPhotoDataset.tar.gz 9aec147b3488753cf758b4d493422285NTroot	transformtarget_transformdownloadreturnc                 V   t                                          |||           |r|                                  |                                 st	          d          g | _        g | _        t          j        	                    | j
        dd          }t          j        	                    | j
        dd          }t          t          |          t          |                    D ]\  }}|                                }	t          j                            |	          }
t          j        	                    | j
        d|
          }t          j                            |          rH|                                }| j                            |
           | j                            |           d S )N)r   r   zHDataset not found or corrupted. You can use download=True to download itdataset$SBU_captioned_photo_dataset_urls.txtz(SBU_captioned_photo_dataset_captions.txt)super__init__r   _check_integrityRuntimeErrorphotoscaptionsospathjoinr   zipopenrstripbasenameexistsappend)selfr   r   r   r   file1file2line1line2urlphotofilenamecaption	__class__s                T/var/www/html/ai-engine/env/lib/python3.11/site-packages/torchvision/datasets/sbu.pyr   zSBU.__init__   s`    	EUVVV 	MMOOO$$&& 	kijjj TY	3YZZTY	3]^^UT%[[99 	. 	.LE5,,..CG$$S))Ew||DIy%@@Hw~~h'' .,,..""5)))$$W---	. 	.    indexc                 D   t           j                            | j        d| j        |                   }t          j        |                              d          }| j        |                     |          }| j	        |         }| j
        | 
                    |          }||fS )z
        Args:
            index (int): Index

        Returns:
            tuple: (image, target) where target is a caption for the photo.
        r   RGB)r    r!   r"   r   r   r	   r$   convertr   r   r   )r)   r5   r0   imgtargets        r3   __getitem__zSBU.__getitem__=   s     7<<	9dk%6HIIj""**511>%..%%Cu% ,**622FF{r4   c                 *    t          | j                  S )z$The number of photos in the dataset.)lenr   )r)   s    r3   __len__zSBU.__len__P   s    4;r4   c                     | j         }t          j                            || j                  }t          || j                  sdS dS )z1Check the md5 checksum of the downloaded tarball.FT)r   r    r!   r"   r0   r   md5_checksum)r)   r   fpaths      r3   r   zSBU._check_integrityT   s?    yT4=11ud&788 	5tr4   c           	         |                                  rt          d           dS t          | j        | j        | j        | j        | j                   t          t          j	        
                    | j        dd                    5 }|D ]Z}|                                }	 t          |t          j	        
                    | j        d                     K# t          $ r Y Ww xY w	 ddd           dS # 1 swxY w Y   dS )zEDownload and extract the tarball, and download each individual photo.z%Files already downloaded and verifiedNr   r   )r   printr   r.   r   r0   r@   r$   r    r!   r"   r%   r   OSError)r)   fhliner.   s       r3   r   zSBU.download\   sB      "" 	9:::F$TXty$)T]TXTefff "',,ty)5[\\]] 	ac  kkmm bgll49i&H&HIIII    D		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6   C13CC1
C C1C  C11C58C5)NNT)r   N)__name__
__module____qualname____doc__r.   r0   r@   r   strr   r   r   boolr   intr   r   r;   r>   r   r   __classcell__)r2   s   @r3   r   r      s          UC0H5L
 )-/3. .CI. H%. #8,	.
 . 
. . . . . .> sCx    &         $           r4   r   )r    pathlibr   typingr   r   r   r   r   PILr	   utilsr   r   r   visionr   r    r4   r3   <module>rU      s    				       8 8 8 8 8 8 8 8 8 8 8 8 8 8       N N N N N N N N N N ! ! ! ! ! !c c c c c- c c c c cr4   