+
    œ°³jMW  ã                   ó  € R t ^ RIt^ RIHt ^ RIt^ RIHu Ht ^ RI	H
t
 ^ RIHt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IHt ^RIH t H!t!H"t"H#t# ^RI$H%t%H&t& ^RI'H(t( ^RI)H*t* ]PV                  ! ],4      t-]! RR7      ]
 ! R R]*4      4       4       t.]! RR7      ] ! R R]4      4       4       t/ ! R R]&4      t0 ! R R]#4      t1 ! R R] 4      t2 ! R R ](4      t3 ! R! R"]"4      t4 ! R# R$]!4      t5 ! R% R&]Pl                  4      t7 ! R' R(]Pp                  4      t9 ! R) R*]Pp                  4      t: ! R+ R,]Pp                  4      t;] ! R- R.]4      4       t<]! R/R7       ! R0 R1]%4      4       t=. R2Ot>R# )3zPyTorch EoMT model.N)Ú	dataclass)Ústrict)ÚTensorÚnn)Úinitialization)ÚACT2FN)ÚModelOutput)ÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚlogging)Úmerge_with_config_defaults)Úcapture_outputs)ÚDinov2EmbeddingsÚDinov2LayerÚDinov2LayerScaleÚDinov2PatchEmbeddings)Ú#Mask2FormerForUniversalSegmentationÚMask2FormerLoss)ÚSiglipAttention)Ú	ViTConfigz$tue-mps/coco_panoptic_eomt_large_640)Ú
checkpointc                   óö   a € ] tR t^4t o RtRtRt^t^t^t	Rt
RtRtRtRt^t^tR	tRt^tRtR
t^tRtRtRtRtRtRtRt^Èt^t] ! 4       t!] ! 4       t"] ! 4       t#] ! 4       t$] ! 4       t%] ! 4       t&R t'V 3R lt(Rt)V t*R# )Ú
EomtConfiga~  
layerscale_value (`float`, *optional*, defaults to 1.0):
    Initial value for the LayerScale parameter.
num_upscale_blocks (`int`, *optional*, defaults to 2):
    Number of upsampling blocks used in the decoder or segmentation head.
use_swiglu_ffn (`bool`, *optional*, defaults to `False`):
    Whether to use the SwiGLU feedforward neural network.
num_blocks (`int`, *optional*, defaults to 4):
    Number of feature blocks or stages in the architecture.
no_object_weight (`float`, *optional*, defaults to 0.1):
    Loss weight for the 'no object' class in panoptic/instance segmentation.
class_weight (`float`, *optional*, defaults to 2.0):
    Loss weight for classification targets.
mask_weight (`float`, *optional*, defaults to 5.0):
    Loss weight for mask prediction.
train_num_points (`int`, *optional*, defaults to 12544):
    Number of points to sample for mask loss computation during training.
oversample_ratio (`float`, *optional*, defaults to 3.0):
    Oversampling ratio used in point sampling for mask training.
importance_sample_ratio (`float`, *optional*, defaults to 0.75):
    Ratio of points to sample based on importance during training.
num_queries (`int`, *optional*, defaults to 200):
    Number of object queries in the Transformer.
num_register_tokens (`int`, *optional*, defaults to 4):
    Number of learnable register tokens added to the transformer input.

Example:

```python
>>> from transformers import EomtConfig, EomtForUniversalSegmentation

>>> # Initialize configuration
>>> config = EomtConfig()

>>> # Initialize model
>>> model = EomtForUniversalSegmentation(config)

>>> # Access config
>>> config = model.config
```Úeomti   Úgeluç        g{®Gáz”?ç�íµ ÷Æ°>i€  g      ð?Fgš™™™™™¹?g       @g      @i 1  g      @g      è?c                ó   € \        R 4      h)zNot needed for Eomt©ÚAttributeError)ÚselfÚkwargss   &,Úf/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/eomt/modular_eomt.pyÚ__post_init__ÚEomtConfig.__post_init__„   s   € ÜÐ2Ó3Ð3ó    c                ó  <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[;R&   S[S[ ,          ;R&   S[;R&   S[;R&   S[ S[S[ ,          ,          S[S[ S[ 3,          ,          ;R	&   S[ S[S[ ,          ,          S[S[ S[ 3,          ,          ;R
&   S[ ;R&   S[;R&   S[S[ ,          ;R&   S[ ;R&   S[S[ ,          ;R&   S[;R&   S[ ;R&   S[;R&   S[;R&   S[;R&   S[;R&   S[ ;R&   S[;R&   S[;R&   S[ ;R&   S[ ;R&   # )é   Úhidden_sizeÚnum_hidden_layersÚnum_attention_headsÚ	mlp_ratioÚ
hidden_actÚhidden_dropout_probÚinitializer_rangeÚlayer_norm_epsÚ
image_sizeÚ
patch_sizeÚnum_channelsÚlayerscale_valueÚdrop_path_rateÚnum_upscale_blocksÚattention_dropoutÚuse_swiglu_ffnÚ
num_blocksÚno_object_weightÚclass_weightÚmask_weightÚdice_weightÚtrain_num_pointsÚoversample_ratioÚimportance_sample_ratioÚnum_queriesÚnum_register_tokens)ÚintÚstrÚfloatÚlistÚtupleÚbool)ÚformatÚ__classdict__s   "€r$   Ú__annotate__ÚEomtConfig.__annotate__4   sÁ  ø‡ ‚ ñ\ Ññ] ñ^ Ññ_ ñ` Ñ!ña ñb Ññc ñd Ññe ñf ¡�Ñ*ñg ñh Ñ#ñi ñj Ñ ñk ñl ‘d™3•i•¡%©©S¨¥/Õ1Ñ7ñm ñn ‘d™3•i•¡%©©S¨¥/Õ1Ñ6ño ñp Ññq ñr Ñ!ñs ñt ™C•KÑ%ñu ñv Ññw ñx ™s•{Ñ(ñy ñz Ñ ñ{ ñ| Ññ} ñ~ Ñ!ñ ñ@ ÑñA ñB ÑñC ñD ÑñE ñF Ñ!ñG ñH Ñ!ñI ñJ #Ñ)ñK ñL ÑñM ñN Ñ òO r'   © N)+Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú
model_typer*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   r!   Úintermediate_sizeÚqkv_biasÚ
pooler_actÚpooler_output_sizeÚencoder_strideÚattention_probs_dropout_probr%   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©rK   s   @r$   r   r   4   sà   ø‡ € ñ'ðR €Jà€KØÐØ!ÐØ€IØ€JØ'*ÐØ#ÐØ €NØ47€JØ46€JØ€LØ!ÐØ"%€NØÐØ%(ÐØ €NØ€JØ!ÐØ€LØ€KØ€KØ!ÐØ!ÐØ%)ÐØ€KØ Ðá&Ó(ÐÙÓ€HÙÓ!€JÙ'Ó)ÐÙ#Ó%€NÙ#1Ó#3Ð ò4÷a ƒ r'   r   a˜  
    Class for outputs of [`EomtForUniversalSegmentationOutput`].

    This output can be directly passed to [`~EomtImageProcessor.post_process_semantic_segmentation`] or
    [`~EomtImageProcessor.post_process_instance_segmentation`] or
    [`~EomtImageProcessor.post_process_panoptic_segmentation`] to compute final segmentation maps. Please, see
    [`~EomtImageProcessor] for details regarding usage.
    )Úcustom_introc                   óL   a € ] tR t^ˆt o RtRtRtRtRtRt	Rt
RtV 3R ltRtV tR# )Ú"EomtForUniversalSegmentationOutputaÞ  
loss (`torch.Tensor`, *optional*):
    The computed loss, returned when labels are present.
class_queries_logits (`torch.FloatTensor`):
    A tensor of shape `(batch_size, num_queries, num_labels + 1)` representing the proposed classes for each
    query. Note the `+ 1` is needed because we incorporate the null class.
masks_queries_logits (`torch.FloatTensor`):
    A tensor of shape `(batch_size, num_queries, height, width)` representing the proposed masks for each
    query.
last_hidden_state (`torch.FloatTensor` of shape `(batch_size, num_channels, height, width)`):
    Last hidden states (final feature map) of the last layer.
hidden_states (`tuple(torch.FloatTensor)`, *optional*, returned when `output_hidden_states=True` is passed or when `config.output_hidden_states=True`):
    Tuple of `torch.FloatTensor` (one for the output of the embeddings + one for the output of each stage) of
    shape `(batch_size, sequence_length, hidden_size)`. Hidden-states all layers of the model.
attentions (`tuple(tuple(torch.FloatTensor))`, *optional*, returned when `output_attentions=True` is passed or when `config.output_attentions=True`):
    Tuple of `tuple(torch.FloatTensor)` (one for each layer) of shape `(batch_size, num_heads, sequence_length,
    sequence_length)`. Self and Cross Attentions weights from transformer decoder.
patch_offsets (`list[torch.Tensor]`, *optional*):
    list of tuples indicating the image index and start and end positions of patches for semantic segmentation.
Nc                óŒ  <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   # )	r)   NÚlossÚclass_queries_logitsÚmasks_queries_logitsÚlast_hidden_stateÚhidden_statesÚ
attentionsÚpatch_offsets)ÚtorchÚFloatTensorrH   rG   r   )rJ   rK   s   "€r$   rL   Ú/EomtForUniversalSegmentationOutput.__annotate__ˆ   sÈ   ø‡ ‚ ñB ×
Ñ
˜dÕ
"Ñ)ñC ñD  ×+Ñ+¨dÕ2Ñ9ñE ñF  ×+Ñ+¨dÕ2Ñ9ñG ñH ×(Ñ(¨4Õ/Ñ6ñI ñJ ™×*Ñ*Õ+¨dÕ2Ñ9ñK ñL ‘e×'Ñ'Õ(¨4Õ/Ñ6ñM ñN ™Ÿ™Õ%¨Õ,Ñ3òO r'   rN   )rO   rP   rQ   rR   rS   rc   rd   re   rf   rg   rh   ri   r[   r\   r]   r^   s   @r$   ra   ra   ˆ   s:   ø‡ € ñð* &*€DØ59ÐØ59ÐØ26ÐØ59€MØ26€JØ/3€M÷O ƒ r'   ra   c                   ó   € ] tR t^²tRtR# )ÚEomtLossrN   N©rO   rP   rQ   rR   r\   rN   r'   r$   rn   rn   ²   ó   † Ûr'   rn   c                   ó   € ] tR t^¶tRtR# )ÚEomtPatchEmbeddingsrN   Nro   rN   r'   r$   rr   rr   ¶   rp   r'   rr   c                   óJ   a € ] tR t^ºt o V 3R lR ltR tV 3R lR ltRtV tR# )ÚEomtEmbeddingsc                ó$   <€ V ^8„  d   QhRS[ RR/# )r)   ÚconfigÚreturnN©r   )rJ   rK   s   "€r$   rL   ÚEomtEmbeddings.__annotate__»   s   ø€ ÷ cñ c™zð c¨dñ cr'   c                ó  € \         P                  P                  V 4       Wn        VP                  V n        \         P
                  ! \        P                  ! ^^VP                  4      4      V n	        \         P
                  ! \        P                  ! ^VP                  VP                  4      4      V n        \        V4      V n        V P                  P                  p\         P                   ! VP"                  4      V n        ^VP                  ,           V n        \         P(                  ! W!P                  4      V n        \         P,                  ! \        P.                  ! V4      P1                  R4      RR7      V n        R# )é   F)Ú
persistentN©r{   éÿÿÿÿ)r   ÚModuleÚ__init__rv   r3   Ú	Parameterrj   Úrandnr*   Ú	cls_tokenÚzerosrC   Úregister_tokensrr   Úpatch_embeddingsÚnum_patchesÚDropoutr/   ÚdropoutÚnum_prefix_tokensÚ	EmbeddingÚposition_embeddingsÚBufferÚarangeÚexpandÚposition_ids)r"   rv   r‡   s   && r$   r€   ÚEomtEmbeddings.__init__»   sú   € Ü
�	‰	×Ñ˜4Ô àŒØ ×+Ñ+ˆŒäŸš¤e§k¢k°!°Q¸×8JÑ8JÓ&KÓLˆŒÜ!Ÿ|š|¬E¯KªK¸¸6×;UÑ;UÐW]×WiÑWiÓ,jÓkˆÔä 3°FÓ ;ˆÔØ×+Ñ+×7Ñ7ˆÜ—z’z &×"<Ñ"<Ó=ˆŒØ!" V×%?Ñ%?Õ!?ˆÔÜ#%§<¢<°×=OÑ=OÓ#PˆÔ ÜŸIšI¤e§l¢l°;Ó&?×&FÑ&FÀwÓ&OÐ\aÔbˆÖr'   c                ó   € \        R 4      h)zNot needed for Eomt Modelr    ©r"   s   &r$   Úinterpolate_pos_encodingÚ'EomtEmbeddings.interpolate_pos_encodingË   s   € ÜÐ8Ó9Ð9r'   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r)   Úpixel_valuesrw   ©rj   r   )rJ   rK   s   "€r$   rL   ry   Î   s#   ø€ ÷ ñ ¡E§L¡Lð ±U·\±\ñ r'   c                óÊ  € VP                   w  p  pV P                  P                  P                  P                  pV P                  VP                  VR 7      4      pV P                  P                  VRR4      pV P                  P                  VRR4      pWPP                  V P                  4      ,           p\        P                  ! WgV.^R7      pV P                  V4      pV# ))Údtype©Údimr~   )Úshaper†   Ú
projectionÚweightrš   Útorƒ   r�   r…   rŒ   r�   rj   Úcatr‰   )r"   r—   Ú
batch_sizeÚ_Útarget_dtypeÚ
embeddingsÚ
cls_tokensr…   s   &&      r$   ÚforwardÚEomtEmbeddings.forwardÎ   sÂ   € Ø*×0Ñ0Ñˆ
�A�q˜!Ø×,Ñ,×7Ñ7×>Ñ>×DÑDˆØ×*Ñ*¨<¯?©?À¨?Ó+NÓOˆ
à—^‘^×*Ñ*¨:°r¸2Ó>ˆ
Ø×.Ñ.×5Ñ5°jÀ"ÀbÓIˆà×":Ñ":¸4×;LÑ;LÓ"MÕMˆ
Ü—Y’Y 
¸ZÐHÈaÔPˆ
à—\‘\ *Ó-ˆ
àÐr'   )	rƒ   rv   r‰   rŠ   r†   r3   rŒ   r�   r…   N)	rO   rP   rQ   rR   r€   r”   r§   r\   r]   r^   s   @r$   rt   rt   º   s    ø‡ € ÷cð cò :÷ö r'   rt   c                   ó   € ] tR t^ÞtRtR# )ÚEomtAttentionrN   Nro   rN   r'   r$   rª   rª   Þ   rp   r'   rª   c                   ó   € ] tR t^âtRtR# )ÚEomtLayerScalerN   Nro   rN   r'   r$   r¬   r¬   â   rp   r'   r¬   c                   ó6   a € ] tR t^æt o RV 3R lR lltRtV tR# )Ú	EomtLayerNc                óv   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  /# )r)   rg   Úattention_maskNrw   r˜   )rJ   rK   s   "€r$   rL   ÚEomtLayer.__annotate__ç   s:   ø€ ÷ ñ á—|‘|ðñ Ÿ™ tÕ+ðñ 
�‰ñ	r'   c                ó6  € V P                  V4      pV P                  W24      w  rEV P                  V4      pV P                  V4      V,           pV P	                  V4      pV P                  V4      pV P                  V4      pV P                  V4      V,           pV# ©N)Únorm1Ú	attentionÚlayer_scale1Ú	drop_pathÚnorm2ÚmlpÚlayer_scale2)r"   rg   r°   Úhidden_states_normÚself_attention_outputr£   Úlayer_outputs   &&&    r$   r§   ÚEomtLayer.forwardç   s—   € ð
 "ŸZ™Z¨Ó6ÐØ#'§>¡>Ð2DÓ#UÑ ÐØ $× 1Ñ 1Ð2GÓ HÐð Ÿ™Ð'<Ó=ÀÕMˆð —z‘z -Ó0ˆØ—x‘x Ó-ˆØ×(Ñ(¨Ó6ˆð —~‘~ lÓ3°mÕCˆàÐr'   rN   r³   )rO   rP   rQ   rR   r§   r\   r]   r^   s   @r$   r®   r®   æ   s   ø‡ € ÷÷ ð r'   r®   c                   óH   a a€ ] tR t^þt oRV 3R lltV3R lR ltRtVtV ;t# )ÚEomtLayerNorm2dc                ó*   <€ \         SV `  WVR 7       R# ))ÚepsÚelementwise_affineN)Úsuperr€   )r"   r4   rÂ   ÚaffineÚ	__class__s   &&&&€r$   r€   ÚEomtLayerNorm2d.__init__ÿ   s   ø€ Ü‰Ñ˜À6ÐÖJr'   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r)   Úhidden_staterw   r˜   )rJ   rK   s   "€r$   rL   ÚEomtLayerNorm2d.__annotate__  s#   ø€ ÷ ñ ¡E§L¡Lð ±U·\±\ñ r'   c                óØ   € VP                  ^ ^^^4      p\        P                  ! WP                  V P                  V P
                  V P                  4      pVP                  ^ ^^^4      pV# )é    )ÚpermuteÚFÚ
layer_normÚnormalized_shaperŸ   ÚbiasrÂ   )r"   rÉ   s   &&r$   r§   ÚEomtLayerNorm2d.forward  s`   € Ø#×+Ñ+¨A¨q°!°QÓ7ˆÜ—|’| L×2GÑ2GÈÏÉÐVZ×V_ÑV_Ðae×aiÑaiÓjˆØ#×+Ñ+¨A¨q°!°QÓ7ˆØÐr'   rN   )r   T©	rO   rP   rQ   rR   r€   r§   r\   r]   Ú__classcell__©rÆ   rK   s   @@r$   rÀ   rÀ   þ   s   ù‡ € ÷K÷÷ ð 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# )ÚEomtScaleLayeri	  c                ó    <€ V ^8„  d   QhRS[ /# ©r)   rv   rx   )rJ   rK   s   "€r$   rL   ÚEomtScaleLayer.__annotate__
  s   ø€ ÷ 8ñ 8™zñ 8r'   c           	     ó  <€ \         SV `  4        VP                  p\        P                  ! W"^^R7      V n        \        VP                  ,          V n        \        P                  ! VV^^VRR7      V n
        \        V4      V n        R# )r)   )Úkernel_sizeÚstrideF)rÜ   ÚpaddingÚgroupsrÑ   N)rÄ   r€   r*   r   ÚConvTranspose2dÚconv1r   r.   Ú
activationÚConv2dÚconv2rÀ   Úlayernorm2d©r"   rv   r*   rÆ   s   && €r$   r€   ÚEomtScaleLayer.__init__
  ss   ø€ Ü‰ÑÔØ×(Ñ(ˆÜ×'Ò'¨ÈaÐXYÔZˆŒ
Ü  ×!2Ñ!2Õ3ˆŒÜ—Y’YØØØØØØô
ˆŒ
ô +¨;Ó7ˆÖr'   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r)   rg   rw   r˜   )rJ   rK   s   "€r$   rL   rÚ     s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r'   c                óŽ   € V P                  V4      pV P                  V4      pV P                  V4      pV P                  V4      pV# r³   )rá   râ   rä   rå   ©r"   rg   s   &&r$   r§   ÚEomtScaleLayer.forward  sB   € ØŸ
™
 =Ó1ˆØŸ™¨Ó6ˆØŸ
™
 =Ó1ˆØ×(Ñ(¨Ó7ˆØÐr'   )râ   rá   rä   rå   rÓ   rÕ   s   @@r$   r×   r×   	  s   ù‡ € ÷8ó 8÷ ÷ ð 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# )ÚEomtScaleBlocki"  c                ó    <€ V ^8„  d   QhRS[ /# rÙ   rx   )rJ   rK   s   "€r$   rL   ÚEomtScaleBlock.__annotate__#  s   ø€ ÷ ]ñ ]™zñ ]r'   c                óÞ   <€ \         SV `  4        VP                  V 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³   )	rÄ   r€   r7   r:   r   Ú
ModuleListÚranger×   Úblock)r"   rv   r£   rÆ   s   && €r$   r€   ÚEomtScaleBlock.__init__#  sM   ø€ Ü‰ÑÔØ ×3Ñ3ˆŒÜ—]’]ÄEÈ$Ï/É/ÔDZÓ#[ÑDZ¸q¤N°6Ö$:ÑDZÑ#[Ó\ˆŽ
ùÒ#[s   ÁA*c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ré   r˜   )rJ   rK   s   "€r$   rL   rð   (  s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r'   c                ó<   € V P                    F  pV! V4      pK  	  V# r³   )rô   )r"   rg   rô   s   && r$   r§   ÚEomtScaleBlock.forward(  s    € Ø—Z”ZˆEÙ! -Ó0ŠMñ  àÐr'   )rô   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# )ÚEomtMaskHeadi.  c                ó    <€ V ^8„  d   QhRS[ /# rÙ   rx   )rJ   rK   s   "€r$   rL   ÚEomtMaskHead.__annotate__/  s   ø€ ÷ 4ñ 4™zñ 4r'   c                ó  <€ \         SV `  4        VP                  p\        P                  ! W"4      V n        \        P                  ! W"4      V n        \        P                  ! W"4      V n        \        VP                  ,          V n
        R # r³   )rÄ   r€   r*   r   ÚLinearÚfc1Úfc2Úfc3r   r.   râ   ræ   s   && €r$   r€   ÚEomtMaskHead.__init__/  s[   ø€ Ü‰ÑÔà×(Ñ(ˆÜ—9’9˜[Ó6ˆŒÜ—9’9˜[Ó6ˆŒÜ—9’9˜[Ó6ˆŒÜ  ×!2Ñ!2Õ3ˆŽr'   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ré   r˜   )rJ   rK   s   "€r$   rL   rü   8  s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r'   c                ó¨   € V P                  V P                  V4      4      pV P                  V P                  V4      4      pV P                  V4      pV# r³   ©râ   rÿ   r   r  rë   s   &&r$   r§   ÚEomtMaskHead.forward8  sD   € ØŸ™¨¯©°Ó(?Ó@ˆØŸ™¨¯©°Ó(?Ó@ˆØŸ™ Ó/ˆØÐr'   r  rÓ   rÕ   s   @@r$   rú   rú   .  s   ù‡ € ÷4ó 4÷÷ ð 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]R	]/t]P                  ! 4       V3R
 lV 3R ll4       tV3R ltRtVtV ;t# )ÚEomtPreTrainedModeli?  zz
An abstract class to handle weights initialization and a simple interface for downloading and loading pretrained
models.
r   r—   Fr®   Trg   rh   c                ó8   <€ V ^8„  d   QhRS[ P                  RR/# )r)   Úmodulerw   N)r   r   )rJ   rK   s   "€r$   rL   Ú EomtPreTrainedModel.__annotate__S  s   ø€ ÷ /ñ /¡B§I¡Ið /°$ñ /r'   c                ó*  <€ \         SV `  V4       V P                  P                  p\	        V\
        P                  \
        P                  \
        P                  34      '       dÇ   \        P                  ! VP                  \        P                  ! ^4      R7       VP                  e�   \        P
                  P                  P!                  VP                  4      w  r4V^ 8”  d   ^\        P                  ! V4      ,          M^ p\        P"                  ! VP                  V) V4       R# R# \	        V\
        P$                  4      '       d†   \        P&                  ! VP                  R^R7       VP(                  eS   \+        VP                  RR4      '       g4   \        P,                  ! VP                  VP(                  ,          4       R# R# R# \	        V\.        4      '       dL   \1        VR4      '       d8   \        P2                  ! VP4                  V P                  P6                  4       R# R# \	        V\8        4      '       d¥   \        P:                  ! VP<                  RVR7       \        P,                  ! VP>                  4       \        P@                  ! VPB                  \        PD                  ! VPB                  PF                  R,          4      PI                  R	4      4       R# \	        V\J        4      '       dZ   \        PL                  ! VPN                  ^,           4      pVPP                  VR&   \        P@                  ! VPR                  V4       R# \	        V\T        4      '       d#   \        PV                  ! VPX                  4       R# R# )
é   )ÚaNr   )ÚmeanÚstdÚ_is_hf_initializedFÚlambda1r~   r}   )-rÄ   Ú_init_weightsrv   r0   Ú
isinstancer   rþ   rã   rà   ÚinitÚkaiming_uniform_rŸ   ÚmathÚsqrtrÑ   rj   Ú_calculate_fan_in_and_fan_outÚuniform_r‹   Únormal_Úpadding_idxÚgetattrÚzeros_r¬   ÚhasattrÚ	constant_r  r5   rt   Útrunc_normal_rƒ   r…   Úcopy_r�   rŽ   r�   r�   rn   ÚonesÚ
num_labelsÚeos_coefÚempty_weightÚEomtForUniversalSegmentationÚones_Úattn_mask_probs)r"   r
  r  Úfan_inr£   Úboundr&  rÆ   s   &&     €r$   r  Ú!EomtPreTrainedModel._init_weightsR  s@  ø€ ä‰Ñ˜fÔ%Ø�k‰k×+Ñ+ˆÜ�fœrŸy™y¬"¯)©)´R×5GÑ5GÐH×IÒIÜ×!Ò! &§-¡-´4·9²9¸Q³<Õ@Ø�{‰{Ò&Ü!ŸH™HŸM™M×GÑGÈÏÉÓV‘	�Ø17¸!´˜œDŸIšI fÓ-Ö-À�Ü—’˜fŸk™k¨E¨6°5Ö9ñ 'ô ˜¤§¡×-Ò-Ü�LŠL˜Ÿ™¨S°aÕ8à×!Ñ!Ò-´g¸f¿m¹mÐMaÐch×6iÒ6iÜ—’˜FŸM™M¨&×*<Ñ*<Õ=Ö>ñ 7jÑ-ä˜¤×/Ò/Ü�v˜y×)Ò)Ü—’˜vŸ~™~¨t¯{©{×/KÑ/KÖLñ *ä˜¤×/Ò/Ü×Ò˜v×/Ñ/°c¸sÕCÜ�KŠK˜×.Ñ.Ô/Ü�JŠJ�v×*Ñ*¬E¯LªL¸×9LÑ9L×9RÑ9RÐSUÕ9VÓ,W×,^Ñ,^Ð_fÓ,gÖhÜ˜¤×)Ò)Ü Ÿ:š: f×&7Ñ&7¸!Õ&;Ó<ˆLØ%Ÿ™ˆL˜ÑÜ�JŠJ�v×*Ñ*¨LÖ9Ü˜Ô <×=Ò=Ü�JŠJ�v×-Ñ-Ö.ñ >r'   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # rÙ   rx   )rJ   rK   s   "€r$   rL   r  ?  s   ø‡ ‚ ñ Ñò r'   rN   )Úimage)rO   rP   rQ   rR   rS   Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_supports_sdpar®   rª   Ú_can_record_outputsrj   Úno_gradr  r[   r\   r]   rÔ   rÕ   s   @@r$   r  r  ?  sh   ù‡ € ñð ÐØ$€OØ!ÐØ&+Ð#Ø$˜ÐØ€Nà˜Ø�mðÐð
 ‡]‚]ƒ_÷/ò /ó ð/÷) … r'   r  zV
    The EoMT Model with head on top for instance/semantic/panoptic segmentation.
    c                   ó”   a € ] tR tRt o V 3R lR ltR tR tV 3R lR lt]R 4       t	]
]]RV 3R
 lR ll4       4       4       tRtV tR	# )r'  ip  c                ó    <€ V ^8„  d   QhRS[ /# rÙ   rx   )rJ   rK   s   "€r$   rL   Ú)EomtForUniversalSegmentation.__annotate__v  s   ø€ ÷ ñ ™zñ r'   c                ó$  € \         P                  ! W4       Wn        VP                  V n        \	        V4      V n        \        P                  ! VP                  VP                  R 7      V n
        \        P                  ! VP                  VP                  4      V n        \        P                  ! \        VP                  4       Uu. uF  p\!        V4      NK  	  up4      V n        \%        V4      V n        \)        V4      V n        \        P,                  ! VP                  VP.                  ^,           4      V n        VP2                  VP4                  ,          VP2                  VP4                  ,          3V n        RVP8                  RVP:                  RVP<                  /V n        \A        WP>                  R7      V n!        \        PD                  ! \F        PH                  ! VPJ                  4      4      V n&        V PO                  4        R# u upi ))rÂ   Úloss_cross_entropyÚ	loss_maskÚ	loss_dice)rv   Úweight_dictN)(r	   r€   rv   r+   rt   r¥   r   Ú	LayerNormr*   r1   Ú	layernormr‹   rB   Úqueryrò   ró   r®   Úlayersrî   Úupscale_blockrú   Ú	mask_headrþ   r$  Úclass_predictorr2   r3   Ú	grid_sizer<   r=   r>   r>  rn   Ú	criterionr�   rj   r#  r:   r)  Ú	post_init)r"   rv   r£   s   && r$   r€   Ú%EomtForUniversalSegmentation.__init__v  sx  € Ü× Ò  Ô.ØŒØ!'×!9Ñ!9ˆÔÜ(¨Ó0ˆŒÜŸš f×&8Ñ&8¸f×>SÑ>SÔTˆŒä—\’\ &×"4Ñ"4°f×6HÑ6HÓIˆŒ
Ü—m’mÄÀf×F^ÑF^Ô@_Ó$`Ñ@_¸1¤Y¨vÖ%6Ñ@_Ñ$`ÓaˆŒä+¨FÓ3ˆÔÜ% fÓ-ˆŒä!Ÿyšy¨×);Ñ);¸V×=NÑ=NÐQRÕ=RÓSˆÔà ×+Ñ+¨v×/@Ñ/@Õ@À&×BSÑBSÐW]×WhÑWhÕBhÐiˆŒà  &×"5Ñ"5Ø˜×+Ñ+Ø˜×+Ñ+ð.
ˆÔô "¨×=MÑ=MÔNˆŒä!Ÿyšy¬¯ª°F×4EÑ4EÓ)FÓGˆÔà�‰Öùò% %as   ÃHc                ó.   € V P                   P                  # r³   )r¥   r†   r“   s   &r$   Úget_input_embeddingsÚ1EomtForUniversalSegmentation.get_input_embeddings’  s   € Ø�‰×/Ñ/Ð/r'   c                ó   € \        R 4      h)zNote needed for Eomt Model.r    r“   s   &r$   Úget_auxiliary_logitsÚ1EomtForUniversalSegmentation.get_auxiliary_logits•  s   € ÜÐ:Ó;Ð;r'   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r)   Úlogitsr˜   )rJ   rK   s   "€r$   rL   r9  ˜  s   ø€ ÷ )ñ )™eŸl™lñ )r'   c                óÞ  € VR RV P                   P                  1R 3,          pV P                  V4      pVR V P                   P                  V P                  P                  ,           R1R 3,          pVP                  ^^4      pVP                  ! VP                  ^ ,          R.V P                  O5!  pV P                  V4      pV P                  V4      p\        P                  ! RW$4      pWS3# )ºNNNNzbqc, bchw -> bqhwr~   )rv   rB   rE  r¥   rŠ   Ú	transposeÚreshaper�   rF  rD  rC  rj   Úeinsum)r"   rQ  Úquery_tokensÚclass_logitsÚprefix_tokensÚmask_logitss   &&    r$   ÚpredictÚ$EomtForUniversalSegmentation.predict˜  sÑ   € Ø˜aÐ!: 4§;¡;×#:Ñ#:Ð!:¸AÐ=Õ>ˆØ×+Ñ+¨LÓ9ˆà˜q $§+¡+×"9Ñ"9¸D¿O¹O×<]Ñ<]Õ"]Ñ"_ÐabÐbÕcˆØ%×/Ñ/°°1Ó5ˆà%×-Ò-¨m×.AÑ.AÀ!Õ.DÀbÐZÈ4Ï>É>ÓZˆà—~‘~ lÓ3ˆØ×*Ñ*¨=Ó9ˆä—l’lÐ#6¸ÓTˆàÐ(Ð(r'   c                ó’   € V^8  d@   \         P                  ! V P                  ^ ,          W$R7      V8„  p^V RRV1VR13,          V&   V # )r{   )ÚdevicerS  N)rj   Úrandr�   )Ú	attn_maskÚprobÚnum_query_tokensÚencoder_start_tokensr^  Úrandom_queriess   &&&&& r$   Ú_disable_attention_maskÚ4EomtForUniversalSegmentation._disable_attention_mask¨  sT   € à�!Œ8ä"ŸZšZ¨	¯©¸Õ(:Ð<LÔ\Ð_cÑcˆNð VWˆI�aÐ*Ð*Ð*Ð,@Ñ,AÐAÕBÀ>ÑRàÐr'   Nc                ó¨   <€ V ^8„  d   QhRS[ RS[S[ ,          R,          RS[S[ ,          R,          RS[S[ ,          R,          RS[S[,          RS[/# )r)   r—   Úmask_labelsNÚclass_labelsri   r#   rw   )r   rG   r
   r   ra   )rJ   rK   s   "€r$   rL   r9  ¶  sp   ø€ ÷ e
ñ e
áðe
ñ ™&•\ DÕ(ðe
ñ ™6•l TÕ)ð	e
ñ
 ™F•| dÕ*ðe
ñ Ñ+Õ,ðe
ñ 
,ñe
r'   c           	     óº  € RRrvRpVf   \        R4      hV P                  V4      p	\        V P                  4       EF	  w  r«W P                  V P
                  P                  ,
          8X  dr   V P                  P                  R,          P                  V	P                  ^ ,          RR4      P                  V	P                  4      p\        P                  ! WÉ3^R7      p	W P                  V P
                  P                  ,
          8¼  Ed4   V P                  '       gE   V P                   W P                  ,
          V P
                  P                  ,           ,          ^ 8”  EdÞ   V P#                  V	4      pV P%                  V4      w  rïWn3,          pW3,          p\        P&                  ! V	P                  ^ ,          V	P                  ^,          V	P                  ^,          V	P                  \        P(                  R7      p\*        P,                  ! WàP.                  RR7      pVP1                  VP3                  ^ 4      VP3                  ^4      R4      pV P
                  P4                  pVV P                  P6                  ,           pV^ 8„  VRRV1VR13&   V P9                  VV P                   W P                  ,
          V P
                  P                  ,           ,          VVVP                  R7      pVR,          P                  RV P
                  P:                  RR4      pVP=                  4       P?                  V( R4      pV! W˜4      p	EK  	  V P#                  V	4      pV P%                  V4      w  rïWn3,          pW3,          pRpVeI   VeE   R	p\A        Wg4       F3  w  rïV PC                  VVVVRR
7      pVV PE                  V4      ,          pK5  	  \G        VVVVVR7      # )a'  
mask_labels (`list[torch.Tensor]`, *optional*):
    list of mask labels of shape `(num_labels, height, width)` to be fed to a model
class_labels (`list[torch.LongTensor]`, *optional*):
    list of target class labels of shape `(num_labels, height, width)` to be fed to a model. They identify the
    labels of `mask_labels`, e.g. the label of `mask_labels[i][j]` if `class_labels[i][j]`.
patch_offsets (`list[torch.Tensor]`, *optional*):
    list of tuples indicating the image index and start and end positions of patches for semantic segmentation.
Nz You have to specify pixel_valuesrS  r›   )r^  rš   Úbilinear)ÚsizeÚmode)ra  rb  rc  r^  r   )re   rd   rh  ri  Úauxiliary_predictions)rc   re   rd   rf   ri   rN   )NrS  rS  r~   )rS  N.g    eÍÍÁ)$Ú
ValueErrorr¥   Ú	enumeraterB  r+   rv   r:   rA  rŸ   r�   r�   r    r^  rj   r¡   Útrainingr)  r@  r[  r#  rI   rÎ   ÚinterpolaterF  Úviewrl  rB   rŠ   re  r,   rF   Úmasked_fillÚzipÚget_loss_dictÚget_lossra   )r"   r—   rh  ri  ri   r#   Úmasks_queries_logits_per_layerÚclass_queries_logits_per_layerr°   rg   ÚidxÚlayer_modulerA  Únorm_hidden_statesre   rd   Úinterpolated_logitsrb  rc  Úsequence_outputrc   Ú	loss_dicts   &&&&&,                r$   r§   Ú$EomtForUniversalSegmentation.forward³  sƒ  € ð* JLÈRÐ(FØˆàÒÜÐ?Ó@Ð@àŸ™¨Ó5ˆä!*¨4¯;©;×!7ÑˆCØ×,Ñ,¨t¯{©{×/EÑ/EÕEÔEØŸ
™
×)Ñ)¨*Õ5×<Ñ<¸]×=PÑ=PÐQRÕ=SÐUWÐY[Ó\×_Ñ_Ð`m×`tÑ`tÓu�Ü %§	¢	¨5Ð*@ÀaÔ H�à×,Ñ,¨t¯{©{×/EÑ/EÕEÕEØ——� ×!5Ñ!5°c×<RÑ<RÕ6RÐUY×U`ÑU`×UkÑUkÕ6kÕ!lÐopÕ!pà%)§^¡^°MÓ%BÐ"Ø=A¿\¹\ÐJ\Ó=]Ñ:Ð$à.Ð2IÕIÐ.Ø.Ð2IÕIÐ.ä!&§¢Ø!×'Ñ'¨Õ*Ø!×'Ñ'¨Õ*Ø!×'Ñ'¨Õ*Ø(×/Ñ/ÜŸ*™*ô"�ô '(§m¢mÐ4HÏ~É~ÐdnÔ&oÐ#Ø&9×&>Ñ&>Ø'×,Ñ,¨QÓ/Ð1D×1IÑ1IÈ!Ó1LÈbó'Ð#ð $(§;¡;×#:Ñ#:Ð Ø'7¸$¿/¹/×:[Ñ:[Õ'[Ð$ð ObÐdeÑNe�˜qÐ"3Ð#3Ð"3Ð5IÑ5JÐJÑKð "&×!=Ñ!=Ø"Ø×-Ñ-¨c×4JÑ4JÕ.JÈTÏ[É[×McÑMcÕ.cÕdØ%5Ø)=Ø)×0Ñ0ð ">ó "�ð "0°Õ!=×!DÑ!DÀRÈÏÉ×IhÑIhÐjlÐnpÓ!q�Ø!/×!5Ñ!5Ó!7×!CÑ!CÀ^ÀOÐUYÓ!Z�á(¨ÓG‹Mñ] "8ð` Ÿ.™.¨Ó7ˆà59·\±\À/Ó5RÑ2ÐØ&Ð*AÕAÐ&Ø&Ð*AÕAÐ&àˆØÒ" |Ò'?ØˆDÜ>AØ.ö?Ñ:Ð$ð !×.Ñ.Ø)=Ø)=Ø +Ø!-Ø*.ð /ó �	ð ˜Ÿ™ iÓ0Õ0’ñ?ô 2ØØ!5Ø!5Ø-Ø'ô
ð 	
r'   )r)  rE  rv   rG  r¥   rF  r@  rB  rD  r+   rA  rC  r>  )NNN)rO   rP   rQ   rR   r€   rK  rN  r[  Ústaticmethodre  r   r   r   r§   r\   r]   r^   s   @r$   r'  r'  p  sc   ø‡ € ÷ð ò80ò<÷)ð )ð  ñó ðð  ØØ÷e
ñ e
ó ó ó  öe
r'   r'  )r   r  r'  )?rS   r  Údataclassesr   rj   Útorch.nn.functionalr   Ú
functionalrÎ   Úhuggingface_hub.dataclassesr   r   Ú r   r  Úactivationsr   Ú
file_utilsr   Úmodeling_utilsr	   Úprocessing_utilsr
   Úutilsr   r   r   Úutils.genericr   Úutils.output_capturingr   Údinov2.modeling_dinov2r   r   r   r   Ú mask2former.modeling_mask2formerr   r   Úsiglip.modeling_siglipr   Úvit.configuration_vitr   Ú
get_loggerrO   Úloggerr   ra   rn   rr   rt   rª   r¬   r®   r?  rÀ   r   r×   rî   rú   r  r'  Ú__all__rN   r'   r$   Ú<module>r•     s£  ðñ ã Ý !ã ß Ð Ý .ß å &Ý !õõ .Ý &÷ñ õ
 8Ý 5÷ó ÷ dÝ 4Ý -ð 
×	Ò	˜HÓ	%€ñ ÐAÔBØôO4�ó O4ó ó CðO4ñd ðô	ð ô4¨ó 4ó ó	ð4ô>	ˆô 	ô	Ð/ô 	ô!Ð%ô !ôH	�Oô 	ô	Ð%ô 	ô�ô ô0�b—l‘lô ô�R—Y‘Yô ô2	�R—Y‘Yô 	ô�2—9‘9ô ð" ô-/˜/ó -/ó ð-/ñ` ðôô
f
Ð#Fó f
óð
f
òR P‚r'   