
    kh                     v    d dl Z d dlZd dlmZmZmZmZmZ d dlZddl	m
Z
 ddlmZmZ ddlmZ  G d de      Zy)	    N)AnyCallableOptionalTupleUnion   )make_dataset)download_and_extract_archiveverify_str_arg)VisionDatasetc                        e Zd ZdZ	 	 	 	 ddeeej                  f   dedee	   dee	   de
ddf fd	Zdefd
Zdedeeef   fdZde
fdZddZ xZS )GTSRBa  `German Traffic Sign Recognition Benchmark (GTSRB) <https://benchmark.ini.rub.de/>`_ Dataset.

    Args:
        root (str or ``pathlib.Path``): Root directory of the dataset.
        split (string, optional): The dataset split, supports ``"train"`` (default), or ``"test"``.
        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.
        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.
    Nrootsplit	transformtarget_transformdownloadreturnc           	         t         	|   |||       t        |dd      | _        t	        j
                  |      dz  | _        | j                  dz  | j                  dk(  rdndz  | _        |r| j                          | j                         st        d	      | j                  dk(  r!t        t        | j                        d
      }nmt        | j                  dz        5 }t        j                  |dd      D cg c]+  }t        | j                  |d   z        t!        |d         f- }}d d d        | _        || _        || _        y c c}w # 1 sw Y   $xY w)N)r   r   r   )traintestgtsrbr   r   TrainingzFinal_Test/Imagesz;Dataset not found. You can use download=True to download it)z.ppm)
extensionszGT-final_test.csv;T)	delimiterskipinitialspaceFilenameClassId)super__init__r   _splitpathlibPath_base_folder_target_folderr   _check_existsRuntimeErrorr	   stropencsv
DictReaderint_samplesr   r   )
selfr   r   r   r   r   samplescsv_filerow	__class__s
            V/var/www/teggl/fontify/venv/lib/python3.12/site-packages/torchvision/datasets/gtsrb.pyr!   zGTSRB.__init__   sJ    	EUV$UG5FG#LL.8'9O:Uhi 	 MMO!!#\]];;'!"3t':':#;	RGd''*==> (  #~~h#X\] ,,s:>?S^ATU   " 0 s    E;0E+EEEc                 ,    t        | j                        S N)lenr.   r/   s    r4   __len__zGTSRB.__len__>   s    4==!!    indexc                     | j                   |   \  }}t        j                  j                  |      j	                  d      }| j
                  | j                  |      }| j                  | j                  |      }||fS )NRGB)r.   PILImager*   convertr   r   )r/   r;   pathtargetsamples        r4   __getitem__zGTSRB.__getitem__A   so    }}U+f%--e4>>%^^F+F  ,**62Fv~r:   c                 6    | j                   j                         S r6   )r&   is_dirr8   s    r4   r'   zGTSRB._check_existsN   s    ""))++r:   c                 "   | j                         ry d}| j                  dk(  r%t        | dt        | j                        d       y t        | dt        | j                        d       t        | dt        | j                        d	       y )
NzEhttps://sid.erda.dk/public/archives/daaeac0d7ce1152aea9b61d9f1e19370/r   zGTSRB-Training_fixed.zip 513f3c79a4c5141765e10e952eaa2478)download_rootmd5zGTSRB_Final_Test_Images.zip c7e4e6327067d32654124b0fe9e82185zGTSRB_Final_Test_GT.zip fe31e9c9270bbcd7b84b7f21a9d9d9e5)r'   r"   r
   r)   r%   )r/   base_urls     r4   r   zGTSRB.downloadQ   s    Z;;'!(*45!$"3"346 )*78!$"3"346
 )*34!$"3"346r:   )r   NNF)r   N)__name__
__module____qualname____doc__r   r)   r#   r$   r   r   boolr!   r-   r9   r   r   rD   r'   r   __classcell__)r3   s   @r4   r   r      s      (,/3"1C%&"1 "1 H%	"1
 #8,"1 "1 
"1H" " sCx ,t ,r:   r   )r+   r#   typingr   r   r   r   r   r>   folderr	   utilsr
   r   visionr   r    r:   r4   <module>rY      s+    
  8 8 
   ? ![M [r:   