
    Z j$                     \   S r SSK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  SS
KJrJr  SSKJr  SSKJrJr  SSKJrJrJr  SSKJrJrJrJrJ r J!r!J"r"J#r#  \" SS9\ " S S\5      5       5       r$\" SS9\ " S S\5      5       5       r%\" SS9\ " S S\5      5       5       r&\" SS9\ " S S\5      5       5       r' " S S\5      r( " S S\"5      r) " S S\5      r* " S  S!\!5      r+ " S" S#\5      r,\ " S$ S%\ 5      5       r-\" S&S'9 " S( S)\#5      5       r. " S* S+\5      r// S,Qr0g)-zPyTorch SAM 2 model.    N)strict   )initialization)PreTrainedConfig)PreTrainedModel)Unpack)auto_docstring)TransformersKwargsmerge_with_config_defaults)capture_outputs   )CONFIG_MAPPING
AutoConfig)
Sam2ConfigSam2MaskDecoderConfigSam2PromptEncoderConfig)Sam2AttentionSam2FeedForwardSam2LayerNorm	Sam2ModelSam2PreTrainedModelSam2TwoWayAttentionBlockSam2VisionEncoderOutputSam2VisionModelzyonigozlan/EdgeTAM-hf)
checkpointc                     ^  \ rS rSr% SrSrSrS\0rSr	\
\-  S-  \S'   Sr\\   S-  \S'   Sr\S-  \S'   S	r\\S
'   Sr\\S'   Sr\\S'   Sr\\S'   Sr\\   S-  \S'   Sr\\S'   Sr\\S'   Sr\\S'   Sr\\S'   U 4S jrSrU =r$ )EdgeTamVisionConfig(   a  
backbone_channel_list (`List[int]`, *optional*, defaults to `[384, 192, 96, 48]`):
    The list of channel dimensions for the backbone.
backbone_feature_sizes (`List[List[int]]`, *optional*, defaults to `[[256, 256], [128, 128], [64, 64]]`):
    The spatial sizes of the feature maps from the backbone.
fpn_hidden_size (`int`, *optional*, defaults to 256):
    The hidden dimension of the FPN.
fpn_kernel_size (`int`, *optional*, defaults to 1):
    The kernel size for the convolutions in the neck.
fpn_stride (`int`, *optional*, defaults to 1):
    The stride for the convolutions in the neck.
fpn_padding (`int`, *optional*, defaults to 0):
    The padding for the convolutions in the neck.
fpn_top_down_levels (`List[int]`, *optional*, defaults to `[2, 3]`):
    The levels for the top-down FPN connections.
num_feature_levels (`int`, *optional*, defaults to 3):
    The number of feature levels from the FPN to use.
vision_configedgetam_vision_modelbackbone_configNbackbone_channel_listbackbone_feature_sizes   fpn_hidden_size   fpn_kernel_size
fpn_strider   fpn_paddingfpn_top_down_levelsr   num_feature_levelsgelu
hidden_actgư>layer_norm_epsg{Gz?initializer_rangec                 B  > U R                   c  / SQOU R                   U l         U R                  c  SS/SS/SS//OU R                  U l        U R                  c  SS/OU R                  U l        [        U R                  [
        5      (       aU  U R                  R                  SS5      U R                  S'   [        U R                  S      " S0 U R                  D6U l        O-U R                  c   [        R                  " S	SS
/ SQS.S9U l        [        TU ],  " S0 UD6  g )N)i     `   0   r$      @   r   r   
model_typetimm_wrapperztimm/repvit_m1.dist_in1kT)r   r&   r   r   )in_chansfeatures_onlyout_indices)
model_args )r"   r#   r*   
isinstancer!   dictgetr   r   from_pretrainedsuper__post_init__)selfkwargs	__class__s     |/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/transformers/models/edgetam/modular_edgetam.pyrB   !EdgeTamVisionConfig.__post_init__Q   s   "&"<"<"D$JdJd 	" 372M2M2Uc3Z#sb"X.[_[v[v 	# .2-E-E-MAq6SWSkSk d**D11151E1E1I1I,Xf1gD  .#1$2F2F|2T#U#mX\XlXl#mD !!)#-#=#=*()DQ]^$D  	''    )r"   r!   r#   r*   )__name__
__module____qualname____firstlineno____doc__base_config_keyr6   r   sub_configsr!   r>   r   __annotations__r"   listintr#   r%   r'   r(   r)   r*   r+   r-   strr.   floatr/   rB   __static_attributes____classcell__)rE   s   @rF   r   r   (   s    & &O'J:K 7;OT,,t3:.249t+2*.D4K.OSOSJK,0cT)0J NE #u#( (rH   r   c                       \ rS rSrSrg)EdgeTamPromptEncoderConfige   r<   NrI   rJ   rK   rL   rU   r<   rH   rF   rX   rX   e        	rH   rX   c                       \ rS rSrSrg)EdgeTamMaskDecoderConfigk   r<   NrZ   r<   rH   rF   r]   r]   k   r[   rH   r]   c                       \ rS rSrSrSrg)EdgeTamConfigq   a]  
prompt_encoder_config (Union[`dict`, `EdgeTamPromptEncoderConfig`], *optional*):
    Dictionary of configuration options used to initialize [`EdgeTamPromptEncoderConfig`].
mask_decoder_config (Union[`dict`, `EdgeTamMaskDecoderConfig`], *optional*):
    Dictionary of configuration options used to initialize [`EdgeTamMaskDecoderConfig`].

 Example:

 ```python
 >>> from transformers import (
 ...     EdgeTamVisionConfig,
 ...     EdgeTamPromptEncoderConfig,
 ...     EdgeTamMaskDecoderConfig,
 ...     EdgeTamModel,
 ... )

 >>> # Initializing a EdgeTamConfig with `"facebook/edgetam.1_hiera_tiny"` style configuration
 >>> configuration = EdgeTamConfig()

 >>> # Initializing a EdgeTamModel (with random weights) from the `"facebook/edgetam.1_hiera_tiny"` style configuration
 >>> model = EdgeTamModel(configuration)

 >>> # Accessing the model configuration
 >>> configuration = model.config

 >>> # We can also initialize a EdgeTamConfig from a EdgeTamVisionConfig, EdgeTamPromptEncoderConfig, and EdgeTamMaskDecoderConfig
 >>> # Initializing EDGETAM vision encoder, memory attention, and memory encoder configurations
 >>> vision_config = EdgeTamVisionConfig()
 >>> prompt_encoder_config = EdgeTamPromptEncoderConfig()
 >>> mask_decoder_config = EdgeTamMaskDecoderConfig()

 >>> config = EdgeTamConfig(vision_config, prompt_encoder_config, mask_decoder_config)
 ```
r<   N)rI   rJ   rK   rL   rM   rU   r<   rH   rF   r`   r`   q   s    !F 	rH   r`   c                       \ rS rSrSrg)EdgeTamLayerNorm   r<   NrZ   r<   rH   rF   rc   rc          rH   rc   c                       \ rS rSrSrg)EdgeTamVisionEncoderOutput   r<   NrZ   r<   rH   rF   rg   rg      re   rH   rg   c                       \ rS rSrSrg)EdgeTamAttention   r<   NrZ   r<   rH   rF   rj   rj      re   rH   rj   c                       \ rS rSrSrg)EdgeTamTwoWayAttentionBlock   r<   NrZ   r<   rH   rF   rm   rm      re   rH   rm   c                       \ rS rSrSrg)EdgeTamFeedForward   r<   NrZ   r<   rH   rF   rp   rp      re   rH   rp   c                   F    \ rS rSrSr\R                  " 5       S 5       rSrg)EdgeTamPreTrainedModel   Nc                 .   [         R                  " X5        [        U[        5      (       a/  UR                  b!  [
        R                  " UR                  5        g g [        US5      (       a*  [
        R                  " UR                  UR                  S9  g g )Npositional_embedding)std)r   _init_weightsr=   EdgeTamModelno_memory_embeddinginitzeros_hasattrnormal_rv   scale)rC   modules     rF   rx   $EdgeTamPreTrainedModel._init_weights   sk    %%d3fl++))5F667 6V344LL44&,,G 5rH   r<   )	rI   rJ   rK   rL   "_keys_to_ignore_on_load_unexpectedtorchno_gradrx   rU   r<   rH   rF   rs   rs      s"    )-&
]]_H HrH   rs   zN
    The vision model from EdgeTAM without any head or projection on top.
    )custom_introc            
       |    \ rS rSr\rSr0 rS r\	\
 S	S\R                  S-  S\\   S\\-  4S jj5       5       rSrg)
EdgeTamVisionModel   pixel_valuesc                     [        S5      eNz2Can't get input embeddings from timm wrapper modelNotImplementedErrorrC   s    rF   get_input_embeddings'EdgeTamVisionModel.get_input_embeddings       !"VWWrH   NrD   returnc           	      X   Uc  [        S5      eU R                  " U40 UD6nUR                  nU Vs/ s H  oUR                  SSSS5      PM     nnU R	                  U5      u  pgX`R
                  * S  S S S2   nXpR
                  * S  S S S2   n[        US   UUUR                  S9$ s  snf )Nz You have to specify pixel_valuesr   r   r   r&   )last_hidden_statefpn_hidden_statesfpn_position_encodinghidden_states)
ValueErrorbackboner   permuteneckr+   rg   r   )rC   r   rD   backbone_outputintermediate_hidden_stateshidden_stater   r   s           rF   forwardEdgeTamVisionModel.forward   s     ?@@ --??%4%F%F"[u%v[u<&:&:1aA&F[u"%v3799=W3X0-/F/F.F.HI$B$O 57N7N6N6P QRVTVRV W)8</"7)77	
 	
 &ws   B'r<   )N)rI   rJ   rK   rL   r   config_classmain_input_name_can_record_outputsr   r   r   r   FloatTensorr   r
   tuplerg   r   rU   r<   rH   rF   r   r      sp     'L$O X   26
''$.
 +,
 
+	+	
   
rH   r   c                   "    \ rS rSr/ SQrS rSrg)ry      )z
^memory_.*z^mask_downsample.*zspatial_perceiver.*z^object_pointer_proj.*z0^temporal_positional_encoding_projection_layer.*no_memory_positional_encodingno_object_pointer%occlusion_spatial_embedding_parameterc                     [        S5      er   r   r   s    rF   r   !EdgeTamModel.get_input_embeddings   r   rH   r<   N)rI   rJ   rK   rL   r   r   rU   r<   rH   rF   ry   ry      s    	*&XrH   ry   )ry   r   rs   r`   r   rX   r]   )1rM   r   huggingface_hub.dataclassesr    r   r{   configuration_utilsr   modeling_utilsr   processing_utilsr   utilsr	   utils.genericr
   r   utils.output_capturingr   autor   r   sam2.configuration_sam2r   r   r   sam2.modeling_sam2r   r   r   r   r   r   r   r   r   rX   r]   r`   rc   rg   rj   rm   rp   rs   r   ry   __all__r<   rH   rF   <module>r      s~     . & 3 - & # K 5 - ` `	 	 	 238(* 8(  48(v 23	!8 	  4	 23	4 	  4	 23$	J $	  4$	N	} 		!8 		} 		": 		 	 
H0 
H 
H 
#
 #

#
LX9 X rH   