§
    ‚Štj¼$  ã                   ó  — 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,¢Z0dS )-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                 óì  •— | 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
          ¦  «        rK| j                             dd¦  «        | j        d<   t          | j        d                  di | j        ¤Ž| _        n(| j        €!t          j	        d	dd
g d¢dœ¬¦  «        | _         t          ¦   «         j        di |¤Ž d S )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     €úi/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/edgetam/modular_edgetam.pyrA   z!EdgeTamVisionConfig.__post_init__Q   s3  ø€ à"&Ô"<Ð"DÐÐÐÐÈ$ÔJdð 	Ô"ð 37Ô2MÐ2Uˆc�3ˆZ˜#˜s˜ b¨" XÐ.Ð.Ð[_Ô[vð 	Ô#ð .2Ô-EÐ-M A q 6 6ÐSWÔSkˆÔ å�dÔ*­DÑ1Ô1ð 	Ø15Ô1E×1IÒ1IÈ,ÐXfÑ1gÔ1gˆDÔ  Ñ.Ý#1°$Ô2FÀ|Ô2TÔ#UÐ#mÐ#mÐX\ÔXlÐ#mÐ#mˆDÔ Ð ØÔ!Ð)Ý#-Ô#=Ø*Ø()¸DÐQ]ÐQ]Ð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   (   sD  ø€ € € € € € ðð ð& &€OØ'€Jà˜:ð€Kð 7;€O�TÐ,Ñ,¨tÑ3Ð:Ð:Ñ:Ø.2Ð˜4 œ9 tÑ+Ð2Ð2Ñ2Ø*.Ð˜D 4™KÐ.Ð.Ñ.Ø€O�SÐÐÑØ€O�SÐÐÑØ€J�ÐÐÑØ€K�ÐÐÑØ,0Ð˜˜cœ TÑ)Ð0Ð0Ñ0ØÐ˜ÐÐÑØ€J�ÐÐÑØ €N�EÐ Ð Ñ Ø#Ð�uÐ#Ð#Ñ#ð(ð (ð (ð (ð (ð (ð (ð (ð (rF   r   c                   ó   — e Zd ZdS )ÚEdgeTamPromptEncoderConfigN©rG   rH   rI   r;   rF   rE   rT   rT   e   ó   € € € € € ð 	€DrF   rT   c                   ó   — e Zd ZdS )ÚEdgeTamMaskDecoderConfigNrU   r;   rF   rE   rX   rX   k   rV   rF   rX   c                   ó   — e Zd ZdZdS )Ú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 	€DrF   rZ   c                   ó   — e Zd ZdS )ÚEdgeTamLayerNormNrU   r;   rF   rE   r\   r\   š   ó   € € € € € Ø€DrF   r\   c                   ó   — e Zd ZdS )ÚEdgeTamVisionEncoderOutputNrU   r;   rF   rE   r_   r_   ž   r]   rF   r_   c                   ó   — e Zd ZdS )ÚEdgeTamAttentionNrU   r;   rF   rE   ra   ra   ¢   r]   rF   ra   c                   ó   — e Zd ZdS )ÚEdgeTamTwoWayAttentionBlockNrU   r;   rF   rE   rc   rc   ¦   r]   rF   rc   c                   ó   — e Zd ZdS )ÚEdgeTamFeedForwardNrU   r;   rF   rE   re   re   ª   r]   rF   re   c                   óB   — e Zd ZdZ ej        ¦   «         d„ ¦   «         ZdS )ÚEdgeTamPreTrainedModelNc                 ó  — t          j        | |¦  «         t          |t          ¦  «        r$|j        �t          j        |j        ¦  «         d S d S t          |d¦  «        r"t          j        |j	        |j
        ¬¦  «         d S d S )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²   s’   € åÔ% d¨FÑ3Ô3Ð3Ý�f�lÑ+Ô+ð 	HØÔ)Ð5Ý”˜FÔ6Ñ7Ô7Ð7Ð7Ð7ð 6Ð5å�VÐ3Ñ4Ô4ð 	HÝŒL˜Ô4¸&¼,ÐGÑGÔGÐGÐGÐGð	Hð 	HrF   )rG   rH   rI   Ú"_keys_to_ignore_on_load_unexpectedÚtorchÚno_gradrk   r;   rF   rE   rg   rg   ®   s@   € € € € € à)-Ð&à€U„]�_„_ðHð Hñ „_ðHð Hð HrF   rg   zN
    The vision model from EdgeTAM without any head or projection on top.
    )Úcustom_introc            
       óz   — 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dS )Ú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ÔWÐWrF   NrC   Úreturnc                 ó6  — |€t          d¦  «        ‚ | j        |fi |¤Ž}|j        }d„ |D ¦   «         }|                      |¦  «        \  }}|| j         d …         d d d…         }|| j         d …         d d d…         }t          |d         |||j        ¬¦  «        S )Nz You have to specify pixel_valuesc                 ó>   — g | ]}|                      d ddd¦  «        ‘ŒS )r   r   r   r%   )Úpermute)Ú.0Úhidden_states     rE   ú
<listcomp>z.EdgeTamVisionModel.forward.<locals>.<listcomp>Ø   s,   € Ð%vÐ%vÐ%vÈ< l×&:Ò&:¸1¸aÀÀAÑ&FÔ&FÐ%vÐ%vÐ%vrF   éÿÿÿÿ)Úlast_hidden_stateÚfpn_hidden_statesÚfpn_position_encodingÚhidden_states)Ú
ValueErrorÚbackbonerŠ   Úneckr*   r_   r�   )rB   rz   rC   Úbackbone_outputÚintermediate_hidden_statesr‹   rŒ   s          rE   ÚforwardzEdgeTamVisionModel.forwardË   sÞ   € ð ÐÝÐ?Ñ@Ô@Ð@ð (˜$œ-¨Ð?Ð?¸Ð?Ð?ˆØ%4Ô%FÐ"Ø%vÐ%vÐ[uÐ%vÑ%vÔ%vÐ"à37·9²9Ð=WÑ3XÔ3XÑ0ÐÐ0à-¨tÔ/FÐ.FÐ.HÐ.HÔIÈ$È$ÈBÈ$ÔOÐØ 5°tÔ7NÐ6NÐ6PÐ6PÔ QÐRVÐRVÐTVÐRVÔ WÐå)Ø8¸Ô<Ø/Ø"7Ø)Ô7ð	
ñ 
ô 
ð 	
rF   )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   ¼   sŸ   € € € € € ð '€LØ$€Oð ÐðXð Xð Xð  Øð 26ð
ð 
àÔ'¨$Ñ.ð
ð Ð+Ô,ð
ð 
Ð+Ñ	+ð	
ð 
ð 
ñ „_ñ  Ôð
ð 
ð 
rF   ry   c                   ó   — e Zd Zg d¢Zd„ ZdS )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ð Xð Xð Xð 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ª      s1  ðð Ð à €€€Ø .Ð .Ð .Ð .Ð .Ð .à &Ð &Ð &Ð &Ð &Ð &Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø -Ð -Ð -Ð -Ð -Ð -Ø &Ð &Ð &Ð &Ð &Ð &Ø #Ð #Ð #Ð #Ð #Ð #Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð €Ð2Ð3Ñ3Ô3Øð8(ð 8(ð 8(ð 8(ð 8(Ð*ñ 8(ô 8(ñ „ñ 4Ô3ð8(ðv €Ð2Ð3Ñ3Ô3Øð	ð 	ð 	ð 	ð 	Ð!8ñ 	ô 	ñ „ñ 4Ô3ð	ð €Ð2Ð3Ñ3Ô3Øð	ð 	ð 	ð 	ð 	Ð4ñ 	ô 	ñ „ñ 4Ô3ð	ð €Ð2Ð3Ñ3Ô3Øð$	ð $	ð $	ð $	ð $	�Jñ $	ô $	ñ „ñ 4Ô3ð$	ðN	ð 	ð 	ð 	ð 	�}ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð!8ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�}ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð":ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	˜ñ 	ô 	ð 	ð ð
Hð 
Hð 
Hð 
Hð 
HÐ0ñ 
Hô 
Hñ „ð
Hð €ððñ ô ð
#
ð #
ð #
ð #
ð #
˜ñ #
ô #
ñô ð
#
ðLXð Xð Xð Xð X�9ñ Xô Xð Xð ð ð €€€rF   