ó
    Eñi@n  ã                   óˆ  • S SK r S SKJr  S SKJr  S SKrS SKJr  SSKJr	J
r
  / SQrS\S	\S
\S\
S\\\      4
S jr " S S\5      r " S S\R"                  R$                  5      r " S S\R"                  R$                  5      r " S S\R"                  R$                  5      r " S S\R"                  R$                  5      rg)é    N)ÚEnum)ÚOptional)ÚTensoré   )Ú
functionalÚInterpolationMode)ÚAutoAugmentPolicyÚAutoAugmentÚRandAugmentÚTrivialAugmentWideÚAugMixÚimgÚop_nameÚ	magnitudeÚinterpolationÚfillc                 ó¼  • US:X  aK  [         R                  " U SSS/S[        R                  " [        R                  " U5      5      S/UUSS/S9n U $ US:X  aK  [         R                  " U SSS/SS[        R                  " [        R                  " U5      5      /UUSS/S9n U $ US:X  a)  [         R                  " U S[        U5      S/SUSS/US9n U $ US	:X  a)  [         R                  " U SS[        U5      /SUSS/US9n U $ US
:X  a  [         R                  " XX4S9n U $ US:X  a  [         R                  " U SU-   5      n U $ US:X  a  [         R                  " U SU-   5      n U $ US:X  a  [         R                  " U SU-   5      n U $ US:X  a  [         R                  " U SU-   5      n U $ US:X  a"  [         R                  " U [        U5      5      n U $ US:X  a  [         R                  " X5      n U $ US:X  a  [         R                  " U 5      n U $ US:X  a  [         R                  " U 5      n U $ US:X  a  [         R                  " U 5      n U $ US:X  a   U $ [!        SU S35      e)NÚShearXç        r   ç      ð?)ÚangleÚ	translateÚscaleÚshearr   r   ÚcenterÚShearYÚ
TranslateX)r   r   r   r   r   r   Ú
TranslateYÚRotate©r   r   Ú
BrightnessÚColorÚContrastÚ	SharpnessÚ	PosterizeÚSolarizeÚAutoContrastÚEqualizeÚInvertÚIdentityzThe provided operator ú is not recognized.)ÚFÚaffineÚmathÚdegreesÚatanÚintÚrotateÚadjust_brightnessÚadjust_saturationÚadjust_contrastÚadjust_sharpnessÚ	posterizeÚsolarizeÚautocontrastÚequalizeÚinvertÚ
ValueError)r   r   r   r   r   s        Ú_/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torchvision/transforms/autoaugment.pyÚ	_apply_opr>      sÃ  € ð �(Óô �hŠhØØØ˜!�fØÜ—<’<¤§	¢	¨)Ó 4Ó5°sÐ;Ø'ØØ�q�6ñ	
ˆðF €Jðs 
�HÓ	ô �hŠhØØØ˜!�fØØœŸš¤T§Y¢Y¨yÓ%9Ó:Ð;Ø'ØØ�q�6ñ	
ˆðl €JðY 
�LÓ	 Ü�hŠhØØÜ˜9“~ qÐ)ØØ'Ø˜�*Øñ
ˆðV €JðE 
�LÓ	 Ü�hŠhØØØœ#˜i›.Ð)ØØ'Ø˜�*Øñ
ˆðB €Jð1 
�HÓ	Ü�hŠh�s°]ÑNˆð. €Jð- 
�LÓ	 Ü×!Ò! # s¨Y¡Ó7ˆð* €Jð) 
�GÓ	Ü×!Ò! # s¨Y¡Ó7ˆð& €Jð% 
�JÓ	Ü×Ò  S¨9¡_Ó5ˆð" €Jð! 
�KÓ	Ü× Ò   c¨I¡oÓ6ˆð €Jð 
�KÓ	Ü�kŠk˜#œs 9›~Ó.ˆð €Jð 
�JÓ	Ü�jŠj˜Ó(ˆð €Jð 
�NÓ	"Ü�nŠn˜SÓ!ˆð €Jð 
�JÓ	Ü�jŠj˜‹oˆð €Jð 
�HÓ	Ü�hŠh�s‹mˆð
 €Jð	 
�JÓ	Øð €Jô Ð1°'°Ð:MÐNÓOÐOó    c                   ó$   • \ rS rSrSrSrSrSrSrg)r	   é]   zgAutoAugment policies learned on different datasets.
Available policies are IMAGENET, CIFAR10 and SVHN.
ÚimagenetÚcifar10Úsvhn© N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚIMAGENETÚCIFAR10ÚSVHNÚ__static_attributes__rE   r?   r=   r	   r	   ]   s   † ñð €HØ€GØƒDr?   r	   c                   ó@  ^ • \ rS rSrSr\R                  \R                  S4S\S\S\	\
\      SS4U 4S jjjrS\S\
\\\\\	\   4   \\\\	\   4   4      4S	 jrS
\S\\\4   S\\\\\4   4   4S jr\S\S\\\\4   4S j5       rS\S\4S jrS\4S jrSrU =r$ )r
   éh   a  AutoAugment data augmentation method based on
`"AutoAugment: Learning Augmentation Strategies from Data" <https://arxiv.org/pdf/1805.09501.pdf>`_.
If the image is torch Tensor, it should be of type torch.uint8, and it is expected
to have [..., 1 or 3, H, W] shape, where ... means an arbitrary number of leading dimensions.
If img is PIL Image, it is expected to be in mode "L" or "RGB".

Args:
    policy (AutoAugmentPolicy): Desired policy enum defined by
        :class:`torchvision.transforms.autoaugment.AutoAugmentPolicy`. Default is ``AutoAugmentPolicy.IMAGENET``.
    interpolation (InterpolationMode): Desired interpolation enum defined by
        :class:`torchvision.transforms.InterpolationMode`. Default is ``InterpolationMode.NEAREST``.
        If input is Tensor, only ``InterpolationMode.NEAREST``, ``InterpolationMode.BILINEAR`` are supported.
    fill (sequence or number, optional): Pixel fill value for the area outside the transformed
        image. If given a number, the value is used for all bands respectively.
NÚpolicyr   r   Úreturnc                 ór   >• [         TU ]  5         Xl        X l        X0l        U R                  U5      U l        g ©N)ÚsuperÚ__init__rQ   r   r   Ú_get_policiesÚpolicies)ÚselfrQ   r   r   Ú	__class__s       €r=   rV   ÚAutoAugment.__init__y   s2   ø€ ô 	‰ÑÔØŒØ*ÔØŒ	Ø×*Ñ*¨6Ó2ˆ�r?   c                 ó°   • U[         R                  :X  a  / SQ$ U[         R                  :X  a  / SQ$ U[         R                  :X  a  / SQ$ [	        SU S35      e)N)))r%   çš™™™™™Ù?é   )r   ç333333ã?é	   ©)r&   r_   é   ©r'   r_   N©©r(   çš™™™™™é?N©r(   r_   N))r%   r_   é   )r%   r_   é   ©©r(   r]   N)r&   çš™™™™™É?é   )rk   ©r   rf   r^   ))r&   r_   é   rg   ))r%   rf   rb   ©r(   r   N))r   rl   ro   )r&   r_   r^   )rg   )r%   r]   ri   )rn   ©r"   r]   r   ))r   r]   r`   rg   ))r(   r   Nre   ©©r)   r_   Nrp   ©)r"   r_   rm   )r#   r   r^   )rn   )r"   r   é   ))r"   rf   r^   )r&   rf   rh   ))r$   r]   rh   rs   ))r   r_   rb   rp   )rq   rg   rj   ra   rr   rt   rd   ))©r)   çš™™™™™¹?N)r#   rl   ri   ))r   çffffffæ?ru   )r   ç333333Ó?r`   ))r$   rf   r   )r$   çÍÌÌÌÌÌì?ro   ))r   ç      à?r^   ©r   rx   r`   ))r'   r{   N©r(   rz   N))r   rl   rh   )r%   ry   rh   ))r"   r]   ro   )r!   r_   rh   ))r$   ry   r`   )r!   rx   r`   )rg   )r(   r{   N))r#   r_   rh   )r$   r_   rb   ))r"   rx   rh   )r   r{   r^   ))r(   ry   N)r'   r]   N))r   r]   ro   )r$   rl   ri   ))r!   rz   ri   )r"   rl   r^   ))r&   r{   ru   )r)   r   N)©r(   rl   Nrc   )r~   rg   ))r"   rz   r`   rg   )©r'   rf   N)r&   rl   r^   ))r!   rw   ro   )r"   rx   r   ))r&   r]   rb   ©r'   rz   N))r   rz   r`   r|   )r€   )r&   rf   ro   )re   rv   )r|   r€   ))©r   rz   rm   )r)   rl   N)©r   rz   r^   ©r)   rx   N)rg   )r&   r_   ri   ©©r)   rz   Nrg   ©rg   )r   rz   ro   )r�   r   )r‚   )r)   r]   N))r   rz   rb   )r&   rl   ri   )r…   r   r†   )r�   )r&   ry   ro   ))r   rf   r^   rƒ   )r}   )r   r_   ri   r„   ))r#   ry   ro   ©r   rf   rm   )©r)   rf   N)r   r   ru   ))r   rx   ri   )r&   r]   r^   )rs   r‡   ))r   ry   rh   )r   rz   ro   ))r   rw   ri   rs   ))r&   rx   ru   )r   r_   rh   ))r   rf   rm   rˆ   ))r   rx   r`   )r   rf   ro   ))r   rf   rb   )r'   rx   N))r   rx   ru   rv   zThe provided policy r+   )r	   rK   rL   rM   r<   )rY   rQ   s     r=   rW   ÚAutoAugment._get_policies…   sk   € ð Ô&×/Ñ/Ó/òð ð6 Ô(×0Ñ0Ó0òð ð6 Ô(×-Ñ-Ó-òð ô8 Ð3°F°8Ð;NÐOÓPÐPr?   Únum_binsÚ
image_sizec                 ó  • [         R                  " SSU5      S4[         R                  " SSU5      S4[         R                  " SSUS   -  U5      S4[         R                  " SSUS   -  U5      S4[         R                  " SSU5      S4[         R                  " SSU5      S4[         R                  " SSU5      S4[         R                  " SSU5      S4[         R                  " SSU5      S4S	[         R                  " U5      US-
  S
-  -  R                  5       R	                  5       -
  S4[         R                  " SSU5      S4[         R
                  " S5      S4[         R
                  " S5      S4[         R
                  " S5      S4S.$ )Nr   ry   TçtþÅ Ý?r   r   ç      >@rz   r^   rm   Fç     ào@)r   r   r   r   r   r!   r"   r#   r$   r%   r&   r'   r(   r)   )ÚtorchÚlinspaceÚarangeÚroundr1   Útensor©rY   rŠ   r‹   s      r=   Ú_augmentation_spaceÚAutoAugment._augmentation_spaceß   s^  € ô —~’~ c¨3°Ó9¸4Ð@Ü—~’~ c¨3°Ó9¸4Ð@Ü Ÿ>š>¨#¨}¸zÈ!¹}Ñ/LÈhÓWÐY]Ð^Ü Ÿ>š>¨#¨}¸zÈ!¹}Ñ/LÈhÓWÐY]Ð^Ü—~’~ c¨4°Ó:¸DÐAÜ Ÿ>š>¨#¨s°HÓ=¸tÐDÜ—n’n S¨#¨xÓ8¸$Ð?ÜŸš¨¨S°(Ó;¸TÐBÜŸ.š.¨¨c°8Ó<¸dÐCØœuŸ|š|¨HÓ5¸(ÀQ¹,È!Ñ9KÑL×SÑSÓU×YÑYÓ[Ñ[Ð]bÐcÜŸš¨¨s°HÓ=¸uÐEÜ"Ÿ\š\¨#Ó.°Ð6ÜŸš cÓ*¨EÐ2Ü—|’| CÓ(¨%Ð0ñ
ð 	
r?   Útransform_numc                 óÀ   • [        [        R                  " U S5      R                  5       5      n[        R                  " S5      n[        R                  " SS5      nXU4$ )znGet parameters for autoaugment transformation

Returns:
    params required by the autoaugment transformation
©r   )ru   ru   )r1   r�   ÚrandintÚitemÚrand)r˜   Ú	policy_idÚprobsÚsignss       r=   Ú
get_paramsÚAutoAugment.get_paramsò   sK   € ô œŸš m°TÓ:×?Ñ?ÓAÓBˆ	Ü—
’
˜4Ó ˆÜ—’˜a Ó&ˆà Ð&Ð&r?   r   c           	      óŠ  • U R                   n[        R                  " U5      u  p4n[        U[        5      (       aI  [        U[
        [        45      (       a  [        U5      /U-  nOUb  U Vs/ s H  n[        U5      PM     nnU R                  [        U R                  5      5      u  pxn	U R                  SXE45      n
[        U R                  U   5       Hd  u  nu  pÍnX‹   U::  d  M  X¬   u  nnUb  [        Xþ   R                  5       5      OSnU(       a  X›   S:X  a  US-  n[        XUU R                  US9nMf     U$ s  snf )zq
    img (PIL Image or Tensor): Image to be transformed.

Returns:
    PIL Image or Tensor: AutoAugmented image.
é
   r   r   ç      ð¿r    )r   r,   Úget_dimensionsÚ
isinstancer   r1   Úfloatr¡   ÚlenrX   r–   Ú	enumeraterœ   r>   r   )rY   r   r   ÚchannelsÚheightÚwidthÚfÚtransform_idrŸ   r    Úop_metaÚir   ÚpÚmagnitude_idÚ
magnitudesÚsignedr   s                     r=   ÚforwardÚAutoAugment.forwardÿ   s-  € ð �y‰yˆÜ"#×"2Ò"2°3Ó"7Ñˆ˜%Ü�cœ6×"Ñ"Ü˜$¤¤e ×-Ñ-Ü˜d›�} xÑ/‘ØÑ!Ù*.Ó/ª$ Qœ˜až©$�Ð/à%)§_¡_´S¸¿¹Ó5GÓ%HÑ"ˆ˜Uà×*Ñ*¨2°¨Ó?ˆÜ-6°t·}±}À\Ñ7RÖ-SÑ)ˆAÑ)�˜LØ‰x˜1�}Ø%,Ñ%5Ñ"�
˜FØFRÑF^œE *Ñ":×"?Ñ"?Ó"AÔBÐdg�	Þ˜e™h¨!›mØ Ñ%�IÜ ¨iÀt×GYÑGYÐ`dÑe’ñ .Tð ˆ
ùò 0s   Á-E c                 óh   • U R                   R                   SU R                   SU R                   S3$ )Nz(policy=ú, fill=Ú))rZ   rF   rQ   r   )rY   s    r=   Ú__repr__ÚAutoAugment.__repr__  s/   € Ø—.‘.×)Ñ)Ð*¨(°4·;±;°-¸wÀtÇyÁyÀkÐQRÐSÐSr?   )r   r   rX   rQ   )rF   rG   rH   rI   rJ   r	   rK   r   ÚNEARESTr   Úlistr¨   rV   ÚtupleÚstrr1   rW   Údictr   Úboolr–   Ústaticmethodr¡   r¶   r»   rN   Ú__classcell__©rZ   s   @r=   r
   r
   h   s4  ø† ñð$ %6×$>Ñ$>Ø+<×+DÑ+DØ&*ñ	
3à!ð
3ð )ð
3ð �t˜E‘{Ñ#ð	
3ð
 
÷
3ð 
3ðXQØ'ðXQà	ˆe�E˜#˜u h¨s¡mÐ3Ñ4°e¸CÀÈÐQTÉÐ<UÑ6VÐVÑWÑ	XôXQðt
¨Cð 
¸UÀ3ÈÀ8¹_ð 
ÐQUÐVYÐ[`ÐagÐimÐamÑ[nÐVnÑQoô 
ð& ð
' #ð 
'¨%°°V¸VÐ0CÑ*Dó 
'ó ð
'ð˜6ð  fô ð8T˜#÷ Tò Tr?   r
   c                   óÊ   ^ • \ rS rSrSrSSS\R                  S4S\S\S	\S
\S\\	\
      SS4U 4S jjjrS\S\\\4   S\\\\\4   4   4S jrS\S\4S jrS\4S jrSrU =r$ )r   i  aB  RandAugment data augmentation method based on
`"RandAugment: Practical automated data augmentation with a reduced search space"
<https://arxiv.org/abs/1909.13719>`_.
If the image is torch Tensor, it should be of type torch.uint8, and it is expected
to have [..., 1 or 3, H, W] shape, where ... means an arbitrary number of leading dimensions.
If img is PIL Image, it is expected to be in mode "L" or "RGB".

Args:
    num_ops (int): Number of augmentation transformations to apply sequentially.
    magnitude (int): Magnitude for all the transformations.
    num_magnitude_bins (int): The number of different magnitude values.
    interpolation (InterpolationMode): Desired interpolation enum defined by
        :class:`torchvision.transforms.InterpolationMode`. Default is ``InterpolationMode.NEAREST``.
        If input is Tensor, only ``InterpolationMode.NEAREST``, ``InterpolationMode.BILINEAR`` are supported.
    fill (sequence or number, optional): Pixel fill value for the area outside the transformed
        image. If given a number, the value is used for all bands respectively.
ru   r`   é   NÚnum_opsr   Únum_magnitude_binsr   r   rR   c                 ó^   >• [         TU ]  5         Xl        X l        X0l        X@l        XPl        g rT   )rU   rV   rÈ   r   rÉ   r   r   )rY   rÈ   r   rÉ   r   r   rZ   s         €r=   rV   ÚRandAugment.__init__2  s+   ø€ ô 	‰ÑÔØŒØ"ŒØ"4ÔØ*ÔØ�	r?   rŠ   r‹   c                 ó  • [         R                  " S5      S4[         R                  " SSU5      S4[         R                  " SSU5      S4[         R                  " SSUS   -  U5      S4[         R                  " SSUS   -  U5      S4[         R                  " SSU5      S4[         R                  " SS	U5      S4[         R                  " SS	U5      S4[         R                  " SS	U5      S4[         R                  " SS	U5      S4S
[         R                  " U5      US-
  S-  -  R	                  5       R                  5       -
  S4[         R                  " SSU5      S4[         R                  " S5      S4[         R                  " S5      S4S.$ )Nr   Fry   Tr�   r   r   rŽ   rz   r^   rm   r�   ©r*   r   r   r   r   r   r!   r"   r#   r$   r%   r&   r'   r(   ©r�   r”   r‘   r’   r“   r1   r•   s      r=   r–   ÚRandAugment._augmentation_spaceA  s^  € ô Ÿš cÓ*¨EÐ2Ü—~’~ c¨3°Ó9¸4Ð@Ü—~’~ c¨3°Ó9¸4Ð@Ü Ÿ>š>¨#¨}¸zÈ!¹}Ñ/LÈhÓWÐY]Ð^Ü Ÿ>š>¨#¨}¸zÈ!¹}Ñ/LÈhÓWÐY]Ð^Ü—~’~ c¨4°Ó:¸DÐAÜ Ÿ>š>¨#¨s°HÓ=¸tÐDÜ—n’n S¨#¨xÓ8¸$Ð?ÜŸš¨¨S°(Ó;¸TÐBÜŸ.š.¨¨c°8Ó<¸dÐCØœuŸ|š|¨HÓ5¸(ÀQ¹,È!Ñ9KÑL×SÑSÓU×YÑYÓ[Ñ[Ð]bÐcÜŸš¨¨s°HÓ=¸uÐEÜ"Ÿ\š\¨#Ó.°Ð6ÜŸš cÓ*¨EÐ2ñ
ð 	
r?   r   c           	      ó"  • U R                   n[        R                  " U5      u  p4n[        U[        5      (       aI  [        U[
        [        45      (       a  [        U5      /U-  nOUb  U Vs/ s H  n[        U5      PM     nnU R                  U R                  XE45      n[        U R                  5       HÐ  n[        [        R                  " [        U5      S5      R                  5       5      n	[        UR!                  5       5      U	   n
Xz   u  p¼UR"                  S:”  a%  [        X°R$                     R                  5       5      OSnU(       a!  [        R                  " SS5      (       a  US-  n['        XXÐR(                  US9nMÒ     U$ s  snf )úo
    img (PIL Image or Tensor): Image to be transformed.

Returns:
    PIL Image or Tensor: Transformed image.
rš   r   r   ru   r¥   r    )r   r,   r¦   r§   r   r1   r¨   r–   rÉ   ÚrangerÈ   r�   r›   r©   rœ   r¾   ÚkeysÚndimr   r>   r   )rY   r   r   r«   r¬   r­   r®   r°   Ú_Úop_indexr   r´   rµ   r   s                 r=   r¶   ÚRandAugment.forwardT  sD  € ð �y‰yˆÜ"#×"2Ò"2°3Ó"7Ñˆ˜%Ü�cœ6×"Ñ"Ü˜$¤¤e ×-Ñ-Ü˜d›�} xÑ/‘ØÑ!Ù*.Ó/ª$ Qœ˜až©$�Ð/à×*Ñ*¨4×+BÑ+BÀVÀOÓTˆÜ�t—|‘|Ö$ˆAÜœ5Ÿ=š=¬¨W«°tÓ<×AÑAÓCÓDˆHÜ˜7Ÿ<™<›>Ó*¨8Ñ4ˆGØ!(Ñ!1ÑˆJØDNÇOÁOÐVWÓDWœ˜j¯©Ñ8×=Ñ=Ó?Ô@Ð]`ˆIÞœ%Ÿ-š-¨¨4×0Ñ0Ø˜TÑ!�	Ü˜C¨)×CUÑCUÐ\`ÑaŠCñ %ð ˆ
ùò 0s   Á-Fc                 óº   • U R                   R                   SU R                   SU R                   SU R                   SU R
                   SU R                   S3nU$ )Nz	(num_ops=z, magnitude=z, num_magnitude_bins=ú, interpolation=r¹   rº   )rZ   rF   rÈ   r   rÉ   r   r   ©rY   Úss     r=   r»   ÚRandAugment.__repr__o  sg   € à�~‰~×&Ñ&Ð'ð (Ø—|‘|�nØ˜4Ÿ>™>Ð*Ø# D×$;Ñ$;Ð#<Ø˜t×1Ñ1Ð2Ø�d—i‘i�[Øðð 	
ð ˆr?   )r   r   r   rÉ   rÈ   )rF   rG   rH   rI   rJ   r   r½   r1   r   r¾   r¨   rV   r¿   rÁ   rÀ   r   rÂ   r–   r¶   r»   rN   rÄ   rÅ   s   @r=   r   r     sË   ø† ñð( ØØ"$Ø+<×+DÑ+DØ&*ñàðð ðð  ð	ð
 )ðð �t˜E‘{Ñ#ðð 
÷ð ð
¨Cð 
¸UÀ3ÈÀ8¹_ð 
ÐQUÐVYÐ[`ÐagÐimÐamÑ[nÐVnÑQoô 
ð&˜6ð  fô ð6
˜#÷ 
ò 
r?   r   c            	       ó°   ^ • \ rS rSrSrS\R                  S4S\S\S\\	\
      SS4U 4S	 jjjrS
\S\\\\\4   4   4S jrS\S\4S jrS\4S jrSrU =r$ )r   i|  aË  Dataset-independent data-augmentation with TrivialAugment Wide, as described in
`"TrivialAugment: Tuning-free Yet State-of-the-Art Data Augmentation" <https://arxiv.org/abs/2103.10158>`_.
If the image is torch Tensor, it should be of type torch.uint8, and it is expected
to have [..., 1 or 3, H, W] shape, where ... means an arbitrary number of leading dimensions.
If img is PIL Image, it is expected to be in mode "L" or "RGB".

Args:
    num_magnitude_bins (int): The number of different magnitude values.
    interpolation (InterpolationMode): Desired interpolation enum defined by
        :class:`torchvision.transforms.InterpolationMode`. Default is ``InterpolationMode.NEAREST``.
        If input is Tensor, only ``InterpolationMode.NEAREST``, ``InterpolationMode.BILINEAR`` are supported.
    fill (sequence or number, optional): Pixel fill value for the area outside the transformed
        image. If given a number, the value is used for all bands respectively.
rÇ   NrÉ   r   r   rR   c                 óF   >• [         TU ]  5         Xl        X l        X0l        g rT   )rU   rV   rÉ   r   r   )rY   rÉ   r   r   rZ   s       €r=   rV   ÚTrivialAugmentWide.__init__Œ  s!   ø€ ô 	‰ÑÔØ"4ÔØ*ÔØ�	r?   rŠ   c                 ó  • [         R                  " S5      S4[         R                  " SSU5      S4[         R                  " SSU5      S4[         R                  " SSU5      S4[         R                  " SSU5      S4[         R                  " SSU5      S4[         R                  " SSU5      S4[         R                  " SSU5      S4[         R                  " SSU5      S4[         R                  " SSU5      S4S[         R                  " U5      US-
  S	-  -  R	                  5       R                  5       -
  S4[         R                  " S
SU5      S4[         R                  " S5      S4[         R                  " S5      S4S.$ )Nr   Fg®Gáz®ï?Tg      @@g     à`@r^   r   ri   r�   rÍ   rÎ   )rY   rŠ   s     r=   r–   Ú&TrivialAugmentWide._augmentation_space—  sJ  € ô Ÿš cÓ*¨EÐ2Ü—~’~ c¨4°Ó:¸DÐAÜ—~’~ c¨4°Ó:¸DÐAÜ Ÿ>š>¨#¨t°XÓ>ÀÐEÜ Ÿ>š>¨#¨t°XÓ>ÀÐEÜ—~’~ c¨5°(Ó;¸TÐBÜ Ÿ>š>¨#¨t°XÓ>ÀÐEÜ—n’n S¨$°Ó9¸4Ð@ÜŸš¨¨T°8Ó<¸dÐCÜŸ.š.¨¨d°HÓ=¸tÐDØœuŸ|š|¨HÓ5¸(ÀQ¹,È!Ñ9KÑL×SÑSÓU×YÑYÓ[Ñ[Ð]bÐcÜŸš¨¨s°HÓ=¸uÐEÜ"Ÿ\š\¨#Ó.°Ð6ÜŸš cÓ*¨EÐ2ñ
ð 	
r?   r   c           	      ó&  • U R                   n[        R                  " U5      u  p4n[        U[        5      (       aI  [        U[
        [        45      (       a  [        U5      /U-  nOUb  U Vs/ s H  n[        U5      PM     nnU R                  U R                  5      n[        [        R                  " [        U5      S5      R                  5       5      n[        UR                  5       5      U   n	Xy   u  p«U
R                  S:”  aG  [        U
[        R                  " [        U
5      S[        R                   S9   R                  5       5      OSnU(       a!  [        R                  " SS5      (       a  US-  n[#        XXÀR$                  US9$ s  snf )rÑ   rš   r   ©Údtyper   ru   r¥   r    )r   r,   r¦   r§   r   r1   r¨   r–   rÉ   r�   r›   r©   rœ   r¾   rÓ   rÔ   Úlongr>   r   )rY   r   r   r«   r¬   r­   r®   r°   rÖ   r   r´   rµ   r   s                r=   r¶   ÚTrivialAugmentWide.forwardª  sC  € ð �y‰yˆÜ"#×"2Ò"2°3Ó"7Ñˆ˜%Ü�cœ6×"Ñ"Ü˜$¤¤e ×-Ñ-Ü˜d›�} xÑ/‘ØÑ!Ù*.Ó/ª$ Qœ˜až©$�Ð/à×*Ñ*¨4×+BÑ+BÓCˆÜ”u—}’}¤S¨£\°4Ó8×=Ñ=Ó?Ó@ˆÜ�w—|‘|“~Ó& xÑ0ˆØ$Ñ-Ñˆ
ð �‰ Ó"ô �*œUŸ]š]¬3¨z«?¸DÌÏ
É
ÑSÑT×YÑYÓ[Ô\àð 	ö
 ”e—m’m A t×,Ñ,Ø˜ÑˆIä˜ y×@RÑ@RÐY]Ñ^Ð^ùò 0s   Á-Fc                 ó†   • U R                   R                   SU R                   SU R                   SU R                   S3nU$ )Nz(num_magnitude_bins=rÙ   r¹   rº   )rZ   rF   rÉ   r   r   rÚ   s     r=   r»   ÚTrivialAugmentWide.__repr__Ç  sP   € à�~‰~×&Ñ&Ð'ð ("Ø"&×"9Ñ"9Ð!:Ø˜t×1Ñ1Ð2Ø�d—i‘i�[Øð	ð 	
ð ˆr?   )r   r   rÉ   )rF   rG   rH   rI   rJ   r   r½   r1   r   r¾   r¨   rV   rÁ   rÀ   r¿   r   rÂ   r–   r¶   r»   rN   rÄ   rÅ   s   @r=   r   r   |  sŸ   ø† ñð" #%Ø+<×+DÑ+DØ&*ñ		àð	ð )ð	ð �t˜E‘{Ñ#ð		ð
 
÷	ð 	ð
¨Cð 
°D¸¸eÀFÈDÀLÑ>QÐ9QÑ4Rô 
ð&_˜6ð _ fô _ð:˜#÷ ò r?   r   c                   óh  ^ • \ rS rSrSrSSSSS\R                  S4S\S	\S
\S\S\	S\S\
\\      SS4U 4S jjjrS\S\\\4   S\\\\\	4   4   4S jr\R&                  R(                  S\4S j5       r\R&                  R(                  S\4S j5       rS\S\4S jrS\S\4S jrS\4S jrSrU =r$ )r   iÒ  ax  AugMix data augmentation method based on
`"AugMix: A Simple Data Processing Method to Improve Robustness and Uncertainty" <https://arxiv.org/abs/1912.02781>`_.
If the image is torch Tensor, it should be of type torch.uint8, and it is expected
to have [..., 1 or 3, H, W] shape, where ... means an arbitrary number of leading dimensions.
If img is PIL Image, it is expected to be in mode "L" or "RGB".

Args:
    severity (int): The severity of base augmentation operators. Default is ``3``.
    mixture_width (int): The number of augmentation chains. Default is ``3``.
    chain_depth (int): The depth of augmentation chains. A negative value denotes stochastic depth sampled from the interval [1, 3].
        Default is ``-1``.
    alpha (float): The hyperparameter for the probability distributions. Default is ``1.0``.
    all_ops (bool): Use all operations (including brightness, contrast, color and sharpness). Default is ``True``.
    interpolation (InterpolationMode): Desired interpolation enum defined by
        :class:`torchvision.transforms.InterpolationMode`. Default is ``InterpolationMode.NEAREST``.
        If input is Tensor, only ``InterpolationMode.NEAREST``, ``InterpolationMode.BILINEAR`` are supported.
    fill (sequence or number, optional): Pixel fill value for the area outside the transformed
        image. If given a number, the value is used for all bands respectively.
ro   éÿÿÿÿr   TNÚseverityÚmixture_widthÚchain_depthÚalphaÚall_opsr   r   rR   c                 óî   >• [         TU ]  5         SU l        SUs=::  a  U R                  ::  d  O  [        SU R                   SU S35      eXl        X l        X0l        X@l        XPl        X`l	        Xpl
        g )Nr¤   r   z!The severity must be between [1, z]. Got z	 instead.)rU   rV   Ú_PARAMETER_MAXr<   rë   rì   rí   rî   rï   r   r   )	rY   rë   rì   rí   rî   rï   r   r   rZ   s	           €r=   rV   ÚAugMix.__init__ç  sw   ø€ ô 	‰ÑÔØ ˆÔØ�XÕ4 ×!4Ñ!4Õ4ÜÐ@À×ATÑATÐ@UÐU\Ð]eÐ\fÐfoÐpÓqÐqØ ŒØ*ÔØ&ÔØŒ
ØŒØ*ÔØ�	r?   rŠ   r‹   c                 ó8  • [         R                  " SSU5      S4[         R                  " SSU5      S4[         R                  " SUS   S-  U5      S4[         R                  " SUS   S-  U5      S4[         R                  " SSU5      S4S[         R                  " U5      US-
  S-  -  R                  5       R	                  5       -
  S	4[         R                  " S
SU5      S	4[         R
                  " S5      S	4[         R
                  " S5      S	4S.	nU R                  (       av  UR                  [         R                  " SSU5      S4[         R                  " SSU5      S4[         R                  " SSU5      S4[         R                  " SSU5      S4S.5        U$ )Nr   ry   Tr   g      @r   rŽ   rm   Fr�   )	r   r   r   r   r   r%   r&   r'   r(   rz   )r!   r"   r#   r$   )r�   r‘   r’   r“   r1   r”   rï   Úupdate)rY   rŠ   r‹   rÛ   s       r=   r–   ÚAugMix._augmentation_spaceý  si  € ô —~’~ c¨3°Ó9¸4Ð@Ü—~’~ c¨3°Ó9¸4Ð@Ü Ÿ>š>¨#¨z¸!©}¸sÑ/BÀHÓMÈtÐTÜ Ÿ>š>¨#¨z¸!©}¸sÑ/BÀHÓMÈtÐTÜ—~’~ c¨4°Ó:¸DÐAØœuŸ|š|¨HÓ5¸(ÀQ¹,È!Ñ9KÑL×SÑSÓU×YÑYÓ[Ñ[Ð]bÐcÜŸš¨¨s°HÓ=¸uÐEÜ"Ÿ\š\¨#Ó.°Ð6ÜŸš cÓ*¨EÐ2ñ
ˆð �<�<Ø�H‰Hä#(§>¢>°#°s¸HÓ#EÀtÐ"LÜ#Ÿnšn¨S°#°xÓ@À$ÐGÜ!&§¢°°S¸(Ó!CÀTÐ JÜ"'§.¢.°°c¸8Ó"DÀdÐ!Kñ	ôð ˆr?   c                 ó.   • [         R                  " U5      $ rT   )r,   Úpil_to_tensor©rY   r   s     r=   Ú_pil_to_tensorÚAugMix._pil_to_tensor  s   € ä�Š˜sÓ#Ð#r?   r   c                 ó.   • [         R                  " U5      $ rT   )r,   Úto_pil_imagerø   s     r=   Ú_tensor_to_pilÚAugMix._tensor_to_pil  s   € ä�~Š~˜cÓ"Ð"r?   Úparamsc                 ó.   • [         R                  " U5      $ rT   )r�   Ú_sample_dirichlet)rY   rÿ   s     r=   r  ÚAugMix._sample_dirichlet  s   € ä×&Ò& vÓ.Ð.r?   Úorig_imgc                 óì  • U R                   n[        R                  " U5      u  p4n[        U[        5      (       aL  Un[        U[
        [        45      (       a  [        U5      /U-  nO0Ub  U Vs/ s H  n[        U5      PM     nnOU R                  U5      nU R                  U R                  XE45      n[        UR                  5      n	UR                  S/[        SUR                  -
  S5      -  U	-   5      n
U
R                  S5      /S/U
R                  S-
  -  -   nU R!                  ["        R$                  " U R&                  U R&                  /U
R(                  S9R+                  US   S5      5      nU R!                  ["        R$                  " U R&                  /U R,                  -  U
R(                  S9R+                  US   S5      5      USS2S4   R                  US   S/5      -  nUSS2S4   R                  U5      U
-  n[/        U R,                  5       GH  nU
nU R0                  S:”  a  U R0                  O,[        ["        R2                  " SSSS9R5                  5       5      n[/        U5       H÷  n[        ["        R2                  " [7        U5      S5      R5                  5       5      n[        UR9                  5       5      U   nUU   u  nnUR                  S:”  aH  [        U["        R2                  " U R:                  S["        R<                  S	9   R5                  5       5      OS
nU(       a!  ["        R2                  " SS5      (       a  US-  n[?        UUUU R@                  US9nMù     URC                  USS2U4   R                  U5      U-  5        GM‚     UR                  U	5      RE                  URF                  S	9n[        U[        5      (       d  U RI                  U5      $ U$ s  snf )rÑ   Nr   rm   r   )Údevicerê   rš   )ÚlowÚhighÚsizerã   r   ru   r¥   r    )%r   r,   r¦   r§   r   r1   r¨   rù   r–   rñ   r¾   ÚshapeÚviewÚmaxrÔ   r  r  r�   r”   rî   r  Úexpandrì   rÒ   rí   r›   rœ   r©   rÓ   rë   rå   r>   r   Úadd_Útorä   rý   )rY   r  r   r«   r¬   r­   r   r®   r°   Ú	orig_dimsÚbatchÚ
batch_dimsÚmÚcombined_weightsÚmixr±   ÚaugÚdepthrÕ   rÖ   r   r´   rµ   r   s                           r=   r¶   ÚAugMix.forward!  sY  € ð �y‰yˆÜ"#×"2Ò"2°8Ó"<Ñˆ˜%Ü�h¤×'Ñ'ØˆCÜ˜$¤¤e ×-Ñ-Ü˜d›�} xÑ/‘ØÑ!Ù*.Ó/ª$ Qœ˜až©$�Ð/øà×%Ñ% hÓ/ˆCà×*Ñ*¨4×+>Ñ+>ÀÀÓPˆä˜Ÿ™“Oˆ	Ø—‘˜!˜œs 1 s§x¡x¡<°Ó3Ñ3°iÑ?Ó@ˆØ—j‘j “m�_¨ s¨e¯j©j¸1©nÑ'=Ñ=ˆ
ð ×"Ñ"Ü�LŠL˜$Ÿ*™* d§j¡jÐ1¸%¿,¹,ÑG×NÑNÈzÐZ[É}Ð^`Óaó
ˆð
  ×1Ñ1Ü�LŠL˜$Ÿ*™*˜¨×(:Ñ(:Ñ:À5Ç<Á<ÑP×WÑWÐXbÐcdÑXeÐgiÓjó
àŠa�ˆd‰G�L‰L˜* Q™-¨Ð,Ó-ñ.Ðð ’�1�‰g�l‰l˜:Ó&¨Ñ.ˆÜ�t×)Ñ)×*ˆAØˆCØ(,×(8Ñ(8¸1Ó(<�D×$Ò$Ä#ÄeÇmÂmÐXYÐ`aÐhlÑFm×FrÑFrÓFtÓBuˆEÜ˜5–\�ÜœuŸ}š}¬S°«\¸4Ó@×EÑEÓGÓH�Ü˜wŸ|™|›~Ó.¨xÑ8�Ø%,¨WÑ%5Ñ"�
˜Fð "—‘¨Ó*ô ˜*¤U§]¢]°4·=±=À$ÌeÏjÉjÑ%YÑZ×_Ñ_ÓaÔbàð ö
 œeŸmšm¨A¨t×4Ñ4Ø Ñ%�IÜ  W¨iÀt×GYÑGYÐ`dÑe’ñ "ð �H‰HÐ%¢a¨ dÑ+×0Ñ0°Ó<¸sÑB×Cñ +ð  �h‰h�yÓ!×$Ñ$¨3¯9©9Ð$Ð5ˆä˜(¤F×+Ñ+Ø×&Ñ& sÓ+Ð+Øˆ
ùòU 0s   Á/O1c                 óî   • U R                   R                   SU R                   SU R                   SU R                   SU R
                   SU R                   SU R                   SU R                   S3nU$ )	Nz
(severity=z, mixture_width=z, chain_depth=z, alpha=z
, all_ops=rÙ   r¹   rº   )	rZ   rF   rë   rì   rí   rî   rï   r   r   rÚ   s     r=   r»   ÚAugMix.__repr__[  s   € à�~‰~×&Ñ&Ð'ð (ØŸ™�Ø˜t×1Ñ1Ð2Ø˜T×-Ñ-Ð.Ø�t—z‘z�lØ˜Ÿ™˜Ø˜t×1Ñ1Ð2Ø�d—i‘i�[Øðð 	
ð ˆr?   )rñ   rï   rî   rí   r   r   rì   rë   )rF   rG   rH   rI   rJ   r   ÚBILINEARr1   r¨   rÂ   r   r¾   rV   r¿   rÁ   rÀ   r   r–   r�   ÚjitÚunusedrù   rý   r  r¶   r»   rN   rÄ   rÅ   s   @r=   r   r   Ò  sC  ø† ñð, ØØØØØ+<×+EÑ+EØ&*ñàðð ðð ð	ð
 ðð ðð )ðð �t˜E‘{Ñ#ðð 
÷ð ð,¨Cð ¸UÀ3ÈÀ8¹_ð ÐQUÐVYÐ[`ÐagÐimÐamÑ[nÐVnÑQoô ð0 ‡Y�Y×Ñð$ Vó $ó ð$ð ‡Y�Y×Ñð# &ó #ó ð#ð/¨ð /°6ô /ð8 ð 8¨6ô 8ðt˜#÷ ò r?   r   )r.   Úenumr   Útypingr   r�   r   Ú r   r,   r   Ú__all__rÀ   r¨   r¾   r>   r	   ÚnnÚModuler
   r   r   r   rE   r?   r=   Ú<module>r#     sÅ   ðÛ Ý Ý ã Ý ç 0â
]€ðMØ	ðMØðMØ*/ðMØ@QðMØYaÐbfÐglÑbmÑYnôMô`˜ô ôtT�%—(‘(—/‘/ô tTônZ�%—(‘(—/‘/ô ZôzS˜Ÿ™Ÿ™ô SôlUˆU�X‰X�_‰_õ Ur?   