
    Ngs                        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dS )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dS )ImageDatasetNtrainFRGBc	                     |t          |t                    rt          |pdf|||d|	}|| _        || _        || _        || _        || _        d| _        d S )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/html/ai-engine/env/lib/python3.11/site-packages/timm/data/dataset.py__init__zImageDataset.__init__   s     >Z44>""#	 
  F $," 0#$       c                    | j         |         \  }}	 | j        r|                                nt          j        |          }n# t
          $ r}t                              d| d| j                             |           dt          |                      | xj
        dz  c_
        | j
        t          k     r2|                     |dz   t          | j                   z            cY d }~S |d }~ww xY wd| _
        | j        r!| j        s|                    | j                  }| j        |                     |          }|d}n| j        |                     |          }||fS )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   sx   k%(V	 $D#((***UZ__CC 	 	 	OOkUkk4;CWCWX]C^C^kkcfghcicikklll$$)$$',66''c$+6F6F(FGGGGGGGG	 $%  	3t 	3++d122C>%..%%C>FF".**622FF{s$   /A 
C-BC( C-&C((C-c                 *    t          | j                  S N)r(   r   r   s    r   __len__zImageDataset.__len__L   s    4;r   c                 :    | j                             |||          S r/   )r   r%   r   r*   basenameabsolutes       r   r%   zImageDataset.filenameO   s    {##E8X>>>r   c                 8    | j                             ||          S r/   r   	filenamesr   r4   r5   s      r   r8   zImageDataset.filenamesR       {$$Xx888r   )Nr
   NFr   NNFF)__name__
__module____qualname__r   r'   r1   r%   r8    r   r   r	   r	      s        
  !% % % %6  4     ? ? ? ?9 9 9 9 9 9r   r	   c                   r    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dS )IterableImageDatasetNr
   Fr   *   r   r   c                     |J t          |t                    r#t          |||||||||	|
||||          | _        n|| _        || _        || _        d| _        d S )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   rD   rE   rF   rG   rH   rI   r   rJ   rK   r   r   rL   s                    r   r   zIterableImageDataset.__init__X   s    & !!!fc"" 	!'#'%'!-#%#  DKK" !DK" 0#$   r   c              #      K   | j         D ]C\  }}| j        |                     |          }| j        |                     |          }||fV  Dd S r/   )r   r   r   )r   r+   r,   s      r   __iter__zIterableImageDataset.__iter__   sm      ; 	 	KC~)nnS))$0..v66v+	 	r   c                 X    t          | j        d          rt          | j                  S dS )Nr1   r   )hasattrr   r(   r0   s    r   r1   zIterableImageDataset.__len__   s+    4;	** 	t{###1r   c                 h    t          | j        d          r| j                            |           d S d S )N	set_epoch)rP   r   rR   )r   counts     r   rR   zIterableImageDataset.set_epoch   s<    4;,, 	)K!!%(((((	) 	)r   num_workersc                 j    t          | j        d          r| j                            |           d S d S )Nset_loader_cfg)rT   )rP   r   rV   )r   rT   s     r   rV   z#IterableImageDataset.set_loader_cfg   sE    
 4; 011 	@K&&;&?????	@ 	@r   c                     J d            )NFz8Filename lookup by index not supported, use filenames().r?   r3   s       r   r%   zIterableImageDataset.filename   s    PPPPPr   c                 8    | j                             ||          S r/   r7   r9   s      r   r8   zIterableImageDataset.filenames   r:   r   )Nr
   NFr   NrB   r   Fr   NNNNNr/   r;   )r<   r=   r>   r   rN   r1   rR   r   intrV   r%   r8   r?   r   r   rA   rA   V   s        
  !#)% )% )% )%V    ) ) ) *.@ @!#@ @ @ @Q Q Q Q9 9 9 9 9 9r   rA   c                   h    e Zd ZdZddZd Zed             Zej        d             Zd Z	d Z
d	 Zd
S )AugMixDatasetzCDataset wrapper to perform AugMix or other clean/augmentation mixes   c                     d | _         d | _        || _        | j        j        |                     | j        j                   || _        d S r/   )augmentation	normalizedatasetr   _set_transforms
num_splits)r   r`   rb   s      r   r   zAugMixDataset.__init__   sG     <!-  !7888$r   c                     t          |t          t          f          rt          |          dk    s
J d            |d         | j        _        |d         | _        |d         | _        d S )N   z&Expecting a tuple/list of 3 transformsr   r   r\   )r   listtupler(   r`   r   r^   r_   r   xs     r   ra   zAugMixDataset._set_transforms   sX    !dE]++eA!=e!"1aD1r   c                     | j         j        S r/   )r`   r   r0   s    r   r   zAugMixDataset.transform   s    |%%r   c                 0    |                      |           d S r/   )ra   rg   s     r   r   zAugMixDataset.transform   s    Qr   c                 >    | j         |n|                      |          S r/   )r_   rg   s     r   
_normalizezAugMixDataset._normalize   s    N*qqq0A0AAr   c                    | j         |         \  }}|                     |          g}t          | j        dz
            D ]=}|                    |                     |                     |                               >t          |          |fS )Nr   )r`   rl   rangerb   appendr^   rf   )r   irh   yx_list_s         r   r'   zAugMixDataset.__getitem__   s    |A1//!$$%t*++ 	A 	AAMM$//$*;*;A*>*>??@@@@V}}ar   c                 *    t          | j                  S r/   )r(   r`   r0   s    r   r1   zAugMixDataset.__len__   s    4<   r   N)r\   )r<   r=   r>   __doc__r   ra   propertyr   setterrl   r'   r1   r?   r   r   r[   r[      s        MM% % % %   & & X&      B B 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      s5    
			                        " " " " " "
'
H
%
% >9 >9 >9 >9 >94< >9 >9 >9BL9 L9 L9 L9 L94/ L9 L9 L9^%! %! %! %! %!EK$, %! %! %! %! %!r   