






"""simple docstring"""





import copy

from ...configuration_utils import PretrainedConfig
from ...utils import logging


UpperCamelCase					=     logging.get_logger(__name__)

UpperCamelCase					=     {
    """facebook/sam-vit-huge""": """https://huggingface.co/facebook/sam-vit-huge/resolve/main/config.json""",
    """facebook/sam-vit-large""": """https://huggingface.co/facebook/sam-vit-large/resolve/main/config.json""",
    """facebook/sam-vit-base""": """https://huggingface.co/facebook/sam-vit-base/resolve/main/config.json""",
}







class 						_a  (		lowercase_       ):





   '''simple docstring'''






   def __init__(       self					, UpperCAmelCase_=256					, UpperCAmelCase_=1_024					, UpperCAmelCase_=16					, UpperCAmelCase_=16					, UpperCAmelCase_=4					, UpperCAmelCase_="gelu"					, UpperCAmelCase_=1E-6					, **UpperCAmelCase_					, )			->   Any:




          '''simple docstring'''




          super().__init__(**UpperCAmelCase_)
          lowercase__:							Dict         =     hidden_size
          lowercase__:							List[Any]         =     image_size
          lowercase__:							int         =     patch_size
          lowercase__:							Optional[Any]         =     image_size // patch_size
          lowercase__:							str         =     mask_input_channels
          lowercase__:							Any         =     num_point_embeddings
          lowercase__:							Optional[Any]         =     hidden_act
          lowercase__:							List[str]         =     layer_norm_eps







class 						_a  (		lowercase_       ):





   '''simple docstring'''






   def __init__(       self					, UpperCAmelCase_=256					, UpperCAmelCase_="relu"					, UpperCAmelCase_=2_048					, UpperCAmelCase_=2					, UpperCAmelCase_=8					, UpperCAmelCase_=2					, UpperCAmelCase_=3					, UpperCAmelCase_=3					, UpperCAmelCase_=256					, UpperCAmelCase_=1E-6					, **UpperCAmelCase_					, )			->   Optional[Any]:




          '''simple docstring'''




          super().__init__(**UpperCAmelCase_)
          lowercase__:							Dict         =     hidden_size
          lowercase__:							Dict         =     hidden_act
          lowercase__:							List[str]         =     mlp_dim
          lowercase__:							List[str]         =     num_hidden_layers
          lowercase__:							List[str]         =     num_attention_heads
          lowercase__:							int         =     attention_downsample_rate
          lowercase__:							Optional[int]         =     num_multimask_outputs
          lowercase__:							str         =     iou_head_depth
          lowercase__:							List[Any]         =     iou_head_hidden_dim
          lowercase__:							List[str]         =     layer_norm_eps







class 						_a  (		lowercase_       ):





   '''simple docstring'''






   def __init__(       self					, UpperCAmelCase_=768					, UpperCAmelCase_=256					, UpperCAmelCase_=12					, UpperCAmelCase_=12					, UpperCAmelCase_=3					, UpperCAmelCase_=1_024					, UpperCAmelCase_=16					, UpperCAmelCase_="gelu"					, UpperCAmelCase_=1E-0_6					, UpperCAmelCase_=0.0					, UpperCAmelCase_=1E-1_0					, UpperCAmelCase_=True					, UpperCAmelCase_=4.0					, UpperCAmelCase_=True					, UpperCAmelCase_=True					, UpperCAmelCase_=14					, UpperCAmelCase_=[2, 5, 8, 11]					, UpperCAmelCase_=128					, UpperCAmelCase_=None					, **UpperCAmelCase_					, )			->   Any:




          '''simple docstring'''




          super().__init__(**UpperCAmelCase_)

          lowercase__:							Tuple         =     hidden_size
          lowercase__:							Union[str, Any]         =     output_channels
          lowercase__:							List[str]         =     num_hidden_layers
          lowercase__:							Any         =     num_attention_heads
          lowercase__:							Optional[int]         =     num_channels
          lowercase__:							List[Any]         =     image_size
          lowercase__:							Dict         =     patch_size
          lowercase__:							Tuple         =     hidden_act
          lowercase__:							Union[str, Any]         =     layer_norm_eps
          lowercase__:							Dict         =     attention_dropout
          lowercase__:							List[str]         =     initializer_range
          lowercase__:							List[str]         =     qkv_bias
          lowercase__:							Tuple         =     mlp_ratio
          lowercase__:							Optional[int]         =     use_abs_pos
          lowercase__:							Dict         =     use_rel_pos
          lowercase__:							List[str]         =     window_size
          lowercase__:							Optional[int]         =     global_attn_indexes
          lowercase__:							List[Any]         =     num_pos_feats
          lowercase__:							List[Any]         =     int(hidden_size * mlp_ratio) if mlp_dim is None else mlp_dim







class 						_a  (		lowercase_       ):





   '''simple docstring'''






   UpperCamelCase__     	=							"""sam"""
   UpperCamelCase__     	=							True





   def __init__(       self					, UpperCAmelCase_=None					, UpperCAmelCase_=None					, UpperCAmelCase_=None					, UpperCAmelCase_=0.02					, **UpperCAmelCase_					, )			->   Optional[int]:




          '''simple docstring'''




          super().__init__(**UpperCAmelCase_)
          lowercase__:							Tuple         =     vision_config if vision_config is not None else {}
          lowercase__:							Optional[int]         =     prompt_encoder_config if prompt_encoder_config is not None else {}
          lowercase__:							Dict         =     mask_decoder_config if mask_decoder_config is not None else {}

          if isinstance(UpperCAmelCase_					, UpperCAmelCase_):
                 lowercase__:							str         =     vision_config.to_dict()
          if isinstance(UpperCAmelCase_					, UpperCAmelCase_):
                 lowercase__:							List[str]         =     prompt_encoder_config.to_dict()
          if isinstance(UpperCAmelCase_					, UpperCAmelCase_):
                 lowercase__:							List[str]         =     mask_decoder_config.to_dict()

          lowercase__:							int         =     SamVisionConfig(**UpperCAmelCase_)
          lowercase__:							Optional[int]         =     SamPromptEncoderConfig(**UpperCAmelCase_)
          lowercase__:							Optional[Any]         =     SamMaskDecoderConfig(**UpperCAmelCase_)
          lowercase__:							Optional[int]         =     initializer_range





   def __lowercase							(       self)			->   Optional[Any]:




          '''simple docstring'''




          lowercase__:							List[Any]         =     copy.deepcopy(self.__dict__)
          lowercase__:							Any         =     self.vision_config.to_dict()
          lowercase__:							int         =     self.prompt_encoder_config.to_dict()
          lowercase__:							List[Any]         =     self.mask_decoder_config.to_dict()
          lowercase__:							Any         =     self.__class__.model_type
          return output













from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


__UpperCAmelCase			:  Optional[Any]										=				{"configuration_sew_d": ["SEW_D_PRETRAINED_CONFIG_ARCHIVE_MAP", "SEWDConfig"]}

try:
      if not is_torch_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      __UpperCAmelCase			:  str										=				[
          "SEW_D_PRETRAINED_MODEL_ARCHIVE_LIST",
          "SEWDForCTC",
          "SEWDForSequenceClassification",
          "SEWDModel",
          "SEWDPreTrainedModel",
      ]

if TYPE_CHECKING:
      from .configuration_sew_d import SEW_D_PRETRAINED_CONFIG_ARCHIVE_MAP, SEWDConfig

      try:
            if not is_torch_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .modeling_sew_d import (
                SEW_D_PRETRAINED_MODEL_ARCHIVE_LIST,
                SEWDForCTC,
                SEWDForSequenceClassification,
                SEWDModel,
                SEWDPreTrainedModel,
            )


else:
      import sys

      __UpperCAmelCase			:  Union[str, Any]										=				_LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)






