Ë
    éÓ^jåP  ã                   ó´  — d Z ddlmZmZmZmZ ddlZddlmZ ddl	m
Z
mZ ddlmZmZmZmZmZmZmZmZ ddlmZ ddlmZ dd	lmZmZ d
gZ G d„ dej:                  «      Z G d„ dej:                  «      Z G d„ dej:                  «      Z  G d„ d
ej:                  «      Z!dd„Z"dd„Z# e e#d¬«       e#d¬«      dœ«      Z$edde!fd„«       Z%edde!fd„«       Z&y)zð Visformer

Paper: Visformer: The Vision-friendly Transformer - https://arxiv.org/abs/2104.12533

From original at https://github.com/danczs/Visformer

Modifications and additions for timm hacked together by / Copyright 2021, Ross Wightman
é    )ÚOptionalÚUnionÚTypeÚAnyN©ÚIMAGENET_DEFAULT_MEANÚIMAGENET_DEFAULT_STD)Ú	to_2tupleÚtrunc_normal_ÚDropPathÚcalculate_drop_path_ratesÚ
PatchEmbedÚLayerNorm2dÚcreate_classifierÚuse_fused_attné   )Úbuild_model_with_cfg)Úcheckpoint_seq)Úregister_modelÚgenerate_default_cfgsÚ	Visformerc                   óŽ   ‡ — e Zd Zddej                  dddddfdedee   dee   deej                     d	e	d
ede
fˆ fd„Zd„ Zˆ xZS )Ú
SpatialMlpNç        é   FÚin_featuresÚhidden_featuresÚout_featuresÚ	act_layerÚdropÚgroupÚspatial_convc
                 ó”  •— ||	dœ}
t         ‰| �  «        |xs |}|xs |}t        |«      }|| _        || _        || _        | j
                  r|dk  r	|dz  dz  }n|dz  }|| _        || _        t        j                  ||dfddddœ|
¤Ž| _
         |«       | _        t        j                  |d   «      | _        | j
                  r9t        j                  ||d	fdd| j                  dd
œ|
¤Ž| _         |«       | _        nd | _        d | _        t        j                  ||dfddddœ|
¤Ž| _        t        j                  |d   «      | _        y )N©ÚdeviceÚdtypeé   é   é   r   r   F©ÚstrideÚpaddingÚbiasé   )r+   r,   Úgroupsr-   )ÚsuperÚ__init__r
   r   r   r"   r   r!   ÚnnÚConv2dÚconv1Úact1ÚDropoutÚdrop1Úconv2Úact2Úconv3Údrop3)Úselfr   r   r   r   r    r!   r"   r%   r&   ÚddÚ
drop_probsÚ	__class__s               €ú`/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/models/visformer.pyr1   zSpatialMlp.__init__   sX  ø€ ð ¨Ñ/ˆÜ‰ÑÔØ#Ò2 {ˆØ)Ò8¨[ˆÜ˜t“_ˆ
à&ˆÔØ(ˆÔØ(ˆÔØ×ÒØ�qŠyØ"-°¡/°QÑ"6‘à"-°¡/�Ø.ˆÔØˆŒ
Ü—Y‘Y˜{¨O¸QÐfÀqÐRSÐZ_ÑfÐceÑfˆŒ
Ù“KˆŒ	Ü—Z‘Z 
¨1¡Ó.ˆŒ
Ø×ÒÜŸ™Ø °!ðoØ<=ÀqÐQU×Q[ÑQ[ÐbgñoØkmñoˆDŒJá!›ˆD�IàˆDŒJØˆDŒIÜ—Y‘Y˜°¸aÐgÈÐSTÐ[`ÑgÐdfÑgˆŒ
Ü—Z‘Z 
¨1¡Ó.ˆ�
ó    c                 ó  — | j                  |«      }| j                  |«      }| j                  |«      }| j                  �"| j                  |«      }| j	                  |«      }| j                  |«      }| j                  |«      }|S ©N)r4   r5   r7   r8   r9   r:   r;   ©r<   Úxs     r@   ÚforwardzSpatialMlp.forwardB   sl   € Ø�J‰J�q‹MˆØ�I‰I�a‹LˆØ�J‰J�q‹MˆØ�:‰:Ð!Ø—
‘
˜1“ˆAØ—	‘	˜!“ˆAØ�J‰J�q‹MˆØ�J‰J�q‹MˆØˆrA   )Ú__name__Ú
__module__Ú__qualname__r2   ÚGELUÚintr   r   ÚModuleÚfloatÚboolr1   rF   Ú__classcell__©r?   s   @r@   r   r      s€   ø„ ð .2Ø*.Ø)+¯©ØØØ!&ØØñ'/àð'/ð & c™]ð'/ð # 3™-ð	'/ð
 ˜BŸI™I‘ð'/ð ð'/ð ð'/ð õ'/öR	rA   r   c                   ó‚   ‡ — e Zd ZU ej                  j
                  e   ed<   	 	 	 	 	 	 d	dedede	de	de	f
ˆ fd„Z
d„ Zˆ xZS )
Ú	AttentionÚ
fused_attnÚdimÚ	num_headsÚhead_dim_ratioÚ	attn_dropÚ	proj_dropc                 óÔ  •— ||dœ}t         ‰
| �  «        || _        || _        t	        ||z  |z  «      }	|	| _        |	dz  | _        t        d¬«      | _        t        j                  ||	|z  dz  dfdddd	œ|¤Ž| _        t        j                  |«      | _        t        j                  | j
                  | j                  z  |dfdddd	œ|¤Ž| _        t        j                  |«      | _        y )
Nr$   g      à¿T)Úexperimentalr.   r   r   Fr*   )r0   r1   rT   rU   ÚroundÚhead_dimÚscaler   rS   r2   r3   Úqkvr6   rW   ÚprojrX   )r<   rT   rU   rV   rW   rX   r%   r&   r=   r\   r?   s             €r@   r1   zAttention.__init__Q   sÜ   ø€ ð ¨Ñ/ˆÜ‰ÑÔØˆŒØ"ˆŒÜ˜ 	Ñ)¨NÑ:Ó;ˆØ ˆŒØ Ñ%ˆŒ
Ü(°dÔ;ˆŒä—9‘9˜S (¨YÑ"6¸Ñ":¸AÐeÀaÐQRÐY^ÑeÐbdÑeˆŒÜŸ™ IÓ.ˆŒÜ—I‘I˜dŸm™m¨d¯n©nÑ<¸cÀ1ÐlÈQÐXYÐ`eÑlÐikÑlˆŒ	ÜŸ™ IÓ.ˆ�rA   c                 ó  — |j                   \  }}}}| j                  |«      j                  |d| j                  | j                  d«      j                  ddddd«      }|j                  d«      \  }}}| j                  rzt        j                  j                  j                  |j                  «       |j                  «       |j                  «       | j                  r| j                  j                  nd¬«      }nJ||j!                  d	d«      z  | j"                  z  }	|	j%                  d¬
«      }	| j                  |	«      }	|	|z  }|j                  dddd«      j                  |d||«      }| j'                  |«      }| j)                  |«      }|S )Nr.   éÿÿÿÿr   r   r'   é   r   )Ú	dropout_péþÿÿÿ)rT   )Úshaper^   ÚreshaperU   r\   ÚpermuteÚunbindrS   Útorchr2   Ú
functionalÚscaled_dot_product_attentionÚ
contiguousÚtrainingrW   ÚpÚ	transposer]   Úsoftmaxr_   rX   )
r<   rE   ÚBÚCÚHÚWÚqÚkÚvÚattns
             r@   rF   zAttention.forwardi   sG  € Ø—W‘W‰
ˆˆ1ˆa�Ø�H‰H�Q‹K×Ñ  1 d§n¡n°d·m±mÀRÓH×PÑPÐQRÐTUÐWXÐZ[Ð]^Ó_ˆØ—(‘(˜1“+‰ˆˆ1ˆaà�?Š?Ü—‘×#Ñ#×@Ñ@Ø—‘“ §¡£°·±³Ø.2¯mªm˜$Ÿ.™.×*Ò*Àð Aó ‰Að
 ˜Ÿ™ B¨Ó+Ñ+¨t¯z©zÑ9ˆDØ—<‘< B�<Ó'ˆDØ—>‘> $Ó'ˆDØ�q‘ˆAà�I‰I�a˜˜A˜qÓ!×)Ñ)¨!¨R°°AÓ6ˆØ�I‰I�a‹LˆØ�N‰N˜1ÓˆØˆrA   )r   ç      ð?r   r   NN)rG   rH   rI   ri   ÚjitÚFinalrN   Ú__annotations__rK   rM   r1   rF   rO   rP   s   @r@   rR   rR   N   sd   ø… Ø—	‘	—‘ Ñ%Ó%ð
 Ø$&Ø!Ø!ØØñ/àð/ð ð/ð "ð	/ð
 ð/ð õ/ö0rA   rR   c                   ó¸   ‡ — e Zd Zdddddej                  edddddfdeded	ed
ededededeej                     deej                     dede
de
fˆ fd„Zd„ Zˆ xZS )ÚBlockry   ç      @r   r   FNrT   rU   rV   Ú	mlp_ratiorX   rW   Ú	drop_pathr   Ú
norm_layerr!   Úattn_disabledr"   c           
      óX  •— ||dœ}t         ‰| �  «        || _        |dkD  rt        |«      nt	        j
                  «       | _        |rd | _        d | _        n$ |	|fi |¤Ž| _        t        |f||||dœ|¤Ž| _         |	|fi |¤Ž| _
        t        d|t        ||z  «      |||
|dœ|¤Ž| _        y )Nr$   r   )rU   rV   rW   rX   )r   r   r   r    r!   r"   © )r0   r1   r"   r   r2   ÚIdentityr�   Únorm1rx   rR   Únorm2r   rK   Úmlp)r<   rT   rU   rV   r€   rX   rW   r�   r   r‚   r!   rƒ   r"   r%   r&   r=   r?   s                   €r@   r1   zBlock.__init__€   sÑ   ø€ ð" ¨Ñ/ˆÜ‰ÑÔØ(ˆÔØ09¸B²œ )Ô,ÄBÇKÁKÃMˆŒÙØˆDŒJØˆD�Iá# CÑ.¨2Ñ.ˆDŒJÜ!Øðà#Ø-Ø#Ø#ñð ñˆDŒIñ   Ñ* rÑ*ˆŒ
Üð 
ØÜ  i¡Ó0ØØØØ%ñ
ð ñ
ˆ�rA   c                 óæ   — | j                   �2|| j                  | j                  | j                  |«      «      «      z   }|| j                  | j                  | j	                  |«      «      «      z   }|S rC   )rx   r�   r‡   r‰   rˆ   rD   s     r@   rF   zBlock.forward®   sY   € Ø�9‰9Ð Ø�D—N‘N 4§9¡9¨T¯Z©Z¸«]Ó#;Ó<Ñ<ˆAØ�—‘˜tŸx™x¨¯
©
°1«Ó6Ó7Ñ7ˆØˆrA   )rG   rH   rI   r2   rJ   r   rK   rM   r   rL   rN   r1   rF   rO   rP   s   @r@   r~   r~      s¾   ø„ ð
 %'Ø!Ø!Ø!Ø!Ø)+¯©Ø*5ØØ"'Ø!&ØØñ,
àð,
ð ð,
ð "ð	,
ð
 ð,
ð ð,
ð ð,
ð ð,
ð ˜BŸI™I‘ð,
ð ˜RŸY™Y™ð,
ð ð,
ð  ð,
ð õ,
ö\rA   r~   c            1       óò  ‡ — e Zd Zddddddddd	d
d
d
d
d
eddddddddddfdededededee   dedeeef   dededededededede	e
j                     d ed!ed"ed#ed$ed%ed&ed'ee	e
j                        f.ˆ fd(„Zd)„ Zej"                  j$                  d3d*„«       Zej"                  j$                  d4d+„«       Zej"                  j$                  d,e
j                  fd-„«       Zd5ded%efd.„Zd/„ Zd3d0efd1„Zd2„ Zˆ xZS )6r   éà   é   r.   éè  é    é€  é   r)   r   r   Ú111TFr   ÚavgNÚimg_sizeÚ
patch_sizeÚin_chansÚnum_classesÚinit_channelsÚ	embed_dimÚdepthrU   r€   Ú	drop_rateÚpos_drop_rateÚproj_drop_rateÚattn_drop_rateÚdrop_path_rater‚   Ú
attn_stageÚuse_pos_embedr"   Úvit_stemr!   Úglobal_poolÚ	conv_initÚ
embed_normc                 ó„  •— t         ‰| �  «        ||dœ}t        |«      }|| _        || _        || _        || _        || _        || _        || _	        t        |t        t        f«      r!|\  | _        | _        | _        t!        |«      }n2|dz  x| _        | _        || j                  z
  | j                  z
  | _        || _        d| _        t'        ||«      }| j                  r2d | _        t+        d|||||ddœ|¤Ž| _        |D �cg c]  }||z  ‘Œ	 }}�n| j                  €:d | _        t+        d||dz  ||dz  |ddœ|¤Ž| _        |D �cg c]
  }||dz  z  ‘Œ }}nÀt/        j0                  t/        j2                  || j                  dfddddœ|¤Žt/        j4                  | j                  fi |¤Žt/        j6                  d¬	«      «      | _        |D �cg c]  }|dz  ‘Œ	 }}t+        d||d
z  | j                  |dz  |ddœ|¤Ž| _        |D �cg c]
  }||d
z  z  ‘Œ }}| j"                  r�| j                  r3t/        j8                  t;        j<                  d|g|¢­i |¤Ž«      | _        n5t/        j8                  t;        j<                  d|dz  g|¢­i |¤Ž«      | _        t/        j@                  |¬«      | _!        nd | _        t/        j0                  tE        | j                  «      D �cg c]+  }tG        d|dz  |d|	||||   |||d   dk(  |d   dk(  dœ|¤Ž‘Œ- c}Ž | _$        | j                  syt+        d||dz  |dz  ||ddœ|¤Ž| _%        |D �cg c]
  }||dz  z  ‘Œ }}| j"                  r3t/        j8                  t;        j<                  d|g|¢­i |¤Ž«      | _&        nd | _&        nd | _%        t/        j0                  tE        | j                  | j                  | j                  z   «      D �cg c](  }tG        d||d|	||||   |||d   dk(  |d   dk(  dœ|¤Ž‘Œ* c}Ž | _'        | j                  s|t+        d||dz  ||dz  |ddœ|¤Ž| _(        |D �cg c]
  }||dz  z  ‘Œ }}| j"                  r6t/        j8                  t;        j<                  d|dz  g|¢­i |¤Ž«      | _)        nd | _)        nd | _(        t/        j0                  tE        | j                  | j                  z   |«      D �cg c]+  }tG        d|dz  |d|	||||   |||d   dk(  |d   dk(  dœ|¤Ž‘Œ- c}Ž | _*        | j                  r|n|dz  x| _+        | _,         || jV                  fi |¤Ž| _-        t]        | jV                  | j                  |||¬«      \  }}|| _/        t/        j@                  |
«      | _0        || _1        | j"                  rQte        | j>                  d¬«       | j                  s.te        | jL                  d¬«       te        | jR                  d¬«       | jg                  | jh                  «       y c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )Nr$   r.   F)r”   r•   r–   r™   r‚   Úflattenr'   é   r*   T)Úinplacerb   r   )rn   g      à?r   Ú0Ú1)rT   rU   rV   r€   rX   rW   r�   r‚   r!   rƒ   r"   r   ry   ©Ú	pool_typer%   r&   ç{®Gáz”?©Ústdr…   )5r0   r1   r
   r—   r–   r™   r˜   r”   r¢   r¤   Ú
isinstanceÚlistÚtupleÚ
stage_num1Ú
stage_num2Ú
stage_num3Úsumr¡   Úgrad_checkpointingr   Ústemr   Úpatch_embed1r2   Ú
Sequentialr3   ÚBatchNorm2dÚReLUÚ	Parameterri   ÚzerosÚ
pos_embed1r6   Úpos_dropÚranger~   Ústage1Úpatch_embed2Ú
pos_embed2Ústage2Úpatch_embed3Ú
pos_embed3Ústage3Únum_featuresÚhead_hidden_sizeÚnormr   r£   Ú	head_dropÚheadr   ÚapplyÚ_init_weights) r<   r”   r•   r–   r—   r˜   r™   rš   rU   r€   r›   rœ   r�   rž   rŸ   r‚   r    r¡   r"   r¢   r!   r£   r¤   r¥   r%   r&   r=   ÚdprrE   ÚirÎ   r?   s                                   €r@   r1   zVisformer.__init__¶   s¨  ø€ ô8 	‰ÑÔØ¨Ñ/ˆÜ˜XÓ&ˆØ&ˆÔØ ˆŒØ"ˆŒØ*ˆÔØ ˆŒØ ˆŒØ"ˆŒÜ�eœd¤E˜]Ô+Ø@EÑ=ˆDŒO˜Tœ_¨d¬oÜ˜“J‰Eà05¸±
Ð:ˆDŒO˜dœoØ# d§o¡oÑ5¸¿¹ÑGˆDŒOØ*ˆÔØ"'ˆÔä'¨¸Ó>ˆà�=Š=ØˆDŒIÜ *ð !Ø!Ø%Ø!Ø#Ø%Øñ!ð ñ!ˆDÔð 2:Ö:¨A˜˜Z›Ð:ˆHÒ:à×!Ñ!Ð)Ø �”	Ü$.ð %Ø%Ø)¨Q™Ø%Ø'¨1™nØ)Ø!ñ%ð ñ%�Ô!ð =EÖE°q˜A *°¡/Ó2ÐE�ÑEäŸM™MÜ—I‘I˜h¨×(:Ñ(:¸AÐeÀaÐQRÐY^ÑeÐbdÑeÜ—N‘N 4×#5Ñ#5Ñ<¸Ñ<Ü—G‘G DÔ)ó�”	ð
 -5Ö5 q˜A ›FÐ5�Ð5Ü$.ð %Ø%Ø)¨Q™Ø!×/Ñ/Ø'¨1™nØ)Ø!ñ%ð ñ%�Ô!ð =EÖE°q˜A *°¡/Ó2ÐE�ÐEà×ÒØ�}Š}Ü"$§,¡,¬u¯{©{¸1¸iÐ/YÈ(Ò/YÐVXÑ/YÓ"Z�•ä"$§,¡,¬u¯{©{¸1¸iÈ¹lÐ/\ÈXÒ/\ÐY[Ñ/\Ó"]�”ÜŸJ™J¨Ô7ˆD�Mà"ˆDŒOä—m‘mô ˜4Ÿ?™?Ó+ö&
ð ô ð Ø˜q‘LØ#Ø"Ø#Ø(Ø(Ø˜a™&Ø%ØØ)¨!™}°Ñ3Ø*¨1™o°Ñ4ñð óò&
ð ˆŒð& �}Š}Ü *ð !Ø!Ø%¨™?Ø" a™Ø#Ø%Øñ!ð ñ!ˆDÔð 9AÖA°1˜˜j¨A™oÓ.ÐAˆHÐAØ×!Ò!Ü"$§,¡,¬u¯{©{¸1¸iÐ/YÈ(Ò/YÐVXÑ/YÓ"Z�•à"&�•à $ˆDÔÜ—m‘mô ˜4Ÿ?™?¨D¯O©O¸D¿O¹OÑ,KÓLö&
ð ô ð ØØ#Ø"Ø#Ø(Ø(Ø˜a™&Ø%ØØ)¨!™}°Ñ3Ø*¨1™o°Ñ4ñð óò&
ð ˆŒð& �}Š}Ü *ð !Ø!Ø%¨™?Ø"Ø# a™-Ø%Øñ!ð ñ!ˆDÔð 9AÖA°1˜˜j¨A™oÓ.ÐAˆHÐAØ×!Ò!Ü"$§,¡,¬u¯{©{¸1¸iÈ¹kÐ/[ÈHÒ/[ÐXZÑ/[Ó"\�•à"&�•à $ˆDÔÜ—m‘mô ˜4Ÿ?™?¨4¯?©?Ñ:¸EÓBö&
ð ô ð Ø ‘MØ#Ø"Ø#Ø(Ø(Ø˜a™&Ø%ØØ)¨!™}°Ñ3Ø*¨1™o°Ñ4ñð óò&
ð ˆŒð$ BFÇÂ±IÐT]Ð`aÑTaÐaˆÔ˜DÔ1Ù˜t×0Ñ0Ñ7°BÑ7ˆŒ	ô .Ø×ÑØ×ÑØ!ØØô
Ñˆ�Tð 'ˆÔÜŸ™ IÓ.ˆŒØˆŒ	ð ×ÒÜ˜$Ÿ/™/¨tÕ4Ø—=’=Ü˜dŸo™o°4Õ8Ü˜dŸo™o°4Õ8Ø�
‰
�4×%Ñ%Õ&ùòq ;ùò Fùò 6ùò Fùò&
ùò: Bùò&
ùò: Bùò&
s6   ÄXÅXÇXÈX$Ë!0X)ÍX.Ï$-X3ÑX8Ó0X=c                 ó  — t        |t        j                  «      rOt        |j                  d¬«       |j
                  �+t        j                  j                  |j
                  d«       y y t        |t        j                  «      rˆ| j                  r-t        j                  j                  |j                  dd¬«       nt        |j                  d¬«       |j
                  �+t        j                  j                  |j
                  d«       y y y )Nr®   r¯   r   Úfan_outÚrelu)ÚmodeÚnonlinearityr   )r±   r2   ÚLinearr   Úweightr-   ÚinitÚ	constant_r3   r¤   Úkaiming_normal_)r<   Úms     r@   rÐ   zVisformer._init_weightsŒ  s±   € Ü�aœŸ™Ô#Ü˜!Ÿ(™(¨Õ-Ø�v‰vÐ!Ü—‘×!Ñ! !§&¡&¨!Õ,ð "ä˜œ2Ÿ9™9Ô%Ø�~Š~Ü—‘×'Ñ'¨¯©°yÈvÐ'ÕVä˜aŸh™h¨DÕ1Ø�v‰vÐ!Ü—‘×!Ñ! !§&¡&¨"Õ-ð "ð &rA   c                 ó.   — t        d|rdndd fddg¬«      S )Nz^patch_embed1|pos_embed1|stemz^stage(\d+)\.(\d+))z^(?:patch_embed|pos_embed)(\d+))r   )z^norm)iŸ† )r¹   Úblocks)Údict)r<   Úcoarses     r@   Úgroup_matcherzVisformer.group_matcher™  s+   € äØ1á*0Ñ&Ð6KÈTÐRØ:Ø$ðô
ð 	
rA   c                 ó   — || _         y rC   )r¸   )r<   Úenables     r@   Úset_grad_checkpointingz Visformer.set_grad_checkpointing¤  s
   € à"(ˆÕrA   Úreturnc                 ó   — | j                   S rC   )rÎ   )r<   s    r@   Úget_classifierzVisformer.get_classifier¨  s   € à�y‰yÐrA   c                 óT  — || _         t        | j                  d«      r | j                  j                  j                  nd }t        | j                  d«      r | j                  j                  j
                  nd }t        | j                  | j                   |||¬«      \  | _        | _        y )NrÙ   r¬   )	r—   ÚhasattrrÎ   rÙ   r%   r&   r   rÊ   r£   )r<   r—   r£   r%   r&   s        r@   Úreset_classifierzVisformer.reset_classifier¬  s   € Ø&ˆÔÜ,3°D·I±I¸xÔ,H�—‘×!Ñ!×(Ò(ÈdˆÜ*1°$·)±)¸XÔ*F�—	‘	× Ñ ×&Ò&ÈDˆÜ&7Ø×Ñ˜t×/Ñ/¸;ÈvÐ]bô'dÑ#ˆÔ˜$�)rA   c                 óà  — | j                   �| j                  |«      }| j                  |«      }| j                  �| j                  || j                  z   «      }| j                  r5t
        j                  j                  «       st        | j                  |«      }n| j                  |«      }| j                  �;| j                  |«      }| j                  �| j                  || j                  z   «      }| j                  r5t
        j                  j                  «       st        | j                  |«      }n| j                  |«      }| j                  �;| j                  |«      }| j                  �| j                  || j                  z   «      }| j                  r5t
        j                  j                  «       st        | j                  |«      }n| j                  |«      }| j!                  |«      }|S rC   )r¹   rº   rÀ   rÁ   r¸   ri   rz   Úis_scriptingr   rÃ   rÄ   rÅ   rÆ   rÇ   rÈ   rÉ   rÌ   rD   s     r@   Úforward_featureszVisformer.forward_features³  s{  € Ø�9‰9Ð Ø—	‘	˜!“ˆAð ×Ñ˜aÓ ˆØ�?‰?Ð&Ø—‘˜a $§/¡/Ñ1Ó2ˆAØ×"Ò"¬5¯9©9×+AÑ+AÔ+CÜ˜tŸ{™{¨AÓ.‰Aà—‘˜A“ˆAð ×ÑÐ(Ø×!Ñ! !Ó$ˆAØ�‰Ð*Ø—M‘M ! d§o¡oÑ"5Ó6�Ø×"Ò"¬5¯9©9×+AÑ+AÔ+CÜ˜tŸ{™{¨AÓ.‰Aà—‘˜A“ˆAð ×ÑÐ(Ø×!Ñ! !Ó$ˆAØ�‰Ð*Ø—M‘M ! d§o¡oÑ"5Ó6�Ø×"Ò"¬5¯9©9×+AÑ+AÔ+CÜ˜tŸ{™{¨AÓ.‰Aà—‘˜A“ˆAà�I‰I�a‹LˆØˆrA   Ú
pre_logitsc                 óp   — | j                  |«      }| j                  |«      }|r|S | j                  |«      S rC   )r£   rÍ   rÎ   )r<   rE   rï   s      r@   Úforward_headzVisformer.forward_head×  s5   € Ø×Ñ˜QÓˆØ�N‰N˜1ÓˆÙˆqÐ0 D§I¡I¨a£LÐ0rA   c                 óJ   — | j                  |«      }| j                  |«      }|S rC   )rî   rñ   rD   s     r@   rF   zVisformer.forwardÜ  s'   € Ø×!Ñ! !Ó$ˆØ×Ñ˜aÓ ˆØˆrA   ©F)T)r“   )rG   rH   rI   r   rK   r   r   r³   rM   r   r2   rL   ÚstrrN   r1   rÐ   ri   rz   Úignorerâ   rå   rè   rë   rî   rñ   rF   rO   rP   s   @r@   r   r   µ   s  ø„ ð  Ø ØØ#Ø+-Ø Ø')ØØ!Ø!Ø#%Ø$&Ø$&Ø$&Ø*5Ø#Ø"&Ø %Ø"ØØ$Ø#Ø48ØØñ5T'àðT'ð ðT'ð ð	T'ð
 ðT'ð $ C™=ðT'ð ðT'ð ˜˜e˜Ñ$ðT'ð ðT'ð ðT'ð ðT'ð !ðT'ð "ðT'ð "ðT'ð "ðT'ð  ˜RŸY™Y™ð!T'ð" ð#T'ð$  ð%T'ð& ð'T'ð( ð)T'ð* ð+T'ð, ð-T'ð. ð/T'ð0 !  b§i¡i¡Ñ1õ1T'òl.ð ‡Y�Y×Ñò
ó ð
ð ‡Y�Y×Ñò)ó ð)ð ‡Y�Y×Ñð §	¡	ò ó ðñd¨Cð d¸có dò"ñH1¨$ó 1ö
rA   c                 ód   — |j                  dd «      rt        d«      ‚t        t        | |fi |¤Ž}|S )NÚfeatures_onlyz<features_only not implemented for Vision Transformer models.)ÚgetÚRuntimeErrorr   r   )ÚvariantÚ
pretrainedÚdefault_cfgÚkwargsÚmodels        r@   Ú_create_visformerrÿ   â  s4   € Ø‡z�z�/ 4Ô(ÜÐYÓZÐZÜ ¤¨G°ZÑJÀ6ÑJ€EØ€LrA   c                 ó4   — | ddddddt         t        ddd	d
œ|¥S )NrŽ   )r.   rŒ   rŒ   )r¨   r¨   gÍÌÌÌÌÌì?ÚbicubicTzstem.0rÎ   z
apache-2.0)Úurlr—   Ú
input_sizeÚ	pool_sizeÚcrop_pctÚinterpolationÚfixed_input_sizeÚmeanr°   Ú
first_convÚ
classifierÚlicenser   )r  rý   s     r@   Ú_cfgr  é  s5   € àØ¨=ÀvØ¨ÈÜ%Ô.BØ¨fØñð ðð rA   ztimm/)Ú	hf_hub_id)zvisformer_tiny.in1kzvisformer_small.in1kræ   c                 ó˜   — t        ddddddddt        j                  d	t        j                  ¬
«      }t        dd| it        |fi |¤Ž¤Ž}|S )Nr�   éÀ   ©r¨   rb   rb   r.   r   r   Ú011Ú100T©r˜   r™   rš   rU   r€   r!   r    r"   r‚   r¤   r¥   rû   )Úvisformer_tiny©rà   r2   r¼   rÿ   ©rû   rý   Ú	model_cfgrþ   s       r@   r  r  û  sT   € äØ C¨yÀAÐQSÐ[\Ø u¼¿¹ÐSWÜ—>‘>ô#€Iô Ñc¸:ÐcÌÈiÑIbÐ[aÑIbÑc€EØ€LrA   c                 ó˜   — t        ddddddddt        j                  d	t        j                  ¬
«      }t        dd| it        |fi |¤Ž¤Ž}|S )Nr�   r�   r  r)   r   r   r  r  Tr  rû   )Úvisformer_smallr  r  s       r@   r  r    sT   € äØ C¨yÀAÐQSÐ[\Ø u¼¿¹ÐSWÜ—>‘>ô#€Iô Ñd¸JÐdÌ$ÈyÑJcÐ\bÑJcÑd€EØ€LrA   )FN)Ú ró   )'Ú__doc__Útypingr   r   r   r   ri   Útorch.nnr2   Ú	timm.datar   r	   Útimm.layersr
   r   r   r   r   r   r   r   Ú_builderr   Ú_manipulater   Ú	_registryr   r   Ú__all__rL   r   rR   r~   r   rÿ   r  Údefault_cfgsr  r  r…   rA   r@   ú<module>r%     sä   ðñ÷ .Ó -Û Ý ç A÷ R÷  Ró  Rå *Ý 'ß <àˆ-€ô3�—‘ô 3ôl.�—	‘	ô .ôb3ˆB�I‰Iô 3ôlj�—	‘	ô jóZ	ó	ñ %Ù¨'Ô2Ù ¨7Ô3ñ&ó €ð ñ°)ò ó ðð ñ°9ò ó ñrA   