+
    œ°³j¼Ï  ã                   ó�  € R t ^ RIt^ RIt^ RIHt ^ RIHt ^ RIt^ RIH	t	 ^ RI
Ht ^RIHt ^RIHt ^RIHt ^R	IHtHtHtHt ^R
IHt ^RIHt ^RIHtHtHt ^RI H!t! ]PD                  ! ]#4      t$]! RR7      ] ! R R]4      4       4       t% ! R R]	PL                  4      t' ! R R]	PL                  4      t( ! R R]	PL                  4      t) ! R R])4      t* ! R R]	PL                  4      t+R])R]*/t, ! R R]	PL                  4      t- ! R  R!]	PL                  4      t. ! R" R#]	PL                  4      t/ ! R$ R%]	PL                  4      t0 ! R& R']4      t1 ! R( R)]	PL                  4      t2 ! R* R+]	PL                  4      t3] ! R, R-]4      4       t4] ! R. R/]44      4       t5 ! R0 R1]	PL                  4      t6]! R2R7       ! R3 R4]44      4       t7 ! R5 R6]	PL                  4      t8 ! R7 R8]	PL                  4      t9 ! R9 R:]	PL                  4      t: ! R; R<]	PL                  4      t; ! R= R>]	PL                  4      t<] ! R? R@]44      4       t=. RAOt>R# )BzPyTorch Data2VecVision model.N)Ú	dataclass)ÚOptional)Únn)ÚCrossEntropyLoss)Úinitialization)ÚACT2FN)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithPoolingÚImageClassifierOutputÚSemanticSegmenterOutput)ÚPreTrainedModel)Ú#compile_compatible_method_lru_cache)Úauto_docstringÚloggingÚ	torch_int©ÚData2VecVisionConfigz7
    Class for outputs of [`Data2VecVisionModel`].
    )Úcustom_introc                   ó   € ] tR t^+tRtRtR# )Ú$Data2VecVisionModelOutputWithPoolinga2  
pooler_output (`torch.FloatTensor` of shape `(batch_size, hidden_size)`):
    Average of the last layer hidden states of the patch tokens (excluding the *[CLS]* token) if
    *config.use_mean_pooling* is set to True. If set to False, then the final hidden state of the *[CLS]* token
    will be returned.
© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   ó    Úv/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/data2vec/modeling_data2vec_vision.pyr   r   +   s   † õr   r   c                   ój   a a€ ] tR t^<t oRtV3R lV 3R lltV3R lR ltR	V3R lR lltRtVt	V ;t
# )
ÚData2VecVisionEmbeddingsz[
Construct the CLS token, position and patch embeddings. Optionally, also the mask token.

c                ó$   <€ V ^8„  d   QhRS[ RR/# ©é   ÚconfigÚreturnNr   )ÚformatÚ__classdict__s   "€r   Ú__annotate__Ú%Data2VecVisionEmbeddings.__annotate__B   s   ø€ ÷ >ñ >Ñ3ð >¸ñ >r   c                ón  <€ \         SV `  4        \        P                  ! \        P
                  ! ^^VP                  4      4      V n        VP                  '       d=   \        P                  ! \        P
                  ! ^^VP                  4      4      V n	        MRV n	        \        V4      V n        VP                  V n        \        VP                  \        P                   P"                  4      '       d   VP                  MVP                  VP                  3V n        V P                  P$                  pVP&                  '       dD   \        P                  ! \        P
                  ! ^V^,           VP                  4      4      V n        MRV n        \        P*                  ! VP,                  4      V n        R# )é   N)ÚsuperÚ__init__r   Ú	ParameterÚtorchÚzerosÚhidden_sizeÚ	cls_tokenÚuse_mask_tokenÚ
mask_tokenÚData2VecVisionPatchEmbeddingsÚpatch_embeddingsÚ
patch_sizeÚ
isinstanceÚ
image_sizeÚcollectionsÚabcÚIterableÚnum_patchesÚ use_absolute_position_embeddingsÚposition_embeddingsÚDropoutÚhidden_dropout_probÚdropout)Úselfr%   r>   Ú	__class__s   && €r   r.   Ú!Data2VecVisionEmbeddings.__init__B   s-  ø€ Ü‰ÑÔäŸš¤e§k¢k°!°Q¸×8JÑ8JÓ&KÓLˆŒØ× × Ð Ü Ÿlšl¬5¯;ª;°q¸!¸V×=OÑ=OÓ+PÓQˆD�Oà"ˆDŒOÜ =¸fÓ EˆÔØ ×+Ñ+ˆŒô ˜&×+Ñ+¬[¯_©_×-EÑ-E×FÒFð ×Òà×#Ñ# V×%6Ñ%6Ð7ð 	Œð
 ×+Ñ+×7Ñ7ˆØ×2×2Ð2Ü')§|¢|´E·K²KÀÀ;ÐQRÅ?ÐTZ×TfÑTfÓ4gÓ'hˆDÕ$à'+ˆDÔ$Ü—z’z &×"<Ñ"<Ó=ˆŽr   c                óZ   <€ V ^8„  d   QhRS[ P                  RS[RS[RS[ P                  /# )r$   Ú
embeddingsÚheightÚwidthr&   )r0   ÚTensorÚint)r'   r(   s   "€r   r)   r*   Y   s;   ø€ ÷ &Dñ &D±5·<±<ð &DÉð &DÑUXð &DÑ]b×]iÑ]iñ &Dr   c                óæ  € VP                   ^,          ^,
          pV P                  P                   ^,          ^,
          p\        P                  P	                  4       '       g   WE8X  d   W#8X  d   V P                  # V P                  R,          pV P                  R,          pVP                   R,          pW P
                  ,          p	W0P
                  ,          p
\        VR,          4      pVP                  ^W»V4      pVP                  ^ ^^^4      p\        P                  P                  VWš3RRR7      pVP                  ^ ^^^4      P                  ^RV4      p\        P                  ! Wg3^R7      # )	aÐ  
This method allows to interpolate the pre-trained position encodings, to be able to use the model on higher resolution
images. This method is also adapted to support torch.jit tracing.

Adapted from:
- https://github.com/facebookresearch/dino/blob/de9ee3df6cf39fac952ab558447af1fa1365362a/vision_transformer.py#L174-L194, and
- https://github.com/facebookresearch/dinov2/blob/e1277af2ba9496fbadf7aec6eba56e8d882d1e35/dinov2/models/vision_transformer.py#L179-L211
g      à?ÚbicubicF©ÚsizeÚmodeÚalign_corners©Údim)ºNNN:Nr,   N)rU   ºr,   NNéÿÿÿÿ)Úshaper@   r0   ÚjitÚ
is_tracingr8   r   ÚreshapeÚpermuter   Ú
functionalÚinterpolateÚviewÚcat)rD   rH   rI   rJ   r>   Únum_positionsÚclass_pos_embedÚpatch_pos_embedrT   Ú
new_heightÚ	new_widthÚsqrt_num_positionss   &&&&        r   Úinterpolate_pos_encodingÚ1Data2VecVisionEmbeddings.interpolate_pos_encodingY   sE  € ð !×&Ñ& qÕ)¨AÕ-ˆØ×0Ñ0×6Ñ6°qÕ9¸AÕ=ˆô �y‰y×#Ñ#×%Ò%¨+Ô*FÈ6Ì?Ø×+Ñ+Ð+à×2Ñ2°5Õ9ˆØ×2Ñ2°5Õ9ˆà×Ñ˜rÕ"ˆàŸ™Õ.ˆ
ØŸ_™_Õ,ˆ	ä& }°cÕ'9Ó:ÐØ)×1Ñ1°!Ð5GÐ]`ÓaˆØ)×1Ñ1°!°Q¸¸1Ó=ˆäŸ-™-×3Ñ3ØØÐ(ØØð	 4ó 
ˆð *×1Ñ1°!°Q¸¸1Ó=×BÑBÀ1ÀbÈ#ÓNˆä�yŠy˜/Ð;ÀÔCÐCr   c                óv   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  /# )r$   Úpixel_valuesÚbool_masked_posNr&   )r0   rK   Ú
BoolTensor)r'   r(   s   "€r   r)   r*   �   s<   ø€ ÷ 7ñ 7á—l‘lð7ñ ×)Ñ)¨DÕ0ð7ñ 
�‰ñ	7r   c                ó  € VP                   w   r4pV P                  V4      w  pw  rxVP                  4       w  ršpVeZ   V P                  P	                  WšR4      pVP                  R4      P                  V4      pV^V,
          ,          W¼,          ,           pV P                  P	                  V	RR4      p\        P                  ! WÖ3^R7      pV P                  e   W`P                  WdV4      ,           pV P                  V4      pWgV33# )NrS   rW   )rX   r7   rP   r5   ÚexpandÚ	unsqueezeÚtype_asr3   r0   r`   r@   rg   rC   )rD   rj   rk   Ú_rI   rJ   rH   Úpatch_heightÚpatch_widthÚ
batch_sizeÚseq_lenÚmask_tokensÚwÚ
cls_tokenss   &&&           r   ÚforwardÚ Data2VecVisionEmbeddings.forward�   sô   € ð
 +×0Ñ0Ñˆˆ1�eØ26×2GÑ2GÈÓ2UÑ/ˆ
Ñ/�\Ø!+§¡Ó!2Ñˆ
˜QàÒ&ØŸ/™/×0Ñ0°ÀbÓIˆKà×)Ñ)¨"Ó-×5Ñ5°kÓBˆAØ# q¨1¥uÕ-°µÕ?ˆJà—^‘^×*Ñ*¨:°r¸2Ó>ˆ
Ü—Y’Y 
Ð7¸QÔ?ˆ
à×#Ñ#Ò/Ø#×&CÑ&CÀJÐX]Ó&^Õ^ˆJà—\‘\ *Ó-ˆ
à¨+Ð6Ð6Ð6r   )r3   rC   r:   r5   r7   r8   r@   ©N)r   r   r   r   r   r.   rg   ry   r   Ú__classdictcell__Ú__classcell__©rE   r(   s   @@r   r!   r!   <   s0   ù‡ € ñ÷
>ó >÷.&Dð &D÷P7÷ 7ò 7r   r!   c                   óH   a a€ ] tR t^œt oRtV 3R ltV3R lR ltRtVtV ;t	# )r6   zÜ
This class turns `pixel_values` of shape `(batch_size, num_channels, height, width)` into the initial
`hidden_states` (patch embeddings) of shape `(batch_size, seq_length, hidden_size)` to be consumed by a
Transformer.
c                ót  <€ \         SV `  4        VP                  VP                  r2VP                  VP
                  rT\        V\        P                  P                  4      '       d   TMW"3p\        V\        P                  P                  4      '       d   TMW33pV^,          V^,          ,          V^ ,          V^ ,          ,          ,          pV^ ,          V^ ,          ,          V^,          V^,          ,          3pW n        W0n        W@n        W`n
        Wpn        \        P                  ! WEW3R7      V n        R# )r,   ©Úkernel_sizeÚstrideN)r-   r.   r:   r8   Únum_channelsr2   r9   r;   r<   r=   r>   Úpatch_shaper   ÚConv2dÚ
projection)	rD   r%   r:   r8   r„   r2   r>   r…   rE   s	   &&      €r   r.   Ú&Data2VecVisionPatchEmbeddings.__init__£   sî   ø€ Ü‰ÑÔØ!'×!2Ñ!2°F×4EÑ4E�JØ$*×$7Ñ$7¸×9KÑ9K�kä#-¨j¼+¿/¹/×:RÑ:R×#SÒ#S‘ZÐZdÐYqˆ
Ü#-¨j¼+¿/¹/×:RÑ:R×#SÒ#S‘ZÐZdÐYqˆ
Ø! !•}¨
°1­Õ5¸*ÀQ½-È:ÐVWÍ=Õ:XÕYˆØ! !•}¨
°1­Õ5°zÀ!µ}È
ÐSTÍÕ7UÐVˆØ$ŒØ$ŒØ(ÔØ&ÔØ&ÔäŸ)š) LÈ:ÔiˆŽr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r$   rj   r&   ©r0   rK   )r'   r(   s   "€r   r)   Ú*Data2VecVisionPatchEmbeddings.__annotate__´   s#   ø€ ÷ 7ñ 7¡E§L¡Lð 7±U·\±\ñ 7r   c                óh  € VP                   w  r#rEW0P                  8w  d   \        R 4      hV P                  VP	                  V P                  P
                  P                  4      4      pVP                   ^,          VP                   ^,          r‡VP                  ^4      P                  ^^4      pWgV33# )zeMake sure that the channel dimension of the pixel values match with the one set in the configuration.)	rX   r„   Ú
ValueErrorr‡   ÚtoÚweightÚdtypeÚflattenÚ	transpose)	rD   rj   rt   r„   rI   rJ   rH   rr   rs   s	   &&       r   ry   Ú%Data2VecVisionPatchEmbeddings.forward´   sŸ   € Ø2>×2DÑ2DÑ/ˆ
 &Ø×,Ñ,Ô,ÜØwóð ð —_‘_ \§_¡_°T·_±_×5KÑ5K×5QÑ5QÓ%RÓSˆ
Ø$.×$4Ñ$4°QÕ$7¸×9IÑ9IÈ!Õ9L�kØ×'Ñ'¨Ó*×4Ñ4°Q¸Ó:ˆ
à¨+Ð6Ð6Ð6r   )r:   r„   r>   r…   r8   r‡   ©
r   r   r   r   r   r.   ry   r   r|   r}   r~   s   @@r   r6   r6   œ   s   ù‡ € ñõj÷"7÷ 7ð 7r   r6   c                   óX   a a€ ] tR t^Ãt oRV3R lV 3R llltRV3R lR lltRtVtV ;t# )ÚData2VecVisionSelfAttentionc                ó8   <€ V ^8„  d   QhRS[ RS[R,          RR/# ©r$   r%   Úwindow_sizeNr&   ©r   Útuple)r'   r(   s   "€r   r)   Ú(Data2VecVisionSelfAttention.__annotate__Ä   s-   ø€ ÷ nñ nÑ3ð nÁ%È$Å,ð nÐZ^ñ nr   c                óx  <€ \         SV `  4        Wn        VP                  VP                  ,          ^ 8w  d9   \        VR4      '       g'   \        RVP                   RVP                   R24      hVP                  V n        \        VP                  VP                  ,          4      V n        V P                  V P                  ,          V n	        \        P                  ! VP                  V P                  4      V n        \        P                  ! VP                  V P                  RR7      V n        \        P                  ! VP                  V P                  4      V n        \        P                  ! VP                   4      V n        \%        V4      V n        V P&                  '       d   \)        WR7      V n        R# R# )	é    Úembedding_sizezThe hidden size z4 is not a multiple of the number of attention heads Ú.F)Úbias©r™   N)r-   r.   r%   r2   Únum_attention_headsÚhasattrr�   rL   Úattention_head_sizeÚall_head_sizer   ÚLinearÚqueryÚkeyÚvaluerA   Úattention_probs_dropout_probrC   ÚboolÚhas_relative_position_biasÚ"Data2VecVisionRelativePositionBiasÚrelative_position_bias©rD   r%   r™   rE   s   &&&€r   r.   Ú$Data2VecVisionSelfAttention.__init__Ä   sQ  ø€ Ü‰ÑÔØŒØ×Ñ × :Ñ :Õ:¸aÔ?ÌÐPVÐXh×HiÒHiÜØ" 6×#5Ñ#5Ð"6ð 7Ø×3Ñ3Ð4°Að7óð ð
 $*×#=Ñ#=ˆÔ Ü#& v×'9Ñ'9¸F×<VÑ<VÕ'VÓ#WˆÔ Ø!×5Ñ5¸×8PÑ8PÕPˆÔä—Y’Y˜v×1Ñ1°4×3EÑ3EÓFˆŒ
Ü—9’9˜V×/Ñ/°×1CÑ1CÈ%ÔPˆŒÜ—Y’Y˜v×1Ñ1°4×3EÑ3EÓFˆŒ
ä—z’z &×"EÑ"EÓFˆŒä*.¨{Ó*;ˆÔ'Ø×*×*Ð*Ü*LÈVÔ*mˆDÖ'ñ +r   c                ó  <€ V ^8„  d   QhRS[ P                  RS[RS[ P                  R,          RS[RS[S[,          R,          RS[S[ P                  ,          S[S[ P                  S[ P                  3,          ,          /# ©r$   Úhidden_statesÚoutput_attentionsr¯   Nrg   Ú
resolutionr&   ©r0   rK   r¬   r›   rL   )r'   r(   s   "€r   r)   rœ   Û   s}   ø€ ÷ .ñ .á—|‘|ð.ñ  ð.ñ !&§¡¨tÕ 3ð	.ñ
 #'ð.ñ ™#•J Õ%ð.ñ 
‰u�|‰|Õ	™u¡U§\¡\±5·<±<Ð%?Õ@Õ	@ñ.r   c                ól  € VP                   R R p. VORNV P                  N5pV P                  V4      P                  V4      P	                  ^^4      pV P                  V4      P                  V4      P	                  ^^4      p	V P                  V4      P                  V4      P	                  ^^4      p
\        P                  ! W‰P	                  RR4      4      pV\        P                  ! V P                  4      ,          pV P                  '       dg   Vw  rÍWÀP                  P                  ,          WÐP                  P                  ,          3pW°P                  WäVP                   ^,          R7      ,           pVe	   W³,           p\        P                   P#                  VRR7      pV P%                  V4      p\        P                  ! Wú4      pVP'                  ^ ^^^4      P)                  4       pVP+                  4       R R V P,                  3,           pVP                  ! V!  pV'       d   VV3pV# V3pV# )N©Údim_sizerS   rW   éþÿÿÿ)rX   r¥   r¨   r_   r’   r©   rª   r0   ÚmatmulÚmathÚsqrtr­   r%   r8   r¯   r   r]   ÚsoftmaxrC   r\   Ú
contiguousrP   r¦   )rD   r´   rµ   r¯   rg   r¶   Úinput_shapeÚhidden_shapeÚquery_layerÚ	key_layerÚvalue_layerÚattention_scoresrI   rJ   r™   Úattention_probsÚcontext_layerÚnew_context_layer_shapeÚoutputss   &&&&&&             r   ry   Ú#Data2VecVisionSelfAttention.forwardÛ   s  € ð $×)Ñ)¨#¨2Ð.ˆØC˜ÐC bÐC¨$×*BÑ*BÑCˆØ—j‘j Ó/×4Ñ4°\ÓB×LÑLÈQÐPQÓRˆØ—H‘H˜]Ó+×0Ñ0°Ó>×HÑHÈÈAÓNˆ	Ø—j‘j Ó/×4Ñ4°\ÓB×LÑLÈQÐPQÓRˆô !Ÿ<š<¨×5HÑ5HÈÈRÓ5PÓQÐà+¬d¯iªi¸×8PÑ8PÓ.QÕQÐð ×*×*Ð*Ø&‰MˆFØ!§[¡[×%;Ñ%;Õ;¸UÇkÁk×F\ÑF\Õ=\Ð]ˆKØ/×2MÑ2MØÀ×@SÑ@SÐTUÕ@Vð 3Nó 3õ  Ðð
 "Ò-Ø/ÕHÐô Ÿ-™-×/Ñ/Ð0@ÀbÐ/ÓIˆð Ÿ,™, Ó7ˆäŸš _ÓBˆà%×-Ñ-¨a°°A°qÓ9×DÑDÓFˆØ"/×"4Ñ"4Ó"6°s¸Ð";¸t×?QÑ?QÐ>SÕ"SÐØ%×*Ò*Ð,CÑDˆç6G�= /Ð2ˆàˆð O\ÐM]ˆàˆr   )
r¦   r¥   r%   rC   r­   r©   r£   r¨   r¯   rª   r{   ©FNFN©	r   r   r   r   r.   ry   r   r|   r}   r~   s   @@r   r–   r–   Ã   s    ù‡ € ÷nõ n÷..÷ .ò .r   r–   c                   ó6   a € ] tR tRt o RV 3R lR lltRtV tR# )ÚData2VecVisionSdpaSelfAttentioni  Nc                ó  <€ V ^8„  d   QhRS[ P                  RS[RS[ P                  R,          RS[RS[S[,          R,          RS[S[ P                  ,          S[S[ P                  S[ P                  3,          ,          /# r³   r·   )r'   r(   s   "€r   r)   Ú,Data2VecVisionSdpaSelfAttention.__annotate__  s}   ø€ ÷ /#ñ /#á—|‘|ð/#ñ  ð/#ñ !&§¡¨tÕ 3ð	/#ñ
 #'ð/#ñ ™#•J Õ%ð/#ñ 
‰u�|‰|Õ	™u¡U§\¡\±5·<±<Ð%?Õ@Õ	@ñ/#r   c           
     ó�  € V'       d-   \         P                  V P                  P                   R 24       VP                  RR p. VORNV P
                  N5pV P                  V4      P                  V4      P                  ^^4      pV P                  V4      P                  V4      P                  ^^4      p	V P                  V4      P                  V4      P                  ^^4      p
RpV P                  '       da   Vw  rÍWÀP                  P                  ,          WÐP                  P                  ,          3pV P                  WäVP                  ^,          R7      pVe   Vf   TpMW³,          p^\        P                   ! V P
                  4      ,          p\"        P$                  P&                  P)                  TT	T
TV P*                  '       d   V P                  P,                  MRRVR7      pVP/                  ^ ^^^4      P1                  4       pVP3                  4       RR V P4                  3,           pVP                  ! V!  pVR3# )zÁ does not support `output_attentions=True`. The returned attention weights will be `None`. If you want to get attention weights, please set `attn_implementation='eager'` when loading the model.Nr¹   ç        F)Ú	attn_maskÚ	dropout_pÚ	is_causalÚscalerW   r»   )ÚloggerÚwarning_oncerE   r   rX   r¥   r¨   r_   r’   r©   rª   r­   r%   r8   r¯   r½   r¾   r0   r   r]   Úscaled_dot_product_attentionÚtrainingr«   r\   rÀ   rP   r¦   )rD   r´   rµ   r¯   rg   r¶   rÁ   rÂ   rÃ   rÄ   rÅ   Ú	attn_biasrI   rJ   r™   ÚscalingrÈ   rÉ   s   &&&&&&            r   ry   Ú'Data2VecVisionSdpaSelfAttention.forward  s  € ÷ Ü×ÑØ—>‘>×*Ñ*Ð+ð ,Dð Dôð $×)Ñ)¨#¨2Ð.ˆØC˜ÐC bÐC¨$×*BÑ*BÑCˆØ—j‘j Ó/×4Ñ4°\ÓB×LÑLÈQÐPQÓRˆØ—H‘H˜]Ó+×0Ñ0°Ó>×HÑHÈÈAÓNˆ	Ø—j‘j Ó/×4Ñ4°\ÓB×LÑLÈQÐPQÓRˆàˆ	Ø×*×*Ð*Ø&‰MˆFØ!§[¡[×%;Ñ%;Õ;¸UÇkÁk×F\ÑF\Õ=\Ð]ˆKØ×3Ñ3ØÀ×@SÑ@SÐTUÕ@Vð 4ó ˆIð
 "Ò-ØÒ Ø2‘	àÕ3�	à”d—i’i × 8Ñ 8Ó9Õ9ˆÜŸ™×+Ñ+×HÑHØØØØØBFÇ-Ç-À-�d—k‘k×>Ò>ÐUXØØð Ió 
ˆð &×-Ñ-¨a°°A°qÓ9×DÑDÓFˆØ"/×"4Ñ"4Ó"6°s¸Ð";¸t×?QÑ?QÐ>SÕ"SÐØ%×*Ò*Ð,CÑDˆØ˜dÐ"Ð"r   r   rÌ   )r   r   r   r   ry   r   r|   )r(   s   @r   rÏ   rÏ     s   ø‡ € ÷/#÷ /#ð /#r   rÏ   c                   óX   a a€ ] tR tRt oRtV3R lV 3R lltRV3R lR lltRtVtV ;t	# )	ÚData2VecVisionSelfOutputiA  zŸ
The residual connection is defined in Data2VecVisionLayer instead of here (as is the case with other models), due to the
layernorm applied before each block.
c                ó$   <€ V ^8„  d   QhRS[ RR/# r#   r   )r'   r(   s   "€r   r)   Ú%Data2VecVisionSelfOutput.__annotate__G  ó   ø€ ÷ >ñ >Ñ3ð >¸ñ >r   c                óÎ   <€ \         SV `  4        \        P                  ! VP                  VP                  4      V n        \        P                  ! VP                  4      V n        R # r{   )	r-   r.   r   r§   r2   ÚdenserA   rB   rC   ©rD   r%   rE   s   &&€r   r.   Ú!Data2VecVisionSelfOutput.__init__G  sB   ø€ Ü‰ÑÔÜ—Y’Y˜v×1Ñ1°6×3EÑ3EÓFˆŒ
Ü—z’z &×"<Ñ"<Ó=ˆŽr   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# )r$   r´   Úinput_tensorr&   rŠ   )r'   r(   s   "€r   r)   râ   L  s1   ø€ ÷ ñ ¡U§\¡\ð ÁÇÁð Ñ^c×^jÑ^jñ r   c                óJ   € V P                  V4      pV P                  V4      pV# r{   ©rå   rC   )rD   r´   ré   Úgammas   &&&&r   ry   Ú Data2VecVisionSelfOutput.forwardL  ó$   € ØŸ
™
 =Ó1ˆØŸ™ ]Ó3ˆàÐr   rë   r{   r”   r~   s   @@r   rà   rà   A  s#   ù‡ € ñ÷
>ó >÷
÷ ò r   rà   ÚeagerÚsdpac                   óX   a a€ ] tR tRt oRV3R lV 3R llltRV3R lR lltRtVtV ;t# )	ÚData2VecVisionAttentioniZ  c                ó8   <€ V ^8„  d   QhRS[ RS[R,          RR/# r˜   rš   )r'   r(   s   "€r   r)   Ú$Data2VecVisionAttention.__annotate__[  s(   ø€ ÷ 7ñ 7Ñ3ð 7Á%È$Å,ð 7ÐZ^ñ 7r   c                óŠ   <€ \         SV `  4        \        VP                  ,          ! WR 7      V n        \        V4      V n        R# )r¢   N)r-   r.   Ú&DATA2VEC_VISION_SELF_ATTENTION_CLASSESÚ_attn_implementationÚ	attentionrà   Úoutputr°   s   &&&€r   r.   Ú Data2VecVisionAttention.__init__[  s6   ø€ Ü‰ÑÔÜ?À×@[Ñ@[Ö\Øô
ˆŒô /¨vÓ6ˆŽr   c                óð   <€ V ^8„  d   QhRS[ P                  RS[RS[R,          RS[RS[S[,          R,          RS[S[ P                  ,          S[S[ P                  S[ P                  3,          ,          /# )	r$   r´   rµ   r¯   r®   rg   r¶   Nr&   )r0   rK   r¬   r   r›   rL   )r'   r(   s   "€r   r)   rô   b  sz   ø€ ÷ ñ á—|‘|ðñ  ðñ !)Ð)MÕ Nð	ñ
 #'ðñ ™#•J Õ%ðñ 
‰u�|‰|Õ	™u¡U§\¡\±5·<±<Ð%?Õ@Õ	@ñr   c                ó€   € V P                  WW4V4      pV P                  V^ ,          V4      pV3VR,          ,           pV# )rž   rV   ©rø   rù   )	rD   r´   rµ   r¯   rg   r¶   Úself_outputsÚattention_outputrÊ   s	   &&&&&&   r   ry   ÚData2VecVisionAttention.forwardb  sI   € ð —~‘~ØÐ.DÐ`jó
ˆð  Ÿ;™; |°A¥¸ÓFÐà#Ð%¨°RÕ(8Õ8ˆØˆr   rý   r{   rÌ   rÍ   r~   s   @@r   rò   rò   Z  s   ù‡ € ÷7õ 7÷÷ ò r   rò   c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚData2VecVisionIntermediateiu  c                ó$   <€ V ^8„  d   QhRS[ RR/# r#   r   )r'   r(   s   "€r   r)   Ú'Data2VecVisionIntermediate.__annotate__v  s   ø€ ÷ 9ñ 9Ñ3ð 9¸ñ 9r   c                ó"  <€ \         SV `  4        \        P                  ! VP                  VP
                  4      V n        \        VP                  \        4      '       d   \        VP                  ,          V n        R # VP                  V n        R # r{   )r-   r.   r   r§   r2   Úintermediate_sizerå   r9   Ú
hidden_actÚstrr   Úintermediate_act_fnræ   s   &&€r   r.   Ú#Data2VecVisionIntermediate.__init__v  s`   ø€ Ü‰ÑÔÜ—Y’Y˜v×1Ñ1°6×3KÑ3KÓLˆŒ
Ü�f×'Ñ'¬×-Ò-Ü'-¨f×.?Ñ.?Õ'@ˆDÖ$à'-×'8Ñ'8ˆDÖ$r   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r$   r´   r&   rŠ   )r'   r(   s   "€r   r)   r  ~  ó#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r   c                óJ   € V P                  V4      pV P                  V4      pV# r{   ©rå   r	  ©rD   r´   s   &&r   ry   Ú"Data2VecVisionIntermediate.forward~  s&   € ØŸ
™
 =Ó1ˆØ×0Ñ0°Ó?ˆàÐr   r  rÍ   r~   s   @@r   r  r  u  s   ù‡ € ÷9ó 9÷÷ ð r   r  c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚData2VecVisionOutputi†  c                ó$   <€ V ^8„  d   QhRS[ RR/# r#   r   )r'   r(   s   "€r   r)   Ú!Data2VecVisionOutput.__annotate__‡  rã   r   c                óÎ   <€ \         SV `  4        \        P                  ! VP                  VP
                  4      V n        \        P                  ! VP                  4      V n	        R # r{   )
r-   r.   r   r§   r  r2   rå   rA   rB   rC   ræ   s   &&€r   r.   ÚData2VecVisionOutput.__init__‡  sB   ø€ Ü‰ÑÔÜ—Y’Y˜v×7Ñ7¸×9KÑ9KÓLˆŒ
Ü—z’z &×"<Ñ"<Ó=ˆŽr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r  rŠ   )r'   r(   s   "€r   r)   r  Œ  r  r   c                óJ   € V P                  V4      pV P                  V4      pV# r{   rë   r  s   &&r   ry   ÚData2VecVisionOutput.forwardŒ  rî   r   rë   rÍ   r~   s   @@r   r  r  †  s   ù‡ € ÷>ó >÷
÷ ð r   r  c                   ój   a a€ ] tR tRt oRtR
V3R lV 3R llltV3R lR ltV3R lR ltR	tVt	V ;t
# )ÚData2VecVisionDropPathi”  zÃStochastic depth (DropPath) per sample, for residual blocks.

Identity when ``drop_prob`` is 0 or outside training. See `Deep Networks with Stochastic Depth
<https://arxiv.org/abs/1603.09382>`_.
c                ó$   <€ V ^8„  d   QhRS[ RR/# )r$   Ú	drop_probr&   N)Úfloat)r'   r(   s   "€r   r)   Ú#Data2VecVisionDropPath.__annotate__›  s   ø€ ÷ #ñ #¡%ð #°$ñ #r   c                ó0   <€ \         SV `  4        Wn        R # r{   )r-   r.   r  )rD   r  rE   s   &&€r   r.   ÚData2VecVisionDropPath.__init__›  s   ø€ Ü‰ÑÔØ"Žr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r  rŠ   )r'   r(   s   "€r   r)   r   Ÿ  s#   ø€ ÷ <ñ <¡U§\¡\ð <±e·l±lñ <r   c                ó˜  € V P                   R 8X  g   V P                  '       g   V# ^V P                   ,
          pVP                  ^ ,          3RVP                  ^,
          ,          ,           p\        P
                  ! W1P                  VP                  R7      p\        P                  ! WB,           4      pVP                  V4      V,          # )rÓ   )r�   Údevice)r,   )
r  rÛ   rX   Úndimr0   Úrandr�   r%  ÚfloorÚdiv)rD   r´   Ú	keep_probrX   Úrandom_tensors   &&   r   ry   ÚData2VecVisionDropPath.forwardŸ  s•   € Ø�>‰>˜SÔ ¨¯¯¨Ø Ð Ø˜Ÿ™Õ&ˆ	Ø×$Ñ$ QÕ'Ð)¨D°M×4FÑ4FÈÕ4JÕ,KÕKˆÜŸ
š
 5×0CÑ0CÈM×L`ÑL`ÔaˆÜŸš MÕ$=Ó>ˆØ× Ñ  Ó+¨mÕ;Ð;r   c                ó    <€ V ^8„  d   QhRS[ /# )r$   r&   )r  )r'   r(   s   "€r   r)   r   ¨  s   ø€ ÷ %ñ %™Cñ %r   c                ó    € R V P                    2# )zp=©r  ©rD   s   &r   Ú
extra_reprÚ!Data2VecVisionDropPath.extra_repr¨  s   € Ø�D—N‘NÐ#Ð$Ð$r   r/  )rÓ   )r   r   r   r   r   r.   ry   r1  r   r|   r}   r~   s   @@r   r  r  ”  s-   ù‡ € ñ÷#õ #÷<ð <÷%÷ %ð %r   r  c                   ó\   a a€ ] tR tRt oRtRV3R lV 3R llltR	V3R lR lltRtVtV ;t	# )
ÚData2VecVisionLayeri­  z?This corresponds to the Block class in the timm implementation.c                ó>   <€ V ^8„  d   QhRS[ RS[R,          RS[RR/# )r$   r%   r™   NÚdrop_path_rater&   )r   r›   r  )r'   r(   s   "€r   r)   Ú Data2VecVisionLayer.__annotate__°  s1   ø€ ÷ 6ñ 6Ù*ð6Ù9>À½ð6Ù^cð6à	ñ6r   c                ó"  <€ \         SV `  4        VP                  V n        ^V n        \	        WR7      V n        \        V4      V n        \        V4      V n	        \        P                  ! VP                  VP                  R7      V n        VR8”  d   \        V4      M\        P                   ! 4       V n        \        P                  ! VP                  VP                  R7      V n        VP&                  pV^ 8”  d‡   \        P(                  ! V\*        P,                  ! VP                  4      ,          RR7      V n        \        P(                  ! V\*        P,                  ! VP                  4      ,          RR7      V n        R# RRuV n        V n        R# )r,   r¢   ©ÚepsrÓ   T)Úrequires_gradN)r-   r.   Úchunk_size_feed_forwardÚseq_len_dimrò   rø   r  Úintermediater  rù   r   Ú	LayerNormr2   Úlayer_norm_epsÚlayernorm_beforer  ÚIdentityÚ	drop_pathÚlayernorm_afterÚlayer_scale_init_valuer/   r0   ÚonesÚlambda_1Úlambda_2)rD   r%   r™   r6  Úinit_valuesrE   s   &&&& €r   r.   ÚData2VecVisionLayer.__init__°  s  ø€ ô 	‰ÑÔØ'-×'EÑ'EˆÔ$ØˆÔÜ0°ÔQˆŒÜ6°vÓ>ˆÔÜ*¨6Ó2ˆŒÜ "§¢¨V×-?Ñ-?ÀV×EZÑEZÔ [ˆÔØCQÐTWÔCWÔ/°Ô?Ô]_×]hÒ]hÓ]jˆŒÜ!Ÿ|š|¨F×,>Ñ,>ÀF×DYÑDYÔZˆÔà×3Ñ3ˆØ˜Œ?ÜŸLšL¨´u·z²zÀ&×BTÑBTÓ7UÕ)UÐeiÔjˆDŒMÜŸLšL¨´u·z²zÀ&×BTÑBTÓ7UÕ)UÐeiÔjˆDŽMà+/°Ð(ˆDŒM˜4ž=r   c                ó
  <€ V ^8„  d   QhRS[ P                  RS[RS[ P                  R,          RS[RS[S[S[3,          R,          RS[S[ P                  ,          S[S[ P                  S[ P                  3,          ,          /# r³   r·   )r'   r(   s   "€r   r)   r7  Ä  s�   ø€ ÷ 'ñ 'á—|‘|ð'ñ  ð'ñ !&§¡¨tÕ 3ð	'ñ
 #'ð'ñ ™#™s˜(•O dÕ*ð'ñ 
‰u�|‰|Õ	™u¡U§\¡\±5·<±<Ð%?Õ@Õ	@ñ'r   c                óÒ  € V P                  V P                  V4      VVVVR 7      pV^ ,          pVR,          pV P                  e   V P                  V,          pV P                  V4      V,           pV P	                  V4      p	V P                  V	4      p	V P                  V	4      p	V P                  e   V P                  V	,          p	V P                  V	4      V,           p	V	3V,           pV# )©rµ   r¯   rg   r¶   rV   )rø   rA  rG  rC  rD  r>  rù   rH  )
rD   r´   rµ   r¯   rg   r¶   Úself_attention_outputsrÿ   rÊ   Úlayer_outputs
   &&&&&&    r   ry   ÚData2VecVisionLayer.forwardÄ  sé   € ð "&§¡Ø×!Ñ! -Ó0Ø/Ø#9Ø%=Ø!ð "0ó "
Ðð 2°!Õ4ÐØ(¨Õ,ˆð �=‰=Ò$Ø#Ÿ}™}Ð/?Õ?Ðð Ÿ™Ð'7Ó8¸=ÕHˆð ×+Ñ+¨MÓ:ˆà×(Ñ(¨Ó6ˆØ—{‘{ <Ó0ˆà�=‰=Ò$ØŸ=™=¨<Õ7ˆLð —~‘~ lÓ3°mÕCˆà�/ GÕ+ˆàˆr   )
rø   r<  rC  r>  rG  rH  rD  rA  rù   r=  )NrÓ   rÌ   r”   r~   s   @@r   r4  r4  ­  s!   ù‡ € ÙI÷6õ 6÷('÷ 'ò 'r   r4  c                   óˆ   a a€ ] tR tRt oV3R lV 3R llt]]! ^
R7      V3R lR l4       4       tR
V3R lR lltR	t	Vt
V ;t# )r®   iï  c                ó*   <€ V ^8„  d   QhRS[ RS[RR/# )r$   r%   r™   r&   Nrš   )r'   r(   s   "€r   r)   Ú/Data2VecVisionRelativePositionBias.__annotate__ð  s#   ø€ ÷ 
ñ 
Ñ3ð 
Á%ð 
ÈDñ 
r   c                ó6  <€ \         SV `  4        W n        ^V^ ,          ,          ^,
          ^V^,          ,          ^,
          ,          ^,           V n        \        P
                  ! \        P                  ! V P                  VP                  4      4      V n	        R# )r$   N)
r-   r.   r™   Únum_relative_distancer   r/   r0   r1   r£   Úrelative_position_bias_tabler°   s   &&&€r   r.   Ú+Data2VecVisionRelativePositionBias.__init__ð  sp   ø€ Ü‰ÑÔØ&ÔØ&'¨+°a­.Õ&8¸1Õ&<ÀÀ[ÐQRÅ^ÕASÐVWÕAWÕ%XÐ[\Õ%\ˆÔ"Ü,.¯LªLÜ�KŠK˜×2Ñ2°F×4NÑ4NÓOó-
ˆÖ)r   )Úmaxsizec                óP   <€ V ^8„  d   QhRS[ S[S[3,          RS[P                  /# )r$   r™   r&   )r›   rL   r0   rK   )r'   r(   s   "€r   r)   rS  û  s'   ø€ ÷ 'ñ '±e¹CÁ¸Hµoð 'É%Ï,É,ñ 'r   c                óÂ  € ^V ^ ,          ,          ^,
          ^V ^,          ,          ^,
          ,          ^,           pV ^ ,          V ^,          ,          p\         P                  ! \         P                  ! V ^ ,          4      \         P                  ! V ^,          4      RR7      p\         P                  ! V4      p\         P                  ! V^4      pVR,          VR,          ,
          pVP                  ^^^ 4      P                  4       pVR;;,          V ^ ,          ^,
          ,          uu&   VR;;,          V ^,          ^,
          ,          uu&   VR;;,          ^V ^,          ,          ^,
          ,          uu&   \         P                  ! V^,           3^,          VP                  R7      pVP                  R4      VR	&   V^,
          VR
&   V^,
          VR&   V^,
          VR&   V# )z§
This method creates the relative position index, modified to support arbitrary window sizes,
as introduced in [MiDaS v3.1](https://huggingface.co/papers/2307.14460).
Úij)Úindexing)rP   r�   )rU   rU   N)rU   NrU   )rU   rU   rž   )rU   rU   r,   rW   )rV   rV   )rž   ºrž   NN)r]  rž   )rž   rž   )
r0   ÚmeshgridÚarangeÚstackr‘   r\   rÀ   r1   r�   Úsum)r™   rU  Úwindow_areaÚgridÚcoordsÚcoords_flattenÚrelative_coordsÚrelative_position_indexs   &       r   Ú generate_relative_position_indexÚCData2VecVisionRelativePositionBias.generate_relative_position_indexù  sƒ  € ð "# [°¥^Õ!3°aÕ!7¸AÀÈAÅÕ<NÐQRÕ<RÕ SÐVWÕ WÐð " !•n {°1¥~Õ5ˆÜ�~Š~œeŸlšl¨;°q­>Ó:¼E¿LºLÈÐUVÍÓ<XÐcgÔhˆÜ—’˜TÓ"ˆÜŸš v¨qÓ1ˆØ(¨Õ4°~ÀjÕ7QÕQˆØ)×1Ñ1°!°Q¸Ó:×EÑEÓGˆØ˜×  K°¥N°QÕ$6Õ6Ó Ø˜×  K°¥N°QÕ$6Õ6Ó Ø˜×  A¨°A­Õ$6¸Õ$:Õ:Ó Ü"'§+¢+°KÀ!µOÐ3EÈÕ3IÐQ`×QfÑQfÔ"gÐØ*9×*=Ñ*=¸bÓ*AÐ Ñ'Ø)>ÀÕ)BÐ Ñ&Ø)>ÀÕ)BÐ Ñ&Ø(=ÀÕ(AÐ Ñ%Ø&Ð&r   c                ó:   <€ V ^8„  d   QhRS[ RS[P                  /# )r$   rg   r&   )r¬   r0   rK   )r'   r(   s   "€r   r)   rS    s"   ø€ ÷ -3ñ -3¹Tð -3Ñ]b×]iÑ]iñ -3r   c                ót  € ^V P                   ^ ,          ,          ^,
          p^V P                   ^,          ,          ^,
          p^V^ ,          ,          ^,
          p^V^,          ,          ^,
          pV P                  pV P                  p	Wg,          ^,           p
VRV	^,
           pVP                  ^WTR4      P	                  ^ ^^^4      p\
        P                  P                  V\        V4      \        V4      3RR7      pVP	                  ^ ^^^4      P                  V
^,
          R4      p\        P                  ! WÈV	^,
          R .4      pV P                  V4      pWÞP                  R4      ,          pVP                  V^ ,          V^,          ,          ^,           V^ ,          V^,          ,          ^,           R4      pVP	                  ^^ ^4      P                  4       pV'       dC   \
        P                  P                  VP                  ^4      W33RRR7      P                  ^4      pVP                  ^ 4      # )ze
Modification of timm.models.beit.py: Attention._get_rel_pos_bias to support arbitrary window sizes.
NÚbilinear)rP   rQ   FrO   rW   )r™   rV  rU  r[   r\   r   r]   r^   r   r0   r`   rh  r_   rÀ   ro   Úsqueeze)rD   r™   rg   rº   Ú
old_heightÚ	old_widthrd   re   Ú old_relative_position_bias_tableÚold_num_relative_distanceÚnew_num_relative_distanceÚold_sub_tableÚnew_sub_tableÚ new_relative_position_bias_tablerg  r¯   s   &&&&            r   ry   Ú*Data2VecVisionRelativePositionBias.forward  s!  € ð ˜×)Ñ)¨!Õ,Õ,¨qÕ0ˆ
Ø˜×(Ñ(¨Õ+Õ+¨aÕ/ˆ	à˜ Q�Õ'¨!Õ+ˆ
Ø˜ A�Õ&¨Õ*ˆ	à+/×+LÑ+LÐ(à$(×$>Ñ$>Ð!Ø$.Õ$:¸QÕ$>Ð!à8Ð9XÐ;TÐWXÕ;XÐYˆà%×-Ñ-¨a°ÈÓK×SÑSÐTUÐWXÐZ[Ð]^Ó_ˆÜŸ™×1Ñ1Ø¤¨:Ó!6¼	À)Ó8LÐ MÐT^ð 2ó 
ˆð &×-Ñ-¨a°°A°qÓ9×AÑAÐB[Ð^_ÕB_ÐacÓdˆä+0¯9ª9ØÐ=VÐYZÕ=ZÐ=\Ð]Ð^ó,
Ð(ð #'×"GÑ"GÈÓ"TÐØ!A×B^ÑB^Ð_aÓBbÕ!cÐð "8×!<Ñ!<Ø˜�N˜[¨�^Õ+¨aÕ/°¸QµÀ+ÈaÅ.Õ1PÐSTÕ1TÐVXó"
Ðð "8×!?Ñ!?ÀÀ1ÀaÓ!H×!SÑ!SÓ!UÐç#Ü%'§]¡]×%>Ñ%>Ø&×0Ñ0°Ó3ØÐ)ØØ#ð	 &?ó &÷
 ‰g�a‹jð #ð &×/Ñ/°Ó2Ð2r   )rU  rV  r™   )FN)r   r   r   r   r.   Ústaticmethodr   rh  ry   r   r|   r}   r~   s   @@r   r®   r®   ï  s?   ù‡ € ÷
ó 
ð Ù(°Ô4÷'ó 5ó ð'÷0-3÷ -3ò -3r   r®   c                   óX   a a€ ] tR tRt oRV3R lV 3R llltRV3R lR lltRtVtV ;t# )	ÚData2VecVisionEncoderiD  c                ó8   <€ V ^8„  d   QhRS[ RS[R,          RR/# r˜   rš   )r'   r(   s   "€r   r)   Ú"Data2VecVisionEncoder.__annotate__E  s(   ø€ ÷ ,ñ ,Ñ3ð ,Á%È$Å,ð ,ÐZ^ñ ,r   c                ó  <€ \         SV `  4        Wn        VP                  V n        V P                  '       d   \        WR 7      V n        \        P                  ! ^ VP                  VP                  RR7       Uu. uF  q3P                  4       NK  	  pp\        P                  ! \        VP                  4       Uu. uF+  p\        TVP                   '       d   TMRWE,          R7      NK-  	  up4      V n        RV n        R# u upi u upi )r¢   Úcpu)r%  N)r™   r6  F)r-   r.   r%   Ú!use_shared_relative_position_biasr­   r®   r¯   r0   Úlinspacer6  Únum_hidden_layersÚitemr   Ú
ModuleListÚranger4  Úuse_relative_position_biasÚlayerÚgradient_checkpointing)rD   r%   r™   ÚxÚdprÚirE   s   &&&   €r   r.   ÚData2VecVisionEncoder.__init__E  sá   ø€ Ü‰ÑÔØŒØ*0×*RÑ*RˆÔ'Ø×*×*Ð*Ü*LÈVÔ*mˆDÔ'ô "'§¢°°6×3HÑ3HÈ&×JbÑJbÐkpÕ!qÓrÑ!q˜A�v‰vŽxÑ!qˆÐrÜ—]’]ô ˜v×7Ñ7Ô8óñ 9�Aô $ØØ/5×/P×/PÐ/P¡ÐVZØ#&¥6÷ñ
 9ñó	
ˆŒ
ð ',ˆÖ#ùò sùòs   Á:DÂ;1Dc                óŒ   <€ V ^8„  d   QhRS[ P                  RS[RS[RS[RS[S[S[3,          R,          RS[RS[S[,          /# )	r$   r´   rµ   Úoutput_hidden_statesrg   r¶   NÚreturn_dictr&   )r0   rK   r¬   r›   rL   r	   )r'   r(   s   "€r   r)   r{  Z  sg   ø€ ÷ /
ñ /
á—|‘|ð/
ñ  ð/
ñ #ð	/
ñ
 #'ð/
ñ ™#™s˜(•O dÕ*ð/
ñ ð/
ñ 
‘Õ	 ñ/
r   c           	     óˆ  € V'       d   RMR pV'       d   RMR p\        V P                  4       F»  w  ršV'       d
   Wq3,           pV P                  '       db   Vw  r¼W°P                  P                  ,          WÀP                  P                  ,          3pV P                  WÔVP                  ^,          R7      pMR pV
! VVVVVR7      pV^ ,          pV'       g   K«  W�^,          3,           pK½  	  V'       d
   Wq3,           pV'       g1   \        ;QJ d    . R WV3 4       F  NK  	  5# ! R WV3 4       4      # \        VVVR7      # )N)rg   rº   rM  c              3   ó0   "  € T F  qf   K  Vx € K  	  R # 5ir{   r   )Ú.0Úvs   & r   Ú	<genexpr>Ú0Data2VecVisionEncoder.forward.<locals>.<genexpr>„  s   é € ÐmÑ$[˜qŸšÓ$[ùs   ‚Œ
)Úlast_hidden_stater´   Ú
attentionsr   )	Ú	enumerater…  r­   r%   r8   r¯   rX   r›   r	   )rD   r´   rµ   rŒ  rg   r¶   r�  Úall_hidden_statesÚall_self_attentionsr‰  Úlayer_modulerI   rJ   r™   r¯   Úlayer_outputss   &&&&&&&         r   ry   ÚData2VecVisionEncoder.forwardZ  s8  € ÷ #7™B¸DÐß$5™b¸4Ðä(¨¯©Ö4‰OˆAß#Ø$5Ð8HÕ$HÐ!à×.×.Ð.Ø *‘�Ø%¯©×)?Ñ)?Õ?ÀÏ+É+×J`ÑJ`ÕA`Ða�Ø)-×)DÑ)DØÐ]j×]pÑ]pÐqrÕ]sð *Eó *Ñ&ð *.Ð&á(ØØ"3Ø'=Ø)AØ%ôˆMð *¨!Õ,ˆMç Ñ Ø&9È1Õ=MÐ<OÕ&OÒ#ñ1  5÷4  Ø 1Ð4DÕ DÐçß”5Ñm ]ÐGZÑ$[Óm—5Ðm�5Ñm ]ÐGZÑ$[ÓmÓmÐmÜØ+Ø+Ø*ô
ð 	
r   )r%   r†  r­   r…  r¯   r{   )FFFNTrÍ   r~   s   @@r   ry  ry  D  s   ù‡ € ÷,õ ,÷*/
÷ /
ò /
r   ry  c                   ó†   a a€ ] tR tRt oRtR
tRtRtR.tR.t	Rt
]P                  ! 4       V 3R l4       tV3R ltR	tVtV ;t# )ÚData2VecVisionPreTrainedModeliŒ  Údata2vec_visionrj   Tr4  z.*relative_position_index.*c                óæ  <€ \         SV `  V4       \        V\        4      '       d�   \        P
                  ! VP                  4       VP                  e!   \        P
                  ! VP                  4       VP                  e#   \        P
                  ! VP                  4       R# R# \        V\        4      '       d#   \        P
                  ! VP                  4       R# \        V\        4      '       d}   VP                  em   \        P                  ! VP                  V P                  P                  4       \        P                  ! VP                   V P                  P                  4       R# R# R# )zInitialize the weightsN)r-   Ú_init_weightsr9   r!   ÚinitÚzeros_r3   r5   r@   r®   rV  r4  rG  Ú	constant_r%   rE  rH  )rD   ÚmodulerE   s   &&€r   r   Ú+Data2VecVisionPreTrainedModel._init_weights˜  sí   ø€ ô 	‰Ñ˜fÔ%Ü�fÔ6×7Ò7Ü�KŠK˜×(Ñ(Ô)Ø× Ñ Ò,Ü—’˜F×-Ñ-Ô.Ø×)Ñ)Ò5Ü—’˜F×6Ñ6Ö7ñ 6ä˜Ô B×CÒCÜ�KŠK˜×;Ñ;Ö<Ü˜Ô 3×4Ò4Ø�‰Ò*Ü—’˜vŸ™°·±×0RÑ0RÔSÜ—’˜vŸ™°·±×0RÑ0RÖSñ +ñ 5r   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # )r$   r%   r   )r'   r(   s   "€r   r)   Ú*Data2VecVisionPreTrainedModel.__annotate__Œ  s   ø‡ ‚ ñ !Ñ ò r   r   )Úimage)r   r   r   r   Úbase_model_prefixÚinput_modalitiesÚmain_input_nameÚsupports_gradient_checkpointingÚ_no_split_modulesÚ"_keys_to_ignore_on_load_unexpectedÚ_supports_sdpar0   Úno_gradr   Ú__annotate_func__r   r|   r}   r~   s   @@r   r�  r�  Œ  sV   ù‡ € ð *ÐØ!ÐØ$€OØ&*Ð#Ø.Ð/ÐØ*HÐ)IÐ&Ø€Nà
‡]‚]ƒ_ôTó ðT÷ … r   r�  c                   óh   a a€ ] tR tRt oRV3R lV 3R llltR t]R	V3R lR ll4       tRtVt	V ;t
# )
ÚData2VecVisionModeliª  c                ó*   <€ V ^8„  d   QhRS[ RS[RR/# )r$   r%   Úadd_pooling_layerr&   N)r   r¬   )r'   r(   s   "€r   r)   Ú Data2VecVisionModel.__annotate__­  s$   ø€ ÷ ñ Ñ3ð Éð ÐY]ñ r   c                ó´  <€ \         SV `  V4       Wn        \        V4      V n        \        WP                  P                  P                  R7      V n        VP                  '       d   \        P                  ! 4       M+\        P                  ! VP                  VP                  R7      V n        V'       d   \!        V4      MRV n        V P%                  4        R# )z_
add_pooling_layer (bool, *optional*, defaults to `False`):
    Whether to add a pooling layer
r¢   r9  N)r-   r.   r%   r!   rH   ry  r7   r…   ÚencoderÚuse_mean_poolingr   rB  r?  r2   r@  Ú	layernormÚData2VecVisionPoolerÚpoolerÚ	post_init)rD   r%   rµ  rE   s   &&&€r   r.   ÚData2VecVisionModel.__init__­  s–   ø€ ô
 	‰Ñ˜Ô ØŒä2°6Ó:ˆŒÜ,¨VÇÁ×AaÑAa×AmÑAmÔnˆŒð $×4×4Ð4ŒB�KŠKŒM¼"¿,º,Àv×GYÑGYÐ_e×_tÑ_tÔ:uð 	Œ÷ 7HÔ*¨6Ô2ÈTˆŒð 	�‰Ör   c                ó.   € V P                   P                  # r{   )rH   r7   r0  s   &r   Úget_input_embeddingsÚ(Data2VecVisionModel.get_input_embeddingsÀ  s   € Ø�‰×/Ñ/Ð/r   c                ó´   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[R,          RS[R,          RS[RS[R,          RS[S[,          /# )	r$   rj   rk   Nrµ   rŒ  rg   r�  r&   )r0   rK   rl   r¬   r›   r   )r'   r(   s   "€r   r)   r¶  Ä  sr   ø€ ÷ ,
ñ ,
á—l‘lð,
ñ ×)Ñ)¨DÕ0ð,
ñ   $�;ð	,
ñ
 # T�kð,
ñ #'ð,
ñ ˜D•[ð,
ñ 
Ñ5Õ	5ñ,
r   c           	     ó$  € Ve   TMV P                   P                  pVe   TMV P                   P                  pVe   TMV P                   P                  pV P	                  WR7      w  r‰VP
                  R,          p
V P                  VVVV
VVR7      pV^ ,          pV P                  V4      pV P                  e   V P                  V4      MRpV'       g   Ve   WÍ3MV3pWëR,          ,           # \        VVVP                  VP                  R7      # )z³
bool_masked_pos (`torch.BoolTensor` of shape `(batch_size, num_patches)`, *optional*):
    Boolean masked positions. Indicates which patches are masked (1) and which aren't (0).
N)rk   ºr$   NN)rµ   rŒ  r¶   r�  rg   rV   )r”  Úpooler_outputr´   r•  )r%   rµ   rŒ  r�  rH   rX   r¸  rº  r¼  r   r´   r•  )rD   rj   rk   rµ   rŒ  rg   r�  ÚkwargsÚembedding_outputrq   r¶   Úencoder_outputsÚsequence_outputÚpooled_outputÚhead_outputss   &&&&&&&,       r   ry   ÚData2VecVisionModel.forwardÃ  s  € ð 2CÒ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ò$DÑ È$Ï+É+×JjÑJjð 	ð &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆà"Ÿo™o¨l˜oÓ\ÑÐØ!×'Ñ'¨Õ+ˆ
àŸ,™,ØØ/Ø!5Ø!Ø#Ø%=ð 'ó 
ˆð *¨!Õ,ˆØŸ.™.¨Ó9ˆØ8<¿¹Ò8O˜Ÿ™ OÔ4ÐUYˆçØ?LÒ?X˜OÑ;Ð_nÐ^pˆLØ°"Õ"5Õ5Ð5ä3Ø-Ø'Ø)×7Ñ7Ø&×1Ñ1ô	
ð 	
r   )r%   rH   r¸  rº  r¼  )F)NNNFN)r   r   r   r   r.   rÀ  r   ry   r   r|   r}   r~   s   @@r   r³  r³  ª  s2   ù‡ € ÷õ ò&0ð ÷,
ñ ,
ó ÷,
ð ,
r   r³  c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )r»  iô  c                ó$   <€ V ^8„  d   QhRS[ RR/# r#   r   )r'   r(   s   "€r   r)   Ú!Data2VecVisionPooler.__annotate__õ  s   ø€ ÷ 
ñ 
Ñ3ð 
¸ñ 
r   c                ó¼   <€ \         SV `  4        VP                  '       d4   \        P                  ! VP
                  VP                  R 7      V n        R# RV n        R# )r9  N)r-   r.   r¹  r   r?  r2   r@  rº  ræ   s   &&€r   r.   ÚData2VecVisionPooler.__init__õ  sD   ø€ Ü‰ÑÔàKQ×Kb×KbÐKbŒB�LŠL˜×+Ñ+°×1FÑ1FÔGð 	ŽØhlð 	Žr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r  rŠ   )r'   r(   s   "€r   r)   rÏ  û  s'   ø€ ÷ vñ v¡U§\¡\ð v±e·l±lñ vr   c                ó~   € V P                   e(   V P                  VR,          P                  ^4      4      # VR,          # )N©rU   rV   rU   )rU   rž   )rº  Úmeanr  s   &&r   ry   ÚData2VecVisionPooler.forwardû  s6   € àBFÇ.Á.ÒB\ˆt�~‰~˜m¨HÕ5×:Ñ:¸1Ó=Ó>ÐuÐboÐptÕbuÐur   )rº  rÍ   r~   s   @@r   r»  r»  ô  s!   ù‡ € ÷
ó 
÷v÷ vð vr   r»  zÀ
    Data2VecVision Model transformer with an image classification head on top (a linear layer on top of the average of
    the final hidden states of the patch tokens) e.g. for ImageNet.
    c                   ó^   a a€ ] tR tRt oV3R lV 3R llt]RV3R lR ll4       tRtVtV ;t	# )Ú$Data2VecVisionForImageClassificationi   c                ó$   <€ V ^8„  d   QhRS[ RR/# r#   r   )r'   r(   s   "€r   r)   Ú1Data2VecVisionForImageClassification.__annotate__  s   ø€ ÷ 
ñ 
Ñ3ð 
¸ñ 
r   c                ó8  <€ \         SV `  V4       VP                  V n        \        VR R7      V n        VP                  ^ 8”  d,   \
        P                  ! VP                  VP                  4      M\
        P                  ! 4       V n	        V P                  4        R# )T©rµ  N)r-   r.   Ú
num_labelsr³  rž  r   r§   r2   rB  Ú
classifierr½  ræ   s   &&€r   r.   Ú-Data2VecVisionForImageClassification.__init__  st   ø€ Ü‰Ñ˜Ô à ×+Ñ+ˆŒÜ2°6ÈTÔRˆÔð OU×N_ÑN_ÐbcÔNcœ"Ÿ)š) F×$6Ñ$6¸×8IÑ8IÔJÔik×itÒitÓivˆŒð 	�‰Ör   c                óÂ   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[R,          RS[R,          RS[RS[R,          RS[S[,          /# ©	r$   rj   NÚlabelsrµ   rŒ  rg   r�  r&   )r0   rK   r¬   r›   r   )r'   r(   s   "€r   r)   rÚ    su   ø€ ÷ *
ñ *
á—l‘l TÕ)ð*
ñ —‘˜tÕ#ð*
ñ   $�;ð	*
ñ
 # T�kð*
ñ #'ð*
ñ ˜D•[ð*
ñ 
Ñ&Õ	&ñ*
r   c                óž  € Ve   TMV P                   P                  pV P                  VVVVVR7      pV'       d   VP                  MV^,          p	V P	                  V	4      p
RpVe   V P                  W*V P                   4      pV'       g"   V
3VR,          ,           pVe   V3V,           # T# \        VV
VP                  VP                  R7      # )ab  
labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
    Labels for computing the image classification/regression loss. Indices should be in `[0, ...,
    config.num_labels - 1]`. If `config.num_labels == 1` a regression loss is computed (Mean-Square loss), If
    `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
N©rµ   rŒ  rg   r�  rÄ  ©ÚlossÚlogitsr´   r•  )	r%   r�  rž  rÅ  rÞ  Úloss_functionr   r´   r•  )rD   rj   râ  rµ   rŒ  rg   r�  rÆ  rÊ   rÊ  rç  ræ  rù   s   &&&&&&&,     r   ry   Ú,Data2VecVisionForImageClassification.forward  sÑ   € ð" &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆØ×&Ñ&ØØ/Ø!5Ø%=Ø#ð 'ó 
ˆ÷ 2=˜×-Ò-À'È!Å*ˆà—‘ Ó/ˆàˆØÒØ×%Ñ% f°d·k±kÓBˆDçØ�Y ¨¥Õ,ˆFØ)-Ò)9�T�G˜fÕ$ÐE¸vÐEä$ØØØ!×/Ñ/Ø×)Ñ)ô	
ð 	
r   )rÞ  rž  rÝ  ©NNNNFN)
r   r   r   r   r.   r   ry   r   r|   r}   r~   s   @@r   rØ  rØ     s-   ù‡ € ÷
ó 
ð ÷*
ñ *
ó ÷*
ð *
r   rØ  c                   óT   a a€ ] tR tRt oRV3R lV 3R llltV3R lR ltRtVtV ;t# )ÚData2VecVisionConvLayeriC  c                óÒ   <€ V ^8„  d   QhRS[ RS[ RS[ S[S[ S[ 3,          ,          RS[ RS[ S[S[ S[ 3,          ,          S[,          RS[RS[ S[S[ S[ 3,          ,          RS[ R	S[/	# )
r$   Úin_channelsÚout_channelsr‚   rƒ   Úpaddingr¡   ÚdilationÚgroupsÚ
activation)rL   r›   r  r¬   )r'   r(   s   "€r   r)   Ú$Data2VecVisionConvLayer.__annotate__D  sœ   ø€ ÷ Zñ ZáðZñ ðZñ ™5¡¡c �?Õ*ð	Zñ
 ðZñ ‘u™S¡#˜X•Õ&©Õ,ðZñ ðZñ ™™c¡3˜h�Õ'ðZñ ðZñ ñZr   c
                ó  <€ \         S
V `  4        \        P                  ! VVVVVVVVR 7      V n        \        P
                  ! V4      V n        V	e   \        V	,          V n	        R# \        P                  ! 4       V n	        R# ))rî  rï  r‚   rƒ   rð  rñ  rò  r¡   N)
r-   r.   r   r†   ÚconvolutionÚBatchNorm2dÚnormalizationr   rB  ró  )rD   rî  rï  r‚   rƒ   rð  r¡   rñ  rò  ró  rE   s   &&&&&&&&&&€r   r.   Ú Data2VecVisionConvLayer.__init__D  si   ø€ ô 	‰ÑÔÜŸ9š9Ø#Ø%Ø#ØØØØØô	
ˆÔô  Ÿ^š^¨LÓ9ˆÔØ0:Ò0Fœ& Õ,ˆŽÌBÏKÊKËMˆŽr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r  rŠ   )r'   r(   s   "€r   r)   rô  ^  r  r   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# r{   )rö  rø  ró  r  s   &&r   ry   ÚData2VecVisionConvLayer.forward^  s6   € Ø×(Ñ(¨Ó7ˆØ×*Ñ*¨=Ó9ˆØŸ™¨Ó6ˆØÐr   )ró  rö  rø  )é   r,   rž   Fr,   r,   ÚrelurÍ   r~   s   @@r   rì  rì  C  s    ù‡ € ÷Zõ Z÷4÷ ð r   rì  c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )Ú!Data2VecVisionPyramidPoolingBlockif  c                ó0   <€ V ^8„  d   QhRS[ RS[ RS[ RR/# )r$   Ú
pool_scalerî  Úchannelsr&   N)rL   )r'   r(   s   "€r   r)   Ú.Data2VecVisionPyramidPoolingBlock.__annotate__g  s/   ø€ ÷ Rñ R¡3ð R±Sð RÁCð RÈDñ Rr   c                ó~   <€ \         SV `  4        \        P                  ! V4      V n        \        W#^R7      V n        R# )r,   ©r‚   N)r-   r.   r   ÚAdaptiveAvgPool2dÚpoolingrì  Úconv)rD   r  rî  r  rE   s   &&&&€r   r.   Ú*Data2VecVisionPyramidPoolingBlock.__init__g  s.   ø€ Ü‰ÑÔÜ×+Ò+¨JÓ7ˆŒÜ+¨KÈqÔQˆŽ	r   c                ój   <€ V ^8„  d   QhRS[ P                  RS[S[S[3,          RS[ P                  /# )r$   ÚinputrP   r&   )r0   rK   r›   rL   )r'   r(   s   "€r   r)   r  l  s2   ø€ ÷ ñ ™UŸ\™\ð ±±s¹C°xµð ÁUÇ\Á\ñ r   c                óŽ   € V P                  V4      pV P                  V4      p\        P                  P	                  W2R RR7      pV# )rl  FrO   )r  r	  r   r]   r^   )rD   r  rP   Úhidden_states   &&& r   ry   Ú)Data2VecVisionPyramidPoolingBlock.forwardl  s@   € Ø—|‘| EÓ*ˆØ—y‘y Ó.ˆÜ—}‘}×0Ñ0°ÈzÐinÐ0ÓoˆØÐr   )r	  r  rÍ   r~   s   @@r   r   r   f  s    ù‡ € ÷Ró R÷
÷ ð r   r   c                   óT   a a€ ] tR tRt oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )Ú"Data2VecVisionPyramidPoolingModuleit  aK  
Pyramid Pooling Module (PPM) used in PSPNet.

Args:
    pool_scales (tuple[int]): Pooling scales used in Pooling Pyramid
        Module.
    in_channels (int): Input channels.
    channels (int): Channels after modules, before conv_seg.

Based on OpenMMLab's implementation, found in https://github.com/open-mmlab/mmsegmentation.
c                óD   <€ V ^8„  d   QhRS[ S[R3,          RS[RS[RR/# )r$   Úpool_scales.rî  r  r&   N)r›   rL   )r'   r(   s   "€r   r)   Ú/Data2VecVisionPyramidPoolingModule.__annotate__�  s3   ø€ ÷ 

ñ 

¡E©#¨s¨(¥Oð 

Á#ð 

ÑQTð 

ÐY]ñ 

r   c                ó¾   <€ \         SV `  4        Wn        W n        W0n        \
        P                  ! V Uu. uF  p\        WBVR 7      NK  	  up4      V n        R# u upi ))r  rî  r  N)	r-   r.   r  rî  r  r   r‚  r   Úblocks)rD   r  rî  r  r  rE   s   &&&& €r   r.   Ú+Data2VecVisionPyramidPoolingModule.__init__�  sY   ø€ Ü‰ÑÔØ&ÔØ&ÔØ ŒÜ—m’mñ #.óá"-�Jô 2¸ZÐks×tÙ"-ñó
ˆŽùòs   ¶Ac                ó^   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          /# r  )r0   rK   Úlist)r'   r(   s   "€r   r)   r  �  s,   ø€ ÷ Sñ S¡U§\¡\ð S±d¹5¿<¹<Õ6Hñ Sr   c                ó~   € VP                  4       R ,          pV P                   Uu. uF  q3! WR7      NK  	  up# u upi )rÄ  )rP   )rP   r  )rD   r´   Úoriginal_sizeÚblocks   &&  r   ry   Ú*Data2VecVisionPyramidPoolingModule.forward�  s6   € Ø%×*Ñ*Ó,¨RÕ0ˆØFJÇkÂkÓRÁk¸U��m×8ÁkÑRÐRùÒRs   ¦:)r  r  rî  r  r”   r~   s   @@r   r  r  t  s&   ù‡ € ñ
÷

ó 

÷S÷ Sð Sr   r  c                   óf   a a€ ] tR tRt oRtV3R lV 3R lltV3R lR ltV3R lR ltR	tVt	V ;t
# )
ÚData2VecVisionUperHeadi“  zê
Unified Perceptual Parsing for Scene Understanding. This head is the implementation of
[UPerNet](https://huggingface.co/papers/1807.10221).

Based on OpenMMLab's implementation, found in https://github.com/open-mmlab/mmsegmentation.
c                ó$   <€ V ^8„  d   QhRS[ RR/# r#   r   )r'   r(   s   "€r   r)   Ú#Data2VecVisionUperHead.__annotate__›  s   ø€ ÷  
ñ  
Ñ3ð  
¸ñ  
r   c           
     ó  <€ \         SV `  4        VP                  V n        VP                  .^,          V n        VP                  V n        \        P                  ! V P
                  VP                  ^R7      V n	        \        V P                  V P                  R,          V P
                  4      V n        \        V P                  R,          \        V P                  4      V P
                  ,          ,           V P
                  ^^R7      V n        \        P                  ! 4       V n        \        P                  ! 4       V n        V P                  RR  Fo  pV P                   P%                  \        W P
                  ^R7      4       V P"                  P%                  \        V P
                  V P
                  ^^R7      4       Kq  	  \        \        V P                  4      V P
                  ,          V P
                  ^^R7      V n        R# )é   r  ©r‚   rð  NrW   )r-   r.   r  r2   rî  r  r   r†   rÝ  rÞ  r  Úpsp_modulesrì  ÚlenÚpsp_bottleneckr‚  Úlateral_convsÚ	fpn_convsÚappendÚfpn_bottleneck)rD   r%   rî  rE   s   && €r   r.   ÚData2VecVisionUperHead.__init__›  s~  ø€ Ü‰ÑÔà!×-Ñ-ˆÔØ"×.Ñ.Ð/°!Õ3ˆÔØ×*Ñ*ˆŒÜŸ)š) D§M¡M°6×3DÑ3DÐRSÔTˆŒô >Ø×ÑØ×Ñ˜RÕ Ø�M‰Mó
ˆÔô
 6Ø×Ñ˜RÕ ¤3 t×'7Ñ'7Ó#8¸4¿=¹=Õ#HÕHØ�M‰MØØô	
ˆÔô  Ÿ]š]›_ˆÔÜŸš›ˆŒØ×+Ñ+¨C¨RÓ0ˆKØ×Ñ×%Ñ%Ô&=¸kÏ=É=ÐfgÔ&hÔiØ�N‰N×!Ñ!Ô"9¸$¿-¹-ÈÏÉÐdeÐopÔ"qÖrñ 1ô 6Ü�× Ñ Ó! D§M¡MÕ1Ø�M‰MØØô	
ˆÖr   c                ó^   <€ V ^8„  d   QhRS[ S[P                  ,          RS[P                  /# r  ©r  r0   rK   )r'   r(   s   "€r   r)   r!  ½  s(   ø€ ÷ 1ñ 1©©e¯l©lÕ);ð 1ÁÇÁñ 1r   c                óŠ   € VR,          p\         P                  ! V.V P                  V4      O^R7      pV P                  V4      # )r,   rS   rW   )r0   r`   r%  r'  )rD   r´   r  s   && r   Úpsp_forwardÚ"Data2VecVisionUperHead.psp_forward½  sA   € Ø$ RÕ(ˆÜ—y’y ,Ð!P°×1AÑ1AÀ,Ó1OÐ!PÐVWÔXˆØ×"Ñ" <Ó0Ð0r   c                ó^   <€ V ^8„  d   QhRS[ S[P                  ,          RS[P                  /# ©r$   Úencoder_hidden_statesr&   r.  )r'   r(   s   "€r   r)   r!  Â  s(   ø€ ÷ ñ ©T±%·,±,Õ-?ð ÁEÇLÁLñ r   c           	     óÀ  € . p\        V P                  V4       F  w  r4VP                  V! V4      4       K  	  VP                  V P                  V4      4       \	        V4      p\        V^,
          ^ R4       Fi  pW&^,
          ,          P                  R,          pW&^,
          ,          \        P                  P                  W&,          VRRR7      ,           W&^,
          &   Kk  	  . p\        V^,
          4       F1  pVP                  V P                  V,          ! W&,          4      4       K3  	  VP                  VR,          4       \        V^,
          ^ R4       FF  p\        P                  P                  W†,          V^ ,          P                  R,          RRR7      W†&   KH  	  \        P                  ! V^R7      pV P                  V4      p	V P                  V	4      p	V	# )r,   rÄ  rl  FrO   rS   rW   )Úzipr(  r*  r0  r&  rƒ  rX   r   r]   r^   r)  r0   r`   r+  rÞ  )
rD   r4  ÚlateralsÚlateral_convr  Úused_backbone_levelsr‰  Ú
prev_shapeÚfpn_outsrù   s
   &&        r   ry   ÚData2VecVisionUperHead.forwardÂ  s�  € àˆÜ*-¨d×.@Ñ.@ÐBWÖ*XÑ&ˆLØ�O‰O™L¨Ó6Ö7ñ +Yð 	�‰˜×(Ñ(Ð)>Ó?Ô@ô  # 8›}ÐÜÐ+¨aÕ/°°BÖ7ˆAØ! a¥%�×.Ñ.¨rÕ2ˆJØ&¨1¥u�o´·±×0IÑ0IØ• *°:ÈUð 1Jó 1õ ˆH˜•U‹Oñ 8ð ˆÜÐ+¨aÕ/Ö0ˆAØ�O‰O˜DŸN™N¨1Ö-¨h­kÓ:Ö;ñ 1ð 	�‰˜ �Ô%äÐ+¨aÕ/°°BÖ7ˆAÜŸ-™-×3Ñ3Ø• (¨1¥+×"3Ñ"3°BÕ"7¸jÐX]ð 4ó ˆH‹Kñ 8ô —9’9˜X¨1Ô-ˆØ×$Ñ$ XÓ.ˆØ—‘ Ó(ˆàˆr   )	r  rÞ  r+  r)  rî  r(  r  r'  r%  )r   r   r   r   r   r.   r0  ry   r   r|   r}   r~   s   @@r   r  r  “  s.   ù‡ € ñ÷ 
ó  
÷D1ð 1÷
÷ ð r   r  c                   óX   a a€ ] tR tRt oRtRV3R lV 3R llltV3R lR ltRtVtV ;t	# )	ÚData2VecVisionFCNHeadiå  aÁ  
Fully Convolution Networks for Semantic Segmentation. This head is implemented of
[FCNNet](https://huggingface.co/papers/1411.4038>).

Args:
    config (Data2VecVisionConfig): Configuration.
    in_channels
    kernel_size (int): The kernel size for convs in the head. Default: 3.
    dilation (int): The dilation rate for convs in the head. Default: 1.


Based on OpenMMLab's implementation, found in https://github.com/open-mmlab/mmsegmentation.
c                ó\   <€ V ^8„  d   QhRS[ RS[RS[RS[S[S[S[3,          ,          RR/# )r$   r%   Úin_indexr‚   rñ  r&   N)r   rL   r›   )r'   r(   s   "€r   r)   Ú"Data2VecVisionFCNHead.__annotate__ô  sQ   ø€ ÷ %Uñ %Uá$ð%Uñ ð%Uñ ð	%Uñ
 ™™c¡3˜h�Õ'ð%Uð 
ñ%Ur   c                ól  <€ \         SV `  4        VP                  V n        VP                  V n        VP                  V n        VP                  V n	        W n
        V^,          V,          p\        P                  ! 4       V n        V P                  ^ 8”  d�   V P                  P                  \        V P                  V P
                  W5VR7      4       \!        V P                  ^,
          4       F@  pV P                  P                  \        V P
                  V P
                  VVVR7      4       KB  	  V P                  '       d@   \        V P                  V P
                  ,           V P
                  W3^,          R7      V n        \        P$                  ! V P
                  VP&                  ^R7      V n        R# )r$   )r‚   rð  rñ  r$  r  N)r-   r.   r2   rî  Úauxiliary_channelsr  Úauxiliary_num_convsÚ	num_convsÚauxiliary_concat_inputÚconcat_inputr@  r   r‚  Úconvsr*  rì  rƒ  Úconv_catr†   rÝ  rÞ  )rD   r%   r@  r‚   rñ  Úconv_paddingrq   rE   s   &&&&&  €r   r.   ÚData2VecVisionFCNHead.__init__ô  sG  ø€ ô 	‰ÑÔØ!×-Ñ-ˆÔØ×1Ñ1ˆŒØ×3Ñ3ˆŒØ"×9Ñ9ˆÔØ Œà# qÕ(¨HÕ4ˆÜ—]’]“_ˆŒ
Ø�>‰>˜AÔØ�J‰J×ÑÜ'Ø×$Ñ$ d§m¡mÀÐmuôôô
 ˜4Ÿ>™>¨AÕ-Ö.�Ø—
‘
×!Ñ!Ü+ØŸ™ØŸ™Ø$/Ø ,Ø!)ôöñ /ð ××ÐÜ3Ø× Ñ  4§=¡=Õ0°$·-±-È[ÐqrÕbrôˆDŒMô Ÿ)š) D§M¡M°6×3DÑ3DÐRSÔTˆŽr   c                ó^   <€ V ^8„  d   QhRS[ S[P                  ,          RS[P                  /# r3  r.  )r'   r(   s   "€r   r)   rA    s(   ø€ ÷ ñ ©T±%·,±,Õ-?ð ÁEÇLÁLñ r   c                óú   € WP                   ,          pTpV P                   F  pV! V4      pK  	  V P                  '       d)   V P                  \        P
                  ! W#.^R7      4      pV P                  V4      pV# )r,   rS   )r@  rH  rG  rI  r0   r`   rÞ  )rD   r4  Úresidualr´   r	  s   &&   r   ry   ÚData2VecVisionFCNHead.forward  sh   € Ø(¯©Õ7ˆØ ˆØ—J”JˆDÙ  Ó/ŠMñ à××ÐØ ŸM™M¬%¯)ª)°XÐ4MÐSTÔ*UÓVˆMØŸ™¨Ó6ˆØÐr   )r  rÞ  rG  rI  rH  rî  r@  rE  )r$   rý  r,   r”   r~   s   @@r   r>  r>  å  s&   ù‡ € ñ÷%Uõ %U÷N÷ ð r   r>  c                   ód   a a€ ] tR tRt oV3R lV 3R lltR t]RV3R lR ll4       tRtVt	V ;t
# )	Ú%Data2VecVisionForSemanticSegmentationi&  c                ó$   <€ V ^8„  d   QhRS[ RR/# r#   r   )r'   r(   s   "€r   r)   Ú2Data2VecVisionForSemanticSegmentation.__annotate__)  s   ø€ ÷ ñ Ñ3ð ¸ñ r   c                óœ  <€ \         SV `  V4       VP                  V n        \        VR R7      V n        \        V P                  P                  4      ^8w  d   \        R4      h\        P                  ! \        P                  ! VP                  VP                  ^^R7      \        P                  ! VP                  4      \        P                  ! 4       \        P                  ! VP                  VP                  ^^R7      4      V n        \        P                  ! \        P                  ! VP                  VP                  ^^R7      4      V n        \        P"                  ! 4       V n        \        P&                  ! ^^R7      V n        \+        V4      V n        VP.                  '       d   \1        V4      MRV n        V P5                  4        R# )FrÜ  zÑData2VecVisionForSemanticSegmentation requires config.out_indices to be a list of 4 integers, specifying which features to use from the backbone. One can use [3, 5, 7, 11] in case of a base-sized architecture.r�   N)r-   r.   rÝ  r³  rž  r&  r%   Úout_indicesr�   r   Ú
SequentialÚConvTranspose2dr2   r÷  ÚGELUÚfpn1Úfpn2rB  Úfpn3Ú	MaxPool2dÚfpn4r  Údecode_headÚuse_auxiliary_headr>  Úauxiliary_headr½  ræ   s   &&€r   r.   Ú.Data2VecVisionForSemanticSegmentation.__init__)  sT  ø€ Ü‰Ñ˜Ô à ×+Ñ+ˆŒÜ2°6ÈUÔSˆÔô ˆt�{‰{×&Ñ&Ó'¨1Ô,Üð-óð ô
 —M’MÜ×Ò˜v×1Ñ1°6×3EÑ3EÐSTÐ]^Ô_Ü�NŠN˜6×-Ñ-Ó.Ü�GŠG‹IÜ×Ò˜v×1Ñ1°6×3EÑ3EÐSTÐ]^Ô_ó	
ˆŒ	ô —M’MÜ×Ò˜v×1Ñ1°6×3EÑ3EÐSTÐ]^Ô_ó
ˆŒ	ô —K’K“MˆŒ	Ü—L’L¨Q°qÔ9ˆŒ	ô 2°&Ó9ˆÔØ?E×?X×?XÐ?XÔ3°FÔ;Ð^bˆÔð 	�‰Ör   c                ó~  € \         P                  P                  WP                  RR RRR7      pVe0   \         P                  P                  W#P                  RR RRR7      p\	        V P
                  P                  R7      pV! WC4      pTpVe-   V! XV4      p	W€P
                  P                  V	,          ,          pV# )r$   Nrl  FrO   )Úignore_indexr»   )r   r]   r^   rX   r   r%   Úsemantic_loss_ignore_indexÚauxiliary_loss_weight)
rD   rç  Úauxiliary_logitsrâ  Úupsampled_logitsÚupsampled_auxiliary_logitsÚloss_fctÚ	main_lossræ  Úauxiliary_losss
   &&&&      r   Úcompute_lossÚ2Data2VecVisionForSemanticSegmentation.compute_lossI  s¹   € äŸ=™=×4Ñ4ØŸ™ b cÐ*°È5ð 5ó 
Ðð Ò'Ü)+¯©×)BÑ)BØ §|¡|°B°CÐ'8¸zÐY^ð *Có *Ð&ô $°·±×1WÑ1WÔXˆÙÐ-Ó6ˆ	ØˆØÒ'Ù%Ð&@À&ÓIˆNØ—K‘K×5Ñ5¸ÕFÕFˆDàˆr   c                óÂ   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[R,          RS[R,          RS[RS[R,          RS[S[,          /# rá  )r0   rK   r¬   r›   r   )r'   r(   s   "€r   r)   rS  ]  s~   ø€ ÷ Y
ñ Y
á—l‘l TÕ)ðY
ñ —‘˜tÕ#ðY
ñ   $�;ð	Y
ñ
 # T�kðY
ñ #'ðY
ñ ˜D•[ðY
ñ 
Ñ(Õ	(ñY
r   c           	     óú  € Ve   TMV P                   P                  pVe   TMV P                   P                  pVe'   V P                   P                  ^8X  d   \	        R4      hV P                  VVRVVR7      pV'       d   VP                  MV^,          p	\        V	4       U
Uu. uF+  w  r«V
^,           V P                   P                  9   g   K)  VNK-  	  pp
pVP                  ^ ,          pV P                   P                  V P                   P                  ,          pV Uu. uF-  qÿR,          P                  ^ ^^4      P                  VR	Wî4      NK/  	  ppV P                  V P                  V P                   V P"                  .p\%        \'        V4      4       F  pVV,          ! VV,          4      VV&   K  	  V P)                  V4      pRpV P*                  e   V P+                  V4      pRpVe   V P-                  VVV4      pV'       g<   V'       d   V3VR,          ,           pMV3VR,          ,           pVe   V3V,           # T# \/        TTV'       d   VP                  MRVP0                  R7      # u upp
i u upi )
aù  
labels (`torch.LongTensor` of shape `(batch_size, height, width)`, *optional*):
    Ground truth semantic segmentation maps for computing the loss. Indices should be in `[0, ...,
    config.num_labels - 1]`. If `config.num_labels > 1`, a classification loss is computed (Cross-Entropy).

Examples:

```python
>>> from transformers import AutoImageProcessor, Data2VecVisionForSemanticSegmentation
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> image_processor = AutoImageProcessor.from_pretrained("facebook/data2vec-vision-base")
>>> model = Data2VecVisionForSemanticSegmentation.from_pretrained("facebook/data2vec-vision-base")

>>> inputs = image_processor(images=image, return_tensors="pt")
>>> outputs = model(**inputs)
>>> # logits are of shape (batch_size, num_labels, height, width)
>>> logits = outputs.logits
```Nz/The number of labels should be greater than oneTrä  rV   rÄ  rå  rÔ  rW   )r%   r�  rŒ  rÝ  r�   rž  r´   r–  rU  rX   r:   r8   r\   r[   rY  rZ  r[  r]  rƒ  r&  r^  r`  rl  r   r•  )rD   rj   râ  rµ   rŒ  rg   r�  rÆ  rÊ   r4  ÚidxÚfeatureÚfeaturesrt   Úpatch_resolutionr‡  Úopsr‰  rç  rf  ræ  rù   s   &&&&&&&,              r   ry   Ú-Data2VecVisionForSemanticSegmentation.forward\  sP  € ðH &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆà$8Ò$DÑ È$Ï+É+×JjÑJjð 	ð Ò $§+¡+×"8Ñ"8¸AÔ"=ÜÐNÓOÐOà×&Ñ&ØØ/Ø!%Ø%=Ø#ð 'ó 
ˆ÷ :E × 5Ò 5È'ÐRSÍ*Ðô 1:Ð:OÔ0PÔwÑ0P¡ ÐTWÐZ[ÕT[Ð_c×_jÑ_j×_vÑ_vÑTv—G�GÑ0PˆÑwØ!×'Ñ'¨Õ*ˆ
ØŸ;™;×1Ñ1°T·[±[×5KÑ5KÕKÐánvó
ÙnvÐijˆh�K×Ñ  1 aÓ(×0Ñ0°¸RÐAQÖdÑnvð 	ð 
ð
 �y‰y˜$Ÿ)™) T§Y¡Y°·	±	Ð:ˆÜ”s˜8“}Ö%ˆAØ˜až& ¨!¥Ó-ˆH�Q‹Kñ &ð ×!Ñ! (Ó+ˆàÐØ×ÑÒ*Ø#×2Ñ2°8Ó<ÐàˆØÒØ×$Ñ$ VÐ-=¸vÓFˆDçß#Ø ˜ W¨R¥[Õ0‘à ˜ W¨R¥[Õ0�Ø)-Ò)9�T�G˜fÕ$ÐE¸vÐEä&ØØß3G˜'×/Ò/ÈTØ×)Ñ)ô	
ð 	
ùó; xùò
s   Â$&I2ÃI2Ä 3I8)r`  rž  r^  rY  rZ  r[  r]  rÝ  rê  )r   r   r   r   r.   rl  r   ry   r   r|   r}   r~   s   @@r   rQ  rQ  &  s7   ù‡ € ÷ó ò@ð& ÷Y
ñ Y
ó ÷Y
ð Y
r   rQ  )rØ  rQ  r³  r�  )?r   Úcollections.abcr;   r½   Údataclassesr   Útypingr   r0   r   Útorch.nnr   Ú r   r¡  Úactivationsr   Úmodeling_layersr   Úmodeling_outputsr	   r
   r   r   Úmodeling_utilsr   Úpytorch_utilsr   Úutilsr   r   r   Úconfiguration_data2vec_visionr   Ú
get_loggerr   rØ   r   ÚModuler!   r6   r–   rÏ   rà   rö   rò   r  r  r  r4  r®   ry  r�  r³  r»  rØ  rì  r   r  r  r>  rQ  Ú__all__r   r   r   Ú<module>r…     sY  ðñ $ã Û Ý !Ý ã Ý Ý %å &Ý !Ý 9÷ó õ .Ý @ß 7Ñ 7Ý ?ð 
×	Ò	˜HÓ	%€ñ ðôð
 ôÐ+Eó ó óðô\7˜rŸy™yô \7ô@#7 B§I¡Iô #7ôNF "§)¡)ô FôT0#Ð&Aô 0#ôh˜rŸy™yô ð& Ð(Ø
Ð+ð*Ð &ô˜bŸi™iô ô6 §¡ô ô"
˜2Ÿ9™9ô 
ô%˜RŸY™Yô %ô2>Ð4ô >ôDQ3¨¯©ô Q3ôjE
˜BŸI™Iô E
ðP ôT Oó Tó ðTð8 ôD
Ð7ó D
ó ðD
ôP	v˜2Ÿ9™9ô 	vñ ðôô8
Ð+Hó 8
óð8
ôx˜bŸi™iô ôF
¨¯	©	ô 
ôS¨¯©ô Sô>N˜RŸY™Yô Nôd>˜BŸI™Iô >ðB ôN
Ð,Ió N
ó ðN
òb‚r   