
    kh                     $   d Z ddlZddlZddlmZ ddlZddlmc mZ ddl	m
Z
 ddlmZ  ej                  e      ZdZ G d d	ej"                        Z G d
 dej&                        Z G d dej                  j                  j"                        Zy)zh Quick n Simple Image Folder, Tarfile based DataSet

Hacked together by / Copyright 2019, Ross Wightman
    N)Optional)Image   )create_reader2   c                   >    e Zd Z	 	 	 	 	 	 	 ddZd Zd ZddZddZy)	ImageDatasetNc	                     |t        |t              rt        |xs df|||d|	}|| _        || _        || _        || _        || _        d| _        y )N )rootsplit	class_mapr   )	
isinstancestrr   reader
load_bytesinput_img_mode	transformtarget_transform_consecutive_errors)
selfr   r   r   r   r   r   r   r   kwargss
             M/var/www/teggl/fontify/venv/lib/python3.12/site-packages/timm/data/dataset.py__init__zImageDataset.__init__   sj     >Z4""#	
 F $," 0#$     c                    | j                   |   \  }}	 | j                  r|j                         nt        j                  |      }d| _
        | j                  r'| j                  s|j                  | j                        }| j                   | j!                  |      }|d}||fS | j"                  | j#                  |      }||fS # t
        $ r}t        j                  d| d| j                   j                  |       dt        |              | xj                  dz  c_
        | j                  t        k  r/| j                  |dz   t        | j                         z        cY d }~S |d }~ww xY w)NzSkipped sample (index z, file z). r   r   )r   r   readr   open	Exception_loggerwarningfilenamer   r   _ERROR_RETRY__getitem__lenr   convertr   r   )r   indeximgtargetes        r   r%   zImageDataset.__getitem__2   sJ   kk%(V	 $#((*UZZ_C $% t++d112C>>%..%C>F F{ "".**62FF{'  	OO4UG74;;CWCWX]C^B__bcfghcibjkl$$)$'',6''c$++6F(FGG	s$   1C 	E,BE'E,%E''E,c                 ,    t        | j                        S N)r&   r   r   s    r   __len__zImageDataset.__len__L   s    4;;r   c                 <    | j                   j                  |||      S r-   )r   r#   r   r(   basenameabsolutes       r   r#   zImageDataset.filenameO   s    {{##E8X>>r   c                 :    | j                   j                  ||      S r-   r   	filenamesr   r2   r3   s      r   r6   zImageDataset.filenamesR       {{$$Xx88r   )NtrainNFRGBNNFF)__name__
__module____qualname__r   r%   r/   r#   r6    r   r   r	   r	      s2    
  !%64 ?9r   r	   c                   j    e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d
dZd Zd Zd Z	 ddee   fdZ	ddZ
dd	Zy)IterableImageDatasetNc                     |J t        |t              r t        |f||||||||	|
||||d|| _        n|| _        || _        || _        d| _        y )N)r   r   r   is_training
batch_sizenum_samplesseedrepeatsdownloadr   	input_key
target_key	max_stepsr   )r   r   r   r   r   r   r   )r   r   r   r   r   rC   rD   rE   rF   rG   rH   r   rI   rJ   r   r   rK   r   s                     r   r   zIterableImageDataset.__init__X   s    ( !!!fc"'#'%'!-#%# DK$ !DK" 0#$ r   c              #      K   | j                   D ]E  \  }}| j                  | j                  |      }| j                  | j                  |      }||f G y wr-   )r   r   r   )r   r)   r*   s      r   __iter__zIterableImageDataset.__iter__   s[     ;; 	KC~~)nnS)$$0..v6v+	s   AAc                 Z    t        | j                  d      rt        | j                        S y)Nr/   r   )hasattrr   r&   r.   s    r   r/   zIterableImageDataset.__len__   s"    4;;	*t{{##r   c                 h    t        | j                  d      r| j                  j                  |       y y )N	set_epoch)rO   r   rQ   )r   counts     r   rQ   zIterableImageDataset.set_epoch   s'    4;;,KK!!%( -r   num_workersc                 j    t        | j                  d      r| j                  j                  |       y y )Nset_loader_cfg)rS   )rO   r   rU   )r   rS   s     r   rU   z#IterableImageDataset.set_loader_cfg   s-    
 4;; 01KK&&;&? 2r   c                     J d       )Nz8Filename lookup by index not supported, use filenames().r?   r1   s       r   r#   zIterableImageDataset.filename   s    PPPur   c                 :    | j                   j                  ||      S r-   r5   r7   s      r   r6   zIterableImageDataset.filenames   r8   r   )Nr9   NFr   N*   r   Fr:   NNNNNr-   r;   )r<   r=   r>   r   rM   r/   rQ   r   intrU   r#   r6   r?   r   r   rA   rA   V   si    
  !#+%Z) *.@!#@Q9r   rA   c                   d    e Zd ZdZd
dZd Zed        Zej                  d        Zd Z	d Z
d Zy	)AugMixDatasetzCDataset wrapper to perform AugMix or other clean/augmentation mixesc                     d | _         d | _        || _        | j                  j                  %| j	                  | j                  j                         || _        y r-   )augmentation	normalizedatasetr   _set_transforms
num_splits)r   r_   ra   s      r   r   zAugMixDataset.__init__   sG     <<!!-  !7!78$r   c                     t        |t        t        f      rt        |      dk(  sJ d       |d   | j                  _        |d   | _        |d   | _        y )N   z&Expecting a tuple/list of 3 transformsr   r      )r   listtupler&   r_   r   r]   r^   r   xs     r   r`   zAugMixDataset._set_transforms   sM    !dE]+A!e=ee;!"1aD1r   c                 .    | j                   j                  S r-   )r_   r   r.   s    r   r   zAugMixDataset.transform   s    ||%%%r   c                 &    | j                  |       y r-   )r`   rg   s     r   r   zAugMixDataset.transform   s    Qr   c                 @    | j                   |S | j                  |      S r-   )r^   rg   s     r   
_normalizezAugMixDataset._normalize   s    NN*qAq0AAr   c                     | j                   |   \  }}| j                  |      g}t        | j                  dz
        D ]1  }|j	                  | j                  | j                  |                   3 t        |      |fS )Nr   )r_   rl   rangera   appendr]   rf   )r   irh   yx_list_s         r   r%   zAugMixDataset.__getitem__   sr    ||A1//!$%t*+ 	AAMM$//$*;*;A*>?@	AV}ar   c                 ,    t        | j                        S r-   )r&   r_   r.   s    r   r/   zAugMixDataset.__len__   s    4<<  r   N)rd   )r<   r=   r>   __doc__r   r`   propertyr   setterrl   r%   r/   r?   r   r   r[   r[      sM    M% & &    B !r   r[   )ru   iologgingtypingr   torchtorch.utils.datautilsdataPILr   readersr   	getLoggerr<   r!   r$   Datasetr	   IterableDatasetrA   r[   r?   r   r   <module>r      s    
       "
'

H
% >94<< >9BN94// N9b%!EKK$$,, %!r   