
    RЦi                     $   S r SSKrSSKrSSKJr  SSKrSSKJs  Jr  SSK	J
r
  SSKJr  \R                  " \5      rSr " S S	\R"                  5      r " S
 S\R&                  5      r " S S\R                  R                  R"                  5      rg)zgQuick n Simple Image Folder, Tarfile based DataSet

Hacked together by / Copyright 2019, Ross Wightman
    N)Optional)Image   )create_reader   c                   N    \ rS rSr        S	S jrS rS rS
S jrS
S jrSr	g)ImageDataset   Nc
                     Ub  [        U[        5      (       a  [        U=(       d    S4UUUU	S.U
D6nX l        XPl        X`l        Xpl        Xl        Xl        [        U l
        g )N )rootsplit	class_mapadditional_features)
isinstancestrr   reader
load_bytesinput_img_mode	transformtarget_transformr   _ERROR_RETRY_max_retries)selfr   r   r   r   r   r   r   r   r   kwargss              P/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/timm/data/dataset.py__init__ImageDataset.__init__   sl     >Z44""#$7 F $," 0#6 (    c                    [        U R                  5       HL  n U R                  U   tp4nU R                  (       a  UR	                  5       O[
        R                  " U5      n  O   [        SU R                   S35      eU R                  (       a,  U R                  (       d  UR                  U R                  5      nU R                  b  U R                  U5      nUc  SnOU R                   b  U R!                  U5      nU R"                  c  X44$ X4/UQ7$ ! [        [        4 aB  n[        R                  SU SU 35        US-   [        U R                  5      -  n S nAGMK  S nAff = f)NzSkipped sample (index z). r   zFailed to load z consecutive samples)ranger   r   r   readr   openIOErrorOSError_loggerwarninglenRuntimeErrorr   convertr   r   r   )r   indexattemptimgtargetfeatureses          r   __getitem__ImageDataset.__getitem__5   s6   T../G7)-U);&h$(OOchhjC	 0 1B1B0CCWXYYt++d112C>>%..%C>F"".**62F##+;)))' W% 7"8s1# FGc$++&667s   ADE&$6E!!E&c                 ,    [        U R                  5      $ N)r)   r   r   s    r   __len__ImageDataset.__len__P   s    4;;r   c                 :    U R                   R                  XU5      $ r5   )r   filenamer   r,   basenameabsolutes       r   r:   ImageDataset.filenameS   s    {{##EX>>r   c                 8    U R                   R                  X5      $ r5   r   	filenamesr   r<   r=   s      r   rA   ImageDataset.filenamesV       {{$$X88r   )r   r   r   r   r   r   r   )NtrainNFRGBNNNFF)
__name__
__module____qualname____firstlineno__r   r2   r7   r:   rA   __static_attributes__ r   r   r	   r	      s5    
  ! $)<*6 ?9r   r	   c                   |    \ rS rSr               SS jrS rS rS r SS\\	   4S jjr
SS	 jrSS
 jrSrg)IterableImageDatasetZ   Nc                     Uc   e[        U[        5      (       a   [        U4UUUUUUUU	U
UUUUS.UD6U l        OX l        Xl        Xl        g )N)r   r   r   is_training
batch_sizenum_samplesseedrepeatsdownloadr   	input_key
target_key	max_steps)r   r   r   r   r   r   )r   r   r   r   r   rR   rS   rT   rU   rV   rW   r   rX   rY   r   r   rZ   r   s                     r   r   IterableImageDataset.__init__\   st    ( !!!fc""'#'%'!-#%# DK$ !K" 0r   c              #      #    U R                    HF  u  pU R                  b  U R                  U5      nU R                  b  U R                  U5      nX4v   MH     g 7fr5   )r   r   r   )r   r.   r/   s      r   __iter__IterableImageDataset.__iter__   sQ     ;;KC~~)nnS)$$0..v6+ 's   AAc                 d    [        U R                  S5      (       a  [        U R                  5      $ g)Nr7   r   )hasattrr   r)   r6   s    r   r7   IterableImageDataset.__len__   s%    4;;	**t{{##r   c                 r    [        U R                  S5      (       a  U R                  R                  U5        g g )N	set_epoch)r`   r   rc   )r   counts     r   rc   IterableImageDataset.set_epoch   s*    4;;,,KK!!%( -r   num_workersc                 n    [        U R                  S5      (       a  U R                  R                  US9  g g )Nset_loader_cfg)rf   )r`   r   rh   )r   rf   s     r   rh   #IterableImageDataset.set_loader_cfg   s0    
 4;; 011KK&&;&? 2r   c                      S5       e)Nz8Filename lookup by index not supported, use filenames().rM   r;   s       r   r:   IterableImageDataset.filename   s    PPPur   c                 8    U R                   R                  X5      $ r5   r@   rB   s      r   rA   IterableImageDataset.filenames   rD   r   )r   r   r   )NrE   NFr   N*   r   FrF   NNNNNr5   rG   )rH   rI   rJ   rK   r   r]   r7   rc   r   intrh   r:   rA   rL   rM   r   r   rO   rO   Z   si    
  !#*1X) *.@!#@Q9r   rO   c                   n    \ rS rSrSrSS jrS r\S 5       r\R                  S 5       rS r
S rS	 rS
rg)AugMixDataset   zCDataset wrapper to perform AugMix or other clean/augmentation mixesc                     S U l         S U l        Xl        U R                  R                  b%  U R	                  U R                  R                  5        X l        g r5   )augmentation	normalizedatasetr   _set_transforms
num_splits)r   rv   rx   s      r   r   AugMixDataset.__init__   sC     <<!!-  !7!78$r   c                     [        U[        [        45      (       a  [        U5      S:X  d   S5       eUS   U R                  l        US   U l        US   U l        g )N   z&Expecting a tuple/list of 3 transformsr   r      )r   listtupler)   rv   r   rt   ru   r   xs     r   rw   AugMixDataset._set_transforms   sP    !dE]++A!e=ee;!"1aD1r   c                 .    U R                   R                  $ r5   )rv   r   r6   s    r   r   AugMixDataset.transform   s    ||%%%r   c                 &    U R                  U5        g r5   )rw   r   s     r   r   r      s    Qr   c                 B    U R                   c  U$ U R                  U5      $ r5   )ru   r   s     r   
_normalizeAugMixDataset._normalize   s    NN*qAq0AAr   c                     U R                   U   u  p#U R                  U5      /n[        U R                  S-
  5       H2  nUR	                  U R                  U R                  U5      5      5        M4     [        U5      U4$ )Nr   )rv   r   r"   rx   appendrt   r~   )r   ir   yx_list_s         r   r2   AugMixDataset.__getitem__   si    ||A//!$%t*+AMM$//$*;*;A*>?@ ,V}ar   c                 ,    [        U R                  5      $ r5   )r)   rv   r6   s    r   r7   AugMixDataset.__len__   s    4<<  r   )rt   rv   ru   rx   N)r|   )rH   rI   rJ   rK   __doc__r   rw   propertyr   setterr   r2   r7   rL   rM   r   r   rq   rq      sM    M% & &    B !r   rq   )r   iologgingtypingr   torchtorch.utils.datautilsdataPILr   readersr   	getLoggerrH   r'   r   Datasetr	   IterableDatasetrO   rq   rM   r   r   <module>r      s    
       "


H
% B94<< B9JM94// M9`%!EKK$$,, %!r   