
    ёi%                        S SK Jr  S SKJrJrJr  \(       a  S SKJr  S SKJ	r	  SSK
JrJr  \S   rS SKrS SKrS SKrS SKJr  S SKrS S	KJr  S S
KJr  S SKJr  / rSrSrSrSrSr Sr!SSSS.r" " S S\\#S      5      r$g)    )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                      \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S	\S
'   S\S'          S               SS jjr    SS jrS rSr	g)Flowers6   a
  
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	transformNc                F   UR                  5       S;   d
   SU 35       eUc  [        R                  R                  5       nUS;  a  [	        SU 35      eXpl        [        UR                  5          nU(       d%  U(       d   S5       e[        U[        [        SU5      nU(       d%  U(       d   S5       e[        U[        [        SU5      nU(       d%  U(       d   S5       e[        U[        [        SU5      nXPl        [        R                   " U5      n	UR#                  S	S
5      U l        [&        R(                  R+                  U R$                  5      (       d   [&        R,                  " U R$                  5        [&        R(                  R/                  U R$                  S5      n
[&        R(                  R+                  U
5      (       d  U	R1                  U R$                  5        [3        S5      nUR5                  U5      S   S   U l        UR5                  U5      U   S   U l        g )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#   downloadr   flagdata_tarjpg_pathscios               ^/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/vision/datasets/flowers.py__init__Flowers.__init__   s    zz|  
 
 	H AG		H 
 ?mm557G.(FwiP  TZZ\* P8 38Xy(I  Q8 4Iy)XJ  Q8 4Iy)XJ #<<	*"**637ww~~dnn--HHT^^$77<<6ww~~h''/*%ll:.x8;||J/5a8    c                |   U R                   U   n[        R                  " U R                  US-
     /5      nSUS S3n[        R
                  R                  U R                  U5      nU R                  S:X  a  [        R                  " U5      nO:U R                  S:X  a*  [        R                  " [        R                  " U5      5      nU R                  b  U R                  U5      nU R                  S:X  a  XSR                  S5      4$ UR                  [        R                  " 5       5      UR                  S5      4$ )N   z
jpg/image_05z.jpgr%   r&   int64)rB   nparrayr*   r;   r<   r?   r:   r   r   r8   r#   astyper,   get_default_dtype)rC   idxindexlabelimg_nameimages         rI   __getitem__Flowers.__getitem__   s     S!$++eai012bz.T^^X6<<5 JJu%E\\U"HHUZZ./E>>%NN5)E<<5 ,,w///||F4467g9NNNrL   c                ,    [        U R                  5      $ )N)lenrB   )rC   s    rI   __len__Flowers.__len__   s    4<<  rL   )r   r:   rB   r*   r#   )NNNr   NTN)r   r   r   r   r   r   r!   r    r#   r"   rD   boolr   z_ImageBackend | NonereturnNone)rU   intra   z,tuple[_ImageDataType, npt.NDArray[np.int64]])
__name__
__module____qualname____firstlineno____doc____annotations__rJ   rZ   r^   __static_attributes__ rL   rI   r   r   6   s    @D 
** !%!%!%$15(,>9>9 >9 	>9
 >9 />9 >9 &>9 
>9@OO	5O(!rL   r   )r
   znpt.NDArray[np.int64])%
__future__r   typingr   r   r   numpy.typingnpt#paddle.vision.transforms.transformsr   rY   r	   r
   r    r;   r7   numpyrQ   PILr   r,   paddle.dataset.commonr   	paddle.ior   paddle.utilsr   __all__r1   r3   r5   r2   r4   r6   r0   tupler   rk   rL   rI   <module>rx      s    # . .>534L 	     <  #
EG	A	-.	.	
 "7WE_!geEFG _!rL   