
    hZ(                         S SK r S SKrS SKJ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JrJr  SSKJr   " S	 S
\5      rg)    N)
namedtuple)Path)AnyCallableOptionalUnion)Image   )extract_archiveiterable_to_strverify_str_arg)VisionDatasetc                   *  ^  \ rS rSrSr\" S/ SQ5      r/ \" SSSSSS	S
S5      P\" SSSSSS	S
S5      P\" SSSSSS	S
S5      P\" SSSSSS	S
S5      P\" SSSSSS	S
S5      P\" SSSSSS	S
S5      P\" SSSSSS	S
S5      P\" SSSSSS	S	S5      P\" SSSSSS	S	S 5      P\" S!S"SSSS	S
S#5      P\" S$S%SSSS	S
S&5      P\" S'S(SS)SS	S	S*5      P\" S+S,SS)SS	S	S-5      P\" S.SSS)SS	S	S/5      P\" S0S1SS)SS	S
S25      P\" S3S4SS)SS	S
S55      P\" S6S7SS)SS	S
S85      P\" S9S:SS;SS	S	S<5      P\" S=S>SS;SS	S
S<5      P\" S?S@SS;SS	S	SA5      P\" SBSCSS;SS	S	SD5      P\" SESFSSGSS	S	SH5      P\" SISJS"SGSS	S	SK5      P\" SLSMS%SLSS	S	SN5      P\" SOSPS(SQSS
S	SR5      P\" SSSTS,SQSS
S	SU5      P\" SVSWSSXSS
S	SY5      P\" SZS[S1SXSS
S	S\5      P\" S]S^S4SXSS
S	S_5      P\" S`SaSSXSS
S
Sb5      P\" ScSdSSXSS
S
Se5      P\" SfSgS7SXSS
S	Sh5      P\" SiSjS:SXSS
S	Sk5      P\" SlSmS>SXSS
S	Sn5      P\" SoSpSpSXSS	S
SY5      Pr      SSr\\	\
4   Ss\	St\	Su\\\	   \	4   Sv\\   Sw\\   Sx\\   SySq4U 4Sz jjjrS{\Sy\\\4   4S| jrSy\4S} jrSy\	4S~ jrS\	Sy\\	\4   4S jrSt\	Su\	Sy\	4S jrSrU =r$ )
Cityscapes   a  `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   rB      fence)      rF   z
guard rail   )      rH   bridge   )r:   d   rL   tunnel   )r:   x   Z   pole   object)rF   rF   rF   	polegroup   ztraffic light   )r5   r6      ztraffic sign   )   rY   r   
vegetation   nature)k      r1   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   r9   bicycle!   )w   r=   r{   zlicense plateNrootsplitmodetarget_type	transformtarget_transform
transformsreturnc           
        > [         TU ]  XXV5        US:X  a  SOSU l        [        R                  R                  U R                  SU5      U l        [        R                  R                  U R                  U R                  U5      U l        X@l	        X l
        / U l        / U l        [        USS5        US:X  a  SnOSnS	n	U	R                  X#[        U5      5      n	[        US
X5        [!        U["        5      (       d  U/U l	        U R                   V
s/ s H  n
[        U
SS5      PM       n
[        R                  R%                  U R                  5      (       a/  [        R                  R%                  U R                  5      (       Gdd  US:X  a+  [        R                  R                  U R                  S5      nO*[        R                  R                  U R                  S5      nU R                  S:X  a8  [        R                  R                  U R                  U R                   S35      nOGU R                  S:X  a7  [        R                  R                  U R                  U R                   S35      n[        R                  R'                  U5      (       aK  [        R                  R'                  W5      (       a'  [)        XR                  S9  [)        XR                  S9  O[+        S5      e[        R,                  " U R                  5       GHK  n[        R                  R                  U R                  U5      n[        R                  R                  U R                  U5      n[        R,                  " U5       H  n/ nU R                   Hp  nSR                  UR                  S5      S   U R/                  U R                  U5      5      nUR1                  [        R                  R                  UU5      5        Mr     U R                  R1                  [        R                  R                  UU5      5        U R                  R1                  U5        M     GMN     g s  sn
f )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_pathzDataset 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                       W/var/www/auris/envauris/lib/python3.13/site-packages/torchvision/datasets/cityscapes.pyr   Cityscapes.__init__i   s    	9G $HJ	'',,tyy-G77<<		499eD&
tV%786>2K9K_jjok&BCug{8+t,, +}D ))	
) 5-1]^)	

 ww}}T__--RWW]]4CSCS5T5T% "TYY8T U "TYY8V WyyH$!#diiDII;FW9X!Yj(!#diiDII;d9K!Lww~~m,,1O1O-K.))L"T 
 JJt/Dggll4??D9Gd&6&6=JZZ0	!))A")..!7:D<S<STXT]T]_`<a#K !''Z(MN	 * ""277<<#CD##L1 1 05	
s   Qindexc                    [         R                  " U R                  U   5      R                  S5      n/ n[	        U R
                  5       Hd  u  pEUS:X  a"  U R                  U R                  U   U   5      nO&[         R                  " U R                  U   U   5      nUR                  U5        Mf     [        U5      S:  a  [        U5      OUS   nU R                  b  U R                  X&5      u  p&X&4$ )z
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__Cityscapes.__getitem__   s     

4;;u-.66u=d../DAI~e)<Q)?@DLL$7$:;NN6" 0 $'w<!#3w??& OOE:ME}    c                 ,    [        U R                  5      $ N)r   r   )r   s    r   __len__Cityscapes.__len__   s    4;;r   c                 `    / SQnSR                  U5      R                  " S0 U R                  D6$ )N)zSplit: {split}zMode: {mode}zType: {target_type}
 )r   r   __dict__)r   liness     r   
extra_reprCityscapes.extra_repr   s(    Iyy&&777r   r   c                 ~    [        U5       n[        R                  " U5      nS S S 5        U$ ! , (       d  f       W$ = fr   )r   jsonload)r   r   filedatas       r   r   Cityscapes._load_json   s/    $Z499T?D  Zs   -
<c                 N    US:X  a  U S3$ US:X  a  U S3$ US:X  a  U S3$ U S3$ )Nr   z_instanceIds.pngr   z_labelIds.pngr   z
_color.pngz_polygons.jsonr   )r   r   r   s      r   r   Cityscapes._get_target_suffix   sO    *$V+,,J&V=))G#V:&&V>**r   )r   r   r   r   r   r   r   )rw   r   r   NNN)__name__
__module____qualname____firstlineno____doc__r   r   classesr   strr   r   r   r   r   intr   r   r   r   r   dictr   r   __static_attributes____classcell__)r   s   @r   r   r      s)   -` !iO
$QVQtYO$q#vq%yQ$ 	.35$PYZ$ 	afaiP	$
 	!S&!UD)L$ 		1c61eT<P$ 	!S&!UD+N$ 	1fa~N$ 	
Aq&!UE>R$ 		1c61eT?S$ 	b#vq%W$ 	
B>1eULY$ 	A~q%X$ 	Q5%Y$ 	b#~q%_$  	"c>1eT?[!$" 	"c>1eT>Z#$$ 	AxE5/R%$& 	Rh5$X'$( 	Q!UE>Z)$* 	AxE5-X+$, 	b!Xq%W-$. 		2q(Aue_U/$0 	r2ua~N1$2 	"b'1dE=Q3$4 	R!T5+N5$6 	r2y!T5+N7$8 	RAtUJO9$: 	r2y!T5,O;$< 		2sIq$jQ=$> 		2sIq$kR?$@ 	RAtULQA$B 	b"iD%UC$D 		2r9aumTE$F 	RAudKXG$GR -7(,/3)-D2CID2 D2 	D2
 49c>*D2 H%D2 #8,D2 X&D2 
D2 D2L sCx 6   8C 8s tC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   