
    qi#                     x    d Z ddlmZ ddlmZ ddlmZ ddlmZ  ej                  e
      Z G d de      ZdgZy	)
zUperNet model configuration   )%consolidate_backbone_kwargs_to_config)PreTrainedConfig)logging   )
AutoConfigc                   J     e Zd ZdZdZdeiZdddg ddd	dd
dddf fd	Z xZS )UperNetConfiga	  
    This is the configuration class to store the configuration of an [`UperNetForSemanticSegmentation`]. It is used to
    instantiate an UperNet model according to the specified arguments, defining the model architecture. Instantiating a
    configuration with the defaults will yield a similar configuration to that of the UperNet
    [openmmlab/upernet-convnext-tiny](https://huggingface.co/openmmlab/upernet-convnext-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:
        backbone_config (`PreTrainedConfig` or `dict`, *optional*, defaults to `ResNetConfig()`):
            The configuration of the backbone model.
        hidden_size (`int`, *optional*, defaults to 512):
            The number of hidden units in the convolutional layers.
        initializer_range (`float`, *optional*, defaults to 0.02):
            The standard deviation of the truncated_normal_initializer for initializing all weight matrices.
        pool_scales (`tuple[int]`, *optional*, defaults to `[1, 2, 3, 6]`):
            Pooling scales used in Pooling Pyramid Module applied on the last feature map.
        use_auxiliary_head (`bool`, *optional*, defaults to `True`):
            Whether to use an auxiliary head during training.
        auxiliary_loss_weight (`float`, *optional*, defaults to 0.4):
            Weight of the cross-entropy loss of the auxiliary head.
        auxiliary_channels (`int`, *optional*, defaults to 256):
            Number of channels to use in the auxiliary head.
        auxiliary_num_convs (`int`, *optional*, defaults to 1):
            Number of convolutional layers to use in the auxiliary head.
        auxiliary_concat_input (`bool`, *optional*, defaults to `False`):
            Whether to concatenate the output of the auxiliary head with the input before the classification layer.
        loss_ignore_index (`int`, *optional*, defaults to 255):
            The index that is ignored by the loss function.

    Examples:

    ```python
    >>> from transformers import UperNetConfig, UperNetForSemanticSegmentation

    >>> # Initializing a configuration
    >>> configuration = UperNetConfig()

    >>> # Initializing a model (with random weights) from the configuration
    >>> model = UperNetForSemanticSegmentation(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```upernetbackbone_configNi   g{Gz?)   r   r      Tg?   r   F   c                     t        d|ddg did|\  }}|| _        || _        || _        || _        || _        || _        || _        || _        |	| _	        |
| _
        || _        t        | 4  di | y )Nresnetout_features)stage1stage2stage3stage4)r   default_config_typedefault_config_kwargs )r   r   hidden_sizeinitializer_rangepool_scalesuse_auxiliary_headauxiliary_loss_weightauxiliary_in_channelsauxiliary_channelsauxiliary_num_convsauxiliary_concat_inputloss_ignore_indexsuper__init__)selfr   r   r   r   r   r   r   r    r!   r"   r#   kwargs	__class__s                c/opt/pipecat/venv/lib/python3.12/site-packages/transformers/models/upernet/configuration_upernet.pyr%   zUperNetConfig.__init__K   s     #H #
+ ( H##
 #
  /&!2&"4%:"%:""4#6 &<#!2"6"    )	__name__
__module____qualname____doc__
model_typer   sub_configsr%   __classcell__)r(   s   @r)   r	   r	      sG    ,\ J$j1K  !"$$# $#r*   r	   N)r.   backbone_utilsr   configuration_utilsr   utilsr   auto.configuration_autor   
get_loggerr+   loggerr	   __all__r   r*   r)   <module>r9      sD    " C 3  0 
		H	%V#$ V#r 
r*   