Ë
    –\;j{  ã                   ó’   — 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
«      Zy)é    N)Ú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ÚtrnidÚvalid)ÚtrainÚtestr   c                   ó2   — e Zd ZdZ	 	 	 	 	 	 	 dd„Zd„ Zd„ Zy)ÚFlowersa‘  
    Implementation of `Flowers102 <https://www.robots.ox.ac.uk/~vgg/data/flowers/>`_
    dataset.

    Args:
        data_file (str, 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, 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, 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, optional): transform to perform on image, None for no transform. Default: None.
        download (bool, optional): download dataset automatically if :attr:`data_file` is None. Default: True.
        backend (str, 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)
            ...     # <class 'paddle.Tensor'> [3, 64, 96] [1]
    Nc                 óZ  — |j                  «       dv s
J d|› �«       ‚|€t        j                  j                  «       }|dvrt	        d|› �«      ‚|| _        t        |j                  «          }|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                   |«      }	|j#                  d	d
«      | _        t&        j(                  j+                  | j$                  «      st'        j,                  | j$                  «       |	j/                  | j$                  «       t1        d«      }
|
j3                  |«      d   d   | _        |
j3                  |«      |   d   | _        y )N)r   r   r   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Ú/zscipy.ioÚlabelsr   )ÚlowerÚpaddleÚvisionÚget_image_backendÚ
ValueErrorÚbackendÚMODE_FLAG_MAPr   ÚDATA_URLÚDATA_MD5Ú	LABEL_URLÚ	LABEL_MD5Ú	SETID_URLÚ	SETID_MD5Ú	transformÚtarfileÚopenÚreplaceÚ	data_pathÚosÚpathÚexistsÚmkdirÚ
extractallr   Úloadmatr   Úindexes)ÚselfÚ	data_fileÚ
label_fileÚ
setid_fileÚmoder$   Údownloadr   ÚflagÚdata_tarÚscios              úgG:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\paddle/vision/datasets/flowers.pyÚ__init__zFlowers.__init__l   s°  € ð �z‰z‹|ð  
ñ 
ð 	Hð AÀÀÐGó		Hð 
ð ˆ?Ü—m‘m×5Ñ5Ó7ˆGØ˜.Ñ(ÜØFÀwÀiÐPóð ð ˆŒä˜TŸZ™Z›\Ñ*ˆááðPàOóPØä2Øœ8¤X¨y¸(óˆIñ áðQàPóQØä3ØœI¤y°)¸XóˆJñ áðQàPóQØä3ØœI¤y°)¸XóˆJð #ˆŒä—<‘< 	Ó*ˆØ"×*Ñ*¨6°3Ó7ˆŒÜ�w‰w�~‰~˜dŸn™nÔ-Ü�H‰H�T—^‘^Ô$Ø×Ñ˜DŸN™NÔ+ä˜*Ó%ˆØ—l‘l :Ó.¨xÑ8¸Ñ;ˆŒØ—|‘| JÓ/°Ñ5°aÑ8ˆ�ó    c                 óh  — | j                   |   }t        j                  | j                  |dz
     g«      }d|z  }t        j
                  j                  | j                  |«      }| j                  dk(  rt        j                  |«      }n7| j                  dk(  r(t        j                  t        j                  |«      «      }| j                  �| j                  |«      }| j                  dk(  r||j                  d«      fS |j                  t        j                  «       «      |j                  d«      fS )Né   zjpg/image_%05d.jpgr   r   Úint64)r/   ÚnpÚarrayr   r)   r*   Újoinr(   r   r   r&   r$   Úastyper   Úget_default_dtype)r0   ÚidxÚindexÚlabelÚimg_nameÚimages         r9   Ú__getitem__zFlowers.__getitem__ª   së   € Ø—‘˜SÑ!ˆÜ—‘˜$Ÿ+™+ e¨a¡iÑ0Ð1Ó2ˆØ'¨%Ñ/ˆÜ—‘—‘˜TŸ^™^¨XÓ6ˆØ�<‰<˜5Ò Ü—J‘J˜uÓ%‰EØ�\‰\˜UÒ"Ü—H‘HœUŸZ™Z¨Ó.Ó/ˆEà�>‰>Ð%Ø—N‘N 5Ó)ˆEà�<‰<˜5Ò Ø˜%Ÿ,™, wÓ/Ð/Ð/à�|‰|œF×4Ñ4Ó6Ó7¸¿¹ÀgÓ9NÐNÐNr;   c                 ó,   — t        | j                  «      S )N)Úlenr/   )r0   s    r9   Ú__len__zFlowers.__len__¼   s   € Ü�4—<‘<Ó Ð r;   )NNNr   NTN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r:   rI   rL   © r;   r9   r   r   )   s1   „ ñ@ðH ØØØØØØó<9ò|Oó$!r;   r   )r)   r%   Únumpyr?   ÚPILr   r   Úpaddle.dataset.commonr   Ú	paddle.ior   Úpaddle.utilsr   Ú__all__r   r    r"   r   r!   r#   r   r   rQ   r;   r9   Ú<module>rX      s^   ðó 
Û ã Ý ã Ý <Ý Ý #à
€àE€ØG€	ØA€	Ø-€Ø.€	Ø.€	ð
 "¨7¸WÑE€ôT!ˆgõ T!r;   