ó
    Äö‘j  ã                   ó$  • 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        X€l        X�l        [        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              ÚŸC:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\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Ø$(§O§O�c—h‘h”j¼¿ºÀC»�Ùñ	 0ô  °×1BÑ1BÐ0CÐCWÐXÓYÐYà×× t§§Ø—+‘+˜d×1Ñ1Ó2ˆCØ�>‰>Ñ%Ø—.‘. Ó%ˆCà‰>Ø‰FØ×"Ñ"Ñ.Ø×*Ñ*¨6Ó2ˆFà×#Ñ#Ñ+Ø�;ÐàÐ) Ñ)Ð)øô' œWÐ%ó 7Ü—‘Ð"8¸¸¸sÀ1À#Ð FÔGØ ™¤c¨$¯+©+Ó&6Ñ6—ûð7ús   š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   € Ø�{‰{×#Ñ# E°XÓ>Ð>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)ÚIterableImageDatasetéZ   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        Xàl        Xðl        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   € ð( Ñ!Ð!Ð!Ü�fœc×"Ñ"Ü'ØðàØØ#Ø'Ø%Ø'ØØØ!Ø-Ø#Ø%Ø#ñð ñˆD�Kð$ !Œ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   é € ØŸ;œ;‰KˆCØ�~‰~Ñ)Ø—n‘n SÓ)�Ø×$Ñ$Ñ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—;‘; ×,Ñ,Ø�K‰K×!Ñ! %Õ(ð -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Ø�K‰K×&Ñ&°;Ð&Ò?ð 2r   c                 ó   •  S5       e)Nz8Filename lookup by index not supported, use filenames().rM   r;   s       r   r:   ÚIterableImageDataset.filename£   s   € ØPÐPÓPˆur   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   † ð
 ØØØØØØØØØ ØØØØ!Øô#*1òXòò)ð *.ñ@à! #™õ@ô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   € Ü˜!œd¤E˜]×+Ñ+´°A³¸!³ÐeÐ=eÓeÐ;Ø!" 1¡ˆ�‰ÔØ˜a™DˆÔØ˜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   € Ø—N‘NÑ*ˆqÐA°·±¸qÓ0AÐ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Ø�M‰M˜$Ÿ/™/¨$×*;Ñ*;¸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9�4—<‘<ô B9ôJM9˜4×/Ñ/ô M9ô`%!�E—K‘K×$Ñ$×,Ñ,õ %!r   