o
    oiJ                     @   s   d dl Z d dl mZ ddlmZmZ ddlmZ ddlmZ ddl	m
Z
mZ e jfde jd	efd
dZe jfde jd	efddZe jfde jd	efddZde jfdede jd	efddZde jfdede jd	efddZdS )    N)nn   )ConvRefinerDecoder)DeDoDeDescriptor)DeDoDeDetector)VGG19
VGG_DINOv2	amp_dtypereturnc           	      C   s   d}d}d}d}t tddd| |||| dtddd| |||| dtddd| |||| dtddd| |||| dd	}t|| d
}t|}t||d}|S )z Get DeDoDe descriptor of type L.r   T         hidden_blocksresidualampr
      @   8421r   r
   encoderdecoder)r   
ModuleDictr   r   r   r   	r
   NUM_PROTOTYPESr   r   r   conv_refinerr   r   model r#   W/home/ubuntu/.local/lib/python3.10/site-packages/kornia/feature/dedode/dedode_models.pydedode_detector_L   s^   			(r%   c           	      C   s   d}d}d}d}t tddd| |||| dtddd| |||| dtddd| |||| dtd	dd
| |||| dd}t|| d}t||d}t||d}|S )z Get DeDoDe descriptor of type B.r   T   r   r   r   r       `   r   r   r   num_prototypesr   )r   r   r   r   r   r   r   r#   r#   r$   dedode_descriptor_BO   s^   			(r+   c                 C   s   d}d}d}d}t tddd| |||| dtddd| |||| dtddd| |||| dtdd	d
| |||| dtdd
d| |||| dd}|| d}|| dd}t||d}t||d}	t||	d}
|
S )z Get DeDoDe descriptor of type G.r   Tr&   i   i   r   r   r   r   r'   r(   r   )14r   r   r   r   r   N)r   r
   dinov2_weights)
vgg_kwargsdinov2_kwargsr)   r   )r   r   r   r	   r   r   )r
   r    r   r   r   r!   r.   r/   r   r   r"   r#   r#   r$   dedode_descriptor_G   st   				
1r0   Lkindc                 C   s   | dkrt |S td|  )zGet DeDoDe detector.r1   zUnknown detector kind: )r%   
ValueErrorr2   r
   r#   r#   r$   get_detector   s   r5   Bc                 C   s.   | dkrt |S | dkrt|S td|  )zGet DeDoDe descriptor.r6   GzUnknown descriptor kind: )r+   r0   r3   r4   r#   r#   r$   get_descriptor   s
   r8   )torchr   r   r   r   
descriptorr   detectorr   r   r   r	   float16dtyper%   r+   r0   strr5   r8   r#   r#   r#   r$   <module>   s   44 ?$