
    3j                         % S SK Jr  S SKrS SKJr  S SKJr  0 r\\\4   \S'   S\S'   S\S	'    " S
 S\R                  5      r
g)    )DictN)nn)KORNIA_CHECK_SHAPEurlszVhttps://github.com/yuruntian/SOSNet/raw/master/sosnet-weights/sosnet_32x32_liberty.pthlibzYhttps://github.com/yuruntian/SOSNet/raw/master/sosnet-weights/sosnet_32x32_hpatches_a.pthhp_ac                      ^  \ rS rSrSrSrSS\SS4U 4S jjjrSS\R                  S	\
S\R                  4S
 jjrSrU =r$ )SOSNet   a  128-dimensional SOSNet model definition for 32x32 patches.

This is based on the original code from paper
"SOSNet:Second Order Similarity Regularization for Local Descriptor Learning".

Args:
    pretrained: Download and set pretrained weights to the model.

Shape:
    - Input: :math:`(B, 1, 32, 32)`
    - Output: :math:`(B, 128)`

Examples:
    >>> input = torch.rand(8, 1, 32, 32)
    >>> sosnet = SOSNet()
    >>> descs = sosnet(input) # 8x128

    
pretrainedreturnNc                   > [         TU ]  5         [        R                  " [        R                  " SSS9[        R
                  " SSSSSS9[        R                  " SSS9[        R                  " 5       [        R
                  " SSSSSS9[        R                  " SSS9[        R                  " 5       [        R
                  " SSSSSSS	9[        R                  " SSS9[        R                  " 5       [        R
                  " SSSSSS9[        R                  " SSS9[        R                  " 5       [        R
                  " SS
SSSSS	9[        R                  " S
SS9[        R                  " 5       [        R
                  " S
S
SSSS9[        R                  " S
SS9[        R                  " 5       [        R                  " S5      [        R
                  " S
S
SSS9[        R                  " S
SS95      U l	        [        R                  " [        R                  " SSSSS95      U l        U(       aI  [        R                  R                  [        S   [        R                   " S5      S9nU R#                  USS9  U R%                  5         g )N   F)affiner      )kernel_sizepaddingbias@      )r   strider   r      g?   )r   r      g      p@g      ?g        )alphabetakr   cpu)map_locationT)strict)super__init__r   
SequentialInstanceNorm2dConv2dBatchNorm2dReLUDropoutlayersLocalResponseNorm	desc_normtorchhubload_state_dict_from_urlr   deviceload_state_dicteval)selfr   pretrained_dict	__class__s      O/home/wildlama/miniconda3/lib/python3.13/site-packages/kornia/feature/sosnet.pyr#   SOSNet.__init__4   s   mma.IIaAEBNN2e,GGIIIb"!QUCNN2e,GGIIIb"!AquMNN2e,GGIIIb"!QUCNN2e,GGIIIb#1QNNN3u-GGIIIc3AquENN3u-GGIJJsOIIc3AE:NN3u--
0 r';';CuSVZ]'^_#ii@@e[`[g[ghm[n@oO   >		    inputepsc                     [        U/ SQ5        U R                  U R                  U5      U-   5      nUR                  UR	                  S5      S5      nU$ )N)B132r>   r   )r   r,   r*   viewsize)r3   r9   r:   descrs       r6   forwardSOSNet.forwardU   sF    5"89t{{51C78

5::a="-r8   )r,   r*   )F)g|=)__name__
__module____qualname____firstlineno____doc__
patch_sizeboolr#   r-   TensorfloatrC   __static_attributes____classcell__)r5   s   @r6   r
   r
      sO    & J4 D  BU\\  %,,  r8   r
   )typingr   r-   r   kornia.core.checkr   r   str__annotations__Moduler
    r8   r6   <module>rV      sG   $    0d38n fUjV;RYY ;r8   