+
    œ°³j.»  ã                   óf  € R 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Ht ^R	IHt ^R
IHtHtHt ^RIHtHt ^RIHt ^RIHtHtH t H!t!H"t" ^RI#H$t$H%t% ^RI&H't' ^RI(H)t) ]!PT                  ! ]+4      t,] ! RR7      ] ! R R]4      4       4       t-] ! RR7      ] ! R R]4      4       4       t. ! R R]P^                  4      t0 ! R R]P^                  4      t1 ! R R]P^                  4      t2RLR R llt3 ! R  R!]P^                  4      t4 ! R" R#]P^                  4      t5 ! R$ R%]P^                  4      t6 ! R& R']P^                  4      t7 ! R( R)]P^                  4      t8 ! R* R+]4      t9 ! R, R-]P^                  4      t:R. t; ! R/ R0]P^                  4      t< ! R1 R2]P^                  4      t= ! R3 R4]P^                  4      t> ! R5 R6]P^                  4      t?]  ! R7 R8]4      4       t@ ! R9 R:]P^                  4      tA]  ! R; R<]@4      4       tB ! R= R>]P^                  4      tC ! R? R@]P^                  4      tD ! RA RB]P^                  4      tE] ! RCR7       ! RD RE]@4      4       tF ! RF RG]P^                  4      tG ! RH RI]P^                  4      tH]  ! RJ RK]@4      4       tI. RMOtJR# )NzèPyTorch DPT (Dense Prediction Transformers) model.

This implementation is heavily inspired by OpenMMLab's implementation, found here:
https://github.com/open-mmlab/mmsegmentation/blob/master/mmseg/models/decode_heads/dpt_head.py.

N)ÚCallable)Ú	dataclass)Únn)ÚCrossEntropyLoss)Úinitialization)ÚACT2FN)Úfilter_output_hidden_statesÚload_backbone)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚDepthEstimatorOutputÚSemanticSegmenterOutput)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚModelOutputÚTransformersKwargsÚauto_docstringÚloggingÚ	torch_int)Úcan_return_tupleÚmerge_with_config_defaults)Úcapture_outputs©Ú	DPTConfigz£
    Base class for model's outputs that also contains intermediate activations that can be used at later stages. Useful
    in the context of Vision models.:
    )Úcustom_introc                   ó8   a € ] tR t^-t o RtRtRtV 3R ltRtV t	R# )Ú*BaseModelOutputWithIntermediateActivationsaW  
last_hidden_states (`torch.FloatTensor` of shape `(batch_size, sequence_length, hidden_size)`):
    Sequence of hidden-states at the output of the last layer of the model.
intermediate_activations (`tuple(torch.FloatTensor)`, *optional*):
    Intermediate activations that can be used to compute hidden states of the model at various layers.
Nc                óŠ   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[S[ P                  R3,          R,          ;R&   # )é   NÚlast_hidden_states.Úintermediate_activations©ÚtorchÚFloatTensorÚtuple)ÚformatÚ__classdict__s   "€Úe/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/dpt/modeling_dpt.pyÚ__annotate__Ú7BaseModelOutputWithIntermediateActivations.__annotate__-   s?   ø‡ ‚ ñ ×)Ñ)¨DÕ0Ñ7ñ ñ  $¡E×$5Ñ$5°sÐ$:Õ;¸dÕBÑIò! ó    © )
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r    r!   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r'   s   @r(   r   r   -   s   ø‡ € ñð 48ÐØEIÐ÷! ƒ r+   r   z¶
    Base class for model's outputs that also contains a pooling of the last hidden states as well as intermediate
    activations that can be used by the model at later stages.
    c                   óD   a € ] tR t^@t o RtRtRtRtRtRt	V 3R lt
RtV tR# )Ú4BaseModelOutputWithPoolingAndIntermediateActivationsa°  
pooler_output (`torch.FloatTensor` of shape `(batch_size, hidden_size)`):
    Last layer hidden-state of the first token of the sequence (classification token) after further processing
    through the layers used for the auxiliary pretraining task. E.g. for BERT-family of models, this returns
    the classification token after processing through a linear layer and a tanh activation function. The linear
    layer weights are trained from the next sentence prediction (classification) objective during pretraining.
intermediate_activations (`tuple(torch.FloatTensor)`, *optional*):
    Intermediate activations that can be used to compute hidden states of the model at various layers.
Nc                ó<  <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[S[ P                  R3,          R,          ;R&   S[S[ P                  R3,          R,          ;R&   S[S[ P                  R3,          R,          ;R&   # )r   NÚlast_hidden_stateÚpooler_output.Úhidden_statesÚ
attentionsr!   r"   )r&   r'   s   "€r(   r)   ÚABaseModelOutputWithPoolingAndIntermediateActivations.__annotate__@   s›   ø‡ ‚ ñ$ ×(Ñ(¨4Õ/Ñ6ñ% ñ& ×$Ñ$ tÕ+Ñ2ñ' ñ( ™×*Ñ*¨CÐ/Õ0°4Õ7Ñ>ñ) ñ* ‘e×'Ñ'¨Ð,Õ-°Õ4Ñ;ñ+ ñ, $¡E×$5Ñ$5°sÐ$:Õ;¸dÕBÑIò- r+   r,   )r-   r.   r/   r0   r1   r9   r:   r;   r<   r!   r2   r3   r4   r5   s   @r(   r7   r7   @   s.   ø‡ € ñð 37ÐØ.2€MØ:>€MØ7;€JØEIÐ÷- ƒ r+   r7   c                   óf   a a€ ] tR t^Yt oRtRV3R lV 3R llltR	R ltR
V3R lR lltRtVt	V ;t
# )ÚDPTViTHybridEmbeddingszÜ
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                óJ   <€ V ^8„  d   QhRS[ RS[S[S[3,          R,          /# )r   ÚconfigÚfeature_sizeN)r   r%   Úint)r&   r'   s   "€r(   r)   Ú#DPTViTHybridEmbeddings.__annotate__`   s,   ø€ ÷  eñ  e™yð  e¹¹cÁ3¸h½È$Õ8Nñ  er+   c                óê  <€ \         S
V `  4        VP                  VP                  rCVP                  VP
                  re\        V\        P                  P                  4      '       d   TMW33p\        V\        P                  P                  4      '       d   TMWD3pV^,          V^,          ,          V^ ,          V^ ,          ,          ,          p\        V4      V n        V P                  P                  R,          p\        V P                  P                  4      ^8w  d,   \        R\        V P                  P                  4       24      h^ ^.V n        Vf   VP                   p	V	RR pV	^,          pML\        V\        P                  P                  4      '       d   TMW"3pV P                  P                  R,          pW0n        V^ ,          V n        WPn        \"        P$                  ! W†^R7      V n        \"        P(                  ! \*        P,                  ! ^^VP
                  4      4      V n        \"        P(                  ! \*        P,                  ! ^V^,           VP
                  4      4      V n        R# )é   z1Expected backbone to have 3 output features, got N©Úkernel_sizeéÿÿÿÿéþÿÿÿ)ÚsuperÚ__init__Ú
image_sizeÚ
patch_sizeÚnum_channelsÚhidden_sizeÚ
isinstanceÚcollectionsÚabcÚIterabler	   ÚbackboneÚchannelsÚlenÚ
ValueErrorÚresidual_feature_map_indexÚbackbone_featmap_shaper   ÚConv2dÚ
projectionÚ	Parameterr#   ÚzerosÚ	cls_tokenÚposition_embeddings)ÚselfrA   rB   rM   rN   rO   rP   Únum_patchesÚfeature_dimÚfeat_map_shapeÚ	__class__s   &&&       €r(   rL   ÚDPTViTHybridEmbeddings.__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ˆä% fÓ-ˆŒØ—m‘m×,Ñ,¨RÕ0ˆÜˆt�}‰}×%Ñ%Ó&¨!Ô+ÜÐPÔQTÐUY×UbÑUb×UkÑUkÓQlÐPmÐnÓoÐoØ+,¨a¨&ˆÔ'àÒØ#×:Ñ:ˆNØ)¨"¨#Ð.ˆLØ(¨Õ+‰Kô !+¨<¼¿¹×9QÑ9Q× RÒ R‘ÐYeÐXtð ð Ÿ-™-×0Ñ0°Õ4ˆKà$ŒØ$ Q�-ˆŒØ(ÔäŸ)š) KÈ!ÔLˆŒäŸš¤e§k¢k°!°Q¸×8JÑ8JÓ&KÓLˆŒÜ#%§<¢<´·²¸A¸{ÈQ½ÐPV×PbÑPbÓ0cÓ#dˆÖ r+   c                ó˜  € VR RV13,          pV^ VR13,          p\        VP                  ^ ,          R,          4      pVP                  ^WwR4      P                  ^ ^^^4      p\        P
                  P                  WbV3RR7      pVP                  ^ ^^^4      P                  ^W#,          R4      p\        P                  ! WV.^R7      pV# ©ºNNNNç      à?Úbilinear)ÚsizeÚmode©ÚdimrI   )	r   ÚshapeÚreshapeÚpermuter   Ú
functionalÚinterpolater#   Úcat©ra   ÚposembÚgrid_size_heightÚgrid_size_widthÚstart_indexÚ
posemb_tokÚposemb_gridÚold_grid_sizes   &&&&&   r(   Ú_resize_pos_embedÚ(DPTViTHybridEmbeddings._resize_pos_embed‚   sÉ   € Ø˜A˜| ˜|˜OÕ,ˆ
Ø˜Q ¡˜_Õ-ˆä! +×"3Ñ"3°AÕ"6¸#Õ"=Ó>ˆà!×)Ñ)¨!¨]È2ÓN×VÑVÐWXÐZ[Ð]^Ð`aÓbˆÜ—m‘m×/Ñ/°ÐUdÐBeÐlvÐ/ÓwˆØ!×)Ñ)¨!¨Q°°1Ó5×=Ñ=¸aÐAQÕAcÐegÓhˆä—’˜JÐ4¸!Ô<ˆàˆr+   c                ó@   <€ V ^8„  d   QhRS[ P                  RS[RS[/# )r   Úpixel_valuesÚinterpolate_pos_encodingÚreturn)r#   ÚTensorÚboolr   )r&   r'   s   "€r(   r)   rD   �   s)   ø€ ÷ &
ñ &
Ù!ŸL™Lð&
ÙDHð&
á	3ñ&
r+   c                óN  € VP                   w  r4rVW@P                  8w  d   \        R 4      hV'       gi   WPP                  ^ ,          8w  g   W`P                  ^,          8w  d;   \        RV RV RV P                  ^ ,           RV P                  ^,           R2	4      hV P	                  V P
                  WPP                  ,          W`P                  ,          4      pV P                  V4      pVP                  R,          p	V P                   U
u. uF  q¨P                  V
,          NK  	  pp
V P                  V	4      P                  ^4      P                  ^^4      pV P                  P                  VRR4      p\        P                   ! WÜ3^R7      pWÇ,           p\#        VVR7      # u up
i )úeMake sure that the channel dimension of the pixel values match with the one set in the configuration.zInput image size (Ú*z) doesn't match model (z).rn   )r    r!   rI   )rp   rO   rX   rM   r~   r`   rN   rU   Úfeature_mapsrY   r\   ÚflattenÚ	transposer_   Úexpandr#   ru   r   )ra   r�   r‚   Ú
batch_sizerO   ÚheightÚwidthr`   Úbackbone_outputÚfeaturesÚindexÚoutput_hidden_statesÚ
embeddingsÚ
cls_tokenss   &&&           r(   ÚforwardÚDPTViTHybridEmbeddings.forward�   s‰  € ð 3?×2DÑ2DÑ/ˆ
 &Ø×,Ñ,Ô,ÜØwóð ÷ (ØŸ™¨Õ+Ô+¨u¿¹ÈÕ8JÔ/JÜ Ø(¨¨°°%°ð 9ØŸ™¨Õ+Ð,¨A¨d¯o©o¸aÕ.@Ð-AÀðEóð ð
 #×4Ñ4Ø×$Ñ$ f·±Õ&?ÀÏ/É/ÕAYó
Ðð Ÿ-™-¨Ó5ˆà"×/Ñ/°Õ3ˆð RV×QpÒQpÓqÑQpÈ× <Ñ <¸U× CÐ CÑQpÐÐqà—_‘_ XÓ.×6Ñ6°qÓ9×CÑCÀAÀqÓIˆ
à—^‘^×*Ñ*¨:°r¸2Ó>ˆ
Ü—Y’Y 
Ð7¸QÔ?ˆ
ð  Õ5ˆ
ô :Ø)Ø%9ô
ð 	
ùò  rs   Ä
F")rU   r_   rM   rO   rN   r`   r\   rY   ©N©rF   ©F©r-   r.   r/   r0   r1   rL   r~   r–   r3   r4   Ú__classcell__©re   r'   s   @@r(   r?   r?   Y   s+   ù‡ € ñ÷ eõ  eôD÷&
÷ &
ò &
r+   r?   c                   óR   a a€ ] tR t^¹t oRtV 3R ltRR ltV3R lR ltRtVt	V ;t
# )ÚDPTViTEmbeddingsz:
Construct the CLS token, position and patch embeddings.

c                óÀ  <€ \         SV `  4        \        P                  ! \        P
                  ! ^^VP                  4      4      V n        \        V4      V n	        V P                  P                  p\        P                  ! \        P
                  ! ^V^,           VP                  4      4      V n        \        P                  ! VP                  4      V n        Wn        R# )rF   N)rK   rL   r   r]   r#   r^   rP   r_   ÚDPTViTPatchEmbeddingsÚpatch_embeddingsrb   r`   ÚDropoutÚhidden_dropout_probÚdropoutrA   )ra   rA   rb   re   s   && €r(   rL   ÚDPTViTEmbeddings.__init__¿   s“   ø€ Ü‰ÑÔäŸš¤e§k¢k°!°Q¸×8JÑ8JÓ&KÓLˆŒÜ 5°fÓ =ˆÔØ×+Ñ+×7Ñ7ˆÜ#%§<¢<´·²¸A¸{ÈQ½ÐPV×PbÑPbÓ0cÓ#dˆÔ Ü—z’z &×"<Ñ"<Ó=ˆŒØŽr+   c                ó”  € VR RV13,          pV^ VR13,          p\        VP                  ^ 4      R,          4      pVP                  ^WwR4      P                  ^ ^^^4      p\        P
                  P                  WbV3RR7      pVP                  ^ ^^^4      P                  ^W#,          R4      p\        P                  ! WV.^R7      pV# rh   )	r   rl   rq   rr   r   rs   rt   r#   ru   rv   s   &&&&&   r(   r~   Ú"DPTViTEmbeddings._resize_pos_embedÉ   sÉ   € Ø˜A˜| ˜|˜OÕ,ˆ
Ø˜Q ¡˜_Õ-ˆä! +×"2Ñ"2°1Ó"5¸Õ"<Ó=ˆà!×)Ñ)¨!¨]È2ÓN×VÑVÐWXÐZ[Ð]^Ð`aÓbˆÜ—m‘m×/Ñ/°ÐUdÐBeÐlvÐ/ÓwˆØ!×)Ñ)¨!¨Q°°1Ó5×=Ñ=¸aÐAQÕAcÐegÓhˆä—’˜JÐ4¸!Ô<ˆàˆr+   c                ó:   <€ V ^8„  d   QhRS[ P                  RS[/# ©r   r�   rƒ   )r#   r„   r   )r&   r'   s   "€r(   r)   ÚDPTViTEmbeddings.__annotate__×   s$   ø€ ÷ Yñ Y¡E§L¡Lð YÑ5_ñ Yr+   c                óœ  € VP                   w  r#rEV P                  P                  pV P                  V P                  WF,          WV,          4      pV P                  V4      pVP                  4       w  r)p
V P                  P                  VRR4      p\        P                  ! W¸3^R7      pW‡,           pV P                  V4      p\        VR7      # )rF   rn   )r    rI   )rp   rA   rN   r~   r`   r¢   rl   r_   rŒ   r#   ru   r¥   r   )ra   r�   r�   rO   rŽ   r�   rN   r`   r”   Úseq_lenÚ_r•   s   &&          r(   r–   ÚDPTViTEmbeddings.forward×   sº   € Ø2>×2DÑ2DÑ/ˆ
 &ð —[‘[×+Ñ+ˆ
Ø"×4Ñ4Ø×$Ñ$ fÕ&:¸EÕ<Oó
Ðð ×*Ñ*¨<Ó8ˆ
à!+§¡Ó!2Ñˆ
˜Qð —^‘^×*Ñ*¨:°r¸2Ó>ˆ
Ü—Y’Y 
Ð7¸QÔ?ˆ
ð  Õ5ˆ
à—\‘\ *Ó-ˆ
ä9ÈZÔXÐXr+   )r_   rA   r¥   r¢   r`   r™   r›   r�   s   @@r(   rŸ   rŸ   ¹   s&   ù‡ € ñõ
ô÷Y÷ Yð Yr+   rŸ   c                   óT   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tVtV ;t	# )r¡   z
Image to Patch Embedding.

c                ó    <€ V ^8„  d   QhRS[ /# ©r   rA   r   )r&   r'   s   "€r(   r)   Ú"DPTViTPatchEmbeddings.__annotate__ö   s   ø€ ÷ jñ j™yñ jr+   c                ó  <€ \         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W n        W0n        W@n        W`n
        \        P                  ! WEW3R7      V n        R# )rF   )rH   ÚstrideN)rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rb   r   r[   r\   )ra   rA   rM   rN   rO   rP   rb   re   s   &&     €r(   rL   ÚDPTViTPatchEmbeddings.__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ˆØ$ŒØ$ŒØ(ÔØ&ÔäŸ)š) LÈ:ÔiˆŽr+   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# rª   ©r#   r„   )r&   r'   s   "€r(   r)   r³     s#   ø€ ÷ ñ ¡E§L¡Lð ±U·\±\ñ r+   c                óº   € VP                   w  r#rEW0P                  8w  d   \        R 4      hV P                  V4      P	                  ^4      P                  ^^4      pV# )r‡   )rp   rO   rX   r\   rŠ   r‹   )ra   r�   r�   rO   rŽ   r�   r”   s   &&     r(   r–   ÚDPTViTPatchEmbeddings.forward  s\   € Ø2>×2DÑ2DÑ/ˆ
 &Ø×,Ñ,Ô,ÜØwóð ð —_‘_ \Ó2×:Ñ:¸1Ó=×GÑGÈÈ1ÓMˆ
ØÐr+   )rM   rO   rb   rN   r\   ©
r-   r.   r/   r0   r1   rL   r–   r3   r4   rœ   r�   s   @@r(   r¡   r¡   ð   s%   ù‡ € ñ÷
jó j÷÷ ð r+   r¡   c                ó  € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R\        P                  R\        P                  R,          R\        R,          R\        R	\
        \        ,          /# )
r   ÚmoduleÚqueryÚkeyÚvalueÚattention_maskNÚscalingr¥   Úkwargs)r   ÚModuler#   r„   Úfloatr   r   )r&   s   "r(   r)   r)     s{   € ÷ %ñ %Ü�I‰Ið%ä�<‰<ð%ô 
�‰ð%ô �<‰<ð	%ô
 —L‘L 4Õ'ð%ô �T�\ð%ô ð%ô Ô'Õ(ñ%r+   c                 ó¶  € Vf   VP                  R4      R,          p\        P                  ! WP                  ^^4      4      V,          pVe	   W„,           p\        P
                  P                  VRR7      p\        P
                  P                  W†V P                  R7      p\        P                  ! Wƒ4      p	V	P                  ^^4      P                  4       p	W˜3# )Nrn   )ÚpÚtrainingrI   ç      à¿)
rl   r#   Úmatmulr‹   r   rs   Úsoftmaxr¥   rÈ   Ú
contiguous)
r½   r¾   r¿   rÀ   rÁ   rÂ   r¥   rÃ   Úattn_weightsÚattn_outputs
   &&&&&&&,  r(   Úeager_attention_forwardrÏ     s±   € ð ‚Ø—*‘*˜R“. DÕ(ˆô —<’< §}¡}°Q¸Ó':Ó;¸gÕE€LàÒ!Ø#Õ4ˆä—=‘=×(Ñ(¨¸2Ð(Ó>€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ó[€Lä—,’,˜|Ó3€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KàÐ$Ð$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# )ÚDPTSelfAttentioni-  c                ó    <€ V ^8„  d   QhRS[ /# r²   r   )r&   r'   s   "€r(   r)   ÚDPTSelfAttention.__annotate__.  s   ø€ ÷ ]ñ ]™yñ ]r+   c                óh  <€ \         SV `  4        VP                  VP                  ,          ^ 8w  d9   \	        VR4      '       g'   \        RVP                   RVP                   R24      hWn        VP                  V n        \        VP                  VP                  ,          4      V n        V P                  V P                  ,          V n	        VP                  V n        V P                  R,          V n        RV n        \        P                  ! VP                  V P                  VP                   R7      V n        \        P                  ! VP                  V P                  VP                   R7      V n        \        P                  ! VP                  V P                  VP                   R7      V n        R# )	é    Úembedding_sizezThe hidden size z4 is not a multiple of the number of attention heads Ú.F)ÚbiasNrÉ   )rK   rL   rP   Únum_attention_headsÚhasattrrX   rA   rC   Úattention_head_sizeÚall_head_sizeÚattention_probs_dropout_probÚdropout_probrÂ   Ú	is_causalr   ÚLinearÚqkv_biasr¾   r¿   rÀ   ©ra   rA   re   s   &&€r(   rL   ÚDPTSelfAttention.__init__.  sG  ø€ Ü‰ÑÔØ×Ñ × :Ñ :Õ:¸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ˆÔØ"×?Ñ?ˆÔØ×/Ñ/°Õ5ˆŒØˆŒä—Y’Y˜v×1Ñ1°4×3EÑ3EÈFÏOÉOÔ\ˆŒ
Ü—9’9˜V×/Ñ/°×1CÑ1CÈ&Ï/É/ÔZˆŒÜ—Y’Y˜v×1Ñ1°4×3EÑ3EÈFÏOÉOÔ\ˆŽ
r+   c                óŽ   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[S[ P                  S[ P                  3,          /# ©r   r;   rÃ   rƒ   )r#   r„   r   r   r%   )r&   r'   s   "€r(   r)   rÓ   B  sE   ø€ ÷ .ñ .á—|‘|ð.ñ Ñ+Õ,ð.ñ 
‰u�|‰|™UŸ\™\Ð)Õ	*ñ	.r+   c           	     óÔ  € VP                   ^ ,          pVRV P                  V P                  3pV P                  V4      P                  ! V!  P                  ^^4      pV P                  V4      P                  ! V!  P                  ^^4      pV P                  V4      P                  ! V!  P                  ^^4      p\        P                  ! V P                  P                  \        4      pT! V VVVR3RV P                  RV P                  RV P                  '       g   RMV P                   /VB w  ršV	P#                  4       RR V P$                  3,           pV	P'                  V4      p	Wš3# )rÕ   Nrß   rÂ   r¥   ç        rI   rJ   )rp   rÙ   rÛ   r¿   Úviewr‹   rÀ   r¾   r   Úget_interfacerA   Ú_attn_implementationrÏ   rß   rÂ   rÈ   rÞ   rl   rÜ   rq   )ra   r;   rÃ   r�   Ú	new_shapeÚ	key_layerÚvalue_layerÚquery_layerÚattention_interfaceÚcontext_layerÚattention_probsÚnew_context_layer_shapes   &&,         r(   r–   ÚDPTSelfAttention.forwardB  s_  € ð
 #×(Ñ(¨Õ+ˆ
Ø  D×$<Ñ$<¸d×>VÑ>VÐVˆ	à—H‘H˜]Ó+×0Ò0°)Ñ<×FÑFÀqÈ!ÓLˆ	Ø—j‘j Ó/×4Ò4°iÑ@×JÑJÈ1ÈaÓPˆØ—j‘j Ó/×4Ò4°iÑ@×JÑJÈ1ÈaÓPˆä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ *=ØØØØØñ
*
ð —n‘nð
*
ð —L‘Lð
*
ð  $Ÿ}Ÿ}˜}‘C°$×2CÑ2Cð
*
ð ñ
*
Ñ&ˆð #0×"4Ñ"4Ó"6°s¸Ð";¸t×?QÑ?QÐ>SÕ"SÐØ%×-Ñ-Ð.EÓFˆàÐ-Ð-r+   )
rÜ   rÛ   rA   rÞ   rß   r¿   rÙ   r¾   rÂ   rÀ   ©	r-   r.   r/   r0   rL   r–   r3   r4   rœ   r�   s   @@r(   rÑ   rÑ   -  s    ù‡ € ÷]ó ]÷(.÷ .ð .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	# )ÚDPTViTSelfOutputie  z”
The residual connection is defined in ViTLayer 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'   s   "€r(   r)   ÚDPTViTSelfOutput.__annotate__k  ó   ø€ ÷ >ñ >™yñ >r+   c                óÎ   <€ \         SV `  4        \        P                  ! VP                  VP                  4      V n        \        P                  ! VP                  4      V n        R # r˜   )	rK   rL   r   rà   rP   Údenser£   r¤   r¥   râ   s   &&€r(   rL   ÚDPTViTSelfOutput.__init__k  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ø   p  s1   ø€ ÷ ñ ¡U§\¡\ð ÁÇÁð ÑRW×R^ÑR^ñ r+   c                óJ   € V P                  V4      pV P                  V4      pV# r˜   ©rû   r¥   ©ra   r;   rÿ   s   &&&r(   r–   ÚDPTViTSelfOutput.forwardp  s$   € ØŸ
™
 =Ó1ˆØŸ™ ]Ó3ˆØÐr+   r  r»   r�   s   @@r(   rö   rö   e  s#   ù‡ € ñ÷
>ó >÷
÷ ð 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# )ÚDPTViTAttentioniw  c                ó    <€ V ^8„  d   QhRS[ /# r²   r   )r&   r'   s   "€r(   r)   ÚDPTViTAttention.__annotate__x  s   ø€ ÷ /ñ /™yñ /r+   c                ód   <€ \         SV `  4        \        V4      V n        \	        V4      V n        R # r˜   )rK   rL   rÑ   Ú	attentionrö   Úoutputrâ   s   &&€r(   rL   ÚDPTViTAttention.__init__x  s&   ø€ Ü‰ÑÔÜ)¨&Ó1ˆŒÜ& vÓ.ˆŽr+   c                ód   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[ P                  /# rå   ©r#   r„   r   r   )r&   r'   s   "€r(   r)   r  }  s7   ø€ ÷ ñ á—|‘|ðñ Ñ+Õ,ðñ 
�‰ñ	r+   c                óR   € V P                   ! V3/ VB w  r4V P                  W14      pV# r˜   ©r	  r
  )ra   r;   rÃ   Úself_attn_outputr®   r
  s   &&,   r(   r–   ÚDPTViTAttention.forward}  s/   € ð
 #Ÿnšn¨]ÑE¸fÑEÑÐØ—‘Ð-Ó=ˆØˆr+   r  rô   r�   s   @@r(   r  r  w  s   ù‡ € ÷/ó /÷
÷ ð 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# )ÚDPTViTIntermediateiˆ  c                ó    <€ V ^8„  d   QhRS[ /# r²   r   )r&   r'   s   "€r(   r)   ÚDPTViTIntermediate.__annotate__‰  s   ø€ ÷ 9ñ 9™yñ 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˜   )rK   rL   r   rà   rP   Úintermediate_sizerû   rQ   Ú
hidden_actÚstrr   Úintermediate_act_fnrâ   s   &&€r(   rL   ÚDPTViTIntermediate.__init__‰  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  ‘  s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r+   c                óJ   € V P                  V4      pV P                  V4      pV# r˜   ©rû   r  )ra   r;   s   &&r(   r–   ÚDPTViTIntermediate.forward‘  s&   € ØŸ
™
 =Ó1ˆØ×0Ñ0°Ó?ˆØÐr+   r  rô   r�   s   @@r(   r  r  ˆ  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# )ÚDPTViTOutputi˜  c                ó    <€ V ^8„  d   QhRS[ /# r²   r   )r&   r'   s   "€r(   r)   ÚDPTViTOutput.__annotate__™  rù   r+   c                óÎ   <€ \         SV `  4        \        P                  ! VP                  VP
                  4      V n        \        P                  ! VP                  4      V n	        R # r˜   )
rK   rL   r   rà   r  rP   rû   r£   r¤   r¥   râ   s   &&€r(   rL   ÚDPTViTOutput.__init__™  sB   ø€ Ü‰ÑÔÜ—Y’Y˜v×7Ñ7¸×9KÑ9KÓLˆŒ
Ü—z’z &×"<Ñ"<Ó=ˆŽr+   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# rþ   r¸   )r&   r'   s   "€r(   r)   r$  ž  s1   ø€ ÷ ñ ¡U§\¡\ð ÁÇÁð ÑRW×R^ÑR^ñ r+   c                óZ   € V P                  V4      pV P                  V4      pW,           pV# r˜   r  r  s   &&&r(   r–   ÚDPTViTOutput.forwardž  s,   € ØŸ
™
 =Ó1ˆØŸ™ ]Ó3ˆØ%Õ4ˆØÐr+   r  rô   r�   s   @@r(   r"  r"  ˜  s   ù‡ € ÷>ó >÷
÷ ð 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	# )ÚDPTViTLayeri¦  z?This corresponds to the Block class in the timm implementation.c                ó    <€ V ^8„  d   QhRS[ /# r²   r   )r&   r'   s   "€r(   r)   ÚDPTViTLayer.__annotate__©  s   ø€ ÷ [ñ [™yñ [r+   c                óx  <€ \         SV `  4        VP                  V n        ^V n        \	        V4      V n        \        V4      V n        \        V4      V n	        \        P                  ! VP                  VP                  R7      V n        \        P                  ! VP                  VP                  R7      V n        R# )rF   ©ÚepsN)rK   rL   Úchunk_size_feed_forwardÚseq_len_dimr  r	  r  Úintermediater"  r
  r   Ú	LayerNormrP   Úlayer_norm_epsÚlayernorm_beforeÚlayernorm_afterrâ   s   &&€r(   rL   ÚDPTViTLayer.__init__©  s‡   ø€ Ü‰ÑÔØ'-×'EÑ'EˆÔ$ØˆÔÜ(¨Ó0ˆŒÜ.¨vÓ6ˆÔÜ" 6Ó*ˆŒÜ "§¢¨V×-?Ñ-?ÀV×EZÑEZÔ [ˆÔÜ!Ÿ|š|¨F×,>Ñ,>ÀF×DYÑDYÔZˆÖr+   c                ód   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[ P                  /# rå   r  )r&   r'   s   "€r(   r)   r-  ³  s7   ø€ ÷ ñ á—|‘|ðñ Ñ+Õ,ðñ 
�‰ñ	r+   c                óÄ   € V P                  V4      pV P                  ! V3/ VB pWA,           pV P                  V4      pV P                  V4      pV P	                  WQ4      pV# r˜   )r6  r	  r7  r3  r
  )ra   r;   rÃ   Úhidden_states_normÚattention_outputÚlayer_outputs   &&,   r(   r–   ÚDPTViTLayer.forward³  sl   € ð
 "×2Ñ2°=ÓAÐØŸ>š>Ð*<ÑGÀÑGÐð )Õ8ˆð ×+Ñ+¨MÓ:ˆØ×(Ñ(¨Ó6ˆð —{‘{ <Ó?ˆàÐr+   )r	  r1  r3  r7  r6  r
  r2  r»   r�   s   @@r(   r+  r+  ¦  s#   ù‡ € ÙI÷[ó [÷÷ ð r+   r+  c                   óX   a a€ ] tR tRt oRtV 3R ltR tR tR	V3R lR lltRt	Vt
V ;t# )
ÚDPTReassembleStageiÈ  a  
This class reassembles the hidden states of the backbone into image-like feature representations at various
resolutions.

This happens in 3 stages:
1. Map the N + 1 tokens to a set of N tokens, by taking into account the readout ([CLS]) token according to
   `config.readout_type`.
2. Project the channel dimension of the hidden states according to `config.neck_hidden_sizes`.
3. Resizing the spatial dimensions (height, width).

Args:
    config (`[DPTConfig]`):
        Model configuration class defining the model architecture.
c                óð   <€ \         SV `  4        Wn        \        P                  ! 4       V n        VP                  '       d   V P                  V4       MV P                  V4       VP                  V n	        R # r˜   )
rK   rL   rA   r   Ú
ModuleListÚlayersÚ	is_hybridÚ_init_reassemble_dpt_hybridÚ_init_reassemble_dptÚneck_ignore_stagesrâ   s   &&€r(   rL   ÚDPTReassembleStage.__init__Ø  sV   ø€ Ü‰ÑÔàŒÜ—m’m“oˆŒØ××ÐØ×,Ñ,¨VÕ4à×%Ñ% fÔ-à"(×";Ñ";ˆÖr+   c           	     ó¼  € \        \        \        VP                  4      4      VP                  4       F|  w  r#V^8:  d1   V P
                  P                  \        P                  ! 4       4       K<  V^8”  g   KE  V P
                  P                  \        WP                  V,          VR7      4       K~  	  VP                  R8w  d   \        RVP                   R24      h\        P                  ! 4       V n        \        V4      p\        \        VP                  4      4       F¸  pV^8:  dE   V P                  P                  \        P                  ! \        P                  ! 4       4      4       KN  V^8”  g   KW  V P                  P                  \        P                  ! \        P                   ! ^V,          V4      \"        VP$                  ,          4      4       Kº  	  R# )zä"
For DPT-Hybrid the first 2 reassemble layers are set to `nn.Identity()`, please check the official
implementation: https://github.com/isl-org/DPT/blob/f43ef9e08d70a752195028a51be5e1aff227b913/dpt/vit.py#L438
for more details.
©rV   ÚfactorÚprojectzReadout type z! is not supported for DPT-Hybrid.N)ÚzipÚrangerW   Úneck_hidden_sizesÚreassemble_factorsrC  Úappendr   ÚIdentityÚDPTReassembleLayerÚreadout_typerX   rB  Úreadout_projectsÚ_get_backbone_hidden_sizeÚ
Sequentialrà   r   r  )ra   rA   ÚirK  rP   s   &&   r(   rE  Ú.DPTReassembleStage._init_reassemble_dpt_hybridä  sI  € ô œU¤3 v×'?Ñ'?Ó#@ÓAÀ6×C\ÑC\Ö]‰IˆAØ�AŒvØ—‘×"Ñ"¤2§;¢;£=Ö1Ø�Q–Ø—‘×"Ñ"Ô#5°f×G_ÑG_Ð`aÕGbÐkqÔ#rÖsñ	 ^ð ×Ñ )Ô+Ü˜}¨V×-@Ñ-@Ð,AÐAbÐcÓdÐdô !#§¢£ˆÔÜ/°Ó7ˆÜ”s˜6×3Ñ3Ó4Ö5ˆAØ�AŒvØ×%Ñ%×,Ñ,¬R¯]ª]¼2¿;º;»=Ó-IÖJØ�Q–Ø×%Ñ%×,Ñ,Ü—M’M¤"§)¢)¨A°­O¸[Ó"IÌ6ÐRX×RcÑRcÕKdÓeöó	 6r+   c           	     óf  € \        \        \        VP                  4      4      VP                  4       F<  w  r#V P
                  P                  \        WP                  V,          VR 7      4       K>  	  VP                  R8X  d®   \        P                  ! 4       V n        \        V4      p\        \        VP                  4      4       Fd  pV P                  P                  \        P                  ! \        P                  ! ^V,          V4      \        VP                   ,          4      4       Kf  	  R# R# )rJ  rL  N)rM  rN  rW   rO  rP  rC  rQ  rS  rT  r   rB  rU  rV  rW  rà   r   r  )ra   rA   rX  rK  rP   r®   s   &&    r(   rF  Ú'DPTReassembleStage._init_reassemble_dptþ  s×   € ÜœU¤3 v×'?Ñ'?Ó#@ÓAÀ6×C\ÑC\Ö]‰IˆAØ�K‰K×ÑÔ1°&×C[ÑC[Ð\]ÕC^ÐgmÔnÖoñ ^ð ×Ñ )Ô+Ü$&§M¢M£OˆDÔ!Ü3°FÓ;ˆKÜœ3˜v×7Ñ7Ó8Ö9�Ø×%Ñ%×,Ñ,Ü—M’M¤"§)¢)¨A°­O¸[Ó"IÌ6ÐRX×RcÑRcÕKdÓeöó :ñ ,r+   c                ón   <€ V ^8„  d   QhRS[ S[P                  ,          RS[ S[P                  ,          /# r  ©Úlistr#   r„   )r&   r'   s   "€r(   r)   ÚDPTReassembleStage.__annotate__
  s1   ø€ ÷ #ñ #¡T©%¯,©,Õ%7ð #ÑaeÑfk×frÑfrÕasñ #r+   c                óÆ  € . p\        V4       EFÎ  w  rVWPP                  9  Ed§   VR,          VR,          rgVP                  w  r‰p
Ve   Ve   VP                  W‚W:4      pM$\	        V	R,          4      pVP                  W‹Wº4      pVP                  ^ ^^^4      P                  4       pVP                  pV P                  P                  R8X  d“   VP                  ^4      P                  R4      pVP                  ^4      P                  V4      pV P                  V,          ! \        P                  ! Wm3R4      4      pVP                  ^ ^^4      P                  V4      pMSV P                  P                  R8X  d9   VP                  ^4      VP                  R4      ,           pVP                  V4      pV P                  V,          ! V4      pVP!                  V4       EKÑ  	  V# )z§
Args:
    hidden_states (`list[torch.FloatTensor]`, each of shape `(batch_size, sequence_length + 1, hidden_size)`):
        List of hidden states from the backbone.
rj   rL  Úadd©ri   rÕ   )ri   ºrF   NN)rÕ   r   rF   rI   )Ú	enumeraterG  rp   rq   r   rr   rÌ   rA   rT  rŠ   Ú	unsqueezeÚ	expand_asrU  r#   ru   rC  rQ  )ra   r;   Úpatch_heightÚpatch_widthÚoutrX  Úhidden_stater_   r�   Úsequence_lengthrO   rl   Úfeature_shapeÚreadouts   &&&&          r(   r–   ÚDPTReassembleStage.forward
  s£  € ð ˆä(¨×7‰OˆAØ×/Ñ/Õ/à*6°tÕ*<¸lÈ5Õ>Q˜<Ø<H×<NÑ<NÑ9�
¨\ØÒ+°Ò0GØ#/×#7Ñ#7¸
ÐR]Ó#l‘Lä$ _°cÕ%9Ó:�DØ#/×#7Ñ#7¸
È$Ó#]�LØ+×3Ñ3°A°q¸!¸QÓ?×JÑJÓL�à ,× 2Ñ 2�Ø—;‘;×+Ñ+¨yÔ8à#/×#7Ñ#7¸Ó#:×#BÑ#BÀ9Ó#M�LØ'×1Ñ1°!Ó4×>Ñ>¸|ÓL�Gà#'×#8Ñ#8¸Ö#;¼E¿IºIÀ|ÐF]Ð_aÓ<bÓ#c�Là#/×#7Ñ#7¸¸1¸aÓ#@×#HÑ#HÈÓ#W‘LØ—[‘[×-Ñ-°Ô6Ø#/×#7Ñ#7¸Ó#:¸Y×=PÑ=PÐQSÓ=TÕ#T�LØ#/×#7Ñ#7¸Ó#F�LØ#Ÿ{™{¨1ž~¨lÓ;�Ø�J‰J�|×$ñ3  8ð6 ˆ
r+   )rA   rC  rG  rU  ©NN)r-   r.   r/   r0   r1   rL   rE  rF  r–   r3   r4   rœ   r�   s   @@r(   r@  r@  È  s(   ù‡ € ñõ
<òò4
÷#÷ #ò #r+   r@  c                 óš   € V P                   e3   \        V P                   R4      '       d   V P                   P                  # V P                  # )NrP   )Úbackbone_configrÚ   rP   )rA   s   &r(   rV  rV  0  s>   € Ø×ÑÒ)¬g°f×6LÑ6LÈm×.\Ò.\Ø×%Ñ%×1Ñ1Ð1à×!Ñ!Ð!r+   c                   óD   a a€ ] tR tRt oV3R lV 3R lltR tRtVtV ;t# )rS  i7  c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# )r   rA   rV   rK  )r   rC   )r&   r'   s   "€r(   r)   ÚDPTReassembleLayer.__annotate__8  s'   ø€ ÷ jñ j™yð j±Cð jÁñ jr+   c           	     óx  <€ \         SV `  4        \        V4      p\        P                  ! WB^R7      V n        V^8”  d!   \        P                  ! W"W3^ R7      V n        R# V^8X  d   \        P                  ! 4       V n        R# V^8  d2   \        P                  ! W"^\        ^V,          4      ^R7      V n        R# R# )rF   )Úin_channelsÚout_channelsrH   ©rH   rµ   ÚpaddingN)
rK   rL   rV  r   r[   r\   ÚConvTranspose2dÚresizerR  rC   )ra   rA   rV   rK  rP   re   s   &&&& €r(   rL   ÚDPTReassembleLayer.__init__8  s�   ø€ Ü‰ÑÔä/°Ó7ˆÜŸ)š)°Ð`aÔbˆŒð �AŒ:Ü×,Ò,¨XÈVÐlmÔnˆDŽKØ�qŒ[ÜŸ+š+›-ˆDŽKØ�aŒZäŸ)š) HÀAÌcÐRSÐV\ÕR\ËoÐghÔiˆDŽKñ r+   c                óJ   € V P                  V4      pV P                  V4      pV# r˜   ©r\   r{  )ra   rj  s   &&r(   r–   ÚDPTReassembleLayer.forwardG  s$   € Ø—‘ |Ó4ˆØ—{‘{ <Ó0ˆØÐr+   r~  rô   r�   s   @@r(   rS  rS  7  s   ù‡ € ÷jó j÷ò r+   rS  c                   óD   a a€ ] tR tRt oV3R lV 3R lltR tRtVtV ;t# )ÚDPTFeatureFusionStageiM  c                ó    <€ V ^8„  d   QhRS[ /# r²   r   )r&   r'   s   "€r(   r)   Ú"DPTFeatureFusionStage.__annotate__N  s   ø€ ÷ >ñ >™yñ >r+   c                óê   <€ \         SV `  4        \        P                  ! 4       V n        \        \        VP                  4      4       F'  pV P                  P                  \        V4      4       K)  	  R # r˜   )
rK   rL   r   rB  rC  rN  rW   rO  rQ  ÚDPTFeatureFusionLayer©ra   rA   r®   re   s   && €r(   rL   ÚDPTFeatureFusionStage.__init__N  sM   ø€ Ü‰ÑÔÜ—m’m“oˆŒÜ”s˜6×3Ñ3Ó4Ö5ˆAØ�K‰K×ÑÔ4°VÓ<Ö=ó 6r+   c                ó®   € VR R R1,          p. pR p\        WP                  4       F+  w  rEVf
   V! V4      pMV! W44      pVP                  V4       K-  	  V# )NrI   )rM  rC  rQ  )ra   r;   Úfused_hidden_statesÚfused_hidden_staterj  Úlayers   &&    r(   r–   ÚDPTFeatureFusionStage.forwardT  sg   € à%¡d¨ dÕ+ˆà ÐØ!ÐÜ#& }·k±kÖ#BÑˆLØ!Ò)á%*¨<Ó%8Ñ"á%*Ð+=Ó%LÐ"Ø×&Ñ&Ð'9Ö:ñ $Cð #Ð"r+   )rC  rô   r�   s   @@r(   r�  r�  M  s   ù‡ € ÷>ó >÷#ò #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	# )ÚDPTPreActResidualLayerie  z•
ResidualConvUnit, pre-activate residual unit.

Args:
    config (`[DPTConfig]`):
        Model configuration class defining the model architecture.
c                ó    <€ V ^8„  d   QhRS[ /# r²   r   )r&   r'   s   "€r(   r)   Ú#DPTPreActResidualLayer.__annotate__n  s   ø€ ÷  Iñ  I™yñ  Ir+   c           	     ó”  <€ \         SV `  4        VP                  V n        VP                  e   VP                  MV P                  '       * p\
        P                  ! 4       V n        \
        P                  ! VP                  VP                  ^^^VR7      V n
        \
        P                  ! 4       V n        \
        P                  ! VP                  VP                  ^^^VR7      V n        V P                  '       dM   \
        P                  ! VP                  4      V n        \
        P                  ! VP                  4      V n        R # R # )N)rH   rµ   ry  rØ   )rK   rL   Ú!use_batch_norm_in_fusion_residualÚuse_batch_normÚuse_bias_in_fusion_residualr   ÚReLUÚactivation1r[   Úfusion_hidden_sizeÚconvolution1Úactivation2Úconvolution2ÚBatchNorm2dÚbatch_norm1Úbatch_norm2)ra   rA   r”  re   s   && €r(   rL   ÚDPTPreActResidualLayer.__init__n  s  ø€ Ü‰ÑÔà$×FÑFˆÔð ×1Ñ1Ò=ð ×.Ò.à×(Ñ(Ô(ð 	$ô Ÿ7š7›9ˆÔÜŸIšIØ×%Ñ%Ø×%Ñ%ØØØØ,ô
ˆÔô Ÿ7š7›9ˆÔÜŸIšIØ×%Ñ%Ø×%Ñ%ØØØØ,ô
ˆÔð ××ÐÜ!Ÿ~š~¨f×.GÑ.GÓHˆDÔÜ!Ÿ~š~¨f×.GÑ.GÓHˆDÖñ r+   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   rj  rƒ   r¸   )r&   r'   s   "€r(   r)   r�  �  s#   ø€ ÷ 'ñ '¡E§L¡Lð '±U·\±\ñ 'r+   c                ó*  € TpV P                  V4      pV P                  V4      pV P                  '       d   V P                  V4      pV P	                  V4      pV P                  V4      pV P                  '       d   V P                  V4      pW,           # r˜   )r–  r˜  r“  rœ  r™  rš  r�  ©ra   rj  Úresiduals   && r(   r–   ÚDPTPreActResidualLayer.forward�  sˆ   € ØˆØ×'Ñ'¨Ó5ˆà×(Ñ(¨Ó6ˆà××ÐØ×+Ñ+¨LÓ9ˆLà×'Ñ'¨Ó5ˆØ×(Ñ(¨Ó6ˆà××ÐØ×+Ñ+¨LÓ9ˆLàÕ&Ð&r+   )r–  r™  rœ  r�  r˜  rš  r“  r»   r�   s   @@r(   rŽ  rŽ  e  s&   ù‡ € ñ÷ Ió  I÷D'÷ 'ð '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	# )
r…  i¢  a  Feature fusion layer, merges feature maps from different stages.

Args:
    config (`[DPTConfig]`):
        Model configuration class defining the model architecture.
    align_corners (`bool`, *optional*, defaults to `True`):
        The align_corner setting for bilinear upsample.
c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   rA   Úalign_corners©r   r…   )r&   r'   s   "€r(   r)   Ú"DPTFeatureFusionLayer.__annotate__¬  s   ø€ ÷ >ñ >™yð >¹ñ >r+   c                óÖ   <€ \         SV `  4        W n        \        P                  ! VP
                  VP
                  ^RR7      V n        \        V4      V n        \        V4      V n	        R# )rF   T)rH   rØ   N)
rK   rL   r¦  r   r[   r—  r\   rŽ  Úresidual_layer1Úresidual_layer2)ra   rA   r¦  re   s   &&&€r(   rL   ÚDPTFeatureFusionLayer.__init__¬  sR   ø€ Ü‰ÑÔà*ÔäŸ)š) F×$=Ñ$=¸v×?XÑ?XÐfgÐnrÔsˆŒä5°fÓ=ˆÔÜ5°fÓ=ˆÖr+   c                óv   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  /# )r   rj  r¢  Nrƒ   r¸   )r&   r'   s   "€r(   r)   r¨  ¶  s6   ø€ ÷ ñ ¡E§L¡Lð ¹E¿L¹LÈ4Õ<Oð Ñ[`×[gÑ[gñ r+   c                óœ  € Vey   VP                   VP                   8w  dG   \        P                  P                  W!P                   ^,          VP                   ^,          3RRR7      pWP	                  V4      ,           pV P                  V4      p\        P                  P                  V^RV P                  R7      pV P                  V4      pV# )Nrk   F©rl   rm   r¦  ©Úscale_factorrm   r¦  )rp   r   rs   rt   rª  r«  r¦  r\   r¡  s   &&&r(   r–   ÚDPTFeatureFusionLayer.forward¶  sº   € ØÒØ×!Ñ! X§^¡^Ô3ÜŸ=™=×4Ñ4Ø×$6Ñ$6°qÕ$9¸<×;MÑ;MÈaÕ;PÐ#QÐXbÐrwð 5ó �ð (×*>Ñ*>¸xÓ*HÕHˆLà×+Ñ+¨LÓ9ˆÜ—}‘}×0Ñ0Ø q¨zÈ×I[ÑI[ð 1ó 
ˆð —‘ |Ó4ˆàÐr+   )r¦  r\   rª  r«  ©Tr˜   r»   r�   s   @@r(   r…  r…  ¢  s#   ù‡ € ñ÷>õ >÷÷ ò r+   r…  c                   ó’   a a€ ] tR tRt oRtRtR
tRtRtRt	Rt
RtR]R]/t]P                   ! 4       V 3R l4       tV3R ltR	tVtV ;t# )ÚDPTPreTrainedModeliÇ  Údptr�   Tr;   r<   c                óâ   <€ \         SV `  V4       \        V\        \        34      '       dC   \
        P                  ! VP                  4       \
        P                  ! VP                  4       R# R# )zInitialize the weightsN)	rK   Ú_init_weightsrQ   rŸ   r?   ÚinitÚzeros_r_   r`   )ra   r½   re   s   &&€r(   r¸  Ú DPTPreTrainedModel._init_weights×  sP   ø€ ô 	‰Ñ˜fÔ%Ü�fÔ/Ô1GÐH×IÒIÜ�KŠK˜×(Ñ(Ô)Ü�KŠK˜×2Ñ2Ö3ñ Jr+   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r²   r   )r&   r'   s   "€r(   r)   ÚDPTPreTrainedModel.__annotate__Ç  s   ø‡ ‚ áÑò r+   r,   )Úimage)r-   r.   r/   r0   Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚsupports_gradient_checkpointingÚ_supports_sdpaÚ_supports_flash_attnÚ_supports_flex_attnÚ_supports_attention_backendr+  rÑ   Ú_can_record_outputsr#   Úno_gradr¸  r2   r3   r4   rœ   r�   s   @@r(   rµ  rµ  Ç  si   ù‡ € ð ÐØ$€OØ!ÐØ&*Ð#Ø€NØÐØÐØ"&Ðà˜ØÐ&ðÐð
 ‡]‚]ƒ_ô4ó ð4÷# … r+   rµ  c                   óT   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tRtVtV ;t# )ÚDPTViTEncoderià  c                ó    <€ V ^8„  d   QhRS[ /# r²   r   )r&   r'   s   "€r(   r)   ÚDPTViTEncoder.__annotate__á  s   ø€ ÷ cñ c™yñ cr+   c                óÈ   <€ \         SV `  4        Wn        \        P                  ! \        VP                  4       Uu. uF  p\        V4      NK  	  up4      V n        R # u upi r˜   )	rK   rL   rA   r   rB  rN  Únum_hidden_layersr+  r‹  r†  s   && €r(   rL   ÚDPTViTEncoder.__init__á  sG   ø€ Ü‰ÑÔØŒÜ—]’]ÄÀv×G_ÑG_ÔA`Ó#aÑA`¸A¤K°Ö$7ÑA`Ñ#aÓbˆŽ
ùÒ#as   ½Ac                óV   <€ V ^8„  d   QhRS[ P                  RS[RS[S[,          RS[/# )r   r;   r“   rÃ   rƒ   )r#   r„   r…   r   r   r   )r&   r'   s   "€r(   r)   rÌ  æ  s=   ø€ ÷ @ñ @Ù"Ÿ\™\ð@ÙAEð@ÙY_Ñ`rÕYsð@á	ñ@r+   c                óP   € V P                    F  pV! V4      pK  	  \        VR 7      # ))r9   )r‹  r   )ra   r;   r“   rÃ   Úlayer_modules   &&&, r(   r–   ÚDPTViTEncoder.forwardæ  s)   € ð !ŸJœJˆLÙ(¨Ó7ŠMñ 'ô °Ô?Ð?r+   )rA   r‹  rš   rô   r�   s   @@r(   rÊ  rÊ  à  s#   ù‡ € ÷có c÷
@÷ @ò @r+   rÊ  c                   ó†   a a€ ] tR tRt oR
V3R lV 3R llltR t]]! RR7      ]V3R lR l4       4       4       t	R	t
VtV ;t# )ÚDPTModeliï  c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   rA   Úadd_pooling_layerr§  )r&   r'   s   "€r(   r)   ÚDPTModel.__annotate__ñ  s   ø€ ÷ ñ ™yð ¹Tñ r+   c                ón  <€ \         SV `  V4       Wn        VP                  '       d   \	        V4      V n        M\        V4      V n        \        V4      V n        \        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 `True`):
    Whether to add a pooling layer
r/  N)rK   rL   rA   rD  r?   r”   rŸ   rÊ  Úencoderr   r4  rP   r5  Ú	layernormÚDPTViTPoolerÚpoolerÚ	post_init)ra   rA   r×  re   s   &&&€r(   rL   ÚDPTModel.__init__ñ  sƒ   ø€ ô
 	‰Ñ˜Ô ØŒð ××ÐÜ4°VÓ<ˆD�Oä.¨vÓ6ˆDŒOÜ$ VÓ,ˆŒäŸš f×&8Ñ&8¸f×>SÑ>SÔTˆŒß.?”l 6Ô*ÀTˆŒð 	�‰Ör+   c                ó~   € V P                   P                  '       d   V P                  # V P                  P                  # r˜   )rA   rD  r”   r¢   )ra   s   &r(   Úget_input_embeddingsÚDPTModel.get_input_embeddings  s,   € Ø�;‰;× × Ð Ø—?‘?Ð"à—?‘?×3Ñ3Ð3r+   F)Útie_last_hidden_statesc                óP   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[/# )r   r�   rÃ   rƒ   )r#   r$   r   r   r7   )r&   r'   s   "€r(   r)   rØ    s5   ø€ ÷ 
ñ 
á×'Ñ'ð
ñ Ñ+Õ,ð
ñ 
>ñ	
r+   c                ó  € V P                  V4      pVP                  pV P                  ! V3/ VB pVP                  pV P	                  V4      pV P
                  e   V P                  V4      MR p\        VVVP                  R7      # )N)r9   r:   r!   )r”   r    rÚ  r9   rÛ  rÝ  r7   r!   )ra   r�   rÃ   Úembedding_outputÚembedding_last_hidden_statesÚencoder_outputsÚsequence_outputÚpooled_outputs   &&,     r(   r–   ÚDPTModel.forward  s†   € ð HLÇÁÐWcÓGdÐØ'7×'JÑ'JÐ$à+/¯<ª<Ð8TÑ+_ÐX^Ñ+_ˆØ)×;Ñ;ˆàŸ.™.¨Ó9ˆØ8<¿¹Ò8O˜Ÿ™ OÔ4ÐUYˆäCØ-Ø'Ø%5×%NÑ%Nô
ð 	
r+   )rA   r”   rÚ  rÛ  rÝ  r³  )r-   r.   r/   r0   rL   rá  r   r   r   r–   r3   r4   rœ   r�   s   @@r(   rÕ  rÕ  ï  sB   ù‡ € ÷õ ò*4ð  Ù¨EÔ2Ø÷
ó ó 3ó  ÷
ð 
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'   s   "€r(   r)   ÚDPTViTPooler.__annotate__&  s   ø€ ÷ 4ñ 4™yñ 4r+   c                ó¼   <€ \         SV `  4        \        P                  ! VP                  VP
                  4      V n        \        VP                  ,          V n	        R # r˜   )
rK   rL   r   rà   rP   Úpooler_output_sizerû   r   Ú
pooler_actÚ
activationrâ   s   &&€r(   rL   ÚDPTViTPooler.__init__&  s>   ø€ Ü‰ÑÔÜ—Y’Y˜v×1Ñ1°6×3LÑ3LÓMˆŒ
Ü  ×!2Ñ!2Õ3ˆŽ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R,          pV P                  V4      pV P                  V4      pV# )ri   rb  )rû   rò  )ra   r;   Úfirst_token_tensorrê  s   &&  r(   r–   ÚDPTViTPooler.forward+  s2   € ð +¨4Õ0ÐØŸ
™
Ð#5Ó6ˆØŸ™¨Ó6ˆØÐr+   )rò  rû   rô   r�   s   @@r(   rÜ  rÜ  %  s   ù‡ € ÷4ó 4÷
÷ ð 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	# )	ÚDPTNecki4  a  
DPTNeck. A neck is a module that is normally used between the backbone and the head. It takes a list of tensors as
input and produces another list of tensors as output. For DPT, it includes 2 stages:

* DPTReassembleStage
* DPTFeatureFusionStage.

Args:
    config (dict): config dict.
c                ó    <€ V ^8„  d   QhRS[ /# r²   r   )r&   r'   s   "€r(   r)   ÚDPTNeck.__annotate__@  s   ø€ ÷ :ñ :™yñ :r+   c                ó¦  <€ \         SV `  4        Wn        VP                  e$   VP                  P                  R8X  d	   R V n        M\        V4      V n        \        P                  ! 4       V n	        VP                   F@  pV P                  P                  \        P                  ! W!P                  ^^RR7      4       KB  	  \        V4      V n        R # )NÚswinv2F©rH   ry  rØ   )rK   rL   rA   rq  Ú
model_typeÚreassemble_stager@  r   rB  ÚconvsrO  rQ  r[   r—  r�  Úfusion_stage)ra   rA   Úchannelre   s   && €r(   rL   ÚDPTNeck.__init__@  s    ø€ Ü‰ÑÔØŒð ×!Ñ!Ò-°&×2HÑ2H×2SÑ2SÐW_Ô2_Ø$(ˆDÕ!ä$6°vÓ$>ˆDÔ!ä—]’]“_ˆŒ
Ø×/Ô/ˆGØ�J‰J×ÑœbŸiši¨×1JÑ1JÐXYÐcdÐkpÔqÖrñ 0ô 2°&Ó9ˆÖr+   c          	      ó–   <€ V ^8„  d   QhRS[ S[P                  ,          RS[R,          RS[R,          RS[ S[P                  ,          /# )r   r;   rg  Nrh  rƒ   )r^  r#   r„   rC   )r&   r'   s   "€r(   r)   rû  Q  sM   ø€ ÷ ñ á™EŸL™LÕ)ðñ ˜D•jðñ ˜4•Zð	ñ
 
‰e�l‰lÕ	ñr+   c                óœ  € \        V\        \        34      '       g   \        R4      h\	        V4      \	        V P
                  P                  4      8w  d   \        R4      hV P                  e   V P                  WV4      p\        V4       UUu. uF  w  rEV P                  V,          ! V4      NK   	  pppV P                  V4      pV# u uppi )zÑ
Args:
    hidden_states (`list[torch.FloatTensor]`, each of shape `(batch_size, sequence_length, hidden_size)` or `(batch_size, hidden_size, height, width)`):
        List of hidden states from the backbone.
z2hidden_states should be a tuple or list of tensorszOThe number of hidden states should be equal to the number of neck hidden sizes.)rQ   r%   r^  Ú	TypeErrorrW   rA   rO  rX   r   rd  r  r  )ra   r;   rg  rh  rX  Úfeaturer‘   r
  s   &&&&    r(   r–   ÚDPTNeck.forwardQ  s°   € ô ˜-¬%´¨×7Ò7ÜÐPÓQÐQäˆ}Ó¤ T§[¡[×%BÑ%BÓ!CÔCÜÐnÓoÐoð × Ñ Ò,Ø ×1Ñ1°-È{Ó[ˆMä=FÀ}Ô=UÔVÑ=U©z¨q�D—J‘J˜q–M 'Ö*Ñ=UˆÑVð ×"Ñ" 8Ó,ˆàˆùó Ws   Â$C)rA   r  r  r   ro  r»   r�   s   @@r(   rù  rù  4  s#   ù‡ € ñ	÷:ó :÷"÷ ò 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	# )ÚDPTDepthEstimationHeadin  zù
Output head consisting of 3 convolutional layers. It progressively halves the feature dimension and upsamples
the predictions to the input resolution after the first convolutional layer (details can be found in the paper's
supplementary material).
c                ó    <€ V ^8„  d   QhRS[ /# r²   r   )r&   r'   s   "€r(   r)   Ú#DPTDepthEstimationHead.__annotate__u  s   ø€ ÷ 
ñ 
™yñ 
r+   c                ó$  <€ \         SV `  4        Wn        R V n        VP                  '       d!   \
        P                  ! RRRRRR7      V n        VP                  p\
        P                  ! \
        P                  ! W"^,          ^^^R7      \
        P                  ! ^RRR7      \
        P                  ! V^,          ^ ^^^R7      \
        P                  ! 4       \
        P                  ! ^ ^^^^ R7      \
        P                  ! 4       4      V n        R # )Né   rx  rk   Tr°  )é   r  )rF   rF   )rK   rL   rA   r\   Úadd_projectionr   r[   r—  rW  ÚUpsampler•  Úhead©ra   rA   r‘   re   s   && €r(   rL   ÚDPTDepthEstimationHead.__init__u  s¿   ø€ Ü‰ÑÔàŒàˆŒØ× × Ð Ü Ÿiši¨¨S¸fÈVÐ]cÔdˆDŒOà×,Ñ,ˆÜ—M’MÜ�IŠI�h¨A¥¸1ÀQÐPQÔRÜ�KŠK Q¨ZÀtÔLÜ�IŠI�h !•m R°Q¸qÈ!ÔLÜ�GŠG‹IÜ�IŠI�b˜!¨°1¸aÔ@Ü�GŠG‹Ió
ˆŽ	r+   c                ó^   <€ V ^8„  d   QhRS[ S[P                  ,          RS[P                  /# r  r]  )r&   r'   s   "€r(   r)   r  ˆ  s(   ø€ ÷ ñ ¡T©%¯,©,Õ%7ð ¹E¿L¹Lñ r+   c                óø   € WP                   P                  ,          pV P                  e-   V P                  V4      p\        P                  ! 4       ! V4      pV P                  V4      pVP                  ^R7      pV# )Nrn   )rA   Úhead_in_indexr\   r   r•  r  Úsqueeze)ra   r;   Úpredicted_depths   && r(   r–   ÚDPTDepthEstimationHead.forwardˆ  sc   € à%§k¡k×&?Ñ&?Õ@ˆà�?‰?Ò&Ø ŸO™O¨MÓ:ˆMÜŸGšGœI mÓ4ˆMàŸ)™) MÓ2ˆØ)×1Ñ1°aÐ1Ó8ˆàÐr+   )rA   r  r\   r»   r�   s   @@r(   r  r  n  s#   ù‡ € ñ÷
ó 
÷&÷ ð r+   r  zu
    DPT Model with a depth estimation head on top (consisting of 3 convolutional layers) e.g. for KITTI, NYUv2.
    c                   óf   a a€ ] tR tRt oV 3R lt]]]RV3R lR ll4       4       4       tRt	Vt
V ;t# )ÚDPTForDepthEstimationi–  c                ó  <€ \         SV `  V4       R V n        VP                  RJ d    VP                  e   \        V4      V n        M\        VRR7      V n        \        V4      V n	        \        V4      V n        V P                  4        R # )NF©r×  )rK   rL   rU   rD  rq  r	   rÕ  r¶  rù  Úneckr  r  rÞ  râ   s   &&€r(   rL   ÚDPTForDepthEstimation.__init__œ  sq   ø€ Ü‰Ñ˜Ô àˆŒØ×Ñ˜uÓ$¨×)?Ñ)?Ò)KÜ)¨&Ó1ˆD�Mä ¸%Ô@ˆDŒHô ˜F“OˆŒ	ô +¨6Ó2ˆŒ	ð 	�‰Ör+   c                óx   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          RS[/# )r   r�   ÚlabelsNrÃ   rƒ   )r#   r$   Ú
LongTensorr   r   r   )r&   r'   s   "€r(   r)   Ú"DPTForDepthEstimation.__annotate__±  sP   ø€ ÷ T
ñ T
á×'Ñ'ðT
ñ × Ñ  4Õ'ðT
ñ Ñ+Õ,ð	T
ñ
 
ñT
r+   c                ó†  a € RpVe   \        R4      hS P                  e+   S P                  P                  ! V3/ VB pVP                  pM·S P                  ! V3/ VB pVP
                  pS P                  P                  '       gD   \        VR,          4       UUu. uF$  w  rxVS P                  P                  9   g   K"  VNK&  	  pppM9VP                  p	V	P                  V 3R l\        VR,          4       4       4       T	pRRrºS P                  P                  e[   S P                  P                  RJ dA   VP                  w   rÍpS P                  P                  P                  pWß,          p
Wï,          pS P                  WjV4      pS P!                  V4      p\#        VVVP
                  VP$                  R7      # u uppi )aé  
labels (`torch.LongTensor` of shape `(batch_size, height, width)`, *optional*):
    Ground truth depth estimation maps for computing the loss.

Examples:
```python
>>> from transformers import AutoImageProcessor, DPTForDepthEstimation
>>> import torch
>>> import numpy as np
>>> 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("Intel/dpt-large")
>>> model = DPTForDepthEstimation.from_pretrained("Intel/dpt-large")

>>> # prepare image for the model
>>> inputs = image_processor(images=image, return_tensors="pt")

>>> with torch.no_grad():
...     outputs = model(**inputs)

>>> # interpolate to original size
>>> post_processed_output = image_processor.post_process_depth_estimation(
...     outputs,
...     target_sizes=[(image.height, image.width)],
... )

>>> # visualize the prediction
>>> predicted_depth = post_processed_output[0]["predicted_depth"]
>>> depth = predicted_depth * 255 / predicted_depth.max()
>>> depth = depth.detach().cpu().numpy()
>>> depth = Image.fromarray(depth.astype("uint8"))
```NzTraining is not implemented yetrc  c              3   ót   <"  € T F-  w  rVSP                   P                  R ,          9   g   K)  Vx € K/  	  R# 5i©:r   NNN©rA   Úbackbone_out_indices©Ú.0Úidxr  ra   s   &  €r(   Ú	<genexpr>Ú0DPTForDepthEstimation.forward.<locals>.<genexpr>ï  s3   øé € ð .á(D™˜Ø˜dŸk™k×>Ñ>¸rÕBÑB÷ ’GÛ(Dùó   ƒ&8®
8F)Úlossr  r;   r<   )ÚNotImplementedErrorrU   Úforward_with_filtered_kwargsr‰   r¶  r;   rA   rD  rd  r*  r!   Úextendrq  rp   rN   r   r  r   r<   )ra   r�   r#  rÃ   r1  Úoutputsr;   r-  r  Úbackbone_hidden_statesrg  rh  r®   rŽ   r�   rN   r  s   f&&,             r(   r–   ÚDPTForDepthEstimation.forward®  s   ø€ ð^ ˆØÒÜ%Ð&GÓHÐHà�=‰=Ò$Ø—m‘m×@Ò@ÀÑXÐQWÑXˆGØ#×0Ñ0‰Mà—h’h˜|Ñ6¨vÑ6ˆGØ#×1Ñ1ˆMð —;‘;×(×(Ð(ä09¸-ÈÕ:KÔ0Lô!Ù0L¡ ÐPSÐW[×WbÑWb×WwÑWwÑPw—G�GÑ0Lð ñ !�ð *1×)IÑ)IÐ&Ø&×-Ñ-ô .ä(1°-ÀÕ2CÔ(Dó.ô ð
 !7�à$(¨$�kØ�;‰;×&Ñ&Ò2°t·{±{×7LÑ7LÐPUÓ7UØ".×"4Ñ"4ÑˆAˆq˜%ØŸ™×4Ñ4×?Ñ?ˆJØ!Õ/ˆLØÕ-ˆKàŸ	™	 -¸{ÓKˆØŸ)™) MÓ2ˆä#ØØ+Ø!×/Ñ/Ø×)Ñ)ô	
ð 	
ùó-!s   ÂF=Â?F=)rU   r¶  r  r   r˜   ©r-   r.   r/   r0   rL   r   r   r   r–   r3   r4   rœ   r�   s   @@r(   r  r  –  s<   ù‡ € õð$ ØØ ÷T
ñ T
ó !ó ó ÷T
ð T
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# )ÚDPTSemanticSegmentationHeadi  c                ó    <€ V ^8„  d   QhRS[ /# r²   r   )r&   r'   s   "€r(   r)   Ú(DPTSemanticSegmentationHead.__annotate__	  s   ø€ ÷ 
ñ 
™yñ 
r+   c                ó°  <€ \         SV `  4        Wn        VP                  p\        P
                  ! \        P                  ! W"^^RR7      \        P                  ! V4      \        P                  ! 4       \        P                  ! VP                  4      \        P                  ! W!P                  ^R7      \        P                  ! ^RRR7      4      V n        R# )r  Frþ  rG   rk   Tr°  N)rK   rL   rA   r—  r   rW  r[   r›  r•  r£   Úsemantic_classifier_dropoutÚ
num_labelsr  r  r  s   && €r(   rL   Ú$DPTSemanticSegmentationHead.__init__	  s‹   ø€ Ü‰ÑÔàŒØ×,Ñ,ˆÜ—M’MÜ�IŠI�h°aÀÈÔOÜ�NŠN˜8Ó$Ü�GŠG‹IÜ�JŠJ�v×9Ñ9Ó:Ü�IŠI�h× 1Ñ 1¸qÔAÜ�KŠK Q¨ZÀtÔLó
ˆŽ	r+   c                ó^   <€ V ^8„  d   QhRS[ S[P                  ,          RS[P                  /# r  r]  )r&   r'   s   "€r(   r)   r<    s(   ø€ ÷ ñ ¡T©%¯,©,Õ%7ð ¹E¿L¹Lñ r+   c                ó`   € WP                   P                  ,          pV P                  V4      pV# r˜   )rA   r  r  ©ra   r;   Úlogitss   && r(   r–   Ú#DPTSemanticSegmentationHead.forward  s'   € à%§k¡k×&?Ñ&?Õ@ˆØ—‘˜=Ó)ˆØˆr+   )rA   r  rô   r�   s   @@r(   r:  r:    s   ù‡ € ÷
ó 
÷÷ ð 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# )ÚDPTAuxiliaryHeadi  c                ó    <€ V ^8„  d   QhRS[ /# r²   r   )r&   r'   s   "€r(   r)   ÚDPTAuxiliaryHead.__annotate__  s   ø€ ÷ 

ñ 

™yñ 

r+   c                ób  <€ \         SV `  4        VP                  p\        P                  ! \        P
                  ! W"^^RR7      \        P                  ! V4      \        P                  ! 4       \        P                  ! RR4      \        P
                  ! W!P                  ^R7      4      V n
        R# )r  Frþ  gš™™™™™¹?rG   N)rK   rL   r—  r   rW  r[   r›  r•  r£   r?  r  r  s   && €r(   rL   ÚDPTAuxiliaryHead.__init__  sr   ø€ Ü‰ÑÔà×,Ñ,ˆÜ—M’MÜ�IŠI�h°aÀÈÔOÜ�NŠN˜8Ó$Ü�GŠG‹IÜ�JŠJ�s˜EÓ"Ü�IŠI�h× 1Ñ 1¸qÔAó
ˆŽ	r+   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r  r¸   )r&   r'   s   "€r(   r)   rI  +  s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r+   c                ó(   € V P                  V4      pV# r˜   ©r  rC  s   && r(   r–   ÚDPTAuxiliaryHead.forward+  s   € Ø—‘˜=Ó)ˆØˆr+   rN  rô   r�   s   @@r(   rG  rG    s   ù‡ € ÷

ó 

÷÷ ð r+   rG  c                   ór   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       4       4       tRt	Vt
V ;t# )ÚDPTForSemanticSegmentationi0  c                ó    <€ V ^8„  d   QhRS[ /# r²   r   )r&   r'   s   "€r(   r)   Ú'DPTForSemanticSegmentation.__annotate__2  s   ø€ ÷ ñ ™yñ r+   c                óò   <€ \         SV `  V4       \        VR R7      V n        \	        V4      V n        \        V4      V n        VP                  '       d   \        V4      MRV n
        V P                  4        R# )Fr  N)rK   rL   rÕ  r¶  rù  r   r:  r  Úuse_auxiliary_headrG  Úauxiliary_headrÞ  râ   s   &&€r(   rL   Ú#DPTForSemanticSegmentation.__init__2  sa   ø€ Ü‰Ñ˜Ô ä˜F°eÔ<ˆŒô ˜F“OˆŒ	ô 0°Ó7ˆŒ	Ø:@×:S×:SÐ:SÔ.¨vÔ6ÐY]ˆÔð 	�‰Ör+   c                ó†   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[S[,          RS[/# )r   r�   Nr#  rÃ   rƒ   )r#   r$   r$  r   r   r   )r&   r'   s   "€r(   r)   rS  D  sU   ø€ ÷ N
ñ N
á×'Ñ'¨$Õ.ðN
ñ × Ñ  4Õ'ðN
ñ Ñ+Õ,ð	N
ñ
 
!ñN
r+   c                ó(  a € Ve'   S P                   P                  ^8X  d   \        R4      hS P                  ! V3/ VB pVP                  pS P                   P
                  '       gD   \        VR,          4       UUu. uF$  w  rgVS P                   P                  9   g   K"  VNK&  	  pppM9VP                  pVP                  V 3R l\        VR,          4       4       4       TpS P                  VR7      pS P                  V4      p	Rp
S P                  e   S P                  VR,          4      p
RpVe¸   \        P                  P                  W’P                   RR RRR7      pV
e0   \        P                  P                  W¢P                   RR RRR7      p\#        S P                   P$                  R	7      pV! WÂ4      pV! XV4      pVS P                   P&                  V,          ,           p\)        VV	VP                  VP*                  R
7      # u up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, DPTForSemanticSegmentation
>>> 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("Intel/dpt-large-ade")
>>> model = DPTForSemanticSegmentation.from_pretrained("Intel/dpt-large-ade")

>>> inputs = image_processor(images=image, return_tensors="pt")

>>> outputs = model(**inputs)
>>> logits = outputs.logits
```Nz/The number of labels should be greater than onerc  c              3   ót   <"  € T F-  w  rVSP                   P                  R ,          9   g   K)  Vx € K/  	  R# 5ir(  r)  r+  s   &  €r(   r.  Ú5DPTForSemanticSegmentation.forward.<locals>.<genexpr>p  s3   øé € ð *Ù,H™L˜CÈCÐSW×S^ÑS^×SsÑSsÐtvÕSwÑLw—’Ó,Hùr0  )r;   rk   Fr¯  )Úignore_index)r1  rD  r;   r<   rI   rJ   )rA   r?  rX   r¶  r;   rD  rd  r*  r!   r4  r   r  rV  r   rs   rt   rp   r   Úsemantic_loss_ignore_indexÚauxiliary_loss_weightr   r<   )ra   r�   r#  rÃ   r5  r;   r-  r  r6  rD  Úauxiliary_logitsr1  Úupsampled_logitsÚupsampled_auxiliary_logitsÚloss_fctÚ	main_lossÚauxiliary_losss   f&&,             r(   r–   Ú"DPTForSemanticSegmentation.forwardA  sû  ø€ ðB Ò $§+¡+×"8Ñ"8¸AÔ"=ÜÐNÓOÐOàHLÏÊÐQ]ÑHhÐagÑHhˆØ×-Ñ-ˆð �{‰{×$×$Ð$ä,5°mÀBÕ6GÔ,HôÙ,H™L˜CÈCÐSW×S^ÑS^×SsÑSsÑLs—�Ñ,Hð ñ ˆMð &-×%EÑ%EÐ"Ø"×)Ñ)ô *Ü,5°mÀBÕ6GÔ,Hó*ô ð 3ˆMàŸ	™	°˜	Ó>ˆØ—‘˜=Ó)ˆàÐØ×ÑÒ*Ø#×2Ñ2°=ÀÕ3DÓEÐàˆØÒä!Ÿ}™}×8Ñ8ØŸ\™\¨"¨#Ð.°ZÈuð  9ó  Ðð  Ò+Ü-/¯]©]×-FÑ-FØ$¯<©<¸¸Ð+<À:Ð]bð .Gó .Ð*ô (°T·[±[×5[Ñ5[Ô\ˆHÙ Ð!1Ó:ˆIÙ%Ð&@À&ÓIˆNØ˜tŸ{™{×@Ñ@À>ÕQÕQˆDä&ØØØ!×/Ñ/Ø×)Ñ)ô	
ð 	
ùóEs   Á<HÂ H)rV  r¶  r  r   ro  r8  r�   s   @@r(   rQ  rQ  0  sA   ù‡ € ÷ó ð ØØ ÷N
ñ N
ó !ó ó ÷N
ð N
r+   rQ  )Nrç   )r  rQ  rÕ  rµ  )Kr1   Úcollections.abcrR   r   Údataclassesr   r#   r   Útorch.nnr   Ú r   r¹  Úactivationsr   Úbackbone_utilsr   r	   Úmodeling_layersr
   Úmodeling_outputsr   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   r   Úutils.genericr   r   Úutils.output_capturingr   Úconfiguration_dptr   Ú
get_loggerr-   Úloggerr   r7   rÄ   r?   rŸ   r¡   rÏ   rÑ   rö   r  r  r"  r+  r@  rV  rS  r�  rŽ  r…  rµ  rÊ  rÕ  rÜ  rù  r  r  r:  rG  rQ  Ú__all__r,   r+   r(   Ú<module>rw     sž  ðñó Ý $Ý !ã Ý Ý %å &Ý !ß HÝ 9ß ^Ñ ^ß FÝ &ß XÕ Xß IÝ 5Ý (ð 
×	Ò	˜HÓ	%€ñ ðôð ô	J°ó 	Jó óð	Jñ ðôð ôJ¸;ó Jó óðJô$]
˜RŸY™Yô ]
ô@4Y�r—y‘yô 4Yôn˜BŸI™Iô ÷@%ô:4.�r—y‘yô 4.ôp�r—y‘yô ô$�b—i‘iô ô"˜Ÿ™ô ô 
�2—9‘9ô 
ôÐ,ô ôDe˜Ÿ™ô eòP"ô˜Ÿ™ô ô,#˜BŸI™Iô #ô0:'˜RŸY™Yô :'ôz"˜BŸI™Iô "ðJ ô4˜ó 4ó ð4ô0@�B—I‘Iô @ð ô1
Ð!ó 1
ó ð1
ôj�2—9‘9ô ô7ˆb�i‰iô 7ôt%˜RŸY™Yô %ñP ðôô
j
Ð.ó j
óð
j
ôZ "§)¡)ô ô,�r—y‘yô ð$ ôa
Ð!3ó a
ó ða
òH d‚r+   