Ë
    éÓ^j‹  ã                   óÆ  — d Z ddlZddlZddlZddlmZ ddlmZmZm	Z	m
Z
 ddlmZmZmZmZmZ ddlZddlZ eej(                  j+                  d«      dd D � cg c]
  }  e| «      ‘Œ c} «      ZdZd	Z ed
e¬«      Z eed«      rCej:                  j<                  ej:                  j>                  fZ ej:                  j>                  Z!n$ej<                  ej>                  fZ ej>                  Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.dnd„Z/d„ Z0d„ Z1d„ Z2d„ Z3d„ Z4d „ Z5d!„ Z6d"„ Z7d#„ Z8d$„ Z9d%„ Z:d&„ Z;dod(„Z<d)„ Z=d*„ Z>d+„ Z?d,„ Z@d-„ ZAd.„ ZBd/„ ZCd0„ ZDd1„ ZEi d2d“d3d“d4d“d5e9“d6e@“d7eA“d8eB“d9eC“d:eD“d;eE“d<e:“d=e;“d>e:“d?e;“d@e:“dAe;“dBe:“e;e=e=e>e>e?e? ee<dCd'¬D«       ee<dEdF¬D«      e<dGœ
¥ZFi d2e+“d3e-“d4e,“d5e*“d6e0“d7e0“d8e0“d9e.“d:e.“d;e/“d<e2“d=e2“d>e1“d?e1“d@e3“dAe3“dBe4“e4e$e%e(e)e&e'e7e5e6dGœ
¥ZG G dH„ dI«      ZHdJ„ ZIdK„ ZJdL„ ZKdM„ ZLdN„ ZMdpdO„ZN G dP„ dQ«      ZOdqdRePdSe	e   fdT„ZQg dU¢ZRg dV¢ZSg dW¢ZTdXdXdXdYdddZdZdZdZdZdZdZdZd[œZUdYdddZdZd\d\d\d]d]d]d]d]d]d]d^œZVd_efd`„ZWdrdaePfdb„ZX	 	 	 	 dsdce
eeYf   ddeYdSe	e   d_e	e
eef      fde„ZZ G df„ dg«      Z[	 	 dtdRePdSe	e   d_e	e
ePeef      fdh„Z\g di¢Z]	 	 	 dudce
eeYf   dSe	e   d_e	e
ePeef      fdj„Z^ G dk„ dl«      Z_dqdRePdSe	e   fdm„Z`yc c} w )va   AutoAugment, RandAugment, AugMix, and 3-Augment for PyTorch

This code implements the searched ImageNet policies with various tweaks and improvements and
does not include any of the search code.

AA and RA Implementation adapted from:
    https://github.com/tensorflow/tpu/blob/master/models/official/efficientnet/autoaugment.py

AugMix adapted from:
    https://github.com/google-research/augmix

3-Augment based on: https://github.com/facebookresearch/deit/blob/main/README_revenge.md

Papers:
    AutoAugment: Learning Augmentation Policies from Data - https://arxiv.org/abs/1805.09501
    Learning Data Augmentation Strategies for Object Detection - https://arxiv.org/abs/1906.11172
    RandAugment: Practical automated data augmentation... - https://arxiv.org/abs/1909.13719
    AugMix: A Simple Data Processing Method to Improve Robustness and Uncertainty - https://arxiv.org/abs/1912.02781
    3-Augment: DeiT III: Revenge of the ViT - https://arxiv.org/abs/2204.07118

Hacked together by / Copyright 2019, Ross Wightman
é    N)Úpartial)ÚDictÚListÚOptionalÚUnion)ÚImageÚImageOpsÚImageEnhanceÚ
ImageChopsÚImageFilterú.é   )é€   r   r   g      $@éú   )Útranslate_constÚimg_meanÚ
Resamplingc                 óˆ   — | j                  dt        «      }t        |t        t        f«      rt        j                  |«      S |S )NÚresample)ÚpopÚ_DEFAULT_INTERPOLATIONÚ
isinstanceÚlistÚtupleÚrandomÚchoice)ÚkwargsÚinterpolations     úa/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/data/auto_augment.pyÚ_interpolationr    5   s6   € Ø—J‘J˜zÔ+AÓB€MÜ�-¤$¬ Ô/Ü�}‰}˜]Ó+Ð+ØÐó    c                 ó\   — d| v rt         dk  r| j                  d«       t        | «      | d<   y )NÚ	fillcolor©é   r   r   )Ú_PIL_VERr   r    )r   s    r   Ú_check_args_tfr'   <   s,   € Ø�fÑ¤¨FÒ!2Ø�
‰
�;ÔÜ'¨Ó/€Fˆ:Òr!   c           
      ó~   — t        |«        | j                  | j                  t        j                  d|ddddffi |¤ŽS ©Né   r   ©r'   Ú	transformÚsizer   ÚAFFINE©ÚimgÚfactorr   s      r   Úshear_xr2   B   s9   € Ü�6ÔØˆ3�=‰=˜Ÿ™¤5§<¡<°!°V¸QÀÀ1ÀaÐ1HÑSÈFÑSÐSr!   c           
      ó~   — t        |«        | j                  | j                  t        j                  ddd|ddffi |¤ŽS r)   r+   r/   s      r   Úshear_yr4   G   s9   € Ü�6ÔØˆ3�=‰=˜Ÿ™¤5§<¡<°!°Q¸¸6À1ÀaÐ1HÑSÈFÑSÐSr!   c           
      ó¢   — || j                   d   z  }t        |«        | j                  | j                   t        j                  dd|dddffi |¤ŽS )Nr   r*   ©r-   r'   r,   r   r.   ©r0   Úpctr   Úpixelss       r   Útranslate_x_relr:   L   sK   € Ø�3—8‘8˜A‘;Ñ€FÜ�6ÔØˆ3�=‰=˜Ÿ™¤5§<¡<°!°Q¸ÀÀ1ÀaÐ1HÑSÈFÑSÐSr!   c           
      ó¢   — || j                   d   z  }t        |«        | j                  | j                   t        j                  ddddd|ffi |¤ŽS r)   r6   r7   s       r   Útranslate_y_relr<   R   sK   € Ø�3—8‘8˜A‘;Ñ€FÜ�6ÔØˆ3�=‰=˜Ÿ™¤5§<¡<°!°Q¸¸1¸aÀÐ1HÑSÈFÑSÐSr!   c           
      ó~   — t        |«        | j                  | j                  t        j                  dd|dddffi |¤ŽS r)   r+   ©r0   r9   r   s      r   Útranslate_x_absr?   X   s9   € Ü�6ÔØˆ3�=‰=˜Ÿ™¤5§<¡<°!°Q¸ÀÀ1ÀaÐ1HÑSÈFÑSÐSr!   c           
      ó~   — t        |«        | j                  | j                  t        j                  ddddd|ffi |¤ŽS r)   r+   r>   s      r   Útranslate_y_absrA   ]   s9   € Ü�6ÔØˆ3�=‰=˜Ÿ™¤5§<¡<°!°Q¸¸1¸aÀÐ1HÑSÈFÑSÐSr!   c           	      óÚ  — t        |«       t        dk\  r | j                  |fi |¤ŽS t        dk\  �r%| j                  \  }}d}|dz  |dz  f}t	        j
                  |«       }t        t	        j                  |«      d«      t        t	        j                  |«      d«      dt        t	        j                  |«       d«      t        t	        j                  |«      d«      dg}d„ }	 |	|d    |d   z
  |d	    |d	   z
  |«      \  |d
<   |d<   |d
xx   |d   z  cc<   |dxx   |d	   z  cc<    | j                  | j                  t        j                  |fi |¤ŽS | j                  ||d   ¬«      S )N)r%   r   r$   )r   r   ç       @é   ç        c                 óL   — |\  }}}}}}|| z  ||z  z   |z   || z  ||z  z   |z   fS ©N© )	ÚxÚyÚmatrixÚaÚbÚcÚdÚeÚfs	            r   r,   zrotate.<locals>.transformt   sA   € Ø!'ÑˆQ��1�a˜˜AØ�q‘5˜1˜q™5‘= 1Ñ$ a¨!¡e¨a°!©e¡m°aÑ&7Ð7Ð7r!   r   r*   r   r%   r   )r   )r'   r&   Úrotater-   ÚmathÚradiansÚroundÚcosÚsinr,   r   r.   )
r0   Údegreesr   ÚwÚhÚ
post_transÚrotn_centerÚanglerK   r,   s
             r   rR   rR   b   s`  € Ü�6ÔÜ�6ÒØˆs�z‰z˜'Ñ, VÑ,Ð,Ü�6ÓØ�x‰x‰ˆˆ1Øˆ
Ø˜3‘w  C¡Ð(ˆÜ—‘˜gÓ&Ð&ˆä”$—(‘(˜5“/ 2Ó&Ü”$—(‘(˜5“/ 2Ó&ØÜ”4—8‘8˜E“?Ð" BÓ'Ü”$—(‘(˜5“/ 2Ó&Øð
ˆò	8ñ  )Ø˜‰^ˆO˜j¨™mÑ+¨k¸!©n¨_¸zÈ!¹}Ñ-LÈfó 
Ñˆˆq‰	�6˜!‘9ð 	ˆq‹	�[ ‘^Ñ#‹	Øˆq‹	�[ ‘^Ñ#‹	Øˆs�}‰}˜SŸX™X¤u§|¡|°VÑF¸vÑFÐFØ�:‰:�g¨¨zÑ(:ˆ:Ó;Ð;r!   c                 ó,   — t        j                  | «      S rG   )r	   Úautocontrast©r0   Ú__s     r   Úauto_contrastrb   �   s   € Ü× Ñ  Ó%Ð%r!   c                 ó,   — t        j                  | «      S rG   )r	   Úinvertr`   s     r   rd   rd   …   s   € Ü�?‰?˜3ÓÐr!   c                 ó,   — t        j                  | «      S rG   )r	   Úequalizer`   s     r   rf   rf   ‰   s   € Ü×Ñ˜SÓ!Ð!r!   c                 ó.   — t        j                  | |«      S rG   )r	   Úsolarize)r0   Úthreshra   s      r   rh   rh   �   s   € Ü×Ñ˜S &Ó)Ð)r!   c                 ó  — g }t        d«      D ]7  }||k  r|j                  t        d||z   «      «       Œ'|j                  |«       Œ9 | j                  dv r6| j                  dk(  rt	        |«      dk(  r||z   |z   }| j                  |«      S | S )Né   éÿ   )ÚLÚRGBrn   )ÚrangeÚappendÚminÚmodeÚlenÚpoint)r0   Úaddri   ra   ÚlutÚis         r   Úsolarize_addrx   ‘   s‡   € Ø
€CÜ�3‹Zò ˆØˆvŠ:Ø�J‰J”s˜3  C¡Ó(Õ)à�J‰J�q�Mð	ð ‡x�x�<ÑØ�8‰8�uÒ¤ S£¨S¢Ø˜‘)˜c‘/ˆCØ�y‰y˜‹~Ðà€Jr!   c                 ó<   — |dk\  r| S t        j                  | |«      S )Né   )r	   Ú	posterize)r0   Úbits_to_keepra   s      r   r{   r{   ¡   s"   € Ø�qÒØˆ
Ü×Ñ˜c <Ó0Ð0r!   c                 óJ   — t        j                  | «      j                  |«      S rG   )r
   ÚContrastÚenhance©r0   r1   ra   s      r   Úcontrastr�   §   s   € Ü× Ñ  Ó%×-Ñ-¨fÓ5Ð5r!   c                 óJ   — t        j                  | «      j                  |«      S rG   )r
   ÚColorr   r€   s      r   Úcolorr„   «   s   € Ü×Ñ˜cÓ"×*Ñ*¨6Ó2Ð2r!   c                 óJ   — t        j                  | «      j                  |«      S rG   )r
   Ú
Brightnessr   r€   s      r   Ú
brightnessr‡   ¯   s   € Ü×"Ñ" 3Ó'×/Ñ/°Ó7Ð7r!   c                 óJ   — t        j                  | «      j                  |«      S rG   )r
   Ú	Sharpnessr   r€   s      r   Ú	sharpnessrŠ   ³   s   € Ü×!Ñ! #Ó&×.Ñ.¨vÓ6Ð6r!   c                 óP   — | j                  t        j                  |¬«      «      } | S )N©Úradius)Úfilterr   ÚGaussianBlurr€   s      r   Úgaussian_blurr�   ·   s    € Ø
�*‰*”[×-Ñ-°VÔ<Ó
=€CØ€Jr!   c           	      ó†   — d}d}| j                  t        j                  t        j                  |||z  «      ¬«      «      } | S )Nçš™™™™™¹?rC   rŒ   )rŽ   r   r�   r   Úuniform)r0   r1   ra   Ú
radius_minÚ
radius_maxs        r   Úgaussian_blur_randr–   ¼   s<   € Ø€JØ€JØ
�*‰*”[×-Ñ-´V·^±^ÀJÐPZÐ]cÑPcÓ5dÔeÓ
f€CØ€Jr!   c                 ó|   — t        dt        dd|z
  «      «      }t        j                  | «      j	                  |«      S )Nç      ð?rE   )rq   Úmaxr
   rƒ   r   )r0   r1   Ú_s      r   Ú
desaturater›   Ã   s5   € Ü�”S˜˜R &™[Ó)Ó*€Fä×Ñ˜cÓ"×*Ñ*¨6Ó2Ð2r!   c                 ó:   — t        j                   «       dkD  r|  S | S )zWith 50% prob, negate the valueç      à?)r   )Úvs    r   Ú_randomly_negaterŸ   É   s   € ä—‘“ 3Ò&ˆAˆ2Ð-¨AÐ-r!   c                 ó6   — | t         z  dz  } t        | «      } | fS )Ng      >@©Ú_LEVEL_DENOMrŸ   ©ÚlevelÚ_hparamss     r   Ú_rotate_level_to_argr¦   Î   ó"   € à”\Ñ! SÑ(€EÜ˜UÓ#€EØˆ6€Mr!   c                 ó"   — | t         z  dz  dz   fS )NgÍÌÌÌÌÌü?r’   )r¢   r£   s     r   Ú_enhance_level_to_argr©   Õ   s   € à”LÑ  CÑ'¨#Ñ-Ð.Ð.r!   c                 óP   — | t         z  dz  } t        ddt        | «      z   «      } | fS )NgÍÌÌÌÌÌì?r’   r˜   )r¢   r™   rŸ   r£   s     r   Ú _enhance_increasing_level_to_argr«   Ú   s1   € ð ”\Ñ! RÑ'€EÜ��SÔ+¨EÓ2Ñ2Ó3€EØˆ6€Mr!   r˜   c                 ó`   — | t         z  } |||z
  | z  z   } |rt        |t        || «      «      } | fS rG   )r¢   r™   rq   )r¤   r¥   Úmin_valÚmax_valÚclamps        r   Ú_minmax_level_to_argr°   â   s=   € Ø”\Ñ!€EØ�w Ñ(¨EÑ1Ñ1€EÙÜ�GœS ¨%Ó0Ó1ˆØˆ6€Mr!   c                 ó6   — | t         z  dz  } t        | «      } | fS )Ng333333Ó?r¡   r£   s     r   Ú_shear_level_to_argr²   ê   r§   r!   c                 óR   — |d   }| t         z  t        |«      z  } t        | «      } | fS )Nr   )r¢   ÚfloatrŸ   )r¤   Úhparamsr   s      r   Ú_translate_abs_level_to_argr¶   ñ   s2   € ØÐ/Ñ0€OØ”\Ñ!¤U¨?Ó%;Ñ;€EÜ˜UÓ#€EØˆ6€Mr!   c                 óZ   — |j                  dd«      }| t        z  |z  } t        | «      } | fS )NÚtranslate_pctgÍÌÌÌÌÌÜ?)Úgetr¢   rŸ   )r¤   rµ   r¸   s      r   Ú_translate_rel_level_to_argrº   ø   s2   € à—K‘K °Ó6€MØ”\Ñ! ]Ñ2€EÜ˜UÓ#€EØˆ6€Mr!   c                 ó.   — t        | t        z  dz  «      fS ©Né   ©Úintr¢   r£   s     r   Ú_posterize_level_to_argrÀ      s   € ô �œÑ$¨Ñ)Ó*Ð+Ð+r!   c                 ó(   — dt        | |«      d   z
  fS )Nr½   r   )rÀ   )r¤   rµ   s     r   Ú"_posterize_increasing_level_to_argrÂ     s   € ð Ô& u¨gÓ6°qÑ9Ñ9Ð:Ð:r!   c                 ó4   — t        | t        z  dz  «      dz   fS r¼   r¾   r£   s     r   Ú _posterize_original_level_to_argrÄ     s!   € ô �œÑ$¨Ñ)Ó*¨QÑ.Ð/Ð/r!   c                 óB   — t        dt        | t        z  dz  «      «      fS )Nrk   ©rq   r¿   r¢   r£   s     r   Ú_solarize_level_to_argrÇ     s#   € ô ˆs”C˜¤Ñ-°Ñ4Ó5Ó6Ð7Ð7r!   c                 ó(   — dt        | |«      d   z
  fS )Nrk   r   )rÇ   r£   s     r   Ú!_solarize_increasing_level_to_argrÉ     s   € ð Ô'¨¨xÓ8¸Ñ;Ñ;Ð<Ð<r!   c                 óB   — t        dt        | t        z  dz  «      «      fS )Nr   én   rÆ   r£   s     r   Ú_solarize_add_level_to_argrÌ   !  s!   € äˆs”C˜¤Ñ-°Ñ4Ó5Ó6Ð7Ð7r!   ÚAutoContrastÚEqualizeÚInvertÚRotateÚ	PosterizeÚPosterizeIncreasingÚPosterizeOriginalÚSolarizeÚSolarizeIncreasingÚSolarizeAddrƒ   ÚColorIncreasingr~   ÚContrastIncreasingr†   ÚBrightnessIncreasingr‰   r�   )r­   r®   r’   rC   )
ÚSharpnessIncreasingÚShearXÚShearYÚ
TranslateXÚ
TranslateYÚTranslateXRelÚTranslateYRelÚ
Desaturater�   ÚGaussianBlurRandc                   ó    — e Zd Zdd„Zd„ Zd„ Zy)Ú	AugmentOpNc                 ó€  — |xs t         }|| _        t        |   | _        t        |   | _        || _        || _        |j                  «       | _	        t        d|v r|d   nt        d|v r|d   nt        ¬«      | _        | j                  j                  dd«      | _        | j                  j                  dd «      | _        y )Nr   r   )r#   r   Úmagnitude_stdr   Úmagnitude_max)Ú_HPARAMS_DEFAULTÚnameÚ
NAME_TO_OPÚaug_fnÚLEVEL_TO_ARGÚlevel_fnÚprobÚ	magnitudeÚcopyrµ   ÚdictÚ_FILLÚ_RANDOM_INTERPOLATIONr   r¹   ræ   rç   )Úselfré   rî   rï   rµ   s        r   Ú__init__zAugmentOp.__init__g  sª   € ØÒ-Ô-ˆØˆŒ	Ü  Ñ&ˆŒÜ$ TÑ*ˆŒØˆŒ	Ø"ˆŒØ—|‘|“~ˆŒÜØ-7¸7Ñ-B�g˜jÒ)ÌØ1@ÀGÑ1K�W˜_Ò-ÔQfô
ˆŒð "Ÿ\™\×-Ñ-¨o¸qÓAˆÔØ!Ÿ\™\×-Ñ-¨o¸tÓDˆÕr!   c                 óP  — | j                   dk  r#t        j                  «       | j                   kD  r|S | j                  }| j                  dkD  r^| j                  t	        d«      k(  rt        j
                  d|«      }n/| j                  dkD  r t        j                  || j                  «      }| j                  xs t        }t        dt        ||«      «      }| j                  �| j                  || j                  «      n	t        «       } | j                  |g|¢­i | j                  ¤ŽS )Nr˜   r   ÚinfrE   )rî   r   rï   ræ   r´   r“   Úgaussrç   r¢   r™   rq   rí   rµ   r   rë   r   )rô   r0   rï   Úupper_boundÚ
level_argss        r   Ú__call__zAugmentOp.__call__|  sç   € Ø�9‰9�sŠ?œvŸ}™}›°·±Ò:ØˆJØ—N‘Nˆ	Ø×Ñ Ò!à×!Ñ!¤U¨5£\Ò1ä"ŸN™N¨1¨iÓ8‘	Ø×#Ñ# aÒ'Ü"ŸL™L¨°D×4FÑ4FÓG�	ð ×(Ñ(Ò8¬LˆÜ˜œC 	¨;Ó7Ó8ˆ	Ø?C¿}¹}Ð?X�T—]‘] 9¨d¯l©lÔ;Ô^cÓ^eˆ
Øˆt�{‰{˜3Ð; Ò;¨t¯{©{Ñ;Ð;r!   c                 óð   — | j                   j                  d| j                  › d| j                  › �z   }|d| j                  › d| j
                  › �z  }| j                  �|d| j                  › �z  }|dz  }|S )Nz(name=z, p=z, m=z, mstd=z, mmax=ú))Ú	__class__Ú__name__ré   rî   rï   ræ   rç   )rô   Úfss     r   Ú__repr__zAugmentOp.__repr__Ž  s€   € Ø�^‰^×$Ñ$¨°·	±	¨{¸$¸t¿y¹y¸kÐ'JÑJˆØ
��T—^‘^Ð$ G¨D×,>Ñ,>Ð+?Ð@Ñ@ˆØ×ÑÐ)Ø�G˜D×.Ñ.Ð/Ð0Ñ0ˆBØ
ˆc‰	ˆØˆ	r!   )r�   é
   N©rÿ   Ú
__module__Ú__qualname__rõ   rû   r  rH   r!   r   rä   rä   e  s   „ óEò*<ó$r!   rä   c                 ó  — ddgddgddgddgd	d
gddgddgddgddgddgddgddgddgddgddgddgd d!gd"d#gd$d%gd&d'gd(d)gd*d+gd,d-gdd.gd/d0gg}|D ��cg c]  }|D �cg c]  }t        |d1| iŽ‘Œ c}‘Œ }}}|S c c}w c c}}w )2N©rÎ   çš™™™™™é?r*   ©rÜ   r  r½   ©rƒ   çš™™™™™Ù?é	   ©rÎ   ç333333ã?é   ©rƒ   r  r*   ©rÐ   r  rz   ©rÔ   r  r  ©rÎ   r  é   ©rÔ   r  r   ©rÔ   r  r   ©rƒ   çš™™™™™É?r   ©rÎ   r  rz   ©rÎ   r  rz   ©rÖ   r  r  ©rÛ   r  r  ©rƒ   r  r*   ©rÎ   r˜   r   ©rÏ   r  r  ©rÐ   r  r   ©rÎ   r˜   r  ©rÜ   r  r  ©rƒ   r  r  ©rÎ   r  r   )rÑ   r  é   ©rÍ   r  r  ©rÔ   r  rz   ©rƒ   r  r  ©rÔ   r  r½   ©rÐ   r  r  ©rÐ   r˜   r  ©rà   r  r  ©rÛ   rE   r   ©rÔ   r  r½   ©rÜ   r  r   ©rƒ   r  r½   ©rƒ   r˜   r   ©rÐ   r  r   ©rÎ   r  r½   ©rÎ   rE   rz   ©rÎ   r˜   r½   ©rÍ   r  r   ©rÜ   r  r  ©rÖ   r  r  )rÑ   r  r   ©rÔ   r  r  ©rÎ   r  r*   ©rƒ   r  r%  ©rÐ   r  r%   rµ   ©rä   ©rµ   ÚpolicyÚsprL   Úpcs        r   Úauto_augment_policy_v0rB  —  s%  € ð 
Ð1Ð2Ø	Ð0Ð1Ø	Ð.Ð/Ø	Ð3Ð4Ø	Ð3Ð4Ø	Ð0Ð1Ø	Ð6Ð7Ø	Ð/Ð0Ø	Ð0Ð1Ø	Ð/Ð0Ø	Ð1Ð2Ø	Ð0Ð1Ø	Ð 8Ð9Ø	Ð0Ð1Ø	Ð1Ð2Ø	Ð6Ð7Ø	Ð1Ð2Ø	Ð.Ð/Ø	Ð.Ð/Ø	Ð3Ð4Ø	Ð7Ð8Ø	Ð4Ð5Ø	Ð 5Ð6Ø	Ð3Ð4Ø	Ð.Ð/ð3€Fð6 BH×	H¸2°2Ö
6¨aŒ9�aÐ) Ó)Ô
6Ð	H€BÑ	HØ€Iùò 7ùÓ	Hó   Á	A=ÁA8Á.A=Á8A=c                 ó  — ddgddgddgddgd	d
gddgddgddgddgddgddgddgddgddgddgddgd d!gd"d#gd$d%gd&d'gd(d)gd*d+gd,d-gdd.gd/d0gg}|D ��cg c]  }|D �cg c]  }t        |d1| iŽ‘Œ c}‘Œ }}}|S c c}w c c}}w )2Nr  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  ©rÒ   r  r%  r&  r'  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r7  r8  )rÒ   r  r   r9  r:  r;  r<  rµ   r=  r>  s        r   Úauto_augment_policy_v0rrF  ¸  s%  € ð 
Ð1Ð2Ø	Ð0Ð1Ø	Ð.Ð/Ø	Ð3Ð4Ø	Ð3Ð4Ø	Ð0Ð1Ø	Ð6Ð7Ø	Ð/Ð0Ø	Ð0Ð1Ø	Ð/Ð0Ø	Ð1Ð2Ø	Ð0Ð1Ø	(Ð*BÐCØ	Ð0Ð1Ø	Ð1Ð2Ø	Ð6Ð7Ø	Ð1Ð2Ø	Ð.Ð/Ø	Ð.Ð/Ø	Ð3Ð4Ø	Ð7Ð8Ø	Ð4Ð5Ø	(Ð*?Ð@Ø	Ð3Ð4Ø	Ð.Ð/ð3€Fð6 BH×	H¸2°2Ö
6¨aŒ9�aÐ) Ó)Ô
6Ð	H€BÑ	HØ€Iùò 7ùÓ	HrC  c                 ó  — ddgddgddgddgd	d
gddgddgddgddgddgddgddgddgddgddgddgddgd d!gd"d#gddgd	d
gddgddgddgddgg}|D ��cg c]  }|D �cg c]  }t        |d$| iŽ‘Œ c}‘Œ }}}|S c c}w c c}}w )%N)rÓ   r  rz   ©rÐ   r  r  ©rÔ   r  r%   ©rÍ   r  r%   r  r  )rÓ   r  r  )rÓ   r  r%  r  r)  ©rÎ   r  r½   ©rÐ   r  rz   ©rÔ   r  r  ©rÎ   r  r  )rÓ   r  r%   r  ©rÐ   r  r  r'  ©rÎ   r  rz   )rÓ   r  r%  ©rƒ   r  r   ©rÐ   r  r  ©rÎ   r  r   ©rÎ   rE   r  ©rÏ   r  r½   ©rÎ   r˜   rz   r0  ©r~   r˜   rz   ©rƒ   r˜   r   ©rƒ   r  rz   ©rÔ   r  r  ©r‰   r  r  ©rÏ   r  rz   ©rÛ   r  r%   r!  rµ   r=  r>  s        r   Úauto_augment_policy_originalr^  Ú  s%  € ð 
'Ð(:Ð;Ø	Ð7Ð8Ø	Ð3Ð4Ø	&Ð(EÐFØ	Ð3Ð4Ø	Ð1Ð2Ø	Ð3Ð4Ø	&Ð(<Ð=Ø	Ð1Ð2Ø	Ð<Ð=Ø	Ð.Ð/Ø	Ð1Ð2Ø	Ð3Ð4Ø	Ð1Ð2Ø	Ð0Ð1Ø	Ð.Ð/Ø	Ð0Ð1Ø	Ð 2Ð3Ø	Ð1Ð2Ø	Ð0Ð1Ø	Ð3Ð4Ø	Ð7Ð8Ø	Ð1Ð2Ø	Ð0Ð1Ø	Ð3Ð4ð3€Fð6 BH×	H¸2°2Ö
6¨aŒ9�aÐ) Ó)Ô
6Ð	H€BÑ	HØ€Iùò 7ùÓ	HrC  c                 ó  — ddgddgddgddgd	d
gddgddgddgddgddgddgddgddgddgddgddgddgd d!gd"d#gddgd	d
gddgddgddgddgg}|D ��cg c]  }|D �cg c]  }t        |d$| iŽ‘Œ c}‘Œ }}}|S c c}w c c}}w )%N)rÒ   r  rz   rH  rI  rJ  r  r  )rÒ   r  r  )rÒ   r  r%  r  r)  rK  rL  rM  rN  )rÒ   r  r%   r  rO  r'  rP  rE  rQ  rR  rS  rT  rU  rV  r0  rW  rX  rY  rZ  r[  r\  r]  r!  rµ   r=  r>  s        r   Úauto_augment_policy_originalrr`  û  s%  € ð 
)Ð*<Ð=Ø	Ð7Ð8Ø	Ð3Ð4Ø	(Ð*IÐJØ	Ð3Ð4Ø	Ð1Ð2Ø	Ð3Ð4Ø	(Ð*>Ð?Ø	Ð1Ð2Ø	Ð>Ð?Ø	Ð.Ð/Ø	Ð1Ð2Ø	Ð3Ð4Ø	Ð1Ð2Ø	Ð0Ð1Ø	Ð.Ð/Ø	Ð0Ð1Ø	Ð 2Ð3Ø	Ð1Ð2Ø	Ð0Ð1Ø	Ð3Ð4Ø	Ð7Ð8Ø	Ð1Ð2Ø	Ð0Ð1Ø	Ð3Ð4ð3€Fð6 BH×	H¸2°2Ö
6¨aŒ9�aÐ) Ó)Ô
6Ð	H€BÑ	HØ€Iùò 7ùÓ	HrC  c                 ó|   — dgdgdgg}|D ��cg c]  }|D �cg c]  }t        |d| iŽ‘Œ c}‘Œ }}}|S c c}w c c}}w )N)rÔ   r˜   r%   )rá   r˜   r  )râ   r˜   r  rµ   r=  r>  s        r   Úauto_augment_policy_3arb    sT   € à	ÐØ	 Ð!Ø	&Ð'ð€Fð
 BH×	H¸2°2Ö
6¨aŒ9�aÐ) Ó)Ô
6Ð	H€BÑ	HØ€Iùò 7ùÓ	Hs   Ž	8—3©8³8c                 óÊ   — |xs t         }| dk(  rt        |«      S | dk(  rt        |«      S | dk(  rt        |«      S | dk(  rt	        |«      S | dk(  rt        |«      S J d| › �«       ‚)NÚoriginalÚ	originalrÚv0Úv0rÚ3azUnknown AA policy )rè   r^  r`  rB  rF  rb  )ré   rµ   s     r   Úauto_augment_policyri  &  s{   € ØÒ)Ô)€GØˆzÒÜ+¨GÓ4Ð4Øˆ{ÒÜ,¨WÓ5Ð5Øˆt‚|Ü% gÓ.Ð.Øˆu‚}Ü& wÓ/Ð/Øˆt‚|Ü% gÓ.Ð.Ø-Ð& t fÐ-Ó-ˆ5r!   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚAutoAugmentc                 ó   — || _         y rG   )r?  )rô   r?  s     r   rõ   zAutoAugment.__init__7  s	   € Øˆ�r!   c                 ób   — t        j                  | j                  «      }|D ]
  } ||«      }Œ |S rG   )r   r   r?  )rô   r0   Ú
sub_policyÚops       r   rû   zAutoAugment.__call__:  s1   € Ü—]‘] 4§;¡;Ó/ˆ
Øò 	ˆBÙ�S“'‰Cð	àˆ
r!   c           
      óØ   — | j                   j                  dz   }| j                  D ]7  }|dz  }|dj                  |D �cg c]  }t	        |«      ‘Œ c}«      z  }|dz  }Œ9 |dz  }|S c c}w )Nz(policy=z
	[z, ú]rý   )rþ   rÿ   r?  ÚjoinÚstr)rô   r   Úpro  s       r   r  zAutoAugment.__repr__@  sr   € Ø�^‰^×$Ñ$ zÑ1ˆØ—‘ò 	ˆAØ�'‰MˆBØ�$—)‘)¨qÖ1¨œS �WÒ1Ó2Ñ2ˆBØ�#‰I‰Bð	ð 	ˆc‰	ˆØˆ	ùò 2s   ¾A'Nr  rH   r!   r   rk  rk  5  s   „ òòór!   rk  Ú
config_strrµ   c                 ó  — | j                  d«      }|d   }|dd }|D ]V  }t        j                   d|«      }t        |«      dk  rŒ(|dd \  }}|dk(  r|j                  dt	        |«      «       ŒQJ d	«       ‚ t        ||¬
«      }t        |«      S )aœ   Create a AutoAugment transform

    Args:
        config_str: String defining configuration of auto augmentation. Consists of multiple sections separated by
            dashes ('-').
            The first section defines the AutoAugment policy (one of 'v0', 'v0r', 'original', 'originalr').
            While the remaining sections define other arguments
                * 'mstd' -  float std deviation of magnitude noise applied
        hparams: Other hparams (kwargs) for the AutoAugmentation scheme

    Returns:
         A PyTorch compatible Transform

    Examples::

        'original-mstd0.5' results in AutoAugment with original policy, magnitude_std 0.5
    ú-r   r*   Nú(\d.*)r   Úmstdræ   z"Unknown AutoAugment config section)rµ   )ÚsplitÚrers   Ú
setdefaultr´   ri  rk  )	ru  rµ   ÚconfigÚpolicy_namerN   ÚcsÚkeyÚvalÚ	aa_policys	            r   Úauto_augment_transformrƒ  J  s£   € ð$ ×Ñ˜cÓ"€FØ˜‘)€KØ�A�BˆZ€FØò 	?ˆÜ�X‰X�i Ó#ˆÜˆr‹7�QŠ;ØØ�b�q�6‰ˆˆSØ�&Š=à×Ñ˜´°c³
Õ;à>Ð>Ó>�5ð	?ô $ K¸ÔA€IÜ�yÓ!Ð!r!   )rÍ   rÎ   rÏ   rÐ   rÑ   rÔ   rÖ   rƒ   r~   r†   r‰   rÛ   rÜ   rß   rà   )rÍ   rÎ   rÏ   rÐ   rÒ   rÕ   rÖ   r×   rØ   rÙ   rÚ   rÛ   rÜ   rß   rà   )rÕ   rá   r�   r%  r  r*   )rÕ   rá   r�   rÐ   rÛ   rÜ   rÒ   rÍ   r×   rÚ   rØ   rÙ   rÎ   rÏ   g      Ð?gš™™™™™©?)rÐ   rÛ   rÜ   rß   rà   r×   rÚ   rÍ   rÕ   rÖ   rØ   rÙ   rÎ   rÒ   rÏ   Ú
transformsc                 ó¨   — t        t        | j                  «       Ž «      \  } }t        j                  |«      }|t        j
                  |«      z  }| |fS rG   )r   ÚzipÚitemsÚnpÚarrayÚsum)r„  Úprobss     r   Ú_get_weighted_transformsrŒ  Ã  sI   € ÜœS *×"2Ñ"2Ó"4Ð5Ó6Ñ€J�Ü�H‰H�U‹O€EØ”B—F‘F˜5“MÑ!€EØ�uÐÐr!   ré   c                 ó`   — | dk(  rt         S | dk(  rt        S | dk(  rt        S |rt        S t        S )NÚweightsÚ3awrh  )Ú_RAND_WEIGHTED_0Ú_RAND_WEIGHTED_3AÚ_RAND_3AÚ_RAND_INCREASING_TRANSFORMSÚ_RAND_TRANSFORMS)ré   Ú
increasings     r   Úrand_augment_choicesr–  Ê  s8   € ØˆyÒÜÐØˆu‚}Ü Ð Øˆt‚|ÜˆÙ*4Ô&ÐJÔ:JÐJr!   rï   rî   c           	      ón   — |xs t         }|xs t        }|D �cg c]  }t        ||| |¬«      ‘Œ c}S c c}w )N©rî   rï   rµ   )rè   r”  rä   )rï   rî   rµ   r„  ré   s        r   Úrand_augment_opsr™  Ô  sL   € ð Ò)Ô)€GØÒ/Ô/€JàKUöWØCGô Ø�4 9°gö?ò Wð Wùò Wó   ™2c                   ó    — e Zd Zdd„Zd„ Zd„ Zy)ÚRandAugmentNc                 ó.   — || _         || _        || _        y rG   )ÚopsÚ
num_layersÚchoice_weights)rô   rž  rŸ  r   s       r   rõ   zRandAugment.__init__á  s   € ØˆŒØ$ˆŒØ,ˆÕr!   c                 ó¾   — t         j                  j                  | j                  | j                  | j
                  d u | j
                  ¬«      }|D ]
  } ||«      }Œ |S )N)Úreplacert  )rˆ  r   r   rž  rŸ  r   )rô   r0   rž  ro  s       r   rû   zRandAugment.__call__æ  s_   € ä�i‰i×ÑØ�H‰HØ�O‰OØ×'Ñ'¨4Ð/Ø×!Ñ!ð	 ó 
ˆð ò 	ˆBÙ�S“'‰Cð	àˆ
r!   c                 ó�   — | j                   j                  d| j                  › d�z   }| j                  D ]
  }|d|› �z  }Œ |dz  }|S )Nz(n=ú, ops=ú
	rý   )rþ   rÿ   rŸ  rž  ©rô   r   ro  s      r   r  zRandAugment.__repr__ò  sU   € Ø�^‰^×$Ñ$¨¨T¯_©_Ð,=¸VÐ'DÑDˆØ—(‘(ò 	ˆBØ�D˜˜�+Ñ‰Bð	à
ˆc‰	ˆØˆ	r!   )r   Nr  rH   r!   r   rœ  rœ  à  s   „ ó-ò

ór!   rœ  c                 ó$  — t         }d}d}d}| j                  d«      }|d   dk(  sJ ‚|dd }|D ]õ  }|j                  d	«      rt        |dd «      }	|�Œ%|	}Œ(t	        j                  d
|«      }
t        |
«      dk  rŒM|
dd \  }}	|dk(  r.t        |	«      }|dkD  rt        d«      }|j                  d|«       Œˆ|dk(  r|j                  dt        |	«      «       Œ©|dk(  rt        |	«      sŒºd}Œ½|dk(  rt        |	«      }ŒÎ|dk(  rt        |	«      }Œß|dk(  rt        |	«      }ŒðJ d«       ‚ t        |t        «      rt        ||¬«      }n|€|rt        nt        }d}t        |t        «      rt        |«      \  }}t!        ||||¬«      }t#        |||¬«      S )a;   Create a RandAugment transform

    Args:
        config_str (str): String defining configuration of random augmentation. Consists of multiple sections separated
            by dashes ('-'). The first section defines the specific variant of rand augment (currently only 'rand').
            The remaining sections, not order specific determine
                * 'm' - integer magnitude of rand augment
                * 'n' - integer num layers (number of transform ops selected per image)
                * 'p' - float probability of applying each layer (default 0.5)
                * 'mstd' -  float std deviation of magnitude noise applied, or uniform sampling if infinity (or > 100)
                * 'mmax' - set upper bound for magnitude to something other than default of  _LEVEL_DENOM (10)
                * 'inc' - integer (bool), use augmentations that increase in severity with magnitude (default: 0)
                * 't' - str name of transform set to use
        hparams (dict): Other hparams (kwargs) for the RandAugmentation scheme

    Returns:
         A PyTorch compatible Transform

    Examples::

        'rand-m9-n3-mstd0.5' results in RandAugment with magnitude 9, num_layers 3, magnitude_std 0.5

        'rand-mstd1-tweights' results in mag std 1.0, weighted transforms, default mag of 10 and num_layers 2

    r   Fr�   rw  r   Úrandr*   NÚtrx  ry  éd   r÷   ræ   Úmmaxrç   ÚincTÚmÚnrt  z"Unknown RandAugment config section)r•  )rï   rî   rµ   r„  )r   )r¢   rz  Ú
startswithrs  r{  rs   r´   r|  r¿   Úboolr   r–  r“  r”  r   rŒ  r™  rœ  )ru  rµ   r„  rï   rŸ  r•  rî   r}  rN   r�  r  r€  ry  r   Úra_opss                  r   Úrand_augment_transformr²  ú  s­  € ô< €IØ€JØ€JØ€DØ×Ñ˜cÓ"€FØ�!‰9˜ÒÐÐØ�A�BˆZ€FØò  CˆØ�<‰<˜Ôä�a˜˜�e“*ˆCØÑ!Ø ‘
ô —‘˜) QÓ'ˆBÜ�2‹w˜Š{ØØ˜"˜1�v‰HˆC�Ø�fŠ}ä˜S“z�Ø˜#’:ä  ›<�DØ×"Ñ" ?°DÕ9Ø˜’à×"Ñ" ?´C¸³HÕ=Ø˜’Ü˜•9Ø!%‘JØ˜’Ü ›H‘	Ø˜’Ü  ›X‘
Ø˜’Ü˜S“z‘àBÐBÓB�uðA CôD �*œcÔ"Ü)¨*ÀÔL‰
Ø	Ð	Ù4>Õ0ÔDTˆ
à€NÜ�*œdÔ#Ü%=¸jÓ%IÑ"ˆ
�Nä¨	¸ÀgÐZdÔe€FÜ�v˜z¸.ÔIÐIr!   )rÍ   r×   rØ   rÙ   rÚ   rÎ   rÐ   rÒ   rÕ   rÛ   rÜ   rß   rà   c           	      ón   — |xs t         }|xs t        }|D �cg c]  }t        |d| |¬«      ‘Œ c}S c c}w )Nr˜   r˜  )rè   Ú_AUGMIX_TRANSFORMSrä   )rï   rµ   r„  ré   s       r   Ú
augmix_opsrµ  _  sO   € ð
 Ò)Ô)€GØÒ1Ô1€Jð öð
 ô ØØØØö	ò ð ùò rš  c                   ó6   — e Zd ZdZd	d„Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)
ÚAugMixAugmenta   AugMix Transform
    Adapted and improved from impl here: https://github.com/google-research/augmix/blob/master/imagenet.py
    From paper: 'AugMix: A Simple Data Processing Method to Improve Robustness and Uncertainty -
    https://arxiv.org/abs/1912.02781
    c                 óJ   — || _         || _        || _        || _        || _        y rG   )rž  ÚalphaÚwidthÚdepthÚblended)rô   rž  r¹  rº  r»  r¼  s         r   rõ   zAugMixAugment.__init__t  s%   € ØˆŒØˆŒ
ØˆŒ
ØˆŒ
Øˆ�r!   c                 óÀ   — ||z  }d}g }|d d d…   D ]   }||z  }|d|z
  z  }|j                  |«       Œ" t        j                  |d d d…   t        j                  ¬«      S )Nr˜   éÿÿÿÿr*   ©Údtype)rp   rˆ  r‰  Úfloat32)rô   Úwsr­  ÚcumpÚrwsrY   r¹  s          r   Ú_calc_blended_weightsz#AugMixAugment._calc_blended_weights{  sn   € Ø�!‰VˆØˆØˆØ‘D�b�D‘ò 	ˆAØ˜‘HˆEØ�Q˜‘YÑˆDØ�J‰J�uÕð	ô �x‰x˜™D˜b˜D™	¬¯©Ô4Ð4r!   c                 óv  — |j                  «       }| j                  ||«      }|D ]‘  }| j                  dkD  r| j                  nt        j                  j                  dd«      }t        j                  j                  | j                  |d¬«      }|}	|D ]
  }
 |
|	«      }	Œ t        j                  ||	|«      }Œ“ |S )Nr   r*   r½   T©r¢  )
rð   rÅ  r»  rˆ  r   Úrandintr   rž  r   Úblend)rô   r0   Úmixing_weightsr­  Úimg_origrÂ  rY   r»  rž  Úimg_augro  s              r   Ú_apply_blendedzAugMixAugment._apply_blended…  s«   € ð
 —8‘8“:ˆØ×'Ñ'¨¸Ó:ˆØò 	/ˆAØ"&§*¡*¨q¢.�D—J’J´b·i±i×6GÑ6GÈÈ1Ó6MˆEÜ—)‘)×"Ñ" 4§8¡8¨U¸DÐ"ÓAˆCØˆGØò &�Ù˜W›+‘ð&ä—+‘+˜c 7¨AÓ.‰Cð	/ð ˆ
r!   c                 óÐ  — |j                   d   |j                   d   t        |j                  «       «      f}t        j                  |t        j
                  ¬«      }|D ]¥  }| j                  dkD  r| j                  nt        j                  j                  dd«      }t        j                  j                  | j                  |d¬«      }|}	|D ]
  }
 |
|	«      }	Œ ||t        j                  |	t        j
                  ¬«      z  z  }Œ§ t        j                  |dd|¬«       t        j                  |j                  t        j                   «      «      }t        j"                  |||«      S )	Nr   r*   r¿  r½   TrÇ  g     ào@)Úout)r-   rs   Úgetbandsrˆ  ÚzerosrÁ  r»  r   rÈ  r   rž  ÚasarrayÚclipr   Ú	fromarrayÚastypeÚuint8rÉ  )rô   r0   rÊ  r­  Ú	img_shapeÚmixedÚmwr»  rž  rÌ  ro  s              r   Ú_apply_basiczAugMixAugment._apply_basic•  s  € ð —H‘H˜Q‘K §¡¨!¡¬c°#·,±,³.Ó.AÐAˆ	Ü—‘˜¬"¯*©*Ô5ˆØ ò 	@ˆBØ"&§*¡*¨q¢.�D—J’J´b·i±i×6GÑ6GÈÈ1Ó6MˆEÜ—)‘)×"Ñ" 4§8¡8¨U¸DÐ"ÓAˆCØˆGØò &�Ù˜W›+‘ð&à�Rœ"Ÿ*™* W´B·J±JÔ?Ñ?Ñ?‰Eð	@ô 	�‰��q˜$ EÕ*Ü—‘ §¡¬R¯X©XÓ 6Ó7ˆÜ�{‰{˜3  qÓ)Ð)r!   c                 ó�  — t        j                  t         j                  j                  | j                  g| j
                  z  «      «      }t        j                  t         j                  j                  | j                  | j                  «      «      }| j                  r| j                  |||«      }|S | j                  |||«      }|S rG   )
rˆ  rÁ  r   Ú	dirichletr¹  rº  Úbetar¼  rÍ  rÚ  )rô   r0   rÊ  r­  rØ  s        r   rû   zAugMixAugment.__call__¦  s�   € ÜŸ™¤B§I¡I×$7Ñ$7¸¿¹¸ÀtÇzÁzÑ8QÓ$RÓSˆÜ�J‰J”r—y‘y—~‘~ d§j¡j°$·*±*Ó=Ó>ˆØ�<Š<Ø×'Ñ'¨¨^¸QÓ?ˆEð ˆð ×%Ñ% c¨>¸1Ó=ˆEØˆr!   c                 óÄ   — | j                   j                  d| j                  › d| j                  › d| j                  › d�z   }| j
                  D ]
  }|d|› �z  }Œ |dz  }|S )Nz(alpha=z, width=z, depth=r¤  r¥  rý   )rþ   rÿ   r¹  rº  r»  rž  r¦  s      r   r  zAugMixAugment.__repr__¯  sn   € Ø�^‰^×$Ñ$¨°·±°¸HÀTÇZÁZÀLÐPXÐY]×YcÑYcÐXdÐdjÐ'kÑkˆØ—(‘(ò 	ˆBØ�D˜˜�+Ñ‰Bð	à
ˆc‰	ˆØˆ	r!   N)r˜   r  r¾  F)
rÿ   r  r  Ú__doc__rõ   rÅ  rÍ  rÚ  rû   r  rH   r!   r   r·  r·  n  s%   „ ñó
ò5òò *ò"ór!   r·  c                 ó&  — d}d}d}d}d}| j                  d«      }|d   dk(  sJ ‚|dd	 }|D ]«  }t        j                   d
|«      }	t        |	«      dk  rŒ(|	d	d \  }
}|
dk(  r|j                  dt	        |«      «       ŒQ|
dk(  rt        |«      }Œb|
dk(  rt        |«      }Œs|
dk(  rt        |«      }Œ„|
dk(  rt	        |«      }Œ•|
dk(  rt        |«      }Œ¦J d«       ‚ |j                  dt	        d«      «       t        ||¬«      }t        |||||¬«      S )a
   Create AugMix PyTorch transform

    Args:
        config_str (str): String defining configuration of random augmentation. Consists of multiple sections separated
            by dashes ('-'). The first section defines the specific variant of rand augment (currently only 'rand').
            The remaining sections, not order specific determine
                'm' - integer magnitude (severity) of augmentation mix (default: 3)
                'w' - integer width of augmentation chain (default: 3)
                'd' - integer depth of augmentation chain (-1 is random [1, 3], default: -1)
                'b' - integer (bool), blend each branch of chain into end result without a final blend, less CPU (default: 0)
                'mstd' -  float std deviation of magnitude noise applied (default: 0)
            Ex 'augmix-m5-w4-d2' results in AugMix with severity 5, chain width 4, chain depth 2

        hparams: Other hparams (kwargs) for the Augmentation transforms

    Returns:
         A PyTorch compatible Transform
    r  r¾  r˜   Frw  r   Úaugmixr*   Nrx  r   ry  ræ   r­  rY   rO   rL   rM   zUnknown AugMix config sectionr÷   )rï   rµ   )r¹  rº  r»  r¼  )	rz  r{  rs   r|  r´   r¿   r°  rµ  r·  )ru  rµ   rï   rº  r»  r¹  r¼  r}  rN   r  r€  r�  rž  s                r   Úaugment_and_mix_transformrâ  ·  s1  € ð& €IØ€EØ€EØ€EØ€GØ×Ñ˜cÓ"€FØ�!‰9˜Ò Ð Ð Ø�A�BˆZ€FØò :ˆÜ�X‰X�i Ó#ˆÜˆr‹7�QŠ;ØØ�b�q�6‰ˆˆSØ�&Š=à×Ñ˜´°c³
Õ;Ø�CŠZÜ˜C›‰IØ�CŠZÜ˜“H‰EØ�CŠZÜ˜“H‰EØ�CŠZÜ˜#“J‰EØ�CŠZÜ˜3“i‰Gà9Ð9Ó9�5ð':ð( ×Ñ�¬¨e«Ô5Ü
˜y°'Ô
:€CÜ˜ E°¸eÈWÔUÐUr!   )r   )rE   r˜   T)rf  NrG   )T)r  r�   NN)NN)r  NN)arß  r   rS   r{  Ú	functoolsr   Útypingr   r   r   r   ÚPILr   r	   r
   r   r   Únumpyrˆ  r   Ú__version__rz  r¿   r&   rò   r¢   rñ   rè   Úhasattrr   ÚBILINEARÚBICUBICró   r   r    r'   r2   r4   r:   r<   r?   rA   rR   rb   rd   rf   rh   rx   r{   r�   r„   r‡   rŠ   r�   r–   r›   rŸ   r¦   r©   r«   r°   r²   r¶   rº   rÀ   rÂ   rÄ   rÇ   rÉ   rÌ   rì   rê   rä   rB  rF  r^  r`  rb  ri  rk  rs  rƒ  r”  r“  r’  r‘  r�  rŒ  r–  r´   r™  rœ  r²  r´  rµ  r·  râ  )rI   s   0r   ú<module>rë     s¦  ðñó, Û Û 	Ý ß .Ó .ç FÕ FÛ 
Û ñ  #§/¡/×"7Ñ"7¸Ó"<¸R¸aÐ"@ÖA˜Q‘#�a•&ÒAÓB€à€à€áØØôÐ ñ
 ˆ5�,ÔØ"×-Ñ-×6Ñ6¸×8HÑ8H×8PÑ8PÐQÐØ"×-Ñ-×5Ñ5Ñà"Ÿ^™^¨U¯]©]Ð;ÐØ"Ÿ]™]Ðòò0òTò
Tò
TòTòTò
Tò
<ò>&ò ò"ò*óò 1ò6ò3ò8ò7òò
ò3ò.ò
ò/ò
óòòòò,ò;ò0ò8ò=ò8ð
Ø�Dðà�ðð ˆdðð Ð"ð	ð Ð(ðð Ð=ðð Ð9ðð Ð&ðð Ð;ðð Ð-ðð Ð"ðð Ð7ðð Ð%ðð Ð:ðð  Ð'ð!ð" Ð<ð#ð$ Ð&ð%ð& <Ø!Ø!Ø-Ø-Ø0Ø0ÙÐ.¸ÀSÔIÙÐ0¸#ÀsÔKØ,ò9€ð@Ø�Mðà�ðð ˆfðð ˆfð	ð
 �ðð ˜9ðð ˜ðð �ðð ˜(ðð �<ðð ˆUðð �uðð �ðð ˜(ðð �*ðð  ˜Jð!ð" �ð#ð$ %ØØØ!Ø!Ø$Ø$ØØ!Ø*ò7€
÷>/ñ /òdòBòDòBòBó.÷ñ ñ* " sð  "°X¸d±^ó  "òFÐ ò(Ð ò(€ð ØØØØØØØØØØØØØñÐ ð* ØØØØØØØØØØØØØØñÐ ð&¨ó ñK˜só Kð (*ØØ"&Ø26ñ		WØ˜˜e˜Ñ$ð	Wàð	Wð ˜$‘ð	Wð ˜U 4¨ :Ñ.Ñ/ó		W÷ñ ð8 #'Ø7;ñQJØðQJà˜$‘ðQJð ˜U 3¨¨d ?Ñ3Ñ4óQJòhÐ ð$ (*Ø"&Ø7;ñØ˜˜e˜Ñ$ðà˜$‘ðð ˜U 3¨¨d ?Ñ3Ñ4ó÷Fñ FñR1V¨#ð 1V¸À¹ô 1Vùòk Bs   ÁK