+
    œ°³j²B  ã                   óø  € ^ RI t ^ RI Ht ^RIHt ^RIHt ^RIHt ^RI	H
t
 ^RIHt ^RIHtHtHt ^R	IHt R
 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7       ! R R]4      4       tRR.tR# )é    N)Únn)Úinitialization)Úload_backbone)ÚDepthEstimatorOutput)ÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tuple©ÚCHMv2Configc                 óš   € V P                   e3   \        V P                   R4      '       d   V P                   P                  # V P                  # )NÚhidden_size)Úbackbone_configÚhasattrr   )Úconfigs   &Úi/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/chmv2/modeling_chmv2.pyÚ_get_backbone_hidden_sizer   "   s>   € Ø×ÑÒ)¬g°f×6LÑ6LÈm×.\Ò.\Ø×%Ñ%×1Ñ1Ð1à×!Ñ!Ð!ó    c                   óD   a a€ ] tR t^)t oV3R lV 3R lltR tRtVtV ;t# )ÚCHMv2ReassembleLayerc                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# )é   r   ÚchannelsÚfactor)r   Úint)ÚformatÚ__classdict__s   "€r   Ú__annotate__Ú!CHMv2ReassembleLayer.__annotate__*   s'   ø€ ÷ jñ j™{ð j±cð jÁ3ñ 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# )é   )Úin_channelsÚout_channelsÚkernel_size©r%   ÚstrideÚpaddingN)
ÚsuperÚ__init__r   r   ÚConv2dÚ
projectionÚConvTranspose2dÚresizeÚIdentityr   )Úselfr   r   r   r   Ú	__class__s   &&&& €r   r*   ÚCHMv2ReassembleLayer.__init__*   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# ©N©r,   r.   )r0   Úhidden_states   &&r   ÚforwardÚCHMv2ReassembleLayer.forward9   s$   € Ø—‘ |Ó4ˆØ—{‘{ <Ó0ˆØÐr   r5   ©	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r*   r7   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r1   r   s   @@r   r   r   )   s   ù‡ € ÷jó j÷ò r   r   c                   óX   a a€ ] tR t^?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	# )ÚCHMv2ReassembleStagez�
Reassemble stage that processes hidden states from the backbone into image-like feature
representations at various resolutions.
c                ó    <€ V ^8„  d   QhRS[ /# ©r   r   r   )r   r   s   "€r   r   Ú!CHMv2ReassembleStage.__annotate__E   s   ø€ ÷ pñ p™{ñ pr   c           	     óž  <€ \         SV `  4        Wn        VP                  V n        \        P
                  ! 4       V n        \        VP                  VP                  4       F,  w  r#V P                  P                  \        VVVR 7      4       K.  	  \        V4      pV P                  R8X  d¡   \        P
                  ! 4       V n        \        \        V P                  4      4       Fb  pV P                  P                  \        P                   ! \        P"                  ! ^V,          V4      \        P$                  ! 4       4      4       Kd  	  R# R# ))r   r   r   ÚprojectN)r)   r*   r   Úreadout_typer   Ú
ModuleListÚlayersÚzipÚpost_process_channelsÚreassemble_factorsÚappendr   r   Úreadout_projectsÚrangeÚlenÚ
SequentialÚLinearÚGELU)r0   r   r$   r   r   Ú_r1   s   &&    €r   r*   ÚCHMv2ReassembleStage.__init__E   sð   ø€ Ü‰ÑÔØŒØ"×/Ñ/ˆÔä—m’m“oˆŒÜ$'¨×(DÑ(DÀf×F_ÑF_Ö$`Ñ ˆLØ�K‰K×ÑÜ$Ø!Ø)Ø!ôöñ %aô 0°Ó7ˆØ×Ñ 	Ô)Ü$&§M¢M£OˆDÔ!Üœ3˜tŸ{™{Ó+Ö,�Ø×%Ñ%×,Ñ,¬R¯]ª]¼2¿9º9ÀQÈÅ_ÐVaÓ;bÔdf×dkÒdkÓdmÓ-nÖoó -ñ *r   c                ón   <€ V ^8„  d   QhRS[ S[P                  ,          RS[ S[P                  ,          /# )r   Úhidden_statesÚreturn)ÚlistÚtorchÚTensor)r   r   s   "€r   r   rF   Z   s1   ø€ ÷ ñ ¡T©%¯,©,Õ%7ð ÑaeÑfk×frÑfrÕasñ r   c                ó¾  € . p\        V4       EFÊ  w  rV\        V\        \        34      '       Ed   \	        V4      ^8X  Ed   V^ ,          V^,          rvVP
                  pV P                  R8X  d”   VP                  ^4      P                  ^^4      pVP                  ^4      P                  V4      p	V P                  V,          ! \        P                  ! Wi3R4      4      pVP                  ^ ^^4      P                  V4      pM«V P                  R8X  d9   VP                  ^4      VP                  R4      ,           pVP                  V4      pMaVP!                  4       ^8X  dM   VR,          pVP
                  w  r«pVP                  W¢W<4      pVP                  ^ ^^^4      P#                  4       pV P$                  V,          ! V4      pVP'                  V4       EKÍ  	  V# )r   rH   Úaddéÿÿÿÿ):NNN:r"   NN)Ú	enumerateÚ
isinstanceÚtupler[   rR   ÚshaperI   ÚflattenÚ	transposeÚ	unsqueezeÚ	expand_asrP   r\   ÚcatÚpermuteÚreshapeÚdimÚ
contiguousrK   rO   )r0   rY   Úpatch_heightÚpatch_widthÚoutÚ	layer_idxr6   Ú	cls_tokenÚfeature_shapeÚreadoutÚ
batch_sizerV   Únum_channelss   &&&&         r   r7   ÚCHMv2ReassembleStage.forwardZ   sž  € Øˆä'0°×'?Ñ#ˆIÜ˜,¬´¨×6Ó6¼3¸|Ó;LÐPQÕ;QØ*6°q­/¸<È½?˜iØ ,× 2Ñ 2�à×$Ñ$¨	Ô1Ø#/×#7Ñ#7¸Ó#:×#DÑ#DÀQÈÓ#J�LØ'×1Ñ1°!Ó4×>Ñ>¸|ÓL�GØ#'×#8Ñ#8¸Ö#CÄEÇIÂIÈ|ÐNeÐgiÓDjÓ#k�LØ#/×#7Ñ#7¸¸1¸aÓ#@×#HÑ#HÈÓ#W‘LØ×&Ñ&¨%Ô/Ø#/×#7Ñ#7¸Ó#:¸Y×=PÑ=PÐQSÓ=TÕ#T�LØ#/×#7Ñ#7¸Ó#F�Løà×#Ñ#Ó%¨Ô*Ø#/°Õ#6�LØ2>×2DÑ2DÑ/�J <Ø#/×#7Ñ#7¸
ÐR]Ó#l�LØ#/×#7Ñ#7¸¸1¸aÀÓ#C×#NÑ#NÓ#P�LàŸ;™; yÖ1°,Ó?ˆLØ�J‰J�|×$ñ+ (@ð. ˆ
r   )r   rK   rP   rI   ©NN©
r:   r;   r<   r=   Ú__doc__r*   r7   r>   r?   r@   rA   s   @@r   rC   rC   ?   s%   ù‡ € ñ÷
pó p÷*÷ ò r   rC   c                   óH   a a€ ] tR t^wt oRtV 3R ltV3R lR ltRtVtV ;t	# )ÚCHMv2PreActResidualLayerz—
ResidualConvUnit, pre-activate residual unit.

Args:
    config (`[CHMv2Config]`):
        Model configuration class defining the model architecture.
c           	     ó`  <€ \         SV `  4        \        P                  ! 4       V n        \        P
                  ! VP                  VP                  ^^^RR7      V n        \        P                  ! 4       V n        \        P
                  ! VP                  VP                  ^^^RR7      V n	        R# )é   T)r%   r'   r(   ÚbiasN)
r)   r*   r   ÚReLUÚactivation1r+   Úfusion_hidden_sizeÚconvolution1Úactivation2Úconvolution2©r0   r   r1   s   &&€r   r*   Ú!CHMv2PreActResidualLayer.__init__€   sŠ   ø€ Ü‰ÑÔäŸ7š7›9ˆÔÜŸIšIØ×%Ñ%Ø×%Ñ%ØØØØô
ˆÔô Ÿ7š7›9ˆÔÜŸIšIØ×%Ñ%Ø×%Ñ%ØØØØô
ˆÖr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   r6   rZ   ©r\   r]   )r   r   s   "€r   r   Ú%CHMv2PreActResidualLayer.__annotate__—   s#   ø€ ÷ 'ñ '¡E§L¡Lð '±U·\±\ñ 'r   c                óž   € TpV P                  V4      pV P                  V4      pV P                  V4      pV P                  V4      pW,           # r4   )r�   rƒ   r„   r…   )r0   r6   Úresiduals   && r   r7   Ú CHMv2PreActResidualLayer.forward—   sP   € ØˆØ×'Ñ'¨Ó5ˆØ×(Ñ(¨Ó6ˆØ×'Ñ'¨Ó5ˆØ×(Ñ(¨Ó6ˆàÕ&Ð&r   )r�   r„   rƒ   r…   ry   rA   s   @@r   r|   r|   w   s   ù‡ € ñõ
÷.'÷ 'ð 'r   r|   c                   óL   a a€ ] tR t^¡t oRV3R lV 3R llltRR ltRtVtV ;t# )ÚCHMv2FeatureFusionLayerc                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   r   Úis_first_layer)r   Úbool)r   r   s   "€r   r   Ú$CHMv2FeatureFusionLayer.__annotate__¢   s   ø€ ÷ 	@ñ 	@™{ð 	@¹Dñ 	@r   c                óæ   <€ \         SV `  4        W n        \        P                  ! VP
                  VP
                  ^RR7      V n        V'       g   \        V4      V n        \        V4      V n	        R# )r"   T)r%   r   N)
r)   r*   r‘   r   r+   r‚   r,   r|   Úresidual_layer1Úresidual_layer2)r0   r   r‘   r1   s   &&&€r   r*   Ú CHMv2FeatureFusionLayer.__init__¢   sU   ø€ Ü‰ÑÔØ,ÔäŸ)š) F×$=Ñ$=¸v×?XÑ?XÐfgÐnrÔsˆŒçÜ#;¸FÓ#CˆDÔ ä7¸Ó?ˆÖr   c                ó¨  € Vey   V P                   '       gg   VP                  VP                  8w  d5   VP                  w   rEp\        P                  P	                  W%V3RRR7      pWP                  V4      ,           pV P                  V4      pVf   R^/MRV/p\        P                  P                  ! V3/ VBRRRR/B pV P                  V4      pV# )	NÚbilinearF)ÚsizeÚmodeÚalign_cornersÚscale_factorrš   r›   rœ   T)r‘   rd   r   Ú
functionalÚinterpolater•   r–   r,   )r0   r6   rŒ   rš   rV   ÚheightÚwidthÚmodifiers   &&&&    r   r7   ÚCHMv2FeatureFusionLayer.forward­   sÞ   € ØÒ¨×(;×(;Ð(;Ø×!Ñ! X§^¡^Ô3Ø&2×&8Ñ&8Ñ#��1˜eÜŸ=™=×4Ñ4Ø¨E ?¸ÐSXð 5ó �ð (×*>Ñ*>¸xÓ*HÕHˆLà×+Ñ+¨LÓ9ˆà*.ª,�N AÑ&¸VÀT¸Nˆä—}‘}×0Ò0Øñ
àñ
ð ð
ð ò	
ˆð —‘ |Ó4ˆàÐr   )r‘   r,   r•   r–   )Frx   r9   rA   s   @@r   r�   r�   ¡   s   ù‡ € ÷	@õ 	@÷ô 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	# )ÚCHMv2UpsampleConvHeadz€
Convolutional head with intermediate upsampling.

Architecture: Conv3x3 -> 2x bilinear upsample -> Conv3x3 -> ReLU -> Conv1x1.
c                óf  <€ \         SV `  4        \        P                  ! \        P                  ! W^,          ^^^R7      \        P
                  ! ^RRR7      \        P                  ! V^,          V^^^R7      \        P                  ! 4       \        P                  ! W2^^^ R7      .4      V n        R# )r   r&   r™   T)r�   r›   rœ   N)r)   r*   r   rJ   r+   ÚUpsampler€   Úhead)r0   ÚfeaturesÚnumber_output_channelsÚn_hidden_channelsr1   s   &&&&€r   r*   ÚCHMv2UpsampleConvHead.__init__Í   s„   ø€ Ü‰ÑÔÜ—M’Mä—	’	˜(°¥M¸qÈÐTUÔVÜ—’¨°È4ÔPÜ—	’	˜( a�-Ð):ÈÐRSÐ]^Ô_Ü—’“	Ü—	’	Ð+ÐQRÐ[\ÐfgÔhðó
ˆŽ	r   c                ó<   € V P                    F  pV! V4      pK  	  V# r4   ©r¨   )r0   rY   Úlayers   && r   r7   ÚCHMv2UpsampleConvHead.forwardÙ   s    € Ø—Y”YˆEÙ! -Ó0ŠMñ àÐr   r®   )é€   ry   rA   s   @@r   r¥   r¥   Æ   s   ù‡ € ñ÷

÷ò r   r¥   c                   óf   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V3R lR ltRtVt	V ;t
# )	Ú	CHMv2Headz€
CHMv2 dense-prediction head adapted from DPT.

Integrates reassemble, projection convs, feature fusion, and UpConv depth head.
c                ó    <€ V ^8„  d   QhRS[ /# rE   r   )r   r   s   "€r   r   ÚCHMv2Head.__annotate__æ   s   ø€ ÷ 
ñ 
™{ñ 
r   c                óT  <€ \         SV `  4        Wn        \        V4      V n        \
        P                  ! 4       V n        VP                   F@  pV P                  P                  \
        P                  ! W!P                  ^^RR7      4       KB  	  \
        P                  ! 4       V n        \        \        VP                  4      4       F+  pV P                  P                  \        W^ 8H  R7      4       K-  	  \!        VP                  VP"                  VP$                  R7      V n        R# )r~   F)r%   r(   r   )r‘   )r©   rª   r«   N)r)   r*   r   rC   Úreassemble_stager   rJ   ÚconvsrM   rO   r+   r‚   Úfusion_layersrQ   rR   r�   r¥   rª   Úhead_hidden_sizeÚ
conv_depth)r0   r   ÚchannelÚidxr1   s   &&  €r   r*   ÚCHMv2Head.__init__æ   sÚ   ø€ Ü‰ÑÔØŒä 4°VÓ <ˆÔä—]’]“_ˆŒ
Ø×3Ô3ˆGØ�J‰J×ÑœbŸiši¨×1JÑ1JÐXYÐcdÐkpÔqÖrñ 4ô  Ÿ]š]›_ˆÔÜœ˜V×9Ñ9Ó:Ö;ˆCØ×Ñ×%Ñ%Ô&=¸fÐ]^ÑV^Ô&`Öañ <ô 0Ø×.Ñ.Ø#)×#@Ñ#@Ø$×5Ñ5ô
ˆŽr   c                ój   <€ V ^8„  d   QhRS[ S[P                  ,          RS[RS[RS[P                  /# ©r   rY   rn   ro   rZ   ©r[   r\   r]   r   )r   r   s   "€r   r   rµ   ú   s;   ø€ ÷ 
"ñ 
"©d±5·<±<Õ.@ð 
"ÑPSð 
"Ñbeð 
"Ñjo×jvÑjvñ 
"r   c                óŒ  € 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                  4        V P                  ^ ,          ! V^ ,          4      p\        ^\        V P                  4      4       F#  pV P                  V,          ! WvV,          4      pK%  	  V# u uppi )r   )r·   ra   r¸   Úreverser¹   rQ   rR   )r0   rY   rn   ro   ÚiÚfeaturer©   Úfused_hidden_states   &&&&    r   Úforward_featuresÚCHMv2Head.forward_featuresú   sª   € Ø×-Ñ-¨mÈ;ÓWˆä=FÀ}Ô=UÔVÑ=U©z¨q�D—J‘J˜q–M 'Ö*Ñ=UˆÑVØ×ÑÔà!×/Ñ/°Ö2°8¸Aµ;Ó?ÐÜ�qœ#˜d×0Ñ0Ó1Ö2ˆAØ!%×!3Ñ!3°AÖ!6Ð7IÐTUÍ;Ó!WÒñ 3ð "Ð!ùó Ws   ¡$C c                ój   <€ V ^8„  d   QhRS[ S[P                  ,          RS[RS[RS[P                  /# rÀ   rÁ   )r   r   s   "€r   r   rµ     s:   ø€ ÷ ñ ¡T©%¯,©,Õ%7ð Ásð ÑY\ð Ñaf×amÑamñ r   c                óL   € V P                  WV4      pV P                  V4      pV# r4   )rÇ   r»   )r0   rY   rn   ro   rp   s   &&&& r   r7   ÚCHMv2Head.forward  s'   € Ø×#Ñ# MÀÓMˆØ�o‰o˜cÓ"ˆØˆ
r   )r   r»   r¸   r¹   r·   )r:   r;   r<   r=   rz   r*   rÇ   r7   r>   r?   r@   rA   s   @@r   r³   r³   ß   s-   ù‡ € ñ÷
ó 
÷(
"ð 
"÷÷ ð r   r³   c                   óx   a a€ ] tR tRt oRtV3R lV 3R lltV3R lR ltV3R lR ltV3R	 lR
 ltRt	Vt
V ;t# )ÚCHMv2FeaturesToDepthi  zJConverts raw logits from the CHMv2 head into a depth map using depth bins.c                ó    <€ V ^8„  d   QhRS[ /# rE   r   )r   r   s   "€r   r   Ú!CHMv2FeaturesToDepth.__annotate__  s   ø€ ÷ !ñ !™{ñ !r   c                óÖ   <€ \         SV `  4        VP                  V n        VP                  V n        VP                  V n        VP
                  V n        R V n        RV n        RV n        R# )g-Cëâ6?g:Œ0âŽyE>gê-�™—q=N)	r)   r*   Ú	min_depthÚ	max_depthÚbins_strategyÚnorm_strategyÚ_mixlog_max_clamp_valueÚ_mixlog_eps_shiftÚ_mixlog_epsr†   s   &&€r   r*   ÚCHMv2FeaturesToDepth.__init__  s\   ø€ Ü‰ÑÔØ×)Ñ)ˆŒØ×)Ñ)ˆŒØ#×1Ñ1ˆÔØ#×1Ñ1ˆÔØ'+ˆÔ$Ø!%ˆÔØ ˆÖr   c                óT   <€ V ^8„  d   QhRS[ RS[P                  RS[P                  /# )r   Ún_binsÚdevicerZ   )r   r\   rÛ   r]   )r   r   s   "€r   r   rÏ     s*   ø€ ÷ ñ ©#ð ±u·|±|ð ÉÏÉñ r   c                óø  € V P                   R,          p\        P                  ! V P                  W1VR7      p\        P                  ! \        P                  ! \        P
                  ! \        P                  ! RV P                  VR7      4      \        P
                  ! \        P                  ! RW2R7      4      VVR7      4      p\        P                  ! RRWR7      pWe,          RV,
          V,          ,           pV# )zÎ
Creates mixed log bins interpolated between linear and log distributions.

The max_depth is divided by 8.0 internally; this scaling is reversed in
`_create_outputs_with_mixlog_norm` by multiplying by 8.0.
ç       @©rÛ   ç      ð?ç        © )rÒ   r\   ÚlinspacerÑ   ÚexpÚlogÚfull)r0   rÚ   rÛ   Úscaled_max_depthÚlinearrä   Úinterp_weightÚbinss   &&&     r   Ú_create_mixlog_binsÚ(CHMv2FeaturesToDepth._create_mixlog_bins  s°   € ð  Ÿ>™>¨CÕ/ÐÜ—’ §¡Ð0@ÐQWÔXˆÜ�iŠiÜ�NŠNÜ—	’	œ%Ÿ*š* R¨¯©ÀÔGÓHÜ—	’	œ%Ÿ*š* RÐ)9ÔIÓJØØô	ó
ˆô Ÿš s¨C°ÔGˆØÕ" c¨MÕ&9¸VÕ%CÕCˆØˆr   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# )r   Úinputré   rZ   r‰   )r   r   s   "€r   r   rÏ   .  s1   ø€ ÷ ñ ±e·l±lð É%Ï,É,ð Ñ[`×[gÑ[gñ r   c                óL  € \         P                  ! V4      pVP                  ^RR7      pV) P                  R4      P	                  V P
                  4      V P                  ,           pW5,           pVP                  ^RR7      p\         P                  ! VRRRR7      P                  V P                  4      pWg,          pVP                  ^R^^4      P                  V P                  4      p	W‰,          P                  ^RR7      P                  V P                  4      p
V
R,          p
V
# )zEConverts depth bin logits to depth values using mixlog normalization.T©rl   Úkeepdimrà   rß   )ÚnanÚposinfÚneginfrÝ   r`   )r\   ÚreluÚaminÚ	clamp_minÚ	clamp_maxrÕ   rÖ   ÚsumÚ
nan_to_numr×   Úview)r0   rí   ré   ÚlogitsÚmin_per_sampleÚshiftÚ
logits_posÚdenomÚweightsÚbins_broadcastÚoutputs   &&&        r   Ú _create_outputs_with_mixlog_normÚ5CHMv2FeaturesToDepth._create_outputs_with_mixlog_norm.  sö   € ä—’˜EÓ"ˆàŸ™¨°D˜Ó9ˆØ �×+Ñ+¨CÓ0×:Ñ:¸4×;WÑ;WÓXÐ[_×[qÑ[qÕqˆØ•^ˆ
à—‘ 1¨d�Ó3ˆÜ× Ò  ¨C¸ÀCÔH×RÑRÐSW×ScÑScÓdˆØÕ$ˆàŸ™ 1 b¨!¨QÓ/×9Ñ9¸$×:JÑ:JÓKˆØÕ*×/Ñ/°A¸tÐ/ÓD×NÑNÈt×O_ÑO_Ó`ˆà˜#•ˆàˆr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   ÚxrZ   r‰   )r   r   s   "€r   r   rÏ   A  s#   ø€ ÷ "ñ "™Ÿ™ð "©%¯,©,ñ "r   c                ó˜  € VP                   ^,          pV^8”  Ed   V P                  R8X  d9   \        P                  ! V P                  V P
                  W!P                  R7      pMËV P                  R8X  d    \        P                  ! \        P                  ! \        P                  ! V P                  4      4      \        P                  ! \        P                  ! V P
                  4      4      VVP                  R7      p\        P                  ! V4      pMV P                  W!P                  4      pV P                  R
9   dÏ   V P                  R8X  d;   \        P                  ! V4      pRpWE,           pWDP                  ^RR7      ,          pMYV P                  R8X  d   \        P                  ! V^R7      pM/\        P                  ! V4      pWDP                  ^RR7      ,          p\        P                   ! R	WC.4      P#                  ^R7      pV# V P%                  W4      p V# \        P                  ! V4      V P                  ,           pV# )r"   rç   rÞ   rä   Úsoftmaxgš™™™™™¹?Trï   ©rl   zikmn,k->imn)rç   r  Úsigmoid)rd   rÓ   r\   râ   rÑ   rÒ   rÛ   rä   Útensorrã   rê   rÔ   rô   rø   r  r
  Úeinsumrg   r  )r0   r  rÚ   ré   ÚlogitÚepsr  s   &&     r   r7   ÚCHMv2FeaturesToDepth.forwardA  s©  € Ø—‘˜•ˆà�A�:Ø×!Ñ! XÔ-Ü—~’~ d§n¡n°d·n±nÀf×U]ÑU]Ô^‘Ø×#Ñ# uÔ,Ü—~’~Ü—I’IœeŸlšl¨4¯>©>Ó:Ó;Ü—I’IœeŸlšl¨4¯>©>Ó:Ó;ØØŸ8™8ô	�ô —y’y “‘à×/Ñ/°¿¹ÓA�à×!Ñ!Ð%EÔEØ×%Ñ%¨Ô1Ü!ŸJšJ q›M�EØ�CØ!�K�EØ!§I¡I°!¸T IÓ$BÕB‘EØ×'Ñ'¨9Ô4Ü!ŸMšM¨!°Ô3‘Eä!ŸMšM¨!Ó,�EØ!§I¡I°!¸T IÓ$BÕB�EÜŸš m°e°]ÓC×MÑMÐRSÐMÓT�ð ˆð	 ×>Ñ>¸qÓG‘ð ˆô —Z’Z “] T§^¡^Õ3ˆFàˆr   )r×   rÖ   rÕ   rÓ   rÒ   rÑ   rÔ   )r:   r;   r<   r=   rz   r*   rê   r  r7   r>   r?   r@   rA   s   @@r   rÍ   rÍ     s5   ù‡ € ÙT÷!ó !÷ð ÷*ð ÷&"÷ "ð "r   rÍ   c                   ój   a a€ ] tR tRt oRtRtR	tRtRtRt	Rt
RtV3R lV 3R lltV3R ltRtVtV ;t# )
ÚCHMv2PreTrainedModelif  Úchmv2Úpixel_valuesTc                ó   <€ V ^8„  d   QhRR/# )r   rZ   Nrá   )r   r   s   "€r   r   Ú!CHMv2PreTrainedModel.__annotate__r  s   ø€ ÷ )ñ ) tñ )r   c                óv  <€ \         SV `  V4       \        V\        P                  \        P
                  \        P                  34      '       dj   \        P                  ! VP                  R V P                  P                  R7       VP                  e#   \        P                  ! VP                  4       R# R# R# )rà   )ÚmeanÚstdN)r)   Ú_init_weightsrb   r   rT   r+   r-   ÚinitÚtrunc_normal_Úweightr   Úinitializer_ranger   Úzeros_)r0   Úmoduler1   s   &&€r   r  Ú"CHMv2PreTrainedModel._init_weightsr  sw   ø€ Ü‰Ñ˜fÔ%Ü�fœrŸy™y¬"¯)©)´R×5GÑ5GÐH×IÒIÜ×Ò˜vŸ}™}°3¸D¿K¹K×<YÑ<YÕZØ�{‰{Ò&Ü—’˜FŸK™KÖ(ñ 'ñ Jr   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # rE   r   )r   r   s   "€r   r   r  f  s   ø‡ ‚ áÑò r   rá   )Úimage)r:   r;   r<   r=   Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚsupports_gradient_checkpointingÚ_supports_sdpaÚ_supports_flash_attnÚ_supports_flex_attnÚ_supports_attention_backendr  Ú__annotate_func__r>   r?   r@   rA   s   @@r   r  r  f  sF   ù‡ € ð  ÐØ$€OØ!ÐØ&*Ð#Ø€NØÐØÐØ"&Ð÷)ó )÷ … r   r  z…
    CHMv2 Model with a depth estimation head on top (consisting of convolutional layers) e.g. for canopy height
    estimation.
    )Úcustom_introc                   ón   a a€ ] tR tRt oV3R lV 3R lltR t]]RV3R lR ll4       4       tRt	Vt
V ;t# )	ÚCHMv2ForDepthEstimationiz  c                ó    <€ V ^8„  d   QhRS[ /# rE   r   )r   r   s   "€r   r   Ú$CHMv2ForDepthEstimation.__annotate__�  s   ø€ ÷ ñ ™{ñ r   c                ó¦   <€ \         SV `  V4       \        V4      V n        \	        V4      V n        \        V4      V n        V P                  4        R # r4   )	r)   r*   r   Úbackboner³   r¨   rÍ   Úfeatures_to_depthÚ	post_initr†   s   &&€r   r*   Ú CHMv2ForDepthEstimation.__init__�  s?   ø€ Ü‰Ñ˜Ô ä% fÓ-ˆŒÜ˜fÓ%ˆŒ	Ü!5°fÓ!=ˆÔà�‰Ör   c                ó6   € V P                   P                  4       # r4   )r2  Úget_input_embeddings)r0   s   &r   r7  Ú,CHMv2ForDepthEstimation.get_input_embeddingsŠ  s   € Ø�}‰}×1Ñ1Ó3Ð3r   c                óx   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          RS[/# )r   r  ÚlabelsNÚkwargsrZ   )r\   ÚFloatTensorÚ
LongTensorr   r	   r   )r   r   s   "€r   r   r0  �  sJ   ø€ ÷  
ñ  
á×'Ñ'ð 
ñ × Ñ  4Õ'ð 
ñ Ñ+Õ,ð	 
ñ
 
ñ 
r   c                ó¸  € RpVe   \        R4      hVP                  w   rVpV P                  P                  pWh,          p	Wx,          p
V P                  ! V3/ VB p\        \        VP                  VP                  4      4      pV P                  WÉV
4      pV P                  V4      pVP                  ^R7      p\        VVVP                  VP                  R7      # )z�
labels (`torch.LongTensor` of shape `(batch_size, height, width)`, *optional*):
    Ground truth depth estimation maps for computing the loss.
NzTraining is not implemented yetr	  )ÚlossÚpredicted_depthrY   Ú
attentions)ÚNotImplementedErrorrd   r   Ú
patch_sizer2  r[   rL   Úfeature_mapsÚ
cls_tokensr¨   r3  Úsqueezer   rY   rA  )r0   r  r:  r;  r?  rV   r    r¡   rC  rn   ro   Úbackbone_outputÚintermediate_featuresÚhead_outputr@  s   &&&,           r   r7   ÚCHMv2ForDepthEstimation.forward�  sÖ   € ð ˆØÒÜ%Ð&GÓHÐHà*×0Ñ0Ñˆˆ1�eØ—[‘[×+Ñ+ˆ
ØÕ+ˆØÕ)ˆàŸ-š-¨Ñ?¸Ñ?ˆÜ $¤S¨×)EÑ)EÀ×GaÑGaÓ%bÓ cÐà—i‘iÐ 5À[ÓQˆà×0Ñ0°Ó=ˆØ)×1Ñ1°aÐ1Ó8ˆä#ØØ+Ø)×7Ñ7Ø&×1Ñ1ô	
ð 	
r   )r2  r3  r¨   r4   )r:   r;   r<   r=   r*   r7  r   r
   r7   r>   r?   r@   rA   s   @@r   r.  r.  z  s:   ù‡ € ÷ó ò4ð Ø÷ 
ñ  
ó ó ÷ 
ð  
r   r.  )r\   r   Ú r   r  Úbackbone_utilsr   Úmodeling_outputsr   Úmodeling_utilsr   Úprocessing_utilsr   Úutilsr	   r
   r   Úconfiguration_chmv2r   r   ÚModuler   rC   r|   r�   r¥   r³   rÍ   r  r.  Ú__all__rá   r   r   Ú<module>rT     sð   ðó, Ý å &Ý +Ý 4Ý -Ý &ß IÑ IÝ ,ò"ô˜2Ÿ9™9ô ô,5˜2Ÿ9™9ô 5ôp''˜rŸy™yô ''ôT"˜bŸi™iô "ôJ˜BŸI™Iô ô2*�—	‘	ô *ôZW˜2Ÿ9™9ô Wðt ô)˜?ó )ó ð)ñ& ðôô/
Ð2ó /
óð/
ðd %Ð&<Ð
=‚r   