§
    ‚Štj®B  ã                   óú  — d dl Z d dl mZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ dd	lmZmZmZ d
dlmZ d„ Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Ze G d„ de
¦  «        ¦   «         Z ed¬¦  «         G d„ d e¦  «        ¦   «         Zd dgZdS )!é    N)Únné   )Úinitialization)Úload_backbone)ÚDepthEstimatorOutput)ÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleé   )ÚCHMv2Configc                 ó`   — | j         �!t          | j         d¦  «        r| j         j        S | j        S )NÚhidden_size)Úbackbone_configÚhasattrr   )Úconfigs    úf/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/chmv2/modeling_chmv2.pyÚ_get_backbone_hidden_sizer   "   s2   € ØÔÐ)­g°fÔ6LÈmÑ.\Ô.\Ð)ØÔ%Ô1Ð1àÔ!Ð!ó    c                   ó2   ‡ — e Zd Zdededefˆ fd„Zd„ Zˆ xZS )ÚCHMv2ReassembleLayerr   ÚchannelsÚfactorc           	      ó–  •— t          ¦   «                              ¦   «          t          |¦  «        }t          j        ||d¬¦  «        | _        |dk    r t          j        ||||d¬¦  «        | _        d S |dk    rt          j        ¦   «         | _        d S |dk     r0t          j        ||dt          d|z  ¦  «        d¬¦  «        | _        d S d S )Nr   )Úin_channelsÚout_channelsÚkernel_sizer   ©r   ÚstrideÚpaddingr   )
ÚsuperÚ__init__r   r   ÚConv2dÚ
projectionÚConvTranspose2dÚresizeÚIdentityÚint)Úselfr   r   r   r   Ú	__class__s        €r   r#   zCHMv2ReassembleLayer.__init__*   sÅ   ø€ Ý‰Œ×ÒÑÔÐå/°Ñ7Ô7ˆÝœ)°È(Ð`aÐbÑbÔbˆŒð �AŠ:ˆ:ÝÔ,¨X°xÈVÐ\bÐlmÐnÑnÔnˆDŒKˆKˆKØ�qŠ[ˆ[Ýœ+™-œ-ˆDŒKˆKˆKØ�aŠZˆZåœ) H¨hÀAÍcÐRSÐV\ÑR\ÉoÌoÐghÐiÑiÔiˆDŒKˆKˆKð ˆZr   c                 óZ   — |                       |¦  «        }|                      |¦  «        }|S ©N)r%   r'   )r*   Úhidden_states     r   ÚforwardzCHMv2ReassembleLayer.forward9   s*   € Ø—’ |Ñ4Ô4ˆØ—{’{ <Ñ0Ô0ˆØÐr   )Ú__name__Ú
__module__Ú__qualname__r   r)   r#   r/   Ú__classcell__©r+   s   @r   r   r   )   sj   ø€ € € € € ðj˜{ð j°cð jÀ3ð jð jð jð jð jð jðð ð ð ð ð ð r   r   c                   óf   ‡ — e Zd ZdZdefˆ fd„Zddeej                 deej                 fd„Z	ˆ xZ
S )	ÚCHMv2ReassembleStagez�
    Reassemble stage that processes hidden states from the backbone into image-like feature
    representations at various resolutions.
    r   c           	      óŠ  •— t          ¦   «                              ¦   «          || _        |j        | _        t	          j        ¦   «         | _        t          |j        |j	        ¦  «        D ]/\  }}| j         
                    t          |||¬¦  «        ¦  «         Œ0t          |¦  «        }| j        dk    r�t	          j        ¦   «         | _        t          t          | j        ¦  «        ¦  «        D ]X}| j         
                    t	          j        t	          j        d|z  |¦  «        t	          j        ¦   «         ¦  «        ¦  «         ŒWd S d S )N)r   r   r   Úprojecté   )r"   r#   r   Úreadout_typer   Ú
ModuleListÚlayersÚzipÚpost_process_channelsÚreassemble_factorsÚappendr   r   Úreadout_projectsÚrangeÚlenÚ
SequentialÚLinearÚGELU)r*   r   r   r   r   Ú_r+   s         €r   r#   zCHMv2ReassembleStage.__init__E   s9  ø€ Ý‰Œ×ÒÑÔÐØˆŒØ"Ô/ˆÔå”m‘o”oˆŒÝ$'¨Ô(DÀfÔF_Ñ$`Ô$`ð 	ð 	Ñ ˆL˜&ØŒK×ÒÝ$Ø!Ø)Ø!ðñ ô ñô ð ð õ 0°Ñ7Ô7ˆØÔ 	Ò)Ð)Ý$&¤M¡O¤OˆDÔ!Ý�3˜tœ{Ñ+Ô+Ñ,Ô,ð pð p�ØÔ%×,Ò,­R¬]½2¼9ÀQÈÁ_ÐVaÑ;bÔ;bÕdfÔdkÑdmÔdmÑ-nÔ-nÑoÔoÐoÐoð *Ð)ðpð pr   NÚhidden_statesÚreturnc                 ó   — g }t          |¦  «        D �]ê\  }}t          |t          t          f¦  «        �r)t	          |¦  «        dk    �r|d         |d         }}|j        }| j        dk    r§|                     d¦  «                             dd¦  «        }| 	                    d¦  «         
                    |¦  «        }	 | j        |         t          j        ||	fd¦  «        ¦  «        }|                     ddd¦  «                             |¦  «        }n¿| j        dk    r@|                     d¦  «        | 	                    d¦  «        z   }|                     |¦  «        }ns|                     ¦   «         dk    r[|d d …dd …f         }|j        \  }
}}|                     |
|||¦  «        }|                     dddd¦  «                             ¦   «         } | j        |         |¦  «        }|                     |¦  «         �Œì|S )Nr9   r   r   r8   éÿÿÿÿÚaddr   )Ú	enumerateÚ
isinstanceÚtupleÚlistrC   Úshaper:   ÚflattenÚ	transposeÚ	unsqueezeÚ	expand_asrA   ÚtorchÚcatÚpermuteÚreshapeÚdimÚ
contiguousr<   r@   )r*   rH   Úpatch_heightÚpatch_widthÚoutÚ	layer_idxr.   Ú	cls_tokenÚfeature_shapeÚreadoutÚ
batch_sizerG   Únum_channelss                r   r/   zCHMv2ReassembleStage.forwardZ   sþ  € Øˆå'0°Ñ'?Ô'?ð 	%ñ 	%Ñ#ˆI�|Ý˜,­µ¨Ñ6Ô6ñ Q½3¸|Ñ;LÔ;LÐPQÒ;QÑ;QØ*6°q¬/¸<È¼?˜i�Ø ,Ô 2�àÔ$¨	Ò1Ð1Ø#/×#7Ò#7¸Ñ#:Ô#:×#DÒ#DÀQÈÑ#JÔ#J�LØ'×1Ò1°!Ñ4Ô4×>Ò>¸|ÑLÔL�GØ#C 4Ô#8¸Ô#CÅEÄIÈ|Ð]dÐNeÐgiÑDjÔDjÑ#kÔ#k�LØ#/×#7Ò#7¸¸1¸aÑ#@Ô#@×#HÒ#HÈÑ#WÔ#W�L�LØÔ&¨%Ò/Ð/Ø#/×#7Ò#7¸Ñ#:Ô#:¸Y×=PÒ=PÐQSÑ=TÔ=TÑ#T�LØ#/×#7Ò#7¸Ñ#FÔ#F�Løà×#Ò#Ñ%Ô%¨Ò*Ð*Ø#/°°°°1°2°2°Ô#6�LØ2>Ô2DÑ/�J  <Ø#/×#7Ò#7¸
ÀLÐR]Ð_kÑ#lÔ#l�LØ#/×#7Ò#7¸¸1¸aÀÑ#CÔ#C×#NÒ#NÑ#PÔ#P�Là1˜4œ; yÔ1°,Ñ?Ô?ˆLØ�JŠJ�|Ñ$Ô$Ð$Ñ$àˆ
r   ©NN)r0   r1   r2   Ú__doc__r   r#   rP   rV   ÚTensorr/   r3   r4   s   @r   r6   r6   ?   s�   ø€ € € € € ðð ð
p˜{ð pð pð pð pð pð pð*ð  T¨%¬,Ô%7ð ÐaeÐfkÔfrÔasð ð ð ð ð ð ð ð r   r6   c                   óF   ‡ — e Zd ZdZˆ fd„Zdej        dej        fd„Zˆ xZS )ÚCHMv2PreActResidualLayerz«
    ResidualConvUnit, pre-activate residual unit.

    Args:
        config (`[CHMv2Config]`):
            Model configuration class defining the model architecture.
    c                 óL  •— t          ¦   «                              ¦   «          t          j        ¦   «         | _        t          j        |j        |j        dddd¬¦  «        | _        t          j        ¦   «         | _        t          j        |j        |j        dddd¬¦  «        | _	        d S )Nr   r   T)r   r    r!   Úbias)
r"   r#   r   ÚReLUÚactivation1r$   Úfusion_hidden_sizeÚconvolution1Úactivation2Úconvolution2©r*   r   r+   s     €r   r#   z!CHMv2PreActResidualLayer.__init__€   sŸ   ø€ Ý‰Œ×ÒÑÔÐåœ7™9œ9ˆÔÝœIØÔ%ØÔ%ØØØØð
ñ 
ô 
ˆÔõ œ7™9œ9ˆÔÝœIØÔ%ØÔ%ØØØØð
ñ 
ô 
ˆÔÐÐr   r.   rI   c                 ó¸   — |}|                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }||z   S r-   )rm   ro   rp   rq   )r*   r.   Úresiduals      r   r/   z CHMv2PreActResidualLayer.forward—   s^   € ØˆØ×'Ò'¨Ñ5Ô5ˆØ×(Ò(¨Ñ6Ô6ˆØ×'Ò'¨Ñ5Ô5ˆØ×(Ò(¨Ñ6Ô6ˆà˜hÑ&Ð&r   )	r0   r1   r2   rf   r#   rV   rg   r/   r3   r4   s   @r   ri   ri   w   sh   ø€ € € € € ðð ð
ð 
ð 
ð 
ð 
ð.' E¤Lð '°U´\ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'r   ri   c                   ó2   ‡ — e Zd Zddedefˆ fd„Zdd„Zˆ xZS )	ÚCHMv2FeatureFusionLayerFr   Úis_first_layerc                 óø   •— t          ¦   «                              ¦   «          || _        t          j        |j        |j        dd¬¦  «        | _        |st          |¦  «        | _        t          |¦  «        | _	        d S )Nr   T)r   rk   )
r"   r#   rw   r   r$   rn   r%   ri   Úresidual_layer1Úresidual_layer2)r*   r   rw   r+   s      €r   r#   z CHMv2FeatureFusionLayer.__init__¢   sr   ø€ Ý‰Œ×ÒÑÔÐØ,ˆÔåœ) FÔ$=¸vÔ?XÐfgÐnrÐsÑsÔsˆŒàð 	DÝ#;¸FÑ#CÔ#CˆDÔ å7¸Ñ?Ô?ˆÔÐÐr   Nc                 ój  — |�`| j         sY|j        |j        k    r1|j        \  }}}}t          j                             |||fdd¬¦  «        }||                      |¦  «        z   }|                      |¦  «        }|€ddind|i}t          j        j        |fi |¤dddœ¤Ž}|                      |¦  «        }|S )	NÚbilinearF)ÚsizeÚmodeÚalign_cornersÚscale_factorr9   r}   T)r~   r   )rw   rQ   r   Ú
functionalÚinterpolatery   rz   r%   )r*   r.   rt   r}   rG   ÚheightÚwidthÚmodifiers           r   r/   zCHMv2FeatureFusionLayer.forward­   só   € ØÐ¨Ô(;ÐØÔ! X¤^Ò3Ð3Ø&2Ô&8Ñ#��1�f˜eÝœ=×4Ò4Ø F¨E ?¸ÐSXð 5ñ ô �ð (¨$×*>Ò*>¸xÑ*HÔ*HÑHˆLà×+Ò+¨LÑ9Ô9ˆà*.¨,�N AÐ&Ð&¸VÀT¸Nˆå”}Ô0Øð
ð 
àð
ð Øð	
ð 
ð 
ð 
ˆð —’ |Ñ4Ô4ˆàÐr   )Fre   )r0   r1   r2   r   Úboolr#   r/   r3   r4   s   @r   rv   rv   ¡   sm   ø€ € € € € ð	@ð 	@˜{ð 	@¸Dð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ðð ð ð ð ð ð ð r   rv   c                   ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚCHMv2UpsampleConvHeadzŒ
    Convolutional head with intermediate upsampling.

    Architecture: Conv3x3 -> 2x bilinear upsample -> Conv3x3 -> ReLU -> Conv1x1.
    é€   c                 óf  •— t          ¦   «                              ¦   «          t          j        t          j        ||dz  ddd¬¦  «        t          j        ddd¬¦  «        t          j        |dz  |ddd¬¦  «        t          j        ¦   «         t          j        ||ddd¬¦  «        g¦  «        | _        d S )	Nr9   r   r   r   r|   T)r€   r~   r   r   )r"   r#   r   r;   r$   ÚUpsamplerl   Úhead)r*   ÚfeaturesÚnumber_output_channelsÚn_hidden_channelsr+   s       €r   r#   zCHMv2UpsampleConvHead.__init__Í   s«   ø€ Ý‰Œ×ÒÑÔÐÝ”Må”	˜( H°¡M¸qÈÐTUÐVÑVÔVÝ”¨°È4ÐPÑPÔPÝ”	˜( a™-Ð):ÈÐRSÐ]^Ð_Ñ_Ô_Ý”‘	”	Ý”	Ð+Ð-CÐQRÐ[\ÐfgÐhÑhÔhðñ
ô 
ˆŒ	ˆ	ˆ	r   c                 ó0   — | j         D ]} ||¦  «        }Œ|S r-   )rŒ   )r*   rH   Úlayers      r   r/   zCHMv2UpsampleConvHead.forwardÙ   s*   € Ø”Yð 	1ð 	1ˆEØ!˜E -Ñ0Ô0ˆMˆMØÐr   )r‰   )r0   r1   r2   rf   r#   r/   r3   r4   s   @r   rˆ   rˆ   Æ   sV   ø€ € € € € ðð ð

ð 

ð 

ð 

ð 

ð 

ðð ð ð ð ð ð r   rˆ   c                   ó˜   ‡ — e Zd ZdZdefˆ fd„Zdeej                 de	de	dej        fd„Z
deej                 de	de	dej        fd	„Zˆ xZS )
Ú	CHMv2HeadzŒ
    CHMv2 dense-prediction head adapted from DPT.

    Integrates reassemble, projection convs, feature fusion, and UpConv depth head.
    r   c           
      óL  •— t          ¦   «                              ¦   «          || _        t          |¦  «        | _        t          j        ¦   «         | _        |j        D ]8}| j         	                    t          j
        ||j        ddd¬¦  «        ¦  «         Œ9t          j        ¦   «         | _        t          t          |j        ¦  «        ¦  «        D ]/}| j         	                    t          ||dk    ¬¦  «        ¦  «         Œ0t!          |j        |j        |j        ¬¦  «        | _        d S )Nr   r   F)r   r!   rk   r   )rw   )r�   rŽ   r�   )r"   r#   r   r6   Úreassemble_stager   r;   Úconvsr>   r@   r$   rn   Úfusion_layersrB   rC   rv   rˆ   rŽ   Úhead_hidden_sizeÚ
conv_depth)r*   r   ÚchannelÚidxr+   s       €r   r#   zCHMv2Head.__init__æ   s  ø€ Ý‰Œ×ÒÑÔÐØˆŒå 4°VÑ <Ô <ˆÔå”]‘_”_ˆŒ
ØÔ3ð 	sð 	sˆGØŒJ×Ò�bœi¨°Ô1JÐXYÐcdÐkpÐqÑqÔqÑrÔrÐrÐråœ]™_œ_ˆÔÝ�˜VÔ9Ñ:Ô:Ñ;Ô;ð 	bð 	bˆCØÔ×%Ò%Õ&=¸fÐVYÐ]^ÒV^Ð&`Ñ&`Ô&`ÑaÔaÐaÐaå/ØÔ.Ø#)Ô#@Ø$Ô5ð
ñ 
ô 
ˆŒˆˆr   rH   r\   r]   rI   c                 óP  ‡ — ‰                       |||¦  «        }ˆ fd„t          |¦  «        D ¦   «         }|                     ¦   «           ‰ j        d         |d         ¦  «        }t	          dt          ‰ j        ¦  «        ¦  «        D ]} ‰ j        |         |||         ¦  «        }Œ |S )Nc                 óB   •— g | ]\  }} ‰j         |         |¦  «        ‘ŒS © )r–   )Ú.0ÚiÚfeaturer*   s      €r   ú
<listcomp>z.CHMv2Head.forward_features.<locals>.<listcomp>ý   s-   ø€ ÐVÐVÐV©z¨q°'�M�D”J˜q”M 'Ñ*Ô*ÐVÐVÐVr   r   r   )r•   rM   Úreverser—   rB   rC   )r*   rH   r\   r]   r�   Úfused_hidden_stater    s   `      r   Úforward_featureszCHMv2Head.forward_featuresú   s¸   ø€ Ø×-Ò-¨m¸\È;ÑWÔWˆàVÐVÐVÐV½YÀ}Ñ=UÔ=UÐVÑVÔVˆØ×ÒÑÔÐà2˜TÔ/°Ô2°8¸A´;Ñ?Ô?ÐÝ�q�#˜dÔ0Ñ1Ô1Ñ2Ô2ð 	Xð 	XˆAØ!6 Ô!3°AÔ!6Ð7IÈ8ÐTUÌ;Ñ!WÔ!WÐÐà!Ð!r   c                 ó^   — |                       |||¦  «        }|                      |¦  «        }|S r-   )r¥   r™   )r*   rH   r\   r]   r^   s        r   r/   zCHMv2Head.forward  s/   € Ø×#Ò# M°<ÀÑMÔMˆØ�oŠo˜cÑ"Ô"ˆØˆ
r   )r0   r1   r2   rf   r   r#   rP   rV   rg   r)   r¥   r/   r3   r4   s   @r   r“   r“   ß   sÇ   ø€ € € € € ðð ð
˜{ð 
ð 
ð 
ð 
ð 
ð 
ð(
"¨d°5´<Ô.@ð 
"ÐPSð 
"Ðbeð 
"ÐjoÔjvð 
"ð 
"ð 
"ð 
"ð T¨%¬,Ô%7ð Àsð ÐY\ð ÐafÔamð ð ð ð ð ð ð ð r   r“   c                   ó¦   ‡ — e Zd ZdZdefˆ fd„Zdedej        dej	        fd„Z
dej	        d	ej	        dej	        fd
„Zdej	        dej	        fd„Zˆ xZS )ÚCHMv2FeaturesToDepthzJConverts raw logits from the CHMv2 head into a depth map using depth bins.r   c                 óÒ   •— t          ¦   «                              ¦   «          |j        | _        |j        | _        |j        | _        |j        | _        d| _        d| _        d| _        d S )Ng-Cëâ6?g:Œ0âŽyE>gê-�™—q=)	r"   r#   Ú	min_depthÚ	max_depthÚbins_strategyÚnorm_strategyÚ_mixlog_max_clamp_valueÚ_mixlog_eps_shiftÚ_mixlog_epsrr   s     €r   r#   zCHMv2FeaturesToDepth.__init__  sa   ø€ Ý‰Œ×ÒÑÔÐØÔ)ˆŒØÔ)ˆŒØ#Ô1ˆÔØ#Ô1ˆÔØ'+ˆÔ$Ø!%ˆÔØ ˆÔÐÐr   Ún_binsÚdevicerI   c                 ó–  — | j         dz  }t          j        | j        |||¬¦  «        }t          j        t          j        t          j        t          j        | j        |¬¦  «        ¦  «        t          j        t          j        ||¬¦  «        ¦  «        ||¬¦  «        ¦  «        }t          j        dd||¬¦  «        }||z  d|z
  |z  z   }|S )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«   rV   Úlinspacerª   ÚexpÚlogÚtensor)r*   r±   r²   Úscaled_max_depthÚlinearrº   Úinterp_weightÚbinss           r   Ú_create_mixlog_binsz(CHMv2FeaturesToDepth._create_mixlog_bins  sË   € ð  œ>¨CÑ/ÐÝ” ¤Ð0@À&ÐQWÐXÑXÔXˆÝŒiÝŒNÝ”	�%œ, t¤~¸fÐEÑEÔEÑFÔFÝ”	�%œ,Ð'7ÀÐGÑGÔGÑHÔHØØð	ñ ô ñ
ô 
ˆõ œ s¨C°ÀÐGÑGÔGˆØ˜sÑ" c¨MÑ&9¸VÑ%CÑCˆØˆr   Úinputr¿   c                 ó8  — t          j        |¦  «        }|                     dd¬¦  «        }|                      d¦  «                             | j        ¦  «        | j        z   }||z   }|                     dd¬¦  «        }t          j        |ddd¬¦  «                             | j	        ¦  «        }||z  }| 
                    dddd¦  «                             | j	        ¦  «        }	||	z                       dd¬¦  «                             | j	        ¦  «        }
|
dz  }
|
S )	zEConverts depth bin logits to depth values using mixlog normalization.r   T©rZ   Úkeepdimr·   r¶   )ÚnanÚposinfÚneginfrK   r´   )rV   ÚreluÚaminÚ	clamp_minÚ	clamp_maxr®   r¯   ÚsumÚ
nan_to_numr°   Úview)r*   rÁ   r¿   ÚlogitsÚmin_per_sampleÚshiftÚ
logits_posÚdenomÚweightsÚbins_broadcastÚoutputs              r   Ú _create_outputs_with_mixlog_normz5CHMv2FeaturesToDepth._create_outputs_with_mixlog_norm.  s  € å”˜EÑ"Ô"ˆàŸš¨°D˜Ñ9Ô9ˆØ �×+Ò+¨CÑ0Ô0×:Ò:¸4Ô;WÑXÔXÐ[_Ô[qÑqˆØ˜e‘^ˆ
à—’ 1¨d�Ñ3Ô3ˆÝÔ  ¨C¸ÀCÐHÑHÔH×RÒRÐSWÔScÑdÔdˆØ˜uÑ$ˆàŸš 1 b¨!¨QÑ/Ô/×9Ò9¸$Ô:JÑKÔKˆØ˜NÑ*×/Ò/°A¸tÐ/ÑDÔD×NÒNÈtÔO_Ñ`Ô`ˆà˜#‘ˆàˆr   Úxc                 óÚ  — |j         d         }|dk    �rº| j        dk    r(t          j        | j        | j        ||j        ¬¦  «        }nª| j        dk    r„t          j        t          j        t          j        | j        ¦  «        ¦  «        t          j        t          j        | j        ¦  «        ¦  «        ||j        ¬¦  «        }t          j	        |¦  «        }n|  
                    ||j        ¦  «        }| j        dv r½| j        dk    r6t          j        |¦  «        }d}||z   }||                     dd¬¦  «        z  }nP| j        d	k    rt          j        |d¬
¦  «        }n.t          j        |¦  «        }||                     dd¬¦  «        z  }t          j        d||g¦  «                             d¬
¦  «        }n3|                      ||¦  «        }nt          j        |¦  «        | j        z   }|S )Nr   r½   rµ   rº   )r½   ÚsoftmaxÚsigmoidgš™™™™™¹?TrÃ   rÚ   ©rZ   zikmn,k->imn)rQ   r¬   rV   r¸   rª   r«   r²   rº   r»   r¹   rÀ   r­   rÈ   rÌ   rÚ   rÛ   ÚeinsumrT   r×   )r*   rØ   r±   r¿   ÚlogitÚepsrÖ   s          r   r/   zCHMv2FeaturesToDepth.forwardA  sÆ  € Ø”˜”ˆà�AŠ:‰:ØÔ! XÒ-Ð-Ý”~ d¤n°d´nÀfÐUVÔU]Ð^Ñ^Ô^��ØÔ# uÒ,Ð,Ý”~Ý”I�eœl¨4¬>Ñ:Ô:Ñ;Ô;Ý”I�eœl¨4¬>Ñ:Ô:Ñ;Ô;ØØœ8ð	ñ ô �õ ”y ‘”��à×/Ò/°¸¼ÑAÔA�àÔ!Ð%EÐEÐEØÔ%¨Ò1Ð1Ý!œJ q™MœM�EØ�CØ! C™K�EØ! E§I¢I°!¸T IÑ$BÔ$BÑB�E�EØÔ'¨9Ò4Ð4Ý!œM¨!°Ð3Ñ3Ô3�E�Eå!œM¨!Ñ,Ô,�EØ! E§I¢I°!¸T IÑ$BÔ$BÑB�EÝœ m°e¸T°]ÑCÔC×MÒMÐRSÐMÑTÔT��à×>Ò>¸qÀ$ÑGÔG��å”Z ‘]”] T¤^Ñ3ˆFàˆr   )r0   r1   r2   rf   r   r#   r)   rV   r²   rg   rÀ   r×   r/   r3   r4   s   @r   r¨   r¨     sÎ   ø€ € € € € ØTÐTð!˜{ð !ð !ð !ð !ð !ð !ð¨#ð °u´|ð ÈÌð ð ð ð ð*°e´lð È%Ì,ð Ð[`Ô[gð ð ð ð ð&"˜œð "¨%¬,ð "ð "ð "ð "ð "ð "ð "ð "r   r¨   c                   óL   ‡ — e Zd ZU eed<   dZdZdZdZdZ	dZ
dZdZd	ˆ fd„Zˆ xZS )
ÚCHMv2PreTrainedModelr   Úchmv2Úpixel_values)ÚimageTrI   Nc                 ó@  •— t          ¦   «                              |¦  «         t          |t          j        t          j        t          j        f¦  «        rHt          j        |j	        d| j
        j        ¬¦  «         |j        �t          j        |j        ¦  «         d S d S d S )Nr·   )ÚmeanÚstd)r"   Ú_init_weightsrN   r   rE   r$   r&   ÚinitÚtrunc_normal_Úweightr   Úinitializer_rangerk   Úzeros_)r*   Úmoduler+   s     €r   rè   z"CHMv2PreTrainedModel._init_weightsr  sŠ   ø€ Ý‰Œ×Ò˜fÑ%Ô%Ð%Ý�f�rœy­"¬)µRÔ5GÐHÑIÔIð 	)ÝÔ˜vœ}°3¸D¼KÔ<YÐZÑZÔZÐZØŒ{Ð&Ý”˜FœKÑ(Ô(Ð(Ð(Ð(ð	)ð 	)à&Ð&r   )rI   N)r0   r1   r2   r   Ú__annotations__Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚsupports_gradient_checkpointingÚ_supports_sdpaÚ_supports_flash_attnÚ_supports_flex_attnÚ_supports_attention_backendrè   r3   r4   s   @r   rá   rá   f  sy   ø€ € € € € € àÐÐÑØÐØ$€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                   óŒ   ‡ — e Zd Zdefˆ fd„Zd„ Zee	 d
dej	        dej
        dz  dee         defd	„¦   «         ¦   «         Zˆ xZS )ÚCHMv2ForDepthEstimationr   c                 óê   •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          |¦  «        | _        t          |¦  «        | _        |                      ¦   «          d S r-   )	r"   r#   r   Úbackboner“   rŒ   r¨   Úfeatures_to_depthÚ	post_initrr   s     €r   r#   z CHMv2ForDepthEstimation.__init__�  s_   ø€ Ý‰Œ×Ò˜Ñ Ô Ð å% fÑ-Ô-ˆŒÝ˜fÑ%Ô%ˆŒ	Ý!5°fÑ!=Ô!=ˆÔà�ŠÑÔÐÐÐr   c                 ó4   — | j                              ¦   «         S r-   )rü   Úget_input_embeddings)r*   s    r   r   z,CHMv2ForDepthEstimation.get_input_embeddingsŠ  s   € ØŒ}×1Ò1Ñ3Ô3Ð3r   Nrã   ÚlabelsÚkwargsrI   c                 ó”  — d}|�t          d¦  «        ‚|j        \  }}}}| j        j        }||z  }	||z  }
 | j        |fi |¤Ž}t          t          |j        |j        ¦  «        ¦  «        }|  	                    ||	|
¦  «        }|  
                    |¦  «        }|                     d¬¦  «        }t          |||j        |j        ¬¦  «        S )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   rÜ   )ÚlossÚpredicted_depthrH   Ú
attentions)ÚNotImplementedErrorrQ   r   Ú
patch_sizerü   rP   r=   Úfeature_mapsÚ
cls_tokensrŒ   rý   Úsqueezer   rH   r  )r*   rã   r  r  r  rG   rƒ   r„   r  r\   r]   Úbackbone_outputÚintermediate_featuresÚhead_outputr  s                  r   r/   zCHMv2ForDepthEstimation.forward�  sì   € ð ˆØÐÝ%Ð&GÑHÔHÐHà*Ô0Ñˆˆ1ˆf�eØ”[Ô+ˆ
Ø Ñ+ˆØ˜zÑ)ˆà'˜$œ-¨Ð?Ð?¸Ð?Ð?ˆÝ $¥S¨Ô)EÀÔGaÑ%bÔ%bÑ cÔ cÐà—i’iÐ 5°|À[ÑQÔQˆà×0Ò0°Ñ=Ô=ˆØ)×1Ò1°aÐ1Ñ8Ô8ˆå#ØØ+Ø)Ô7Ø&Ô1ð	
ñ 
ô 
ð 	
r   r-   )r0   r1   r2   r   r#   r   r   r   rV   ÚFloatTensorÚ
LongTensorr	   r
   r   r/   r3   r4   s   @r   rú   rú   z  s¿   ø€ € € € € ð˜{ð ð ð ð ð ð ð4ð 4ð 4ð Øð +/ð 
ð  
àÔ'ð 
ð Ô  4Ñ'ð 
ð Ð+Ô,ð	 
ð
 
ð 
ð  
ð  
ñ „^ñ Ôð 
ð  
ð  
ð  
ð  
r   rú   )rV   r   Ú r   ré   Úbackbone_utilsr   Úmodeling_outputsr   Úmodeling_utilsr   Úprocessing_utilsr	   Úutilsr
   r   r   Úconfiguration_chmv2r   r   ÚModuler   r6   ri   rv   rˆ   r“   r¨   rá   rú   Ú__all__rž   r   r   ú<module>r     s”  ðð, €€€Ø Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ø +Ð +Ð +Ð +Ð +Ð +Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø -Ð -Ð -Ð -Ð -Ð -Ø &Ð &Ð &Ð &Ð &Ð &Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ ,Ð ,Ð ,Ð ,Ð ,Ð ,ð"ð "ð "ðð ð ð ð ˜2œ9ñ ô ð ð,5ð 5ð 5ð 5ð 5˜2œ9ñ 5ô 5ð 5ðp''ð ''ð ''ð ''ð ''˜rœyñ ''ô ''ð ''ðT"ð "ð "ð "ð "˜bœiñ "ô "ð "ðJð ð ð ð ˜BœIñ ô ð ð2*ð *ð *ð *ð *�”	ñ *ô *ð *ðZWð Wð Wð Wð W˜2œ9ñ Wô Wð Wðt ð)ð )ð )ð )ð )˜?ñ )ô )ñ „ð)ð& €ððñ ô ð/
ð /
ð /
ð /
ð /
Ð2ñ /
ô /
ñô ð/
ðd %Ð&<Ð
=€€€r   