+
    œ°³jpg  ã                   óP  € R t ^ RIt^ RI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 ^RIHt ]P                   ! ]4      t ! R R	]P&                  4      t ! R
 R]P&                  4      t ! R R]P&                  4      t ! R R]P&                  4      t ! R R]P&                  4      t ! R R]P&                  4      t ! R R]P&                  4      t ! R R]P&                  4      t ! R R]P&                  4      t] ! R R]
4      4       t] ! R R]4      4       t ! R R]P&                  4      t ! R  R!]P&                  4      t  ! R" R#]P&                  4      t! ! R$ R%]P&                  4      t" ! R& R']P&                  4      t#]! R(R)7       ! R* R+]4      4       t$. R,Ot%R# )-zPyTorch GLPN model.N)Únn)ÚACT2FN)ÚBaseModelOutputÚDepthEstimatorOutput)ÚPreTrainedModel)Úauto_docstringÚlogging©Ú
GLPNConfigc                   ó<   a a€ ] tR t^ t oRtV 3R ltR tRtVtV ;t	# )ÚGLPNOverlapPatchEmbeddingsz+Construct the overlapping patch embeddings.c                ó¨   <€ \         SV `  4        \        P                  ! VVVVV^,          R7      V n        \        P
                  ! V4      V n        R# )é   ©Úkernel_sizeÚstrideÚpaddingN)ÚsuperÚ__init__r   ÚConv2dÚprojÚ	LayerNormÚ
layer_norm)ÚselfÚ
patch_sizer   Únum_channelsÚhidden_sizeÚ	__class__s   &&&&&€Úg/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/glpn/modeling_glpn.pyr   Ú#GLPNOverlapPatchEmbeddings.__init__#   sC   ø€ Ü‰ÑÔÜ—I’IØØØ"ØØ !•Oô
ˆŒ	ô Ÿ,š, {Ó3ˆŽó    c                ó°   € V P                  V4      pVP                  w   r4pVP                  ^4      P                  ^^4      pV P	                  V4      pW$V3# )r   )r   ÚshapeÚflattenÚ	transposer   )r   Úpixel_valuesÚ
embeddingsÚ_ÚheightÚwidths   &&    r   ÚforwardÚ"GLPNOverlapPatchEmbeddings.forward/   sZ   € Ø—Y‘Y˜|Ó,ˆ
Ø(×.Ñ.Ñˆˆ1�eð  ×'Ñ'¨Ó*×4Ñ4°Q¸Ó:ˆ
Ø—_‘_ ZÓ0ˆ
Ø 5Ð(Ð(r    )r   r   ©
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r*   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r   Ú__classdict__s   @@r   r   r       s   ù‡ € Ù5õ
4÷)ò )r    r   c                   ó@   a a€ ] tR t^:t oRtV 3R ltRR ltRtVtV ;t	# )ÚGLPNEfficientSelfAttentionzŸSegFormer's efficient self-attention mechanism. Employs the sequence reduction process introduced in the [PvT
paper](https://huggingface.co/papers/2102.12122).c                ó^  <€ \         SV `  4        W n        W0n        V P                  V P                  ,          ^ 8w  d'   \	        RV P                   RV P                   R24      h\        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                  4      V n        \        P                  ! V P                  V P                  4      V n        \        P                  ! VP                  4      V n        W@n        V^8”  d;   \        P"                  ! W"WDR7      V n        \        P&                  ! V4      V n        R# R# )é    zThe hidden size (z6) is not a multiple of the number of attention heads (Ú))r   r   N)r   r   r   Únum_attention_headsÚ
ValueErrorÚintÚattention_head_sizeÚall_head_sizer   ÚLinearÚqueryÚkeyÚvalueÚDropoutÚattention_probs_dropout_probÚdropoutÚsr_ratior   Úsrr   r   ©r   Úconfigr   r<   Úsequence_reduction_ratior   s   &&&&&€r   r   Ú#GLPNEfficientSelfAttention.__init__>   sI  ø€ Ü‰ÑÔØ&ÔØ#6Ô à×Ñ˜d×6Ñ6Õ6¸!Ô;ÜØ# D×$4Ñ$4Ð#5ð 6Ø×2Ñ2Ð3°1ð6óð ô
 $' t×'7Ñ'7¸$×:RÑ:RÕ'RÓ#SˆÔ Ø!×5Ñ5¸×8PÑ8PÕPˆÔä—Y’Y˜t×/Ñ/°×1CÑ1CÓDˆŒ
Ü—9’9˜T×-Ñ-¨t×/AÑ/AÓBˆŒÜ—Y’Y˜t×/Ñ/°×1CÑ1CÓDˆŒ
ä—z’z &×"EÑ"EÓFˆŒà0ŒØ# aÔ'Ü—i’iØÐ6NôˆDŒGô !Ÿlšl¨;Ó7ˆDŽOñ	 (r    c                ó¶  € 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
                  ^8”  dx   VP                   w  r‰p
VP                  ^ ^^4      P                  WŠW#4      pV P                  V4      pVP                  WŠR4      P                  ^ ^^4      pV P                  V4      p. VP                   R R 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\        P                  ! W|P	                  RR4      4      pV\        P                  ! V P                  4      ,          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4      pV'       d   VV3pV# V3pV# )N©Údiméÿÿÿÿéþÿÿÿ)r"   r?   rB   Úviewr$   rH   ÚpermuteÚreshaperI   r   rC   rD   ÚtorchÚmatmulÚmathÚsqrtr   Ú
functionalÚsoftmaxrG   Ú
contiguousÚsizer@   )r   Úhidden_statesr(   r)   Úoutput_attentionsÚinput_shapeÚhidden_shapeÚquery_layerÚ
batch_sizeÚseq_lenr   Úkv_shapeÚ	key_layerÚvalue_layerÚattention_scoresÚattention_probsÚcontext_layerÚnew_context_layer_shapeÚoutputss   &&&&&              r   r*   Ú"GLPNEfficientSelfAttention.forwardY   s0  € ð $×)Ñ)¨#¨2Ð.ˆØC˜ÐC bÐC¨$×*BÑ*BÑCˆØ—j‘j Ó/×4Ñ4°\ÓB×LÑLÈQÐPQÓRˆà�=‰=˜1ÔØ0=×0CÑ0CÑ-ˆJ à)×1Ñ1°!°Q¸Ó:×BÑBÀ:Ð]cÓkˆMà ŸG™G MÓ2ˆMà)×1Ñ1°*ÈBÓO×WÑWÐXYÐ[\Ð^_Ó`ˆMØ ŸO™O¨MÓ:ˆMàL�]×(Ñ(¨¨"Ð-ÐL¨rÐL°4×3KÑ3KÑLˆØ—H‘H˜]Ó+×0Ñ0°Ó:×DÑDÀQÈÓJˆ	Ø—j‘j Ó/×4Ñ4°XÓ>×HÑHÈÈAÓNˆô !Ÿ<š<¨×5HÑ5HÈÈRÓ5PÓQÐà+¬d¯iªi¸×8PÑ8PÓ.QÕQÐô Ÿ-™-×/Ñ/Ð0@ÀbÐ/ÓIˆð Ÿ,™, Ó7ˆäŸš _ÓBˆà%×-Ñ-¨a°°A°qÓ9×DÑDÓFˆØ"/×"4Ñ"4Ó"6°s¸Ð";¸t×?QÑ?QÐ>SÕ"SÐØ%×*Ñ*Ð+BÓCˆç6G�= /Ð2ˆàˆð O\ÐM]ˆàˆr    )r@   r?   rG   r   rC   r   r<   rB   rI   rH   rD   ©Fr,   r5   s   @@r   r8   r8   :   s   ù‡ € ñ9õ8÷6-ô -r    r8   c                   ó8   a a€ ] tR t^Št oV 3R ltR tRtVtV ;t# )ÚGLPNSelfOutputc                ó¤   <€ \         SV `  4        \        P                  ! W"4      V n        \        P
                  ! VP                  4      V n        R # ©N)r   r   r   rA   ÚdenserE   Úhidden_dropout_probrG   )r   rK   r   r   s   &&&€r   r   ÚGLPNSelfOutput.__init__‹   s4   ø€ Ü‰ÑÔÜ—Y’Y˜{Ó8ˆŒ
Ü—z’z &×"<Ñ"<Ó=ˆŽr    c                óJ   € V P                  V4      pV P                  V4      pV# rr   ©rs   rG   )r   r^   Úinput_tensors   &&&r   r*   ÚGLPNSelfOutput.forward�   s$   € ØŸ
™
 =Ó1ˆØŸ™ ]Ó3ˆØÐr    rw   ©	r-   r.   r/   r0   r   r*   r2   r3   r4   r5   s   @@r   rp   rp   Š   s   ù‡ € õ>÷
ò r    rp   c                   ó<   a a€ ] tR t^—t oV 3R ltRR ltRtVtV ;t# )ÚGLPNAttentionc                ón   <€ \         SV `  4        \        VVVVR 7      V n        \	        WR7      V n        R# ))rK   r   r<   rL   )r   N)r   r   r8   r   rp   ÚoutputrJ   s   &&&&&€r   r   ÚGLPNAttention.__init__˜   s4   ø€ Ü‰ÑÔÜ.ØØ#Ø 3Ø%=ô	
ˆŒ	ô % VÔEˆŽr    c                ó~   € V P                  WW44      pV P                  V^ ,          V4      pV3VR,          ,           pV# )r:   ºé   NN)r   r~   )r   r^   r(   r)   r_   Úself_outputsÚattention_outputrl   s   &&&&&   r   r*   ÚGLPNAttention.forward¢   s>   € Ø—y‘y ¸ÓQˆàŸ;™; |°A¥¸ÓFÐØ#Ð%¨°RÕ(8Õ8ˆØˆr    )r~   r   rn   rz   r5   s   @@r   r|   r|   —   s   ù‡ € õF÷ô r    r|   c                   ó@   a a€ ] tR t^«t oRtRV 3R lltR tRtVtV ;t	# )ÚGLPNDepthWiseConvzVDepthwise convolution used in the Mix-FFN to implicitly encode positional information.c           	     ód   <€ \         SV `  4        \        P                  ! W^^^VR7      V n        R# )é   )ÚgroupsN)r   r   r   r   Údwconv)r   rP   r   s   &&€r   r   ÚGLPNDepthWiseConv.__init__®   s&   ø€ Ü‰ÑÔÜ—i’i ¨!¨Q°¸#Ô>ˆŽr    c                óÌ   € VP                   w  rEpVP                  ^^4      P                  WFW#4      pV P                  V4      pVP	                  ^4      P                  ^^4      pV# ©r‚   )r"   r$   rS   r‹   r#   )r   r^   r(   r)   rc   rd   r   s   &&&&   r   r*   ÚGLPNDepthWiseConv.forward²   sc   € Ø,9×,?Ñ,?Ñ)ˆ
˜\Ø%×/Ñ/°°1Ó5×:Ñ:¸:ÐU[ÓcˆØŸ™ MÓ2ˆØ%×-Ñ-¨aÓ0×:Ñ:¸1¸aÓ@ˆØÐr    )r‹   )i   r,   r5   s   @@r   r‡   r‡   «   s   ù‡ € Ù`÷?÷ò r    r‡   c                   ó<   a a€ ] tR t^»t oRV 3R lltR tRtVtV ;t# )Ú
GLPNMixFFNc                ó®  <€ \         SV `  4        T;'       g    Tp\        P                  ! W#4      V n        \        V4      V n        \        VP                  \        4      '       d   \        VP                  ,          V n        MVP                  V n        \        P                  ! W44      V n        \        P                  ! VP                  4      V n        R # rr   )r   r   r   rA   Údense1r‡   r‹   Ú
isinstanceÚ
hidden_actÚstrr   Úintermediate_act_fnÚdense2rE   rt   rG   )r   rK   Úin_featuresÚhidden_featuresÚout_featuresr   s   &&&&&€r   r   ÚGLPNMixFFN.__init__¼   s‘   ø€ Ü‰ÑÔØ#×2Ð2 {ˆÜ—i’i Ó=ˆŒÜ'¨Ó8ˆŒÜ�f×'Ñ'¬×-Ò-Ü'-¨f×.?Ñ.?Õ'@ˆDÕ$à'-×'8Ñ'8ˆDÔ$Ü—i’i Ó>ˆŒÜ—z’z &×"<Ñ"<Ó=ˆŽr    c                óÔ   € V P                  V4      pV P                  WV4      pV P                  V4      pV P                  V4      pV P	                  V4      pV P                  V4      pV# rr   )r“   r‹   r—   rG   r˜   )r   r^   r(   r)   s   &&&&r   r*   ÚGLPNMixFFN.forwardÈ   s`   € ØŸ™ MÓ2ˆØŸ™ M¸5ÓAˆØ×0Ñ0°Ó?ˆØŸ™ ]Ó3ˆØŸ™ MÓ2ˆØŸ™ ]Ó3ˆØÐr    )r“   r˜   rG   r‹   r—   )NNrz   r5   s   @@r   r‘   r‘   »   s   ù‡ € ÷
>÷ò r    r‘   c                   ój   a a€ ] tR t^Ó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
# )
ÚGlpnDropPathzÃ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_probÚreturnN)Úfloat)Úformatr6   s   "€r   Ú__annotate__ÚGlpnDropPath.__annotate__Ú   s   ø€ ÷ #ñ #¡%ð #°$ñ #r    c                ó0   <€ \         SV `  4        Wn        R # rr   )r   r   r¢   )r   r¢   r   s   &&€r   r   ÚGlpnDropPath.__init__Ú   s   ø€ Ü‰ÑÔØ"Žr    c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r   r^   r£   )rV   ÚTensor)r¥   r6   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,          # )ç        )ÚdtypeÚdevicerŽ   )
r¢   Útrainingr"   ÚndimrV   Úrandr¯   r°   ÚfloorÚdiv)r   r^   Ú	keep_probr"   Úrandom_tensors   &&   r   r*   ÚGlpnDropPath.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¥   r6   s   "€r   r¦   r§   ç   s   ø€ ÷ %ñ %™Cñ %r    c                ó    € R V P                    2# )zp=©r¢   )r   s   &r   Ú
extra_reprÚGlpnDropPath.extra_reprç   s   € Ø�D—N‘NÐ#Ð$Ð$r    r»   )r®   )r-   r.   r/   r0   r1   r   r*   r¼   r2   r3   r4   r5   s   @@r   r    r    Ó   s-   ù‡ € ñ÷#õ #÷<ð <÷%÷ %ð %r    r    c                   ó@   a a€ ] tR t^ìt oRtV 3R ltRR ltRtVtV ;t	# )Ú	GLPNLayerzCThis corresponds to the Block class in the original implementation.c                óV  <€ \         SV `  4        \        P                  ! V4      V n        \        VVVVR 7      V n        VR8”  d   \        V4      M\        P                  ! 4       V n	        \        P                  ! V4      V n
        \        W&,          4      p\        WVR7      V n        R# ))r   r<   rL   r®   )r™   rš   N)r   r   r   r   Úlayer_norm_1r|   Ú	attentionr    ÚIdentityÚ	drop_pathÚlayer_norm_2r>   r‘   Úmlp)	r   rK   r   r<   rÄ   rL   Ú	mlp_ratioÚmlp_hidden_sizer   s	   &&&&&&& €r   r   ÚGLPNLayer.__init__ï   s   ø€ Ü‰ÑÔÜŸLšL¨Ó5ˆÔÜ&ØØ#Ø 3Ø%=ô	
ˆŒð 5>À´Oœ iÔ0ÌÏÊËˆŒÜŸLšL¨Ó5ˆÔÜ˜kÕ5Ó6ˆÜ˜fÈÔ_ˆŽr    c                ó,  € V P                  V P                  V4      VVVR 7      pV^ ,          pVR,          pV P                  V4      pWa,           pV P                  V P	                  V4      W#4      pV P                  V4      pW�,           p	V	3V,           pV# ))r_   r�   )rÂ   rÁ   rÄ   rÆ   rÅ   )
r   r^   r(   r)   r_   Úself_attention_outputsr„   rl   Ú
mlp_outputÚlayer_outputs
   &&&&&     r   r*   ÚGLPNLayer.forwardý   s¢   € Ø!%§¡Ø×Ñ˜mÓ,ØØØ/ð	 "0ó "
Ðð 2°!Õ4ÐØ(¨Õ,ˆð  Ÿ>™>Ð*:Ó;ÐØ(Õ8ˆà—X‘X˜d×/Ñ/°Ó>ÀÓNˆ
ð —^‘^ JÓ/ˆ
Ø!Õ1ˆà�/ GÕ+ˆàˆr    )rÂ   rÄ   rÁ   rÅ   rÆ   rn   r,   r5   s   @@r   r¿   r¿   ì   s   ù‡ € ÙMõ`÷ô r    r¿   c                   ó<   a a€ ] tR tRt oV 3R ltRR ltRtVtV ;t# )ÚGLPNEncoderi  c                óT  <€ \         S
V `  4        Wn        \        P                  ! ^ VP
                  \        VP                  4      RR7       Uu. uF  q"P                  4       NK  	  pp. p\        VP                  4       F  pTP                  \        VP                  V,          VP                  V,          V^ 8X  d   VP                  MVP                   V^,
          ,          VP                   V,          R7      4       K�  	  \"        P$                  ! V4      V n        . p^ p\        VP                  4       Få  p. pV^ 8w  d!   WqP                  V^,
          ,          ,          p\        VP                  V,          4       Ft  p	VP                  \)        VVP                   V,          VP*                  V,          W7V	,           ,          VP,                  V,          VP.                  V,          R7      4       Kv  	  VP                  \"        P$                  ! V4      4       Kç  	  \"        P$                  ! V4      V n        \"        P$                  ! \        VP                  4       Uu. uF*  p\"        P2                  ! VP                   V,          4      NK,  	  up4      V n        R# u upi u upi )r:   Úcpu)r°   )r   r   r   r   )r   r<   rÄ   rL   rÇ   N)r   r   rK   rV   ÚlinspaceÚdrop_path_rateÚsumÚdepthsÚitemÚrangeÚnum_encoder_blocksÚappendr   Úpatch_sizesÚstridesr   Úhidden_sizesr   Ú
ModuleListÚpatch_embeddingsr¿   r<   Ú	sr_ratiosÚ
mlp_ratiosÚblockr   r   )r   rK   ÚxÚdprr&   ÚiÚblocksÚcurÚlayersÚjr   s   &&        €r   r   ÚGLPNEncoder.__init__  s  ø€ Ü‰ÑÔØŒô "'§¢°°6×3HÑ3HÌ#ÈfÏmÉmÓJ\ÐejÕ!kÓlÑ!k˜A�v‰vŽxÑ!kˆÐlð ˆ
Ü�v×0Ñ0Ö1ˆAØ×ÑÜ*Ø%×1Ñ1°!Õ4Ø!Ÿ>™>¨!Õ,Ø89¸Q¼ ×!4Ò!4ÀF×DWÑDWÐXYÐ\]ÕX]ÕD^Ø &× 3Ñ 3°AÕ 6ô	öñ 2ô !#§¢¨jÓ 9ˆÔð ˆØˆÜ�v×0Ñ0Ö1ˆAàˆFØ�AŒvØ—}‘} Q¨¥UÕ+Õ+�Ü˜6Ÿ=™=¨Õ+Ö,�Ø—‘ÜØØ$*×$7Ñ$7¸Õ$:Ø,2×,FÑ,FÀqÕ,IØ"%¨A¥g¥,Ø17×1AÑ1AÀ!Õ1DØ"(×"3Ñ"3°AÕ"6ôö	ñ -ð �M‰Mœ"Ÿ-š-¨Ó/Ö0ñ! 2ô$ —]’] 6Ó*ˆŒ
ô Ÿ-š-Ü;@À×AZÑAZÔ;[Ó\Ñ;[°aŒR�\Š\˜&×-Ñ-¨aÕ0Ö1Ñ;[Ñ\ó
ˆŽùòO mùòP ]s   ÁJ É"0J%c                ó¢  € V'       d   RMR pV'       d   RMR pVP                   ^ ,          pTp\        \        V P                  V P                  V P
                  4      4       F¥  w  ršV
w  r¼pV! V4      w  rŽp\        V4       F3  w  ppV! WŽWò4      pV^ ,          pV'       g   K"  VV^,          3,           pK5  	  V! V4      pVP                  W~VR4      P                  ^ ^^^4      P                  4       pV'       g   Kœ  WX3,           pK§  	  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      # )Nc              3   ó0   "  € T F  qf   K  Vx € K  	  R # 5irr   © )Ú.0Úvs   & r   Ú	<genexpr>Ú&GLPNEncoder.forward.<locals>.<genexpr>g  s   é € ÐmÑ$[˜qŸšÓ$[ùs   ‚Œ
©Úlast_hidden_stater^   Ú
attentionsrí   rQ   )r"   Ú	enumerateÚziprß   râ   r   rU   rT   r\   Útupler   )r   r%   r_   Úoutput_hidden_statesÚreturn_dictÚall_hidden_statesÚall_self_attentionsrc   r^   Úidxrã   Úembedding_layerÚblock_layerÚ
norm_layerr(   r)   rå   ÚblkÚlayer_outputss   &&&&&              r   r*   ÚGLPNEncoder.forwardH  sJ  € ÷ #7™B¸DÐß$5™b¸4Ðà!×'Ñ'¨Õ*ˆ
à$ˆÜ¤ D×$9Ñ$9¸4¿:¹:ÀtÇÁÓ WÖX‰FˆCØ78Ñ4ˆO¨*á+:¸=Ó+IÑ(ˆM 5ä# KÖ0‘��3Ù # M¸5Ó T�Ø -¨aÕ 0�ß$Ñ$Ø*=ÀÈqÕAQÐ@SÕ*SÒ'ñ	 1ñ ' }Ó5ˆMà)×1Ñ1°*ÀeÈRÓP×XÑXÐYZÐ\]Ð_`ÐbcÓd×oÑoÓqˆMß#Ñ#Ø$5Ð8HÕ$HÒ!ñ Y÷" ß”5Ñm ]ÐGZÑ$[Óm—5Ðm�5Ñm ]ÐGZÑ$[ÓmÓmÐmÜØ+Ø+Ø*ô
ð 	
r    )râ   rK   r   rß   )FFTrz   r5   s   @@r   rÐ   rÐ     s   ù‡ € õ.
÷`$
ô $
r    rÐ   c                   ó<   a € ] tR tRt o RtRtRt. tV 3R ltRt	V t
R# )ÚGLPNPreTrainedModelio  Úglpnr%   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # )r   rK   r	   )r¥   r6   s   "€r   r¦   Ú GLPNPreTrainedModel.__annotate__o  s   ø‡ ‚ áÑò r    rí   N)Úimage)r-   r.   r/   r0   Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚ_no_split_modulesÚ__annotate_func__r2   r3   )r6   s   @r   r  r  o  s%   ø‡ € ð ÐØ$€OØ!ÐØÐ÷ ƒ r    r  c                   óR   a a€ ] tR tRt oV 3R lt]RV3R lR ll4       tRtVtV ;t	# )Ú	GLPNModelix  c                ór   <€ \         SV `  V4       Wn        \        V4      V n        V P                  4        R # rr   )r   r   rK   rÐ   ÚencoderÚ	post_init©r   rK   r   s   &&€r   r   ÚGLPNModel.__init__{  s/   ø€ Ü‰Ñ˜Ô ØŒô # 6Ó*ˆŒð 	�‰Ör    c                ó†   <€ V ^8„  d   QhRS[ P                  RS[R,          RS[R,          RS[R,          RS[S[,          /# )r   r%   r_   Nrø   rù   r£   )rV   ÚFloatTensorÚboolr÷   r   )r¥   r6   s   "€r   r¦   ÚGLPNModel.__annotate__‡  sT   ø€ ÷ 
ñ 
á×'Ñ'ð
ñ   $�;ð
ñ # T�kð	
ñ
 ˜D•[ð
ñ 
‘Õ	 ñ
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	                  VVVVR7      pV^ ,          pV'       g   V3VR,          ,           # \        VVP                  VP                  R7      # )N©r_   rø   rù   r�   rò   )rK   r_   rø   rù   r  r   r^   rô   )r   r%   r_   rø   rù   ÚkwargsÚencoder_outputsÚsequence_outputs   &&&&&,  r   r*   ÚGLPNModel.forward…  sµ   € ð 2CÒ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ò$DÑ È$Ï+É+×JjÑJjð 	ð &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆàŸ,™,ØØ/Ø!5Ø#ð	 'ó 
ˆð *¨!Õ,ˆçØ#Ð%¨¸Õ(;Õ;Ð;äØ-Ø)×7Ñ7Ø&×1Ñ1ô
ð 	
r    )rK   r  )NNN©
r-   r.   r/   r0   r   r   r*   r2   r3   r4   r5   s   @@r   r  r  x  s(   ù‡ € õð ÷
ñ 
ó ÷
ð 
r    r  c                   ó@   a a€ ] tR tRt oRtRV 3R lltR tRtVtV ;t	# )ÚGLPNSelectiveFeatureFusioni§  zï
Selective Feature Fusion module, as explained in the [paper](https://huggingface.co/papers/2201.07436) (section 3.4). This
module adaptively selects and integrates local and global features by attaining an attention map for each feature.
c           
     óŒ  <€ \         SV `  4        \        P                  ! \        P                  ! \        V^,          4      V^^^R7      \        P                  ! V4      \        P                  ! 4       4      V n        \        P                  ! \        P                  ! V\        V^,          4      ^^^R7      \        P                  ! \        V^,          4      4      \        P                  ! 4       4      V n	        \        P                  ! \        V^,          4      ^^^^R7      V n
        \        P                  ! 4       V n        R# )r   )Úin_channelsÚout_channelsr   r   r   N)r   r   r   Ú
Sequentialr   r>   ÚBatchNorm2dÚReLUÚconvolutional_layer1Úconvolutional_layer2Úconvolutional_layer3ÚSigmoidÚsigmoid)r   Ú
in_channelr   s   &&€r   r   Ú#GLPNSelectiveFeatureFusion.__init__­  sÝ   ø€ Ü‰ÑÔä$&§M¢MÜ�IŠI¤# j°1¥nÓ"5ÀJÐ\]ÐfgÐqrÔsÜ�NŠN˜:Ó&Ü�GŠG‹Ió%
ˆÔ!ô %'§M¢MÜ�IŠI *¼3¸zÈA½~Ó;NÐ\]ÐfgÐqrÔsÜ�NŠNœ3˜z¨A�~Ó.Ó/Ü�GŠG‹Ió%
ˆÔ!ô %'§I¢IÜ˜J¨�NÓ+¸!ÈÐSTÐ^_ô%
ˆÔ!ô —z’z“|ˆŽr    c                óB  € \         P                  ! W3^R7      pV P                  V4      pV P                  V4      pV P	                  V4      pV P                  V4      pWR,          P                  ^4      ,          W$R,          P                  ^4      ,          ,           pV# )r‚   rO   )ºNNNr:   r0  r0  )r0  r‚   r0  r0  )rV   Úcatr(  r)  r*  r,  Ú	unsqueeze)r   Úlocal_featuresÚglobal_featuresÚfeaturesÚattnÚhybrid_featuress   &&&   r   r*   Ú"GLPNSelectiveFeatureFusion.forwardÂ  s’   € ä—9’9˜nÐ>ÀAÔFˆà×,Ñ,¨XÓ6ˆØ×,Ñ,¨XÓ6ˆØ×,Ñ,¨XÓ6ˆà�|‰|˜HÓ%ˆà(°
Õ+;×+EÑ+EÀaÓ+HÕHÈ?Øõ^
ç
‰)�A‹,õLõ ˆð Ðr    )r(  r)  r*  r,  )é@   r,   r5   s   @@r   r!  r!  §  s   ù‡ € ñ÷
$÷*ò r    r!  c                   ó<   a a€ ] tR tRt oV 3R ltRR ltRtVtV ;t# )ÚGLPNDecoderStageiÓ  c                óü   <€ \         SV `  4        W8H  pV'       g   \        P                  ! W^R7      M\        P                  ! 4       V n        \        V4      V n        \        P                  ! ^RRR7      V n	        R# )r‚   )r   ÚbilinearF©Úscale_factorÚmodeÚalign_cornersN)
r   r   r   r   rÃ   Úconvolutionr!  ÚfusionÚUpsampleÚupsample)r   r#  r$  Úshould_skipr   s   &&& €r   r   ÚGLPNDecoderStage.__init__Ô  sX   ø€ Ü‰ÑÔØ!Ñ1ˆßVaœ2Ÿ9š9 [ÈAÕNÔgi×grÒgrÓgtˆÔÜ0°Ó>ˆŒÜŸš°¸ÐSXÔYˆŽr    c                ót   € V P                  V4      pVe   V P                  W4      pV P                  V4      pV# rr   ©rB  rC  rE  )r   Úhidden_stateÚresiduals   &&&r   r*   ÚGLPNDecoderStage.forwardÛ  s:   € Ø×'Ñ'¨Ó5ˆØÒØŸ;™; |Ó>ˆLØ—}‘} \Ó2ˆàÐr    rI  rr   rz   r5   s   @@r   r;  r;  Ó  s   ù‡ € õZ÷	ô 	r    r;  c                   óD   a a€ ] tR tRt oV 3R ltV3R lR ltRtVtV ;t# )ÚGLPNDecoderiç  c           	     óF  <€ \         SV `  4        VP                  R R R1,          pVP                  p\        P
                  ! V Uu. uF  p\        WC4      NK  	  up4      V n        R V P                  ^ ,          n        \        P                  ! ^RRR7      V n
        R # u upi )Nr=  Fr>  rQ   )r   r   rÝ   Údecoder_hidden_sizer   rÞ   r;  ÚstagesrC  rD  Úfinal_upsample)r   rK   Úreserved_hidden_sizesr$  r   r   s   &&   €r   r   ÚGLPNDecoder.__init__è  s†   ø€ Ü‰ÑÔà &× 3Ñ 3±D°b°DÕ 9ÐØ×1Ñ1ˆä—m’mÙLaÓbÑLa¸[Ô˜kÖ8ÑLaÑbó
ˆŒð !%ˆ�‰�A�Ôä Ÿkšk°q¸zÐY^Ô_ˆÖùò cs   ÁBc                ón   <€ V ^8„  d   QhRS[ S[P                  ,          RS[ S[P                  ,          /# r«   ©ÚlistrV   r¬   )r¥   r6   s   "€r   r¦   ÚGLPNDecoder.__annotate__ö  s-   ø€ ÷ 	#ñ 	#¡T©%¯,©,Õ%7ð 	#¹DÁÇÁÕ<Nñ 	#r    c                óº   € . pR p\        VR R R1,          V P                  4       F  w  rEV! WC4      pVP                  V4       K   	  V P                  V4      VR&   V# )NrQ   )rö   rQ  rÚ   rR  )r   r^   Ústage_hidden_statesÚstage_hidden_staterJ  Ústages   &&    r   r*   ÚGLPNDecoder.forwardö  si   € Ø ÐØ!ÐÜ#& }±T°r°TÕ':¸D¿K¹KÖ#HÑˆLÙ!& |Ó!HÐØ×&Ñ&Ð'9Ö:ñ $Ið #'×"5Ñ"5Ð6HÓ"IÐ˜BÑà"Ð"r    )rR  rQ  rz   r5   s   @@r   rN  rN  ç  s   ù‡ € õ`÷	#÷ 	#ð 	#r    rN  c                   ó@   a a€ ] tR tRt oRtRV 3R lltR tRtVtV ;t	# )Ú	SiLogLossi  zï
Implements the Scale-invariant log scale loss [Eigen et al., 2014](https://huggingface.co/papers/1406.2283).

$$L=\frac{1}{n} \sum_{i} d_{i}^{2}-\frac{1}{2 n^{2}}\left(\sum_{i} d_{i}^{2}\right)$$ where $d_{i}=\log y_{i}-\log
y_{i}^{*}$.

c                ó0   <€ \         SV `  4        Wn        R # rr   )r   r   Úlambd)r   ra  r   s   &&€r   r   ÚSiLogLoss.__init__  s   ø€ Ü‰ÑÔØŽ
r    c                óŽ  € V^ 8„  P                  4       p\        P                  ! W#,          4      \        P                  ! W,          4      ,
          p\        P                  ! \        P                  ! V^4      P                  4       V P                  \        P                  ! VP                  4       ^4      ,          ,
          4      pV# )r:   )ÚdetachrV   ÚlogrY   ÚpowÚmeanra  )r   ÚpredÚtargetÚ
valid_maskÚdiff_logÚlosss   &&&   r   r*   ÚSiLogLoss.forward  s�   € Ø˜q‘j×(Ñ(Ó*ˆ
Ü—9’9˜VÕ/Ó0´5·9²9¸TÕ=MÓ3NÕNˆÜ�zŠzœ%Ÿ)š) H¨aÓ0×5Ñ5Ó7¸$¿*¹*ÄuÇyÂyÐQY×Q^ÑQ^ÓQ`ÐbcÓGdÕ:dÕdÓeˆàˆr    )ra  )g      à?r,   r5   s   @@r   r_  r_    s   ù‡ € ñ÷÷ò r    r_  c                   óD   a a€ ] tR tRt oV 3R ltV3R lR ltRtVtV ;t# )ÚGLPNDepthEstimationHeadi  c                ó  <€ \         SV `  4        Wn        VP                  p\        P
                  ! \        P                  ! W"^^^R7      \        P                  ! RR7      \        P                  ! V^^^^R7      4      V n        R# )r‰   r   F)ÚinplaceN)	r   r   rK   rP  r   r%  r   r'  Úhead)r   rK   Úchannelsr   s   && €r   r   Ú GLPNDepthEstimationHead.__init__  s`   ø€ Ü‰ÑÔàŒà×-Ñ-ˆÜ—M’MÜ�IŠI�h°aÀÈ1ÔMÜ�GŠG˜EÔ"Ü�IŠI�h ¨q¸ÀAÔFó
ˆŽ	r    c                ó^   <€ V ^8„  d   QhRS[ S[P                  ,          RS[P                  /# r«   rV  )r¥   r6   s   "€r   r¦   Ú$GLPNDepthEstimationHead.__annotate__$  s(   ø€ ÷ 	ñ 	¡T©%¯,©,Õ%7ð 	¹E¿L¹Lñ 	r    c                óæ   € WP                   P                  ,          pV P                  V4      p\        P                  ! V4      V P                   P
                  ,          pVP                  ^R7      pV# )r‚   rO   )rK   Úhead_in_indexrr  rV   r,  Ú	max_depthÚsqueeze)r   r^   Úpredicted_depths   && r   r*   ÚGLPNDepthEstimationHead.forward$  sX   € à%§k¡k×&?Ñ&?Õ@ˆàŸ	™	 -Ó0ˆäŸ-š-¨Ó6¸¿¹×9NÑ9NÕNˆØ)×1Ñ1°aÐ1Ó8ˆàÐr    )rK   rr  rz   r5   s   @@r   ro  ro    s   ù‡ € õ

÷	÷ 	ð 	r    ro  zg
    GLPN Model transformer with a lightweight depth estimation head on top e.g. for KITTI, NYUv2.
    )Úcustom_introc                   óR   a a€ ] tR tRt oV 3R lt]RV3R lR ll4       tRtVtV ;t	# )ÚGLPNForDepthEstimationi0  c                ó¦   <€ \         SV `  V4       \        V4      V n        \	        V4      V n        \        V4      V n        V P                  4        R # rr   )	r   r   r  r  rN  Údecoderro  rr  r  r  s   &&€r   r   ÚGLPNForDepthEstimation.__init__6  s@   ø€ Ü‰Ñ˜Ô ä˜fÓ%ˆŒ	Ü" 6Ó*ˆŒÜ+¨FÓ3ˆŒ	ð 	�‰Ör    c                óÒ   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[R,          RS[R,          RS[R,          RS[S[ P                  ,          S[,          /# )r   r%   ÚlabelsNr_   rø   rù   r£   )rV   r  r  r÷   r¬   r   )r¥   r6   s   "€r   r¦   Ú#GLPNForDepthEstimation.__annotate__A  s{   ø€ ÷ R
ñ R
á×'Ñ'ðR
ñ ×!Ñ! DÕ(ðR
ñ   $�;ð	R
ñ
 # T�kðR
ñ ˜D•[ðR
ñ 
‰u�|‰|Õ	Ñ3Õ	3ñR
r    c                ó*  € Ve   TMV P                   P                  pVe   TMV P                   P                  pV P                  VVRVR7      pV'       d   VP                  MV^,          pV P                  V4      p	V P                  V	4      p
RpVe   \        4       pV! W¢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P                  R7      # )a÷  
labels (`torch.FloatTensor` of shape `(batch_size, height, width)`, *optional*):
    Ground truth depth estimation maps for computing the loss.

Examples:

```python
>>> from transformers import AutoImageProcessor, GLPNForDepthEstimation
>>> 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("vinvino02/glpn-kitti")
>>> model = GLPNForDepthEstimation.from_pretrained("vinvino02/glpn-kitti")

>>> # 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"))
```NTr  r�   :r   NN)rl  r{  r^   rô   )
rK   rù   rø   r  r^   r�  rr  r_  r   rô   )r   r%   r„  r_   rø   rù   r  rl   r^   Úoutr{  rl  Úloss_fctr~   s   &&&&&&,       r   r*   ÚGLPNForDepthEstimation.forward@  s
  € ðb &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆà$8Ò$DÑ È$Ï+É+×JjÑJjð 	ð —)‘)ØØ/Ø!%Ø#ð	 ó 
ˆ÷ 2=˜×-Ò-À'È!Å*ˆà�l‰l˜=Ó)ˆØŸ)™) C›.ˆàˆØÒÜ “{ˆHÙ˜OÓ4ˆDçß#Ø)Ð+¨g°b­kÕ9‘à)Ð+¨g°b­kÕ9�Ø)-Ò)9�T�G˜fÕ$ÐE¸vÐEä#ØØ+ß3G˜'×/Ò/ÈTØ×)Ñ)ô	
ð 	
r    )r�  r  rr  )NNNNr  r5   s   @@r   r  r  0  s,   ù‡ € õð ÷R
ñ R
ó ÷R
ð R
r    r  )r  r¿   r  r  )&r1   rX   rV   r   Úactivationsr   Úmodeling_outputsr   r   Úmodeling_utilsr   Úutilsr   r   Úconfiguration_glpnr
   Ú
get_loggerr-   ÚloggerÚModuler   r8   rp   r|   r‡   r‘   r    r¿   rÐ   r  r  r!  r;  rN  r_  ro  r  Ú__all__rí   r    r   Ú<module>r“     s†  ðñ ã ã Ý å !ß EÝ -ß ,Ý *ð 
×	Ò	˜HÓ	%€ô) §¡ô )ô4L §¡ô Lô`	�R—Y‘Yô 	ô�B—I‘Iô ô(˜Ÿ	™	ô ô �—‘ô ô0%�2—9‘9ô %ô2(�—	‘	ô (ôVU
�"—)‘)ô U
ðp ô˜/ó ó ðð ô+
Ð#ó +
ó ð+
ô\) §¡ô )ôX�r—y‘yô ô(#�"—)‘)ô #ô6�—	‘	ô ô*˜bŸi™iô ñ2 ðôô
^
Ð0ó ^
óð
^
òB V‚r    