
    Z jW                        S r SSKrSSKJr  SSKrSSKJs  Jr  SSK	J
r
  SSKJrJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJrJrJr  SSKJr  SSKJr  SSKJ r J!r!J"r"J#r#  SSK$J%r%J&r&  SSK'J(r(  SSK)J*r*  \RV                  " \,5      r-\" SS9\
 " S S\*5      5       5       r.\\" SS9 " S S\5      5       5       r/ " S S\&5      r0 " S S\#5      r1 " S  S!\ 5      r2 " S" S#\(5      r3 " S$ S%\"5      r4 " S& S'\!5      r5 " S( S)\Rl                  5      r7 " S* S+\Rp                  5      r9 " S, S-\Rp                  5      r: " S. S/\Rp                  5      r;\ " S0 S1\5      5       r<\" S2S9 " S3 S4\%5      5       r=/ S5Qr>g)6z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                   .   \ rS rSr% SrSrSr\\S'   Sr	\\S'   Sr
\\S	'   S
r\\S'   Sr\\S'   Sr\\-  \S'   Sr\\S'   Sr\\S'   Sr\\\   -  \\\4   -  \S'   Sr\\\   -  \\\4   -  \S'   Sr\\S'   Sr\\S'   Sr\\-  \S'   Sr\\S'   Sr\\-  \S'   Sr\\S '   S
r\\S!'   S"r\\S#'   S$r\\S%'   S&r \\S''   S&r!\\S('   S)r"\\S*'   S+r#\\S,'   S-r$\\S.'   S/r%\\S0'   S
r&\\S1'   \'" 5       r(\'" 5       r)\'" 5       r*\'" 5       r+\'" 5       r,\'" 5       r-S2 r.S3r/g4)5
EomtConfig4   a~  
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   hidden_size   num_hidden_layers   num_attention_heads   	mlp_ratiogelu
hidden_act        hidden_dropout_probg{Gz?initializer_rangeư>layer_norm_epsi  
image_size
patch_sizer   num_channelsg      ?layerscale_valuedrop_path_rater   num_upscale_blocksattention_dropoutFuse_swiglu_ffn
num_blocksg?no_object_weightg       @class_weightg      @mask_weightdice_weighti 1  train_num_pointsg      @oversample_ratiog      ?importance_sample_ratio   num_queriesnum_register_tokensc                     [        S5      e)NzNot needed for EomtAttributeError)selfkwargss     v/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/transformers/models/eomt/modular_eomt.py__post_init__EomtConfig.__post_init__   s    233     N)0__name__
__module____qualname____firstlineno____doc__
model_typer    int__annotations__r"   r$   r&   r(   strr*   floatr+   r-   r.   listtupler/   r0   r1   r2   r3   r4   r5   boolr6   r7   r8   r9   r:   r;   r<   r=   r?   r@   rC   intermediate_sizeqkv_bias
pooler_actpooler_output_sizeencoder_strideattention_probs_dropout_probrG   __static_attributes__rJ   rI   rF   r   r   4   s   'R JKs!!IsJ'**#u# NE 47Jd3i%S/1746Jd3i%S/16L#!e!"%NECK%%(us{( ND J!e!L%KK!c!!e!%)U)K  &(H!J')#%N#1#3 4rI   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                   D   \ rS rSr% SrSr\R                  S-  \S'   Sr	\R                  S-  \S'   Sr
\R                  S-  \S'   Sr\R                  S-  \S'   Sr\\R                     S-  \S'   Sr\\R                     S-  \S	'   Sr\\R"                     S-  \S
'   Srg)"EomtForUniversalSegmentationOutput   a  
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.
Nlossclass_queries_logitsmasks_queries_logitslast_hidden_statehidden_states
attentionspatch_offsetsrJ   )rK   rL   rM   rN   rO   rc   torchFloatTensorrR   rd   re   rf   rg   rV   rh   ri   rU   r   r^   rJ   rI   rF   ra   ra      s    * &*D%

d
")59%++d2959%++d2926u((4/659M5**+d2926Je''(4/6/3M4%,3rI   ra   c                       \ rS rSrSrg)EomtLoss   rJ   NrK   rL   rM   rN   r^   rJ   rI   rF   rm   rm          rI   rm   c                       \ rS rSrSrg)EomtPatchEmbeddings   rJ   Nro   rJ   rI   rF   rr   rr      rp   rI   rr   c                   f    \ rS rSrS\SS4S jrS rS\R                  S\R                  4S jr	S	r
g)
EomtEmbeddings   configreturnNc                    [         R                  R                  U 5        Xl        UR                  U l        [         R
                  " [        R                  " SSUR                  5      5      U l	        [         R
                  " [        R                  " SUR                  UR                  5      5      U l        [        U5      U l        U R                  R                  n[         R                   " UR"                  5      U l        SUR                  -   U l        [         R(                  " X!R                  5      U l        U R-                  S[        R.                  " U5      R1                  S5      SS9  g )N   position_idsrz   F)
persistent)r   Module__init__rw   r/   	Parameterrj   randnr    	cls_tokenzerosr@   register_tokensrr   patch_embeddingsnum_patchesDropoutr*   dropoutnum_prefix_tokens	Embeddingposition_embeddingsregister_bufferarangeexpand)rD   rw   r   s      rF   r   EomtEmbeddings.__init__   s    
		4  ++ekk!Q8J8J&KL!||EKK6;U;UW]WiWi,jk 3F ;++77zz&"<"<=!"V%?%?!?#%<<=O=O#P ^U\\+-F-M-Mg-VchirI   c                     [        S5      e)NzNot needed for Eomt ModelrB   rD   s    rF   interpolate_pos_encoding'EomtEmbeddings.interpolate_pos_encoding   s    899rI   pixel_valuesc                    UR                   u  n    nU R                  R                  R                  R                  nU R                  UR                  US95      nU R                  R                  USS5      nU R                  R                  USS5      nXPR                  U R                  5      -   n[        R                  " XgU/SS9nU R                  U5      nU$ )N)dtyper}   rz   dim)shaper   
projectionweightr   tor   r   r   r   r{   rj   catr   )rD   r   
batch_size_target_dtype
embeddings
cls_tokensr   s           rF   forwardEomtEmbeddings.forward   s    *00
Aq!,,77>>DD**<???+NO
^^**:r2>
..55j"bI":":4;L;L"MM
YY
ZHaP
\\*-
rI   )r   rw   r   r   r   r/   r   r   )rK   rL   rM   rN   r   r   r   rj   r   r   r^   rJ   rI   rF   ru   ru      s8    jz jd j :ELL U\\ rI   ru   c                       \ rS rSrSrg)EomtAttention   rJ   Nro   rJ   rI   rF   r   r      rp   rI   r   c                       \ rS rSrSrg)EomtLayerScale   rJ   Nro   rJ   rI   rF   r   r      rp   rI   r   c                   r    \ rS rSr SS\R
                  S\R
                  S-  S\R
                  4S jjrSrg)		EomtLayer   Nrg   attention_maskrx   c                 &   U R                  U5      nU R                  X25      u  pEU R                  U5      nU R                  U5      U-   nU R	                  U5      nU R                  U5      nU R                  U5      nU R                  U5      U-   nU$ N)norm1	attentionlayer_scale1	drop_pathnorm2mlplayer_scale2)rD   rg   r   hidden_states_normself_attention_outputr   layer_outputs          rF   r   EomtLayer.forward   s    
 "ZZ6#'>>2D#U  $ 1 12G H '<=M zz-0xx-((6 ~~l3mCrI   rJ   r   )rK   rL   rM   rN   rj   r   r   r^   rJ   rI   rF   r   r      s>     /3|| t+ 
	 rI   r   c                   f   ^  \ rS rSrSU 4S jjrS\R                  S\R                  4S jrSrU =r	$ )EomtLayerNorm2d   c                 "   > [         TU ]  XUS9  g )N)epselementwise_affine)superr   )rD   r0   r   affine	__class__s       rF   r   EomtLayerNorm2d.__init__   s    6JrI   hidden_staterx   c                     UR                  SSSS5      n[        R                  " XR                  U R                  U R
                  U R                  5      nUR                  SSSS5      nU$ )Nr   r   r   rz   )permuteF
layer_normnormalized_shaper   biasr   )rD   r   s     rF   r   EomtLayerNorm2d.forward  s`    #++Aq!Q7||L2G2GVZV_V_aeaiaij#++Aq!Q7rI   rJ   )r,   T)
rK   rL   rM   rN   r   rj   r   r   r^   __classcell__r   s   @rF   r   r      s)    KELL U\\  rI   r   c                   j   ^  \ rS rSrS\4U 4S jjrS\R                  S\R                  4S jrSr	U =r
$ )EomtScaleLayeri	  rw   c           	         > [         TU ]  5         UR                  n[        R                  " X"SSS9U l        [        UR                     U l        [        R                  " UUSSUSS9U l
        [        U5      U l        g )Nr   )kernel_sizestrider   rz   F)r   paddinggroupsr   )r   r   r    r   ConvTranspose2dconv1r	   r(   
activationConv2dconv2r   layernorm2drD   rw   r    r   s      rF   r   EomtScaleLayer.__init__
  ss    ((''aXYZ
 !2!23YY

 +;7rI   rg   rx   c                     U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU$ r   )r   r   r   r   rD   rg   s     rF   r   EomtScaleLayer.forward  sB    

=16

=1((7rI   )r   r   r   r   rK   rL   rM   rN   r   r   rj   r   r   r^   r   r   s   @rF   r   r   	  s/    8z 8 U\\ ell  rI   r   c                   j   ^  \ rS rSrS\4U 4S jjrS\R                  S\R                  4S jrSr	U =r
$ )EomtScaleBlocki"  rw   c                    > [         TU ]  5         UR                  U l        [        R
                  " [        U R                  5       Vs/ s H  n[        U5      PM     sn5      U l        g s  snf r   )	r   r   r3   r6   r   
ModuleListranger   block)rD   rw   r   r   s      rF   r   EomtScaleBlock.__init__#  sM     33]]E$//DZ#[DZqN6$:DZ#[\
#[s   A*rg   rx   c                 <    U R                    H  nU" U5      nM     U$ r   )r   )rD   rg   r   s      rF   r   EomtScaleBlock.forward(  s     ZZE!-0M  rI   )r   r6   r   r   s   @rF   r   r   "  s1    ]z ]
U\\ ell  rI   r   c                   j   ^  \ rS rSrS\4U 4S jjrS\R                  S\R                  4S jrSr	U =r
$ )EomtMaskHeadi.  rw   c                   > [         TU ]  5         UR                  n[        R                  " X"5      U l        [        R                  " X"5      U l        [        R                  " X"5      U l        [        UR                     U l
        g r   )r   r   r    r   Linearfc1fc2fc3r	   r(   r   r   s      rF   r   EomtMaskHead.__init__/  s[    ((99[699[699[6 !2!23rI   rg   rx   c                     U R                  U R                  U5      5      nU R                  U R                  U5      5      nU R                  U5      nU$ r   r   r   r   r   r   s     rF   r   EomtMaskHead.forward8  sD    (?@(?@/rI   r   r   r   s   @rF   r   r   .  s/    4z 4U\\ ell  rI   r   c                       \ rS rSr% Sr\\S'   SrSrSr	Sr
S/rS	r\\S
.r\R"                  " 5       S\R&                  SS4S j5       rSrg)EomtPreTrainedModeli?  zz
An abstract class to handle weights initialization and a simple interface for downloading and loading pretrained
models.
rw   r   r   )imageFr   T)rg   rh   modulerx   Nc                 l   U R                   R                  n[        U[        R                  [        R
                  [        R                  45      (       a  [        R                  " UR                  [        R                  " S5      S9  UR                  bz  [        R                  R                  R                  UR                  5      u  p4US:  a  S[        R                  " U5      -  OSn[        R                  " UR                  U* U5        g g [        U[        R                   5      (       aA  [        R"                  " UR                  5        [        R$                  " UR                  5        g [        U[        R&                  5      (       ay  [        R(                  " UR                  SSS9  UR*                  bK  [-        UR                  SS5      (       d.  [        R$                  " UR                  UR*                     5        g g g [        U[.        5      (       aH  [1        US	5      (       a6  [        R2                  " UR4                  U R                   R6                  5        g g [        U[8        5      (       a  [        R:                  " UR<                  SUS9  [        R$                  " UR>                  5        [        R@                  " URB                  [        RD                  " URB                  RF                  S
   5      RI                  S5      5        g [        U[J        5      (       aT  [        RL                  " URN                  S-   5      nURP                  US
'   [        R@                  " URR                  U5        g [        U[T        5      (       a!  [        R"                  " URV                  5        g g )N   )ar   rz   r)   )meanstd_is_hf_initializedFlambda1r}   r|   ),rw   r+   
isinstancer   r   r   r   initkaiming_uniform_r   mathsqrtr   rj   _calculate_fan_in_and_fan_outuniform_	LayerNormones_zeros_r   normal_padding_idxgetattrr   hasattr	constant_r  r1   ru   trunc_normal_r   r   copy_r{   r   r   r   rm   ones
num_labelseos_coefempty_weightEomtForUniversalSegmentationattn_mask_probs)rD   r   r   fan_inr   boundr  s          rF   _init_weights!EomtPreTrainedModel._init_weightsR  sc   kk++fryy"))R5G5GHII!!&--499Q<@{{&!HHMMGGV	17!DIIf--fkkE659 ' --JJv}}%KK$--LLSa8!!-gfmmMach6i6iFMM&*<*<=> 7j-//vy))v~~t{{/K/KL *//v//csCKK../JJv**ELL9L9L9R9RSU9V,W,^,^_f,gh)) ::f&7&7!&;<L%LJJv**L9 <==JJv--. >rI   rJ   )rK   rL   rM   rN   rO   r   rR   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^   rJ   rI   rF   r   r   ?  sm    
 $O!&+#$N"#
 ]]_/BII /$ / /rI   r   zV
    The EoMT Model with head on top for instance/semantic/panoptic segmentation.
    c                       \ rS rSrS\4S jrS rS rS\R                  4S jr
\S 5       r\\\   SS
\	S\\	   S	-  S\\	   S	-  S\\	   S	-  S\\   S\4S jj5       5       5       rSrg	)r  ir  rw   c                    [         R                  " X5        Xl        UR                  U l        [	        U5      U l        [        R                  " UR                  UR                  S9U l
        [        R                  " UR                  UR                  5      U l        [        R                  " [        UR                  5       Vs/ s H  n[!        U5      PM     sn5      U l        [%        U5      U l        [)        U5      U l        [        R,                  " UR                  UR.                  S-   5      U l        UR2                  UR4                  -  UR2                  UR4                  -  4U l        UR8                  UR:                  UR<                  S.U l        [A        XR>                  S9U l!        U RE                  S[F        RH                  " URJ                  5      5        U RM                  5         g s  snf )N)r   rz   )loss_cross_entropy	loss_mask	loss_dice)rw   weight_dictr  )'r   r   rw   r"   ru   r   r   r
  r    r-   	layernormr   r?   queryr   r   r   layersr   upscale_blockr   	mask_headr   r  class_predictorr.   r/   	grid_sizer8   r9   r:   r+  rm   	criterionr   rj   r  r6   	post_init)rD   rw   r   s      rF   r   %EomtForUniversalSegmentation.__init__x  sr     .!'!9!9(0f&8&8f>S>ST\\&"4"4f6H6HI
mmfF^F^@_$`@_1Yv%6@_$`a+F3%f-!yy););V=N=NQR=RS ++v/@/@@&BSBSW]WhWhBhi"("5"5++++.
 "=M=MN.

6;L;L0MN% %as   G0c                 .    U R                   R                  $ r   )r   r   r   s    rF   get_input_embeddings1EomtForUniversalSegmentation.get_input_embeddings  s    ///rI   c                     [        S5      e)NzNote needed for Eomt Model.rB   r   s    rF   get_auxiliary_logits1EomtForUniversalSegmentation.get_auxiliary_logits  s    :;;rI   logitsc                    US S 2S U R                   R                  2S S 24   nU R                  U5      nUS S 2U R                   R                  U R                  R                  -   S 2S S 24   nUR                  SS5      nUR                  " UR                  S   S/U R                  Q76 nU R                  U5      nU R                  U5      n[        R                  " SX$5      nXS4$ )Nrz   r   r   r}   zbqc, bchw -> bqhw)rw   r?   r1  r   r   	transposereshaper   r2  r0  r/  rj   einsum)rD   r<  query_tokensclass_logitsprefix_tokensmask_logitss         rF   predict$EomtForUniversalSegmentation.predict  s    a!:4;;#:#:!:A=>++L9q$++"9"9DOO<]<]"]"_abbc%//15%--m.A.A!.DbZ4>>Z~~l3**=9ll#6T((rI   c                 ~    US:  a6  [         R                  " U R                  S   X$S9U:  nSU S S 2S U2US 24   U'   U $ )Nrz   r   )device)rj   randr   )	attn_maskprobnum_query_tokensencoder_start_tokensrH  random_queriess         rF   _disable_attention_mask4EomtForUniversalSegmentation._disable_attention_mask  sT    !8"ZZ	(:<L\_ccN VWIa***,@,AAB>RrI   Nr   mask_labelsclass_labelsri   rE   rx   c           	         Su  pgSnUc  [        S5      eU R                  U5      n	[        U R                  5       GH  u  pXR                  U R
                  R                  -
  :X  am  U R                  R                  SSS2SS24   R                  U	R                  S   SS5      R                  U	R                  5      n[        R                  " X4SS9n	XR                  U R
                  R                  -
  :  Ga  U R                  (       d7  U R                   XR                  -
  U R
                  R                  -      S:  Ga  U R#                  U	5      nU R%                  U5      u  pXn4-  nX4-  n[        R&                  " U	R                  S   U	R                  S   U	R                  S   U	R                  [        R(                  S9n[*        R,                  " XR.                  S	S
9nUR1                  UR3                  S5      UR3                  S5      S5      nU R
                  R4                  nUU R                  R6                  -   nUS:  USS2SU2US24'   U R9                  UU R                   XR                  -
  U R
                  R                  -      UUUR                  S9nUSS2SS4   R                  SU R
                  R:                  SS5      nUR=                  5       R?                  U) S5      nU" X5      n	GM     U R#                  U	5      nU R%                  U5      u  pXn4-  nX4-  nSnUb@  Ub=  Sn[A        Xg5       H,  u  pU RC                  UUUUSS9nUU RE                  U5      -  nM.     [G        UUUUUS9$ )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.
)rJ   rJ   Nz You have to specify pixel_valuesr   r}   rz   r   )rH  r   bilinear)sizemode)rK  rL  rM  rH  .g    er)   )re   rd   rQ  rR  auxiliary_predictions)rc   re   rd   rf   ri   )$
ValueErrorr   	enumerater.  r"   rw   r6   r-  r   r   r   r   rH  rj   r   trainingr  r,  rE  r  rW   r   interpolater2  viewrU  r?   r   rO  r$   rT   masked_fillzipget_loss_dictget_lossra   )rD   r   rQ  rR  ri   rE   masks_queries_logits_per_layerclass_queries_logits_per_layerr   rg   idxlayer_moduler-  norm_hidden_statesre   rd   interpolated_logitsrL  rM  sequence_outputrc   	loss_dicts                         rF   r   $EomtForUniversalSegmentation.forward  s   * JPF&?@@5!*4;;!7C,,t{{/E/EEE

))$1*5<<]=P=PQR=SUWY[\__`m`t`tu %		5*@a H,,t{{/E/EEE!5!5c<R<R6RUYU`U`UkUk6k!lop!p%)^^M%B"=A\\J\=]:$.2II..2II.!&!''*!''*!''*(//**" '(mm4H~~dn&o#&9&>&>',,Q/1D1I1I!1Lb'# $(;;#:#: '7$//:[:['[$ ObdeNeq"3#3"35I5JJK "&!=!="--c4J4J.JT[[McMc.cd%5)=)00 "> " "04!=!D!DRIhIhjlnp!q!/!5!5!7!C!C^OUY!Z(GM] "8` ..759\\/5R2&*AA&&*AA&"|'?D>A.?:$ !..)=)= +!-*. / 	 i00? 2!5!5-'
 	
rI   )r1  rw   r3  r   r2  r,  r.  r0  r"   r-  r/  r+  )NNN)rK   rL   rM   rN   r   r   r7  r:  rj   r   rE  staticmethodrO  r   r   r   rU   r   r   ra   r   r^   rJ   rI   rF   r  r  r  s    z 80<)ell )      ,0,0-1e
e
 &\D(e
 6lT)	e

 F|d*e
 +,e
 
,e
    e
rI   r  )r   r   r  )?rO   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_loggerrK   loggerr   ra   rm   rr   ru   r   r   r   r
  r   r   r   r   r   r   r  __all__rJ   rI   rF   <module>r~     s     !    .  & ! . & 
 8 5  d 4 - 
		H	% ABO4 O4  CO4d 	4 4	 4>	 		/ 	!% !H	O 		% 	 0bll RYY 2	RYY 	299 " /// // //d 
f
#F f

f
R PrI   