


'''simple docstring'''





from __future__ import annotations

from enum import Enum

class 	__a   (       UpperCAmelCase    ):
		_a			:						Optional[Any]    			=			24
		_a			:						Tuple    			=			21
		_a			:						Dict    			=			18
		_a			:						str    			=			15
		_a			:						List[str]    			=			12
		_a			:						Any    			=			9
		_a			:						Optional[Any]    			=			6
		_a			:						Dict    			=			3
		_a			:						Optional[Any]    			=			2
		_a			:						Union[str, Any]    			=			1
		_a			:						List[Any]    			=			-1
		_a			:						Optional[Any]    			=			-2
		_a			:						Optional[int]    			=			-3
		_a			:						Union[str, Any]    			=			-6
		_a			:						str    			=			-9
		_a			:						List[str]    			=			-12
		_a			:						Optional[Any]    			=			-15
		_a			:						Any    			=			-18
		_a			:						List[Any]    			=			-21
		_a			:						str    			=			-24



class 	__a   (       UpperCAmelCase    ):
		_a			:						Optional[Any]    			=			8
		_a			:						Any    			=			7
		_a			:						Dict    			=			6
		_a			:						Union[str, Any]    			=			5
		_a			:						Dict    			=			4
		_a			:						Optional[Any]    			=			3
		_a			:						Dict    			=			2
		_a			:						Optional[int]    			=			1



def  lowerCAmelCase__				(    a__:	float    ,						a__:	str | SIUnit    ,						a__:	str | SIUnit    ,						)						->	float:


							'''simple docstring'''





							if isinstance(a__    ,						a__ ):
														_UpperCAmelCase					=    SIUnit[known_prefix.lower()]
							if isinstance(a__    ,						a__ ):
														_UpperCAmelCase					=    SIUnit[unknown_prefix.lower()]
							_UpperCAmelCase					=    known_amount * (
							    1_0 ** (known_prefix.value - unknown_prefix.value)
							)
							return unknown_amount

def  lowerCAmelCase__				(    a__:	float    ,						a__:	str | BinaryUnit    ,						a__:	str | BinaryUnit    ,						)						->	float:


							'''simple docstring'''





							if isinstance(a__    ,						a__ ):
														_UpperCAmelCase					=    BinaryUnit[known_prefix.lower()]
							if isinstance(a__    ,						a__ ):
														_UpperCAmelCase					=    BinaryUnit[unknown_prefix.lower()]
							_UpperCAmelCase					=    known_amount * (
							    2 ** ((known_prefix.value - unknown_prefix.value) * 1_0)
							)
							return unknown_amount


if __name__ == "__main__":
		import doctest

		doctest.testmod()




import copy

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


lowerCAmelCase__						:int         =							logging.get_logger(__name__)

lowerCAmelCase__						:Optional[int]         =							{
    '''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   (       UpperCAmelCase    ):
		def __init__(    self    ,					_SCREAMING_SNAKE_CASE=256    ,					_SCREAMING_SNAKE_CASE=1024    ,					_SCREAMING_SNAKE_CASE=16    ,					_SCREAMING_SNAKE_CASE=16    ,					_SCREAMING_SNAKE_CASE=4    ,					_SCREAMING_SNAKE_CASE="gelu"    ,					_SCREAMING_SNAKE_CASE=1e-6    ,					**_SCREAMING_SNAKE_CASE    ,					)				-> Tuple:




									"""simple docstring"""





									super().__init__(**_SCREAMING_SNAKE_CASE		)
									_UpperCAmelCase					=    hidden_size
									_UpperCAmelCase					=    image_size
									_UpperCAmelCase					=    patch_size
									_UpperCAmelCase					=    image_size // patch_size
									_UpperCAmelCase					=    mask_input_channels
									_UpperCAmelCase					=    num_point_embeddings
									_UpperCAmelCase					=    hidden_act
									_UpperCAmelCase					=    layer_norm_eps



class 	__a   (       UpperCAmelCase    ):
		def __init__(    self    ,					_SCREAMING_SNAKE_CASE=256    ,					_SCREAMING_SNAKE_CASE="relu"    ,					_SCREAMING_SNAKE_CASE=2048    ,					_SCREAMING_SNAKE_CASE=2    ,					_SCREAMING_SNAKE_CASE=8    ,					_SCREAMING_SNAKE_CASE=2    ,					_SCREAMING_SNAKE_CASE=3    ,					_SCREAMING_SNAKE_CASE=3    ,					_SCREAMING_SNAKE_CASE=256    ,					_SCREAMING_SNAKE_CASE=1e-6    ,					**_SCREAMING_SNAKE_CASE    ,					)				-> List[Any]:




									"""simple docstring"""





									super().__init__(**_SCREAMING_SNAKE_CASE		)
									_UpperCAmelCase					=    hidden_size
									_UpperCAmelCase					=    hidden_act
									_UpperCAmelCase					=    mlp_dim
									_UpperCAmelCase					=    num_hidden_layers
									_UpperCAmelCase					=    num_attention_heads
									_UpperCAmelCase					=    attention_downsample_rate
									_UpperCAmelCase					=    num_multimask_outputs
									_UpperCAmelCase					=    iou_head_depth
									_UpperCAmelCase					=    iou_head_hidden_dim
									_UpperCAmelCase					=    layer_norm_eps



class 	__a   (       UpperCAmelCase    ):
		def __init__(    self    ,					_SCREAMING_SNAKE_CASE=768    ,					_SCREAMING_SNAKE_CASE=256    ,					_SCREAMING_SNAKE_CASE=12    ,					_SCREAMING_SNAKE_CASE=12    ,					_SCREAMING_SNAKE_CASE=3    ,					_SCREAMING_SNAKE_CASE=1024    ,					_SCREAMING_SNAKE_CASE=16    ,					_SCREAMING_SNAKE_CASE="gelu"    ,					_SCREAMING_SNAKE_CASE=1e-0_6    ,					_SCREAMING_SNAKE_CASE=0.0    ,					_SCREAMING_SNAKE_CASE=1e-1_0    ,					_SCREAMING_SNAKE_CASE=True    ,					_SCREAMING_SNAKE_CASE=4.0    ,					_SCREAMING_SNAKE_CASE=True    ,					_SCREAMING_SNAKE_CASE=True    ,					_SCREAMING_SNAKE_CASE=14    ,					_SCREAMING_SNAKE_CASE=[2, 5, 8, 11]    ,					_SCREAMING_SNAKE_CASE=128    ,					_SCREAMING_SNAKE_CASE=None    ,					**_SCREAMING_SNAKE_CASE    ,					)				-> List[str]:




									"""simple docstring"""





									super().__init__(**_SCREAMING_SNAKE_CASE		)

									_UpperCAmelCase					=    hidden_size
									_UpperCAmelCase					=    output_channels
									_UpperCAmelCase					=    num_hidden_layers
									_UpperCAmelCase					=    num_attention_heads
									_UpperCAmelCase					=    num_channels
									_UpperCAmelCase					=    image_size
									_UpperCAmelCase					=    patch_size
									_UpperCAmelCase					=    hidden_act
									_UpperCAmelCase					=    layer_norm_eps
									_UpperCAmelCase					=    attention_dropout
									_UpperCAmelCase					=    initializer_range
									_UpperCAmelCase					=    qkv_bias
									_UpperCAmelCase					=    mlp_ratio
									_UpperCAmelCase					=    use_abs_pos
									_UpperCAmelCase					=    use_rel_pos
									_UpperCAmelCase					=    window_size
									_UpperCAmelCase					=    global_attn_indexes
									_UpperCAmelCase					=    num_pos_feats
									_UpperCAmelCase					=    int(hidden_size * mlp_ratio		) if mlp_dim is None else mlp_dim



class 	__a   (       UpperCAmelCase    ):
		_a			:						Any    			=			'sam'
		_a			:						Any    			=			True
		def __init__(    self    ,					_SCREAMING_SNAKE_CASE=None    ,					_SCREAMING_SNAKE_CASE=None    ,					_SCREAMING_SNAKE_CASE=None    ,					_SCREAMING_SNAKE_CASE=0.02    ,					**_SCREAMING_SNAKE_CASE    ,					)				-> Tuple:




									"""simple docstring"""





									super().__init__(**_SCREAMING_SNAKE_CASE		)
									_UpperCAmelCase					=    vision_config if vision_config is not None else {}
									_UpperCAmelCase					=    prompt_encoder_config if prompt_encoder_config is not None else {}
									_UpperCAmelCase					=    mask_decoder_config if mask_decoder_config is not None else {}

									if isinstance(_SCREAMING_SNAKE_CASE    ,					_SCREAMING_SNAKE_CASE		):
																_UpperCAmelCase					=    vision_config.to_dict()
									if isinstance(_SCREAMING_SNAKE_CASE    ,					_SCREAMING_SNAKE_CASE		):
																_UpperCAmelCase					=    prompt_encoder_config.to_dict()
									if isinstance(_SCREAMING_SNAKE_CASE    ,					_SCREAMING_SNAKE_CASE		):
																_UpperCAmelCase					=    mask_decoder_config.to_dict()

									_UpperCAmelCase					=    SamVisionConfig(**_SCREAMING_SNAKE_CASE		)
									_UpperCAmelCase					=    SamPromptEncoderConfig(**_SCREAMING_SNAKE_CASE		)
									_UpperCAmelCase					=    SamMaskDecoderConfig(**_SCREAMING_SNAKE_CASE		)
									_UpperCAmelCase					=    initializer_range






		def 			UpperCAmelCase__       (    self		)				-> str:




									"""simple docstring"""





									_UpperCAmelCase					=    copy.deepcopy(self.__dict__		)
									_UpperCAmelCase					=    self.vision_config.to_dict()
									_UpperCAmelCase					=    self.prompt_encoder_config.to_dict()
									_UpperCAmelCase					=    self.mask_decoder_config.to_dict()
									_UpperCAmelCase					=    self.__class__.model_type
									return output
