
    ^j                     $   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_reader   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|
}|| _        || _        || _        || _        || _        |	| _        t        | _
        y )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              \/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/data/dataset.py__init__zImageDataset.__init__   su     >Z4""#$7 F $," 0#6 (    c                    t        | j                        D ]G  }	 | j                  |   ^}}}| j                  r|j	                         nt        j                  |      } n t        d| j                   d      | j                  r'| j                  s|j                  | j                        }| j                  | j                  |      }|d}n| j                   | j!                  |      }| j"                  ||fS ||g|S # t        t        f$ rA}t        j                  d| d|        |dz   t        | j                        z  }Y d }~7d }~ww xY w)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__zImageDataset.__getitem__5   sC   T../ 		ZG7)-U);&Vh$(OOchhjC			Z 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                 ,    t        | j                        S N)r'   r   r   s    r   __len__zImageDataset.__len__P   s    4;;r   c                 <    | j                   j                  |||      S r2   )r   filenamer   r*   basenameabsolutes       r   r6   zImageDataset.filenameS   s    {{##E8X>>r   c                 :    | j                   j                  ||      S r2   r   	filenamesr   r8   r9   s      r   r<   zImageDataset.filenamesV       {{$$Xx88r   )NtrainNFRGBNNNFF)__name__
__module____qualname__r   r0   r4   r6   r<    r   r   r	   r	      s5    
  ! $)<*6 ?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|| _        || _        || _        y )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   rI   rJ   rK   rL   rM   rN   r   rO   rP   r   r   rQ   r   s                     r   r   zIterableImageDataset.__init__\   sw    ( !!!fc"'#'%'!-#%# DK$ !DK" 0r   c              #      K   | j                   D ]E  \  }}| j                  | j                  |      }| j                  | j                  |      }||f G y wr2   )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)Nr4   r   )hasattrr   r'   r3   s    r   r4   zIterableImageDataset.__len__   s"    4;;	*t{{##r   c                 h    t        | j                  d      r| j                  j                  |       y y )N	set_epoch)rU   r   rW   )r   counts     r   rW   zIterableImageDataset.set_epoch   s'    4;;,KK!!%( -r   num_workersc                 j    t        | j                  d      r| j                  j                  |       y y )Nset_loader_cfg)rY   )rU   r   r[   )r   rY   s     r   r[   z#IterableImageDataset.set_loader_cfg   s-    
 4;; 01KK&&;&? 2r   c                     J d       )Nz8Filename lookup by index not supported, use filenames().rE   r7   s       r   r6   zIterableImageDataset.filename   s    PPPur   c                 :    | j                   j                  ||      S r2   r;   r=   s      r   r<   zIterableImageDataset.filenames   r>   r   )Nr?   NFr   N*   r   Fr@   NNNNNr2   rA   )rB   rC   rD   r   rS   r4   rW   r   intr[   r6   r<   rE   r   r   rG   rG   Z   si    
  !#*1X) *.@!#@Q9r   rG   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 r2   )augmentation	normalizedatasetr   _set_transforms
num_splits)r   re   rg   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'   re   r   rc   rd   r   xs     r   rf   zAugMixDataset._set_transforms   sM    !dE]+A!e=ee;!"1aD1r   c                 .    | j                   j                  S r2   )re   r   r3   s    r   r   zAugMixDataset.transform   s    ||%%%r   c                 &    | j                  |       y r2   )rf   rm   s     r   r   zAugMixDataset.transform   s    Qr   c                 @    | j                   |S | j                  |      S r2   )rd   rm   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   )re   rr   r    rg   appendrc   rl   )r   irn   yx_list_s         r   r0   zAugMixDataset.__getitem__   sr    ||A1//!$%t*+ 	AAMM$//$*;*;A*>?@	AV}ar   c                 ,    t        | j                        S r2   )r'   re   r3   s    r   r4   zAugMixDataset.__len__   s    4<<  r   N)rj   )rB   rC   rD   __doc__r   rf   propertyr   setterrr   r0   r4   rE   r   r   ra   ra      sM    M% & &    B !r   ra   )rz   iologgingtypingr   torchtorch.utils.datautilsdataPILr   readersr   	getLoggerrB   r%   r   Datasetr	   IterableDatasetrG   ra   rE   r   r   <module>r      s    
       "
'

H
% B94<< B9JM94// M9`%!EKK$$,, %!r   