
    kh@
                         d Z ddlmc mZ ddlZddlmZ ddlm	Z	  G d dej                        Z G d d	ej                        Zy)
z5 Detection dataset

Hacked together by Ross Wightman
    N)Image   )create_parserc                   t     e Zd ZdZd fd	Zd Zd Zed        Zed        Z	e	j                  d        Z	 xZS )	DetectionDatseta   `Object Detection Dataset. Use with parsers for COCO, VOC, and OpenImages.
    Args:
        parser (string, Parser):
        transform (callable, optional): A function/transform that  takes in an PIL image
            and returns a transformed version. E.g, ``transforms.ToTensor``

    c                     t         t        |           |xs i }|| _        t	        |t
              rt        |fi || _        || _
        y |t        |j                        sJ || _        || _
        y N)superr   __init__data_dir
isinstancestrr   _parserlenimg_ids
_transform)selfr   parserparser_kwargs	transform	__class__s        O/var/www/teggl/fontify/venv/lib/python3.12/site-packages/effdet/data/dataset.pyr   zDetectionDatset.__init__   sl    ot-/%+ fc"(A=ADL $ %#fnn*===!DL#    c                    | j                   j                  |   }t        ||d   |d   f      }| j                   j                  r,| j                   j	                  |      }|j                  |       | j                  |d   z  }t        j                  |      j                  d      }| j                  | j                  ||      \  }}||fS )z
        Args:
            index (int): Index
        Returns:
            tuple: Tuple (image, annotations (target)).
        widthheight)img_idximg_size	file_nameRGB)r   	img_infosdict
has_labelsget_ann_infoupdater   r   openconvertr   )r   indeximg_infotargetannimg_pathimgs          r   __getitem__zDetectionDatset.__getitem__    s     <<))%0ex/@(8BT.UV<<"",,++E2CMM#==8K#88jj"**51>>%..f5KCF{r   c                 @    t        | j                  j                        S r	   )r   r   r   r   s    r   __len__zDetectionDatset.__len__4   s    4<<''((r   c                     | j                   S r	   )r   r0   s    r   r   zDetectionDatset.parser7   s    ||r   c                     | j                   S r	   r   r0   s    r   r   zDetectionDatset.transform;   s    r   c                     || _         y r	   r4   r   ts     r   r   zDetectionDatset.transform?   s	    r   )NNN)__name__
__module____qualname____doc__r   r.   r1   propertyr   r   setter__classcell__)r   s   @r   r   r      sY    	$()      r   r   c                   h    e Zd ZdZd	dZd Zd Zed        Zed        Z	e	j                  d        Z	y)

SkipSubsetz
    Subset of a dataset at specified indices.

    Arguments:
        dataset (Dataset): The whole Dataset
        n (int): skip rate (select every nth)
    c                 r    || _         |dk\  sJ t        j                  t        |            d d |   | _        y )Nr   )datasetnparanger   indices)r   rB   ns      r   r   zSkipSubset.__init__L   s1    AvvyyW.ss3r   c                 :    | j                   | j                  |      S r	   )rB   rE   )r   idxs     r   r.   zSkipSubset.__getitem__Q   s    ||DLL-..r   c                 ,    t        | j                        S r	   )r   rE   r0   s    r   r1   zSkipSubset.__len__T   s    4<<  r   c                 .    | j                   j                  S r	   )rB   r   r0   s    r   r   zSkipSubset.parserW   s    ||"""r   c                 .    | j                   j                  S r	   rB   r   r0   s    r   r   zSkipSubset.transform[   s    ||%%%r   c                 &    || j                   _        y r	   rL   r6   s     r   r   zSkipSubset.transform_   s    !"r   N)   )r8   r9   r:   r;   r   r.   r1   r<   r   r   r=    r   r   r@   r@   D   sX    4
/! # # & & # #r   r@   )r;   torch.utils.datautilsdatanumpyrC   PILr   parsersr   Datasetr   r@   rO   r   r   <module>rW      s<         "5dll 5p# #r   