
    {-j%                       d dl mZ d dlmZmZmZ erd dlmZ d dlm	Z	 ddl
mZmZ ed         Zd dlZd dlZd dlZd dlmZ d dlZd d	lmZ d d
lmZ d dlmZ g ZdZdZdZdZdZ dZ!ddddZ" G d dee#d                            Z$dS )    )annotations)TYPE_CHECKINGAnyLiteralN)
_Transform   )_ImageBackend_ImageDataTypetrainvalidtest)Image)_check_exists_and_download)Dataset)
try_importz8http://paddlemodels.bj.bcebos.com/flowers/102flowers.tgzz9http://paddlemodels.bj.bcebos.com/flowers/imagelabels.matz3http://paddlemodels.bj.bcebos.com/flowers/setid.mat 52808999861908f626f3c1f4e79d11fa e0620be6f572b9609742df49c70aed4d a5357ecc9cb78c4bef273ce3793fc85ctstidtrnidr   )r   r   r   c                  v    e Zd ZU dZded<   ded<   ded<   ded<   ded	<   d
ed<   	 	 	 	 	 	 	 dddZddZd ZdS )Flowersa  
    Implementation of `Flowers102 <https://www.robots.ox.ac.uk/~vgg/data/flowers/>`_
    dataset.

    Args:
        data_file (str|None, optional): Path to data file, can be set None if
            :attr:`download` is True. Default: None, default data path: ~/.cache/paddle/dataset/flowers/.
        label_file (str|None, optional): Path to label file, can be set None if
            :attr:`download` is True. Default: None, default data path: ~/.cache/paddle/dataset/flowers/.
        setid_file (str|None, optional): Path to subset index file, can be set
            None if :attr:`download` is True. Default: None, default data path: ~/.cache/paddle/dataset/flowers/.
        mode (str, optional): Either train or test mode. Default 'train'.
        transform (Callable|None, optional): transform to perform on image, None for no transform. Default: None.
        download (bool|None, optional): download dataset automatically if :attr:`data_file` is None. Default: True.
        backend (str|None, optional): Specifies which type of image to be returned:
            PIL.Image or numpy.ndarray. Should be one of {'pil', 'cv2'}.
            If this option is not set, will get backend from :ref:`paddle.vision.get_image_backend <api_paddle_vision_get_image_backend>`,
            default backend is 'pil'. Default: None.

    Returns:
        :ref:`api_paddle_io_Dataset`. An instance of Flowers dataset.

    Examples:

        .. code-block:: python

            >>> # doctest: +TIMEOUT(60)
            >>> import itertools
            >>> import paddle.vision.transforms as T
            >>> from paddle.vision.datasets import Flowers

            >>> flowers = Flowers()
            >>> print(len(flowers))
            6149

            >>> for i in range(5):  # only show first 5 images
            ...     img, label = flowers[i]
            ...     # do something with img and label
            ...     print(type(img), img.size, label)
            ...     # <class 'PIL.JpegImagePlugin.JpegImageFile'> (523, 500) [1]

            >>> transform = T.Compose(
            ...     [
            ...         T.Resize(64),
            ...         T.ToTensor(),
            ...         T.Normalize(
            ...             mean=[0.5, 0.5, 0.5],
            ...             std=[0.5, 0.5, 0.5],
            ...             to_rgb=True,
            ...         ),
            ...     ]
            ... )
            >>> flowers_test = Flowers(
            ...     mode="test",
            ...     transform=transform,  # apply transform to every image
            ...     backend="cv2",  # use OpenCV as image transform backend
            ... )
            >>> print(len(flowers_test))
            1020

            >>> for img, label in itertools.islice(iter(flowers_test), 5):  # only show first 5 images
            ...     # do something with img and label
            ...     print(type(img), img.shape, label) # type: ignore
            ...     # <class 'paddle.Tensor'> [3, 64, 96] [1]
    r	   backend
str | None	data_file
label_file
setid_file_DatasetModemode_Transform[Any, Any] | None	transformNr   Tdownloadbool_ImageBackend | NonereturnNonec                ^   |                                 dv sJ d|             |t          j                                        }|dvrt	          d|           || _        t          |                                          }|s)|s
J d            t          |t          t          d|          }|s)|s
J d            t          |t          t          d|          }|s)|s
J d            t          |t          t          d|          }|| _        t          j        |          }	|                    d	d
          | _        t&          j                            | j                  st'          j        | j                   t&          j                            | j        d          }
t&          j                            |
          s|	                    | j                   t3          d          }|                    |          d         d         | _        |                    |          |         d         | _        d S )Nr   z3mode should be 'train', 'valid' or 'test', but got )pilcv2z4Expected backend are one of ['pil', 'cv2'], but got z>data_file is not set and downloading automatically is disabledflowersz?label_file is not set and downloading automatically is disabledz?setid_file is not set and downloading automatically is disabledz.tgz/jpgzscipy.iolabelsr   )lowerpaddlevisionget_image_backend
ValueErrorr   MODE_FLAG_MAPr   DATA_URLDATA_MD5	LABEL_URL	LABEL_MD5	SETID_URL	SETID_MD5r"   tarfileopenreplace	data_pathospathexistsmkdirjoin
extractallr   loadmatr.   indexes)selfr   r   r   r    r"   r#   r   flagdata_tarjpg_pathscios               ^/var/www/html/banglarbhumi/venv/lib/python3.11/site-packages/paddle/vision/datasets/flowers.py__init__zFlowers.__init__   sH    zz||  
 
 
 
 HGG	
 
 
 ?m5577G.((PwPP   TZZ\\* 	  P 8 38Xy( I  	  Q 8 4Iy)X J  	  Q 8 4Iy)X J #<	**"**6377w~~dn-- 	%HT^$$$7<<66w~~h'' 	0///*%%ll:..x8;||J//5a8    idxint,tuple[_ImageDataType, npt.NDArray[np.int64]]c                N   | j         |         }t          j        | j        |dz
           g          }d|dd}t          j                            | j        |          }| j        dk    rt          j
        |          }n1| j        dk    r&t          j        t          j
        |                    }| j        |                     |          }| j        dk    r||                    d          fS |                    t          j                              |                    d          fS )N   z
jpg/image_05z.jpgr)   r*   int64)rF   nparrayr.   r?   r@   rC   r>   r   r   r<   r"   astyper0   get_default_dtype)rG   rO   indexlabelimg_nameimages         rL   __getitem__zFlowers.__getitem__   s    S!$+eai0122.....T^X66<5  Ju%%EE\U""HUZ..//E>%NN5))E<5  %,,w////||F46677g9N9NNNrN   c                *    t          | j                  S )N)lenrF   )rG   s    rL   __len__zFlowers.__len__   s    4<   rN   )NNNr   NTN)r   r   r   r   r   r   r    r   r"   r!   r#   r$   r   r%   r&   r'   )rO   rP   r&   rQ   )__name__
__module____qualname____doc____annotations__rM   r^   ra    rN   rL   r   r   6   s         @ @D **** !%!%!%$15(,>9 >9 >9 >9 >9@O O O O(! ! ! ! !rN   r   )r
   znpt.NDArray[np.int64])%
__future__r   typingr   r   r   numpy.typingnpt#paddle.vision.transforms.transformsr   r]   r	   r
   r   r?   r;   numpyrV   PILr   r0   paddle.dataset.commonr   	paddle.ior   paddle.utilsr   __all__r5   r7   r9   r6   r8   r:   r4   tupler   rg   rN   rL   <module>rt      sr   # " " " " " . . . . . . . . . . 5>>>>>>5555555534L 				             < < < < < <       # # # # # #
EG	A	-.	.	
 "7WEE_! _! _! _! _!geEFG _! _! _! _! _!rN   