
    RЦi                         S r SSKrSSKJrJr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KJr      SS	\S
\\\\\4      S\\   S\S\4
S jjr " S S\5      rg)zA dataset reader that extracts images from folders

Folders are scanned recursively to find image files. Labels are based
on the folder hierarchy, just leaf folders by default.

Hacked together by / Copyright 2020 Ross Wightman
    N)DictListOptionalSetTupleUnionnatural_key   )load_class_map)get_img_extensions)Readerfoldertypesclass_to_idxleaf_name_onlysortc                    U(       d	  [        SS9O
[        U5      n/ n/ n[        R                  " U SSS9 H  u  pxn	Xp:w  a  [        R                  R                  Xp5      OSn
U(       a  [        R                  R                  U
5      O)U
R                  [        R                  R                  S5      nU	 Hy  n[        R                  R                  U5      u  pUR                  5       U;   d  M:  UR                  [        R                  R                  X|5      5        UR                  U5        M{     M     UcC  [        U5      n[        [        U[        S95      n[!        U5       VVs0 s H	  u  nnUU_M     nnn[#        Xe5       VVs/ s H  u  nnUU;   d  M  XU   4PM     nnnU(       a  [        US S9nUU4$ s  snnf s  snnf )	a  Walk folder recursively to discover images and map them to classes by folder names.

Args:
    folder: root of folder to recursively search
    types: types (file extensions) to search for in path
    class_to_idx: specify mapping for class (folder name) to class index if set
    leaf_name_only: use only leaf-name of folder walk for class names
    sort: re-sort found images by name (for consistent ordering)

Returns:
    A list of image and target tuples, class_to_idx mapping
T)as_setF)topdownfollowlinks _)keyc                     [        U S   5      $ Nr   r	   )ks    d/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/timm/data/readers/reader_image_folder.py<lambda>)find_images_and_targets.<locals>.<lambda>7   s    kRSTURVFW    )r   setoswalkpathrelpathbasenamereplacesepsplitextlowerappendjoinlistsortedr
   	enumeratezip)r   r   r   r   r   labels	filenamesrootsubdirsfilesrel_pathlabelfbaseextunique_labelssorted_labelsidxclimages_and_targetss                        r   find_images_and_targetsrB      s|   & 49d+c%jEFI "4 Pu59^277??40".<  *(BRBRSUSZSZS^S^`cBdA((+IDyy{e#  d!67e$	  !Q FVM{CD-6}-EF-E633-EF;>y;Qg;Q41aUVZfUf.11o.;Qg#$6<WX|++	 Ggs   (F=	G
Gc                   F   ^  \ rS rSr  SU 4S jjrS rS rSS jrSrU =r	$ )	ReaderImageFolder;   c           	      <  > [         TU ]  5         Xl        S nU(       a  [        X!5      nS nU(       a  UR	                  S5      n[        UUUS9u  U l        U l        [        U R                  5      S:X  a(  [        SU SSR                  [        5       5       35      eg )N;)r   r   r   z Found 0 images in subfolders of z!. Supported image extensions are z, )super__init__r4   r   splitrB   samplesr   lenRuntimeErrorr-   r   )selfr4   	class_map	input_keyr   
find_types	__class__s         r   rI   ReaderImageFolder.__init__=   s     		)):L
"-J*A%+
'd'
 t||!24& 9226))<N<P2Q1RTU U "r!   c                 @    U R                   U   u  p#[        US5      U4$ )Nrb)rK   open)rN   indexr%   targets       r   __getitem__ReaderImageFolder.__getitem__V   s$    ||E*D$''r!   c                 ,    [        U R                  5      $ )N)rL   rK   )rN   s    r   __len__ReaderImageFolder.__len__Z   s    4<<  r!   c                     U R                   U   S   nU(       a!  [        R                  R                  U5      nU$ U(       d)  [        R                  R	                  X@R
                  5      nU$ r   )rK   r#   r%   r'   r&   r4   )rN   rW   r'   absolutefilenames        r   	_filenameReaderImageFolder._filename]   sS    <<&q)ww''1H  wwx;Hr!   )r   r4   rK   )r   N)FF)
__name__
__module____qualname____firstlineno__rI   rY   r\   ra   __static_attributes____classcell__)rR   s   @r   rD   rD   ;   s%    
 	U2(! r!   rD   )NNTT)__doc__r#   typingr   r   r   r   r   r   timm.utils.miscr
   rO   r   img_extensionsr   readerr   strboolrB   rD    r!   r   <module>rq      s    
 : : ' % . 
 48'+#&,&,dE3./0&, tn&, 	&,
 &,R( (r!   