
    <h)                     D    S SK Jr  SSKJr  SSKJr   " S S\5      rS/rg)    )Optional   )PretrainedConfig)rope_config_validationc            7         ^  \ rS rSrSrSr                           S!S\\\      S\\\      S\\\      S\S\	S	\S
\S\S\S\S\S\
S\S\	S\S\
S\
S\S\S\
S\\\      S\
S\
S\\   S\S\
S\
46U 4S jjjrS rU =r$ )"EfficientLoFTRConfig   ab  
This is the configuration class to store the configuration of a [`EffientLoFTRFromKeypointMatching`].
It is used to instantiate a EfficientLoFTR 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
EfficientLoFTR [zju-community/efficientloftr](https://huggingface.co/zju-community/efficientloftr) architecture.

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

Args:
    stage_num_blocks (`List`, *optional*, defaults to [1, 2, 4, 14]):
        The number of blocks in each stages
    out_features (`List`, *optional*, defaults to [64, 64, 128, 256]):
        The number of channels in each stage
    stage_stride (`List`, *optional*, defaults to [2, 1, 2, 2]):
        The stride used in each stage
    hidden_size (`int`, *optional*, defaults to 256):
        The dimension of the descriptors.
    activation_function (`str`, *optional*, defaults to `"relu"`):
        The activation function used in the backbone
    q_aggregation_kernel_size (`int`, *optional*, defaults to 4):
        The kernel size of the aggregation of query states in the fusion network
    kv_aggregation_kernel_size (`int`, *optional*, defaults to 4):
        The kernel size of the aggregation of key and value states in the fusion network
    q_aggregation_stride (`int`, *optional*, defaults to 4):
        The stride of the aggregation of query states in the fusion network
    kv_aggregation_stride (`int`, *optional*, defaults to 4):
        The stride of the aggregation of key and value states in the fusion network
    num_attention_layers (`int`, *optional*, defaults to 4):
        Number of attention layers in the LocalFeatureTransformer
    num_attention_heads (`int`, *optional*, defaults to 8):
        The number of heads in the GNN layers.
    attention_dropout (`float`, *optional*, defaults to 0.0):
        The dropout ratio for the attention probabilities.
    attention_bias (`bool`, *optional*, defaults to `False`):
        Whether to use a bias in the query, key, value and output projection layers during attention.
    mlp_activation_function (`str`, *optional*, defaults to `"leaky_relu"`):
        Activation function used in the attention mlp layer.
    coarse_matching_skip_softmax (`bool`, *optional*, defaults to `False`):
        Whether to skip softmax or not at the coarse matching step.
    coarse_matching_threshold (`float`, *optional*, defaults to 0.2):
        The threshold for the minimum score required for a match.
    coarse_matching_temperature (`float`, *optional*, defaults to 0.1):
        The temperature to apply to the coarse similarity matrix
    coarse_matching_border_removal (`int`, *optional*, defaults to 2):
        The size of the border to remove during coarse matching
    fine_kernel_size (`int`, *optional*, defaults to 8):
        Kernel size used for the fine feature matching
    batch_norm_eps (`float`, *optional*, defaults to 1e-05):
        The epsilon used by the batch normalization layers.
    embedding_size (`List`, *optional*, defaults to [15, 20]):
        The size (height, width) of the embedding for the position embeddings.
    rope_theta (`float`, *optional*, defaults to 10000.0):
        The base period of the RoPE embeddings.
    partial_rotary_factor (`float`, *optional*, defaults to 4.0):
        Dim factor for the RoPE embeddings, in EfficientLoFTR, frequencies should be generated for
        the whole hidden_size, so this factor is used to compensate.
    rope_scaling (`Dict`, *optional*):
        Dictionary containing the scaling configuration for the RoPE embeddings. NOTE: if you apply new rope type
        and you expect the model to work on longer `max_position_embeddings`, we recommend you to update this value
        accordingly.
        Expected contents:
            `rope_type` (`str`):
                The sub-variant of RoPE to use. Can be one of ['default', 'linear', 'dynamic', 'yarn', 'longrope',
                'llama3', '2d'], with 'default' being the original RoPE implementation.
            `dim` (`int`): The dimension of the RoPE embeddings.
    fine_matching_slice_dim (`int`, *optional*, defaults to 8):
        The size of the slice used to divide the fine features for the first and second fine matching stages.
    fine_matching_regress_temperature (`float`, *optional*, defaults to 10.0):
        The temperature to apply to the fine similarity matrix
    initializer_range (`float`, *optional*, defaults to 0.02):
        The standard deviation of the truncated_normal_initializer for initializing all weight matrices.

Examples:
    ```python
    >>> from transformers import EfficientLoFTRConfig, EfficientLoFTRForKeypointMatching

    >>> # Initializing a EfficientLoFTR configuration
    >>> configuration = EfficientLoFTRConfig()

    >>> # Initializing a model from the EfficientLoFTR configuration
    >>> model = EfficientLoFTRForKeypointMatching(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```
efficientloftrstage_num_blocksout_featuresstage_stridehidden_sizeactivation_functionq_aggregation_kernel_sizekv_aggregation_kernel_sizeq_aggregation_stridekv_aggregation_stridenum_attention_layersnum_attention_headsattention_dropoutattention_biasmlp_activation_functioncoarse_matching_skip_softmaxcoarse_matching_thresholdcoarse_matching_temperaturecoarse_matching_border_removalfine_kernel_sizebatch_norm_epsembedding_size
rope_thetapartial_rotary_factorrope_scalingfine_matching_slice_dim!fine_matching_regress_temperatureinitializer_rangec                   > Ub  UO/ SQU l         Ub  UO/ SQU l        Ub  UO/ SQU l        S/U R                  S S -   U l        [	        U R                  U R                   5       VVs/ sH  u  nnU/S/US-
  -  -   PM     snnU l        [        U R                   5       VVs/ sH  u  nnU R                  U   /U-  PM     snnU l        [        [        U R                   5      5       Vs/ sH&  nU R                  U   /U R                  U   S S -   PM(     snU l
        [        [        U R                  5      5      S S U l        X@l        U R                  U R                  S   :w  a%  [        SU R                   SU R                    35      eXPl        X`l        Xpl        Xl        Xl        Xl        Xl        Xl        Xl        U R                  S-  U l        Xl        Xl        UU l        UU l        UU l        UU l         UU l!        UU l"        UU l#        Xl$        Ub  UOS	S
/U l%        UU l&        Ub  UOSS0U l'        UU l(        [S        U 5        UU l*        [V        T U ]  " S0 UD6  g s  snnf s  snnf s  snf )N)            )r(   r'   r(   r(   )@   r+         r'   zMhidden_size should be equal to the last value in out_features. hidden_size = z, out_features = r(      r	   	rope_typedefault )-r   r   r   stage_in_channelszipstage_block_stride	enumeratestage_block_out_channelsrangelenstage_block_in_channelslistreversedfine_fusion_dimsr   
ValueErrorstage_out_channelsr   r   r   r   r   r   r   r   r   intermediate_sizer   r   r   r   r   r   r   r#   r$   num_key_value_headsr   r    r"   r!   r   r%   super__init__)!selfr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   kwargsstride
num_blocks	stage_idx	__class__s!                                   w/var/www/html/shao/venv/lib/python3.13/site-packages/transformers/models/efficientloftr/configuration_efficientloftr.pyrC   EfficientLoFTRConfig.__init__o   s   @ 5E4P 0Vc,8,DL,,8,DLJ\"#t'8'8"'=!= ILDL]L]_c_t_tHu#
Hu2D&*VHsj1n--Hu#
 V__c_t_tUu)
Uu<QIzTy)*Z7Uu)
%
 #3t'<'<#=>(
>	 ##I./$2O2OPY2Z[^\^2__>(
$ !%Xd.?.?%@ A#2 F&t0044_`d`p`p_q  rC  DH  D[  D[  C\  ]  $7 )B&*D'$8!%:"$8!#6 !2,!%!1!1A!5'>$,H))B&+F(.L+ 0,'>$1R.#6 0>0JnQSUWPX$,8,DL;XaJb &;"t$!2"6"g#
)
(
s   'I%!I+),I1)"r   r   r   r   r   r   r   r   r   r=   r   r$   r#   r   r%   r@   r   r   r   r   r   rA   r   r!   r   r   r"   r    r:   r7   r5   r3   r   r   )NNNr-   relur)   r)   r)   r)   r)      g        F
leaky_reluFg?g?r(   rM   gh㈵>Ng     @g      @NrM   g      $@g{Gz?)__name__
__module____qualname____firstlineno____doc__
model_typer   r;   intstrfloatbooldictrC   __static_attributes____classcell__)rI   s   @rJ   r   r      s   Vp "J 15,0,0#))**+$%%&$%#$#&$'3-2+.-0./ ! $.2#'*'+'(37#'9Y#"49-Y# tCy)Y# tCy)	Y#
 Y# !Y# $'Y# %(Y# "Y#  #Y# "Y# !Y# !Y# Y# "%Y#  '+!Y#" $)#Y#$ &+%Y#& ),'Y#( )Y#* +Y#, !c+-Y#. /Y#0  %1Y#2 tn3Y#4 "%5Y#6 ,17Y#8 !9Y# Y#    r   N)typingr   configuration_utilsr   modeling_rope_utilsr   r   __all__r2   r\   rJ   <module>ra      s*     3 9t#+ t#n "
"r\   