
    ёi                       S SK Jr  S SKrS SKrS SKJrJrJr  S SKr	S SK
Jr  S SKrS SKJr  S SKJr  \(       a"  S SKJr  S SKJr  S SKJr  S	S
KJr  \S   r\S   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)    )annotationsN)TYPE_CHECKINGAnyLiteral)Image)_check_exists_and_download)Dataset)	DTypeLike)
_Transform   )_ImageDataType)cv2piltrainvalidtestz=https://dataset.bj.bcebos.com/voc/VOCtrainval_11-May-2012.tar 6cd6e144f989b92b3379bac3b3de84fdz/VOCdevkit/VOC2012/ImageSets/Segmentation/{}.txtz#VOCdevkit/VOC2012/JPEGImages/{}.jpgz*VOCdevkit/VOC2012/SegmentationClass/{}.pngvoc2012trainvalr   val)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 rSS jrSS jr	SS jr
Srg)VOC20126   a
  
Implementation of `VOC2012 <http://host.robots.ox.ac.uk/pascal/VOC/voc2012/>`_ 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/voc2012.
    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, 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 VOC2012 dataset.

Examples:

    .. code-block:: python

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


        >>> voc2012 = VOC2012()
        >>> print(len(voc2012))
        2913

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


        >>> transform = T.Compose(
        ...     [
        ...         T.ToTensor(),
        ...         T.Normalize(
        ...             mean=[0.5, 0.5, 0.5],
        ...             std=[0.5, 0.5, 0.5],
        ...             to_rgb=True,
        ...         ),
        ...     ]
        ... )

        >>> voc2012_test = VOC2012(
        ...     mode="test",
        ...     transform=transform,  # apply transform to every image
        ...     backend="cv2",  # use OpenCV as image transform backend
        ... )
        >>> print(len(voc2012_test))
        1464

        >>> for img, label in itertools.islice(iter(voc2012_test), 5):  # only show first 5 images
        ...     # do something with img and label
        ...     print(type(img), img.shape) # type: ignore
        ...     # <class 'paddle.Tensor'> [3, 281, 500]
        ...     print(type(label), label.shape)
        ...     # <class 'numpy.ndarray'> (281, 500)

str | None	data_file_DatasetModemode_Transform[Any, Any] | None	transform_ImageBackendbackendstrflagr
   dtypeNc                   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          U l        Xl        U R                  c.  U(       d   S5       e[        U[        [        [        U5      U l        X0l        U R                  5         [        R                  " 5       U l        g )Nr   z3mode should be 'train', 'valid' or 'test', but got )r   r   z4Expected backend are one of ['pil', 'cv2'], but got z>data_file is not set and downloading automatically is disabled)lowerpaddlevisionget_image_backend
ValueErrorr"   MODE_FLAG_MAPr$   r   r   VOC_URLVOC_MD5	CACHE_DIRr    
_load_annoget_default_dtyper%   )selfr   r   r    downloadr"   s         ^/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/vision/datasets/voc2012.py__init__VOC2012.__init__   s     zz|  
 
 	H AG		H 
 ?mm557G.(FwiP  !$**,/	">>! P8 87GYDN # 	--/
    c                   0 U l         [        R                  " U R                  5      U l        U R                  R                  5        H  nXR                   UR                  '   M     [        R                  U R                  5      nU R                  R                  U R                   U   5      n/ U l        / U l        U H  nUR                  5       n[        R                  UR                  S5      5      n[         R                  UR                  S5      5      nU R                  R#                  U5        U R                  R#                  U5        M     g )Nzutf-8)name2memtarfileopenr   data_tar
getmembersnameSET_FILEformatr$   extractfiledatalabelsstrip	DATA_FILEdecode
LABEL_FILEappend)r2   eleset_filesetslinerB   labels          r4   r0   VOC2012._load_anno   s    T^^4==++-C&)MM#((# . ??499-}}((x)@A	D::<D##DKK$89D%%dkk'&:;EIIT"KKu% r7   c                   U R                   U   nU R                  U   nU R                  R                  U R                  U   5      R                  5       nU R                  R                  U R                  U   5      R                  5       n[        R                  " [        R                  " U5      5      n[        R                  " [        R                  " U5      5      nU R                  S:X  a,  [        R                  " U5      n[        R                  " U5      nU R                  b  U R                  U5      nU R                  S:X  a6  UR                  U R                  5      UR                  U R                  5      4$ XE4$ )Nr   )rB   rC   r<   rA   r9   readr   r;   ioBytesIOr"   nparrayr    astyper%   )r2   idxr   
label_filerB   rM   s         r4   __getitem__VOC2012.__getitem__   s   IIcN	[[%
}}((y)ABGGI))$--
*CDIIKzz"**T*+

2::e,-<<5 88D>DHHUOE>>%>>$'D<<5 ;;tzz*ELL,DDD{r7   c                ,    [        U R                  5      $ N)lenrB   r2   s    r4   __len__VOC2012.__len__   s    499~r7   c                \    U R                   (       a  U R                   R                  5         g g r[   )r<   closer]   s    r4   __del__VOC2012.__del__   s    ==MM! r7   )	r"   rB   r   r<   r%   r$   rC   r9   r    )Nr   NTN)r   r   r   r   r    r   r3   boolr"   z_ImageBackend | NonereturnNone)rV   intre   z'tuple[_ImageDataType, npt.NDArray[Any]])re   rg   )re   rf   )__name__
__module____qualname____firstlineno____doc____annotations__r5   r0   rX   r^   rb   __static_attributes__ r7   r4   r   r   6   s    AF 
**
I !%$15(,%0%0 %0 /	%0
 %0 &%0 
%0N&&*"r7   r   )r   znpt.NDArray[Any])%
__future__r   rQ   r:   typingr   r   r   numpyrS   PILr   r(   paddle.dataset.commonr   	paddle.ior	   numpy.typingnptpaddle._typingr
   #paddle.vision.transforms.transformsr   imager   r!   r   __all__r-   r.   r?   rE   rG   r/   r,   tupler   ro   r7   r4   <module>r}      s    # 	  . .    < (>&L)M34L

I
,<1	9
	$gF_"ge@AB _"r7   