ó
    Eñiø  ã                   ór   • S SK r S SKrS SKJr  S SKJrJrJrJr  S SK	J
r
  SSKJr  SSKJr   " S S	\5      rg)
é    N)ÚPath)ÚAnyÚCallableÚOptionalÚUnion)ÚImageé   )Údownload_and_extract_archive)ÚVisionDatasetc                   óò   ^ • \ rS rSrSrSrSS/rSrSr     SS\	\
\4   S	\S
\\   S\\   S\\   S\4U 4S jjjrS\S\\\4   4S jrS\S\4S jrS\4S jr\S\
4S j5       rS\4S jrSS jrSrU =r$ )ÚKittié   u^  `KITTI <http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark>`_ Dataset.

It corresponds to the "left color images of object" dataset, for object detection.

Args:
    root (str or ``pathlib.Path``): Root directory where images are downloaded to.
        Expects the following folder structure if download=False:

        .. code::

            <root>
                â””â”€â”€ Kitti
                    â””â”€ raw
                        â”œâ”€â”€ training
                        |   â”œâ”€â”€ image_2
                        |   â””â”€â”€ label_2
                        â””â”€â”€ testing
                            â””â”€â”€ image_2
    train (bool, optional): Use ``train`` split if true, else ``test`` split.
        Defaults to ``train``.
    transform (callable, optional): A function/transform that takes in a PIL image
        and returns a transformed version. E.g, ``transforms.PILToTensor``
    target_transform (callable, optional): A function/transform that takes in the
        target and transforms it.
    transforms (callable, optional): A function/transform that takes input sample
        and its target as entry and returns a transformed version.
    download (bool, optional): If true, downloads the dataset from the internet and
        puts it in root directory. If dataset is already downloaded, it is not
        downloaded again.

z0https://s3.eu-central-1.amazonaws.com/avg-kitti/zdata_object_image_2.zipzdata_object_label_2.zipÚimage_2Úlabel_2ÚrootÚtrainÚ	transformÚtarget_transformÚ
transformsÚdownloadc           	      óz  >• [         T
U ]  UUUUS9  / U l        / U l        X l        U R                  (       a  SOSU l        U(       a  U R                  5         U R                  5       (       d  [        S5      e[        R                  R                  U R                  U R
                  U R                  5      nU R                  (       a?  [        R                  R                  U R                  U R
                  U R                  5      n[        R                  " U5       Hœ  n	U R                  R!                  [        R                  R                  Xy5      5        U R                  (       d  MN  U R                  R!                  [        R                  R                  WU	R#                  S5      S    S35      5        Mž     g )N)r   r   r   ÚtrainingÚtestingz<Dataset not found. You may use download=True to download it.Ú.r   z.txt)ÚsuperÚ__init__ÚimagesÚtargetsr   Ú	_locationr   Ú_check_existsÚRuntimeErrorÚosÚpathÚjoinÚ_raw_folderÚimage_dir_nameÚlabels_dir_nameÚlistdirÚappendÚsplit)Úselfr   r   r   r   r   r   Ú	image_dirÚ
labels_dirÚimg_fileÚ	__class__s             €ÚW/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torchvision/datasets/kitti.pyr   ÚKitti.__init__5   s5  ø€ ô 	‰ÑØØØ-Ø!ð	 	ñ 	
ð ˆŒØˆŒØŒ
Ø'+§z§z™°yˆŒæØ�M‰MŒOØ×!Ñ!×#Ñ#ÜÐ]Ó^Ð^ä—G‘G—L‘L ×!1Ñ!1°4·>±>À4×CVÑCVÓWˆ	Ø�:�:ÜŸ™Ÿ™ d×&6Ñ&6¸¿¹È×H\ÑH\Ó]ˆJÜŸ
š
 9Ö-ˆHØ�K‰K×ÑœrŸw™wŸ|™|¨IÓ@ÔAØ�z�z‰zØ—‘×#Ñ#¤B§G¡G§L¡L°ÀÇÁÈsÓ@SÐTUÑ@VÐ?WÐW[Ð=\Ó$]Ö^ò .ó    ÚindexÚreturnc                 óÞ   • [         R                  " U R                  U   5      nU R                  (       a  U R	                  U5      OSnU R
                  (       a  U R                  X#5      u  p#X#4$ )aT  Get item at a given index.

Args:
    index (int): Index
Returns:
    tuple: (image, target), where
    target is a list of dictionaries with the following keys:

    - type: str
    - truncated: float
    - occluded: int
    - alpha: float
    - bbox: float[4]
    - dimensions: float[3]
    - locations: float[3]
    - rotation_y: float

N)r   Úopenr   r   Ú_parse_targetr   )r+   r3   ÚimageÚtargets       r0   Ú__getitem__ÚKitti.__getitem__V   sR   € ô& —
’
˜4Ÿ;™; uÑ-Ó.ˆØ.2¯j¯j�×#Ñ# EÔ*¸dˆØ�?�?Ø ŸO™O¨EÓ:‰MˆEØˆ}Ðr2   c                 ó  • / n[        U R                  U   5       n[        R                  " USS9nU H§  nUR	                  US   [        US   5      [        US   5      [        US   5      USS  Vs/ s H  n[        U5      PM     snUSS	  Vs/ s H  n[        U5      PM     snUS	S
  Vs/ s H  n[        U5      PM     sn[        US
   5      S.5        M©     S S S 5        U$ s  snf s  snf s  snf ! , (       d  f       U$ = f)NÚ )Ú	delimiterr   r	   é   é   é   é   é   é   )ÚtypeÚ	truncatedÚoccludedÚalphaÚbboxÚ
dimensionsÚlocationÚ
rotation_y)r6   r   ÚcsvÚreaderr)   ÚfloatÚint)r+   r3   r9   ÚinpÚcontentÚlineÚxs          r0   r7   ÚKitti._parse_targeto   só   € ØˆÜ�$—,‘,˜uÑ%Ô&¨#Ü—j’j °Ñ4ˆGÛ�Ø—‘à $ Q¡Ü%*¨4°©7£^Ü$'¨¨Q©£LÜ!& t¨A¡w£Ø37¸¸!±9Ó =²9¨a¤ q¦±9Ñ =Ø9=¸aÀ¹Ó&Dº°A¤u¨Q¦x¹Ñ&DØ7;¸B¸r±{Ó$C²{°!¤U¨1¦X±{Ñ$CÜ&+¨D°©H£oñ	öñ  ÷ 'ð ˆùò !>ùÚ&DùÚ$C÷ 'Ô&ð ˆús6   ›AC7Á3C(Â	C7ÂC-Â&	C7Â/C2ÃC7Ã(C7Ã7
Dc                 ó,   • [        U R                  5      $ ©N)Úlenr   ©r+   s    r0   Ú__len__ÚKitti.__len__‚   s   € Ü�4—;‘;ÓÐr2   c                 ó€   • [         R                  R                  U R                  U R                  R
                  S5      $ )NÚraw)r"   r#   r$   r   r/   Ú__name__rY   s    r0   r%   ÚKitti._raw_folder…   s'   € ä�w‰w�|‰|˜DŸI™I t§~¡~×'>Ñ'>ÀÓFÐFr2   c                 ó    ^ • T R                   /nT R                  (       a  UR                  T R                  5        [	        U 4S jU 5       5      $ )z#Check if the data directory exists.c              3   óÈ   >#   • U  HW  n[         R                  R                  [         R                  R                  TR                  TR
                  U5      5      v •  MY     g 7frW   )r"   r#   Úisdirr$   r%   r   )Ú.0Úfnamer+   s     €r0   Ú	<genexpr>Ú&Kitti._check_exists.<locals>.<genexpr>Ž   s@   øé € ÐmÒelÐ\a”2—7‘7—=‘=¤§¡§¡¨d×.>Ñ.>ÀÇÁÐPUÓ!V×WÐWÒelùs   ƒAA")r&   r   r)   r'   Úall)r+   Úfolderss   ` r0   r    ÚKitti._check_exists‰   s<   ø€ à×&Ñ&Ð'ˆØ�:�:Ø�N‰N˜4×/Ñ/Ô0ÜÔmÑelÓmÓmÐmr2   c                 óÚ   • U R                  5       (       a  g[        R                  " U R                  SS9  U R                   H&  n[        U R                   U 3U R                  US9  M(     g)z4Download the KITTI data if it doesn't exist already.NT)Úexist_ok)ÚurlÚdownload_rootÚfilename)r    r"   Úmakedirsr%   Ú	resourcesr
   Údata_url)r+   rd   s     r0   r   ÚKitti.download�   s^   € ð ×Ñ×ÑØä
�Š�D×$Ñ$¨tÒ4ð —^”^ˆEÜ(Ø—}‘}�o e WÐ-Ø"×.Ñ.Øôò $r2   )r   r   r   r   )TNNNF)r4   N)r^   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rq   rp   r&   r'   r   Ústrr   Úboolr   r   r   rP   Útupler   r:   Úlistr7   rZ   Úpropertyr%   r    r   Ú__static_attributes__Ú__classcell__)r/   s   @r0   r   r      s  ø† ñð@ B€Hà!Ø!ð€Ið €NØ€Oð
 Ø(,Ø/3Ø)-Øñ_à�C˜�IÑð_ð ð_ð ˜HÑ%ð	_ð
 # 8Ñ,ð_ð ˜XÑ&ð_ð ÷_ð _ðB ð ¨¨s°C¨x©ô ð2 3ð ¨4ô ð& ˜ô  ð ðG˜Só Gó ðGðn˜tô n÷ò r2   r   )rM   r"   Úpathlibr   Útypingr   r   r   r   ÚPILr   Úutilsr
   Úvisionr   r   © r2   r0   Ú<module>r„      s+   ðÛ 
Û 	Ý ß 1Ó 1å å /Ý !ôRˆMõ Rr2   