o
    i                      @   sF   d dl mZ d dlmZ d dlmZmZmZmZ G dd dej	Z
dS )    )ListN)vit_base
vit_giant2	vit_large	vit_smallc                       sL   e Zd Z				ddedee dedededef fd	d
Zdd Z  Z	S )DinoV2Tname
out_layers	alt_startqknorm_start
rope_start	cat_tokenc              	      s   t    |dv sJ || _|| _|| _|| _|| _|| _tt	t
td}|| j }	| jdkr0dnd}
|	dd|
||||d| _d S )	N>   vitbvitsvitlvitg)r   r   r   r   r   ZswiglufusedZmlpi     )Zimg_size
patch_size	ffn_layerr   r   r   r   )super__init__r	   r
   r   r   r   r   r   r   r   r   
pretrained)selfr	   r
   r   r   r   r   kwargsZencoder_mapZ
encoder_fnr   	__class__ B/data/cameron/da3_repo/src/depth_anything_3/model/dinov2/dinov2.pyr      s0   


zDinoV2.__init__c                 K   s   | j j|| jfi |S )N)r   Zget_intermediate_layersr
   )r   xr   r   r   r   forward;   s   zDinoV2.forward)r   r   r   T)
__name__
__module____qualname__strr   intboolr   r    __classcell__r   r   r   r   r      s&    $r   )typingr   torch.nnnnZ0depth_anything_3.model.dinov2.vision_transformerr   r   r   r   Moduler   r   r   r   r   <module>   s   
