
    cCi<                         S SK Jr  SSKJrJr   " S S\5      r " S S\5      r " S S	\5      r " S
 S\5      r/ SQr	g)   )PretrainedConfig   )CONFIG_MAPPING
AutoConfigc                   X   ^  \ rS rSrSrSrSrS\0r            SU 4S jjr	Sr
U =r$ )	EdgeTamVisionConfig   a\  
This is the configuration class to store the configuration of a [`EdgeTamVisionModel`]. It is used to instantiate a SAM
vision encoder according to the specified arguments, defining the model architecture. Instantiating a configuration
defaults will yield a similar configuration to that of SAM 2.1 Hiera-tiny
[facebook/EdgeTAM](https://huggingface.co/facebook/EdgeTAM) architecture.

Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs. Read the
documentation from [`PretrainedConfig`] for more information.

Args:
    backbone_config (`Union[dict, "PretrainedConfig"]`, *optional*):
        Configuration for the vision backbone. This is used to instantiate the backbone using
        `AutoModel.from_config`.
    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.
    hidden_act (`str`, *optional*, defaults to `"gelu"`):
        The non-linear activation function in the neck.
    layer_norm_eps (`float`, *optional*, defaults to 1e-06):
        The epsilon for the layer normalization.
    initializer_range (`float`, *optional*, defaults to 0.02):
        The standard deviation of the truncated_normal_initializer for initializing all weight matrices.

vision_configedgetam_vision_modelbackbone_configc                   > [         TU ]  " S0 UD6  Uc  / SQOUnUc  SS/SS/SS//OUnUc  SS/OUn[        U[        5      (       a(  UR	                  SS5      US'   [
        US      " S0 UD6nO6[        U[        5      (       a  UnOUc  [        R                  " S	SS
/ SQS.S9nXl        X l	        X0l
        X@l        XPl        X`l        Xpl        Xl        Xl        Xl        Xl        Xl        g )N)i     `   0         @   r   r   
model_typetimm_wrapperztimm/repvit_m1.dist_in1kT)       r   r   )in_chansfeatures_onlyout_indices)
model_args )super__init__
isinstancedictgetr   r   from_pretrainedr   backbone_channel_listbackbone_feature_sizesfpn_hidden_sizefpn_kernel_size
fpn_stridefpn_paddingfpn_top_down_levelsnum_feature_levels
hidden_actlayer_norm_epsinitializer_range)selfr   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   kwargs	__class__s                 k/home/james-whalen/.local/lib/python3.13/site-packages/transformers/models/edgetam/configuration_edgetam.pyr   EdgeTamVisionConfig.__init__G   s     	"6"6K6S 2Yn2H2Pc3Z#sb"X.Vl 	 )<(Cq!fI\ot,,,;,?,?n,]OL),_\-JK^o^O44-O$(88*()DQ]^O
  / &;"&<#..$&#6 "4$,!2    )r#   r   r$   r%   r&   r(   r'   r)   r+   r-   r,   r*   )NNNr   r   r   r   Nr   geluư>{Gz?)__name__
__module____qualname____firstlineno____doc__base_config_keyr   r   sub_configsr   __static_attributes____classcell__r0   s   @r1   r   r      sQ    $L &O'J:K "# 13 13r3   r   c                   D   ^  \ rS rSrSrSr        SU 4S jjrSrU =r$ )EdgeTamPromptEncoderConfig{   a  
This is the configuration class to store the configuration of a [`EdgeTamPromptEncoder`]. The [`EdgeTamPromptEncoder`]
module is used to encode the input 2D points and bounding boxes.

Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs. Read the
documentation from [`PretrainedConfig`] for more information.

Args:
    hidden_size (`int`, *optional*, defaults to 256):
        Dimensionality of the hidden states.
    image_size (`int`, *optional*, defaults to 1024):
        The expected output resolution of the image.
    patch_size (`int`, *optional*, defaults to 16):
        The size (resolution) of each patch.
    mask_input_channels (`int`, *optional*, defaults to 16):
        The number of channels to be fed to the `MaskDecoder` module.
    num_point_embeddings (`int`, *optional*, defaults to 4):
        The number of point embeddings to be used.
    hidden_act (`str`, *optional*, defaults to `"gelu"`):
        The non-linear activation function in the encoder and pooler.
    layer_norm_eps (`float`, *optional*, defaults to 1e-06):
        The epsilon used by the layer normalization layers.
    scale (`float`, *optional*, defaults to 1):
        The scale factor for the prompt encoder.
prompt_encoder_configc	                    > [         T
U ]  " S0 U	D6  Xl        X l        X0l        X@l        XPl        X`l        Xpl        Xl	        g Nr   )
r   r   hidden_size
image_size
patch_sizemask_input_channelsnum_point_embeddingsr+   r,   scale)r.   rG   rH   rI   rJ   rK   r+   r,   rL   r/   r0   s             r1   r   #EdgeTamPromptEncoderConfig.__init__   sA     	"6"&$$#6 $8!$,
r3   )r+   rG   rH   r,   rJ   rK   rI   rL   )r   i      rN      r4   r5   r   	r7   r8   r9   r:   r;   r<   r   r>   r?   r@   s   @r1   rB   rB   {   s3    4 .O  r3   rB   c                   L   ^  \ rS rSrSrSr            SU 4S jjrSrU =r$ )EdgeTamMaskDecoderConfig   a  
This is the configuration class to store the configuration of a [`EdgeTamMaskDecoder`]. It is used to instantiate a EDGETAM
memory encoder according to the specified arguments, defining the model architecture.

Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs. Read the
documentation from [`PretrainedConfig`] for more information.

Args:
    hidden_size (`int`, *optional*, defaults to 256):
        Dimensionality of the hidden states.
    hidden_act (`str`, *optional*, defaults to `"gelu"`):
        The non-linear activation function in the EDGETAM mask decoder.
    mlp_dim (`int`, *optional*, defaults to 2048):
        The dimension of the MLP in the two-way transformer.
    num_hidden_layers (`int`, *optional*, defaults to 2):
        The number of hidden layers in the two-way transformer.
    num_attention_heads (`int`, *optional*, defaults to 8):
        The number of attention heads in the two-way transformer.
    attention_downsample_rate (`int`, *optional*, defaults to 2):
        The downsample rate for the attention layers.
    num_multimask_outputs (`int`, *optional*, defaults to 3):
        The number of multimask outputs.
    iou_head_depth (`int`, *optional*, defaults to 3):
        The depth of the IoU head.
    iou_head_hidden_dim (`int`, *optional*, defaults to 256):
        The hidden dimension of the IoU head.
    dynamic_multimask_via_stability (`bool`, *optional*, defaults to `True`):
        Whether to use dynamic multimask via stability.
    dynamic_multimask_stability_delta (`float`, *optional*, defaults to 0.05):
        The stability delta for the dynamic multimask.
    dynamic_multimask_stability_thresh (`float`, *optional*, defaults to 0.98):
        The stability threshold for the dynamic multimask.

mask_decoder_configc                    > [         TU ]  " S0 UD6  Xl        Xpl        X l        Xl        Xl        Xl        Xl        Xl	        X@l
        Xl        XPl        X0l        X`l        g rF   )r   r   rG   num_multimask_outputsr+   iou_head_depthiou_head_hidden_dimdynamic_multimask_via_stability!dynamic_multimask_stability_delta"dynamic_multimask_stability_threshnum_hidden_layersnum_attention_headsmlp_dimattention_downsample_rate)r.   rG   r+   r^   r\   r]   r_   rV   rW   rX   rY   rZ   r[   r/   r0   s                 r1   r   !EdgeTamMaskDecoderConfig.__init__   sc      	"6"&%:"$,#6 /N,1R.2T/ "3&#6 )B&r3   )r_   rZ   r[   rY   r+   rG   rW   rX   r^   r]   r\   rV   )r   r4   i   r      r   r   r   r   Tg?g\(\?rP   r@   s   @r1   rR   rR      sB    !F ,O "#(,*.+/ C  Cr3   rR   c                   H   ^  \ rS rSrSrSr\\\S.r	    SU 4S jjr
SrU =r$ )EdgeTamConfig   a  
[`EdgeTamConfig`] is the configuration class to store the configuration of a [`EdgeTamModel`]. It is used to instantiate a
EDGETAM model according to the specified arguments, defining the memory attention, memory encoder, and image encoder
configs. Instantiating a configuration defaults will yield a similar configuration to that of the SAM 2.1 Hiera-tiny
[facebook/edgetam.1-hiera-tiny](https://huggingface.co/facebook/edgetam.1-hiera-tiny) architecture.

Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs. Read the
documentation from [`PretrainedConfig`] for more information.

Args:
    vision_config (Union[`dict`, `EdgeTamVisionConfig`], *optional*):
        Dictionary of configuration options used to initialize [`EdgeTamVisionConfig`].
    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`].
    initializer_range (`float`, *optional*, defaults to 0.02):
        Standard deviation for parameter initialization.

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)
```edgetam)r
   rD   rT   c                   > [         TU ]  " S0 UD6  Ub  UO0 nUb  UO0 nUb  UO0 n[        U[        5      (       a'  UR	                  SS5      US'   [
        US      " S0 UD6n[        U[        5      (       a  UR                  5       n[        U[        5      (       a  UR                  5       nXl	        [        S0 UD6U l
        [        S0 UD6U l        X@l        g )Nr   r   r   )r   r   r   r    r!   r   rB   to_dictrR   r
   rD   rT   r-   )r.   r
   rD   rT   r-   r/   r0   s         r1   r   EdgeTamConfig.__init__0  s     	"6")6)B9N9Z 5`b5H5T1Z\mT***7*;*;LJ`*aM,'*=+FGX-XM+-GHH$9$A$A$C!)+CDD"5"="="?*%?%XBW%X"#;#R>Q#R !2r3   )r-   rT   rD   r
   )NNNr6   )r7   r8   r9   r:   r;   r   r   rB   rR   r=   r   r>   r?   r@   s   @r1   rc   rc      s8    .` J#!;7K " 3 3r3   rc   )rc   r   rB   rR   N)
configuration_utilsr   autor   r   r   rB   rR   rc   __all__r   r3   r1   <module>rl      sU   , 4 -^3* ^3B1!1 1hFC/ FCRQ3$ Q3h mr3   