Ë
    ÛÓ^j¼$  ã                   óz  — d Z 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 ddlmZ ddlmZmZ ddlmZmZmZ ddlmZmZmZmZm Z m!Z!m"Z"m#Z#  ed¬«      e G d„ de«      «       «       Z$ ed¬«      e G d„ de«      «       «       Z% ed¬«      e G d„ de«      «       «       Z& ed¬«      e G d„ de«      «       «       Z' G d„ de«      Z( G d„ de"«      Z) G d„ de«      Z* G d „ d!e!«      Z+ G d"„ d#e«      Z,e G d$„ d%e «      «       Z- ed&¬'«       G d(„ d)e#«      «       Z. G d*„ d+e«      Z/g d,¢Z0y)-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                   ó  ‡ — e Zd ZU dZdZdZdeiZdZe	e
z  dz  ed<   dZee   dz  ed<   dZedz  ed<   dZeed	<   d
Zeed<   d
Zeed<   dZeed<   dZee   dz  ed<   dZeed<   dZeed<   dZeed<   dZeed<   ˆ fd„Zˆ xZS )ÚEdgeTamVisionConfigaÞ  
    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{®Gáz”?Úinitializer_rangec                 ó0  •— | j                   €g d¢n| j                   | _         | j                  €ddgddgddggn| j                  | _        | j                  €ddgn| j                  | _        t        | j                  t
        «      rT| j                  j                  dd«      | j                  d<   t        | j                  d      di | j                  ¤Ž| _        n.| j                  €"t        j                  d	dd
g d¢dœ¬«      | _        t        ‰| �,  di |¤Ž y )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     €úv/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/edgetam/modular_edgetam.pyrA   z!EdgeTamVisionConfig.__post_init__Q   s  ø€ à"&×"<Ñ"<Ð"DÓÈ$×JdÑJdð 	Ô"ð 37×2MÑ2MÐ2Uˆc�3ˆZ˜#˜s˜ b¨" XÑ.Ð[_×[vÑ[vð 	Ô#ð .2×-EÑ-EÐ-M A q¡6ÐSW×SkÑSkˆÔ ä�d×*Ñ*¬DÔ1Ø15×1EÑ1E×1IÑ1IÈ,ÐXfÓ1gˆD× Ñ  Ñ.Ü#1°$×2FÑ2FÀ|Ñ2TÑ#UÑ#mÐX\×XlÑXlÑ#mˆDÕ Ø×!Ñ!Ð)Ü#-×#=Ñ#=Ø*Ø()¸DÒQ]Ñ^ô$ˆDÔ ô 	‰ÑÑ' Ó'ó    )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úbase_config_keyr5   r   Úsub_configsr    r=   r   Ú__annotations__r!   ÚlistÚintr"   r$   r&   r'   r(   r)   r*   r,   Ústrr-   Úfloatr.   rA   Ú__classcell__)rD   s   @rE   r   r   (   sÊ   ø… ñð& &€OØ'€Jà˜:ð€Kð 7;€O�TÐ,Ñ,¨tÑ3Ó:Ø.2Ð˜4 ™9 tÑ+Ó2Ø*.Ð˜D 4™KÓ.Ø€O�SÓØ€O�SÓØ€J�ÓØ€K�ÓØ,0Ð˜˜c™ TÑ)Ó0ØÐ˜ÓØ€J�ÓØ €N�EÓ Ø#Ð�uÓ#÷(ð (rF   r   c                   ó   — e Zd Zy)ÚEdgeTamPromptEncoderConfigN©rG   rH   rI   r;   rF   rE   rT   rT   e   ó   „ ð 	rF   rT   c                   ó   — e Zd Zy)ÚEdgeTamMaskDecoderConfigNrU   r;   rF   rE   rX   rX   k   rV   rF   rX   c                   ó   — e Zd ZdZy)ÚEdgeTamConfigaÅ  
    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)
     ```
    N)rG   rH   rI   rJ   r;   rF   rE   rZ   rZ   q   s   „ ñ!ðF 	rF   rZ   c                   ó   — e Zd Zy)ÚEdgeTamLayerNormNrU   r;   rF   rE   r\   r\   š   ó   „ ØrF   r\   c                   ó   — e Zd Zy)ÚEdgeTamVisionEncoderOutputNrU   r;   rF   rE   r_   r_   ž   r]   rF   r_   c                   ó   — e Zd Zy)ÚEdgeTamAttentionNrU   r;   rF   rE   ra   ra   ¢   r]   rF   ra   c                   ó   — e Zd Zy)ÚEdgeTamTwoWayAttentionBlockNrU   r;   rF   rE   rc   rc   ¦   r]   rF   rc   c                   ó   — e Zd Zy)ÚEdgeTamFeedForwardNrU   r;   rF   rE   re   re   ª   r]   rF   re   c                   ó>   — e Zd ZdZ ej
                  «       d„ «       Zy)ÚEdgeTamPreTrainedModelNc                 ó  — t        j                  | |«       t        |t        «      r-|j                  � t        j                  |j                  «       y y t        |d«      r,t        j                  |j                  |j                  ¬«       y y )NÚpositional_embedding)Ústd)r   Ú_init_weightsr<   ÚEdgeTamModelÚno_memory_embeddingÚinitÚzeros_ÚhasattrÚnormal_ri   Úscale)rB   Úmodules     rE   rk   z$EdgeTamPreTrainedModel._init_weights²   sg   € ä×%Ñ% d¨FÔ3Ü�fœlÔ+Ø×)Ñ)Ð5Ü—‘˜F×6Ñ6Õ7ð 6ä�VÐ3Ô4Ü�L‰L˜×4Ñ4¸&¿,¹,ÖGð 5rF   )rG   rH   rI   Ú"_keys_to_ignore_on_load_unexpectedÚtorchÚno_gradrk   r;   rF   rE   rg   rg   ®   s$   „ à)-Ð&à€U‡]�]ƒ_ñHó ñHrF   rg   zN
    The vision model from EdgeTAM without any head or projection on top.
    )Úcustom_introc            
       óp   — e Zd ZeZdZi Zd„ Zee		 dde
j                  dz  dee   deez  fd„«       «       Zy)ÚEdgeTamVisionModelÚpixel_valuesc                 ó   — t        d«      ‚©Nz2Can't get input embeddings from timm wrapper model©ÚNotImplementedError©rB   s    rE   Úget_input_embeddingsz'EdgeTamVisionModel.get_input_embeddingsÈ   ó   € Ü!Ð"VÓWÐWrF   NrC   Úreturnc           	      ó^  — |€t        d«      ‚ | j                  |fi |¤Ž}|j                  }|D �cg c]  }|j                  dddd«      ‘Œ }}| j	                  |«      \  }}|| j
                   d  d d d…   }|| j
                   d  d d d…   }t        |d   |||j                  ¬«      S c c}w )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*   r_   rˆ   )rB   rz   rC   Úbackbone_outputÚintermediate_hidden_statesÚhidden_stater†   r‡   s           rE   ÚforwardzEdgeTamVisionModel.forwardË   sá   € ð ÐÜÐ?Ó@Ð@ð (˜$Ÿ-™-¨Ñ?¸Ñ?ˆØ%4×%FÑ%FÐ"Ø[uÖ%vÈ< l×&:Ñ&:¸1¸aÀÀAÕ&FÐ%vÐ"Ð%và37·9±9Ð=WÓ3XÑ0ÐÐ0à-¨t×/FÑ/FÐ.FÐ.HÐIÉ$ÈBÈ$ÑOÐØ 5°t×7NÑ7NÐ6NÐ6PÐ QÑRVÐTVÐRVÑ WÐä)Ø8¸Ñ<Ø/Ø"7Ø)×7Ñ7ô	
ð 	
ùò &ws   ±B*)N)rG   rH   rI   r   Úconfig_classÚmain_input_nameÚ_can_record_outputsr€   r   r   ru   ÚFloatTensorr   r
   Útupler_   r�   r;   rF   rE   ry   ry   ¼   sp   „ ð '€LØ$€Oð ÐòXð  Øð 26ñ
à×'Ñ'¨$Ñ.ð
ð Ð+Ñ,ð
ð 
Ð+Ñ	+ò	
ó ó  ñ
rF   ry   c                   ó   — e Zd Zg d¢Zd„ Zy)rl   )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                 ó   — t        d«      ‚r|   r}   r   s    rE   r€   z!EdgeTamModel.get_input_embeddingsó   r�   rF   N)rG   rH   rI   rt   r€   r;   rF   rE   rl   rl   ç   s   „ ò	*Ð&óXrF   rl   )rl   ry   rg   rZ   r   rT   rX   )1rJ   ru   Úhuggingface_hub.dataclassesr   Ú r   rn   Ú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   rT   rX   rZ   r\   r_   ra   rc   re   rg   ry   rl   Ú__all__r;   rF   rE   ú<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ò �rF   