Ë
    DêñiZ(  ã                   ó†   — d dl Z d dlZd dlmZ d dlmZ d dlmZmZm	Z	m
Z
 d dlmZ ddlmZmZmZ ddlmZ  G d	„ d
e«      Zy)é    N)Ú
namedtuple)ÚPath)ÚAnyÚCallableÚOptionalÚUnion)ÚImageé   )Úextract_archiveÚiterable_to_strÚverify_str_arg)ÚVisionDatasetc                   ó  ‡ — e Zd ZdZ edg d¢«      Zg  eddddddd	d
«      ‘ eddddddd	d
«      ‘ eddddddd	d
«      ‘ eddddddd	d
«      ‘ eddddddd	d
«      ‘ eddddddd	d«      ‘ eddddddd	d«      ‘ edddddddd«      ‘ edddddddd«      ‘ ed d!ddddd	d"«      ‘ ed#d$ddddd	d%«      ‘ ed&d'dd(dddd)«      ‘ ed*d+dd(dddd,«      ‘ ed-d.dd(dddd/«      ‘ ed0d1dd(ddd	d2«      ‘ ed3d4dd(ddd	d5«      ‘ ed6d7dd(ddd	d8«      ‘ ed9d:dd;dddd<«      ‘ ed=d>dd;ddd	d<«      ‘ ed?d@dd;ddddA«      ‘ edBdCdd;ddddD«      ‘ edEdFddGddddH«      ‘ edIdJd!dGddddK«      ‘ edLdMd$dLddddN«      ‘ edOdPd'dQdd	ddR«      ‘ edSdTd+dQdd	ddU«      ‘ edVdWd.dXdd	ddY«      ‘ edZd[d1dXdd	dd\«      ‘ ed]d^d4dXdd	dd_«      ‘ ed`daddXdd	d	db«      ‘ edcddddXdd	d	de«      ‘ edfdgd7dXdd	ddh«      ‘ edidjd:dXdd	ddk«      ‘ edldmd>dXdd	ddn«      ‘ edodpdpdXddd	dY«      ‘Z	 	 	 	 	 	 d‚dreee	f   dsedteduee
e   ef   dvee   dwee   dxee   dydqfˆ fdz„Zd{edyeeef   fd|„Zdyefd}„Zdyefd~„Zdedyeeef   fd€„Zdteduedyefd�„Zˆ xZS )ƒÚ
Cityscapesaw  `Cityscapes <http://www.cityscapes-dataset.com/>`_ Dataset.

    Args:
        root (str or ``pathlib.Path``): Root directory of dataset where directory ``leftImg8bit``
            and ``gtFine`` or ``gtCoarse`` are located.
        split (string, optional): The image split to use, ``train``, ``test`` or ``val`` if mode="fine"
            otherwise ``train``, ``train_extra`` or ``val``
        mode (string, optional): The quality mode to use, ``fine`` or ``coarse``
        target_type (string or list, optional): Type of target to use, ``instance``, ``semantic``, ``polygon``
            or ``color``. Can also be a list to output a tuple with all specified target types.
        transform (callable, optional): A function/transform that takes in a PIL image
            and returns a transformed version. E.g, ``transforms.RandomCrop``
        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.

    Examples:

        Get semantic segmentation target

        .. code-block:: python

            dataset = Cityscapes('./data/cityscapes', split='train', mode='fine',
                                 target_type='semantic')

            img, smnt = dataset[0]

        Get multiple targets

        .. code-block:: python

            dataset = Cityscapes('./data/cityscapes', split='train', mode='fine',
                                 target_type=['instance', 'color', 'polygon'])

            img, (inst, col, poly) = dataset[0]

        Validate on the "coarse" set

        .. code-block:: python

            dataset = Cityscapes('./data/cityscapes', split='val', mode='coarse',
                                 target_type='semantic')

            img, smnt = dataset[0]
    ÚCityscapesClass)ÚnameÚidÚtrain_idÚcategoryÚcategory_idÚhas_instancesÚignore_in_evalÚcolorÚ	unlabeledr   éÿ   ÚvoidFT)r   r   r   zego vehicler
   zrectification borderé   z
out of roié   Ústaticé   Údynamicé   )éo   éJ   r   Úgroundé   )éQ   r   r'   Úroadé   Úflat)é€   é@   r+   Úsidewalké   )éô   é#   éè   Úparkingé	   )éú   éª   é    z
rail tracké
   )éæ   é–   éŒ   Úbuildingé   Úconstruction)éF   r>   r>   Úwallé   )éf   rA   éœ   Úfenceé   )é¾   é™   rF   z
guard railé   )é´   é¥   rH   Úbridgeé   )r9   éd   rL   Útunnelé   )r9   éx   éZ   Úpoleé   Úobject)rF   rF   rF   Ú	polegroupé   ztraffic lighté   )r4   r5   é   ztraffic signé   )éÜ   rY   r   Ú
vegetationé   Únature)ék   éŽ   r0   Úterrainé   )é˜   éû   ra   Úskyé   )r>   é‚   rH   Úpersoné   Úhuman)rY   rX   é<   Úrideré   )r   r   r   Úcaré   Úvehicle)r   r   r^   Útrucké   )r   r   r>   Úbusé   )r   ri   rL   Úcaravané   )r   r   rP   ÚtrailerrW   )r   r   én   Útrainé   )r   éP   rL   Ú
motorcycleé    )r   r   r8   Úbicycleé!   )éw   r<   r{   zlicense plateéÿÿÿÿNÚrootÚsplitÚmodeÚtarget_typeÚ	transformÚtarget_transformÚ
transformsÚreturnc           
      ó�  •— t         ‰| �  ||||«       |dk(  rdnd| _        t        j                  j                  | j                  d|«      | _        t        j                  j                  | j                  | j                  |«      | _        || _	        || _
        g | _        g | _        t        |dd«       |dk(  rd}nd}d	}	|	j                  ||t        |«      «      }	t        |d
||	«       t!        |t"        «      s|g| _	        | j                  D �
cg c]  }
t        |
dd«      ‘Œ c}
 t        j                  j%                  | j                  «      r*t        j                  j%                  | j                  «      �s_|dk(  r+t        j                  j                  | j                  d«      }n*t        j                  j                  | j                  d«      }| j                  dk(  r8t        j                  j                  | j                  | j                  › d�«      }nF| j                  dk(  r7t        j                  j                  | j                  | j                  › d�«      }t        j                  j'                  |«      rNt        j                  j'                  «      r/t)        || j                  ¬«       t)        || j                  ¬«       nt+        d«      ‚t        j,                  | j                  «      D �]E  }t        j                  j                  | j                  |«      }t        j                  j                  | j                  |«      }t        j,                  |«      D ]Ö  }g }| j                  D ]o  }dj                  |j                  d«      d   | j/                  | j                  |«      «      }|j1                  t        j                  j                  ||«      «       Œq | j                  j1                  t        j                  j                  ||«      «       | j                  j1                  |«       ŒØ �ŒH y c c}
w )NÚfineÚgtFineÚgtCoarseÚleftImg8bitr‚   )r‰   Úcoarse)rw   ÚtestÚval)rw   Útrain_extrar�   zOUnknown value '{}' for argument split if mode is '{}'. Valid values are {{{}}}.r�   rƒ   )ÚinstanceÚsemanticÚpolygonr   r�   zleftImg8bit_trainextra.zipzleftImg8bit_trainvaltest.zipz_trainvaltest.zipz.zip)Ú	from_pathÚto_pathz‹Dataset not found or incomplete. Please make sure all required folders for the specified "split" and "mode" are inside the "root" directoryz{}_{}Ú_leftImg8bitr   )ÚsuperÚ__init__r‚   ÚosÚpathÚjoinr€   Ú
images_dirÚtargets_dirrƒ   r�   ÚimagesÚtargetsr   Úformatr   Ú
isinstanceÚlistÚisdirÚisfiler   ÚRuntimeErrorÚlistdirÚ_get_target_suffixÚappend)Úselfr€   r�   r‚   rƒ   r„   r…   r†   Úvalid_modesÚmsgÚvalueÚimage_dir_zipÚtarget_dir_zipÚcityÚimg_dirÚ
target_dirÚ	file_nameÚtarget_typesÚtÚtarget_nameÚ	__class__s                       €úa/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/torchvision/datasets/cityscapes.pyr˜   zCityscapes.__init__i   s+  ø€ ô 	‰Ñ˜˜z¨9Ð6FÔGØ $¨¢‘H°JˆŒ	ÜŸ'™'Ÿ,™, t§y¡y°-ÀÓGˆŒÜŸ7™7Ÿ<™<¨¯	©	°4·9±9¸eÓDˆÔØ&ˆÔØˆŒ
ØˆŒØˆŒä�t˜VÐ%7Ô8Ø�6Š>Ø2‰Kà9ˆKØ_ˆØ�j‰j˜ ¤o°kÓ&BÓCˆÜ�u˜g {°CÔ8ä˜+¤tÔ,Ø +˜}ˆDÔð ×)Ñ)ö	
àô ˜5 -Ð1]Õ^ó	
ô
 �w‰w�}‰}˜TŸ_™_Ô-´R·W±W·]±]À4×CSÑCSÕ5Tà˜Ò%Ü "§¡§¡¨T¯Y©YÐ8TÓ U‘ä "§¡§¡¨T¯Y©YÐ8VÓ W�à�y‰y˜HÒ$Ü!#§¡§¡¨d¯i©i¸D¿I¹I¸;ÐFWÐ9XÓ!Y‘Ø—‘˜jÒ(Ü!#§¡§¡¨d¯i©i¸D¿I¹I¸;ÀdÐ9KÓ!L�ä�w‰w�~‰~˜mÔ,´·±·±ÀÔ1OÜ¨-ÀÇÁÕKÜ¨.À$Ç)Á)ÖLä"ðTóð ô
 —J‘J˜tŸ™Ó/ó 	2ˆDÜ—g‘g—l‘l 4§?¡?°DÓ9ˆGÜŸ™Ÿ™ d×&6Ñ&6¸Ó=ˆJÜŸZ™Z¨Ó0ò 	2�	Ø!�Ø×)Ñ)ò O�AØ")§.¡.Ø!Ÿ™¨Ó7¸Ñ:¸D×<SÑ<SÐTX×T]ÑT]Ð_`Ó<aó#�Kð !×'Ñ'¬¯©¯©°ZÀÓ(MÕNð	Oð —‘×"Ñ"¤2§7¡7§<¡<°¸Ó#CÔDØ—‘×#Ñ# LÕ1ò	2ñ	2ùò5	
s   ÄQÚindexc                 óâ  — t        j                  | j                  |   «      j                  d«      }g }t	        | j
                  «      D ]b  \  }}|dk(  r"| j                  | j                  |   |   «      }n%t        j                  | j                  |   |   «      }|j                  |«       Œd t        |«      dkD  rt        |«      n|d   }| j                  �| j                  ||«      \  }}||fS )a.  
        Args:
            index (int): Index
        Returns:
            tuple: (image, target) where target is a tuple of all target types if target_type is a list with more
            than one item. Otherwise, target is a json object if target_type="polygon", else the image segmentation.
        ÚRGBr“   r
   r   )r	   Úopenrž   ÚconvertÚ	enumeraterƒ   Ú
_load_jsonrŸ   r¨   ÚlenÚtupler†   )r©   r¸   ÚimagerŸ   Úir´   Útargets          r·   Ú__getitem__zCityscapes.__getitem__¯   sØ   € ô —
‘
˜4Ÿ;™; uÑ-Ó.×6Ñ6°uÓ=ˆàˆÜ˜d×.Ñ.Ó/ò 	#‰DˆAˆqØ�IŠ~ØŸ™¨¯©°eÑ)<¸QÑ)?Ó@‘äŸ™ D§L¡L°Ñ$7¸Ñ$:Ó;�à�N‰N˜6Õ"ð	#ô $' w£<°!Ò#3”�w”¸À¹ˆà�?‰?Ð&Ø ŸO™O¨E°6Ó:‰MˆE�6à�fˆ}Ðó    c                 ó,   — t        | j                  «      S ©N)r¿   rž   )r©   s    r·   Ú__len__zCityscapes.__len__Ê   s   € Ü�4—;‘;ÓÐrÅ   c                 ó`   — g d¢} dj                  |«      j                  di | j                  ¤ŽS )N)zSplit: {split}zMode: {mode}zType: {target_type}ú
© )r›   r    Ú__dict__)r©   Úliness     r·   Ú
extra_reprzCityscapes.extra_reprÍ   s*   € ÚIˆØ&ˆt�y‰y˜Ó×&Ñ&Ñ7¨¯©Ñ7Ð7rÅ   rš   c                 ór   — t        |«      5 }t        j                  |«      }d d d «       |S # 1 sw Y   S xY wrÇ   )r»   ÚjsonÚload)r©   rš   ÚfileÚdatas       r·   r¾   zCityscapes._load_jsonÑ   s2   € Ü�$‹Zð 	#˜4Ü—9‘9˜T“?ˆD÷	#àˆ÷	#àˆús   Œ,¬6c                 óH   — |dk(  r|› d�S |dk(  r|› d�S |dk(  r|› d�S |› d�S )Nr‘   z_instanceIds.pngr’   z_labelIds.pngr   z
_color.pngz_polygons.jsonrË   )r©   r‚   rƒ   s      r·   r§   zCityscapes._get_target_suffixÖ   sO   € Ø˜*Ò$Ø�VÐ+Ð,Ð,Ø˜JÒ&Ø�V˜=Ð)Ð)Ø˜GÒ#Ø�V˜:Ð&Ð&à�V˜>Ð*Ð*rÅ   )rw   r‰   r‘   NNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Úclassesr   Ústrr   r¢   r   r   r˜   ÚintrÀ   r   rÄ   rÈ   rÎ   Údictr¾   r§   Ú__classcell__)r¶   s   @r·   r   r      s  ø„ ñ-ñ` !ØÚió€Oð
$Ù˜ Q¨¨V°Q¸¸tÀYÓOð$á˜ q¨#¨v°q¸%ÀÀyÓQð$ñ 	Ð.°°3¸ÀÀ5È$ÐPYÓZð$ñ 	˜ a¨¨f°a¸ÀÀiÓPð	$ñ
 	˜ ! S¨&°!°U¸DÀ)ÓLð$ñ 	˜	 1 c¨6°1°e¸TÀ<ÓPð$ñ 	˜ ! S¨&°!°U¸DÀ+ÓNð$ñ 	˜  1 f¨a°¸¸~ÓNð$ñ 	˜
 A q¨&°!°U¸EÀ>ÓRð$ñ 	˜	 1 c¨6°1°e¸TÀ?ÓSð$ñ 	˜ b¨#¨v°q¸%ÀÀÓWð$ñ 	˜
 B¨¨>¸1¸eÀUÈLÓYð$ñ 	˜  A ~°q¸%ÀÈÓXð$ñ 	˜  Q¨¸¸5À%ÈÓYð$ñ 	˜ b¨#¨~¸qÀ%ÈÈÓ_ð$ñ  	˜ " c¨>¸1¸eÀTÈ?Ó[ð!$ñ" 	˜ " c¨>¸1¸eÀTÈ>ÓZð#$ñ$ 	˜  A x°°E¸5À/ÓRð%$ñ& 	˜ R¨¨h¸¸5À$ÈÓXð'$ñ( 	˜¨¨Q°¸!¸UÀEÈ>ÓZð)$ñ* 	˜¨¨A¨x¸¸EÀ5È-ÓXð+$ñ, 	˜ b¨!¨X°q¸%ÀÈÓWð-$ñ. 	˜	 2 q¨(°A°u¸eÀ_ÓUð/$ñ0 	˜˜r 2 u¨a°¸¸~ÓNð1$ñ2 	˜ " b¨'°1°d¸EÀ=ÓQð3$ñ4 	˜  R¨°!°T¸5À+ÓNð5$ñ6 	˜˜r 2 y°!°T¸5À+ÓNð7$ñ8 	˜  R¨°A°t¸UÀJÓOð9$ñ: 	˜˜r 2 y°!°T¸5À,ÓOð;$ñ< 	˜	 2 s¨I°q¸$ÀÀjÓQð=$ñ> 	˜	 2 s¨I°q¸$ÀÀkÓRð?$ñ@ 	˜  R¨°A°t¸UÀLÓQðA$ñB 	˜ b¨"¨i¸¸DÀ%ÈÓUðC$ñD 	˜	 2 r¨9°a¸¸uÀmÓTðE$ñF 	˜¨¨R°¸A¸uÀdÈKÓXðG$€GðR ØØ-7Ø(,Ø/3Ø)-ñD2à�C˜�IÑðD2ð ðD2ð ð	D2ð
 ˜4 ™9 c˜>Ñ*ðD2ð ˜HÑ%ðD2ð # 8Ñ,ðD2ð ˜XÑ&ðD2ð 
õD2ðL ð ¨¨s°C¨x©ó ð6 ˜ó  ð8˜Có 8ð˜sð  t¨C°¨H¡~ó ð
+ sð +¸ð +À÷ +rÅ   r   )rÐ   r™   Úcollectionsr   Úpathlibr   Útypingr   r   r   r   ÚPILr	   Úutilsr   r   r   Úvisionr   r   rË   rÅ   r·   ú<module>rä      s1   ðÛ Û 	Ý "Ý ß 1Ó 1å ç CÑ CÝ !ôQ+�õ Q+rÅ   