
    0	h              	           d dl Z d dlZd dlZd dlmZ d dlmc mZ dZd
de	de
de
de	fdZ G d d	ej                        Zy)    Nz%https://dl.fbaipublicfiles.com/dinov2	arch_name
patch_sizenum_register_tokensreturnc                 P    | j                  dd      d d }|rd| nd}d| | | S )N_    _regdinov2_)replace)r   r   r   compact_arch_nameregisters_suffixs        G/home/cameronsmith/repos/controll3r/MoGe/moge/model/dinov2/hub/utils.py_make_dinov2_model_namer      sI    !))#r22A67J123PR&'
|4D3EFF    c                   R     e Zd Z fdZd Z ej                         d        Z xZS )CenterPaddingc                 0    t         |           || _        y N)super__init__multiple)selfr   	__class__s     r   r   zCenterPadding.__init__   s     r   c                     t        j                  || j                  z        | j                  z  }||z
  }|dz  }||z
  }||fS )N   )mathceilr   )r   sizenew_sizepad_sizepad_size_leftpad_size_rights         r   _get_padzCenterPadding._get_pad   sI    99TDMM12T]]Bd? A!M1n,,r   c           	           t        t        j                  j                   fd|j                  d dd   D                    }t        j                  ||      }|S )Nc              3   @   K   | ]  }j                  |        y wr   )r%   ).0mr   s     r   	<genexpr>z(CenterPadding.forward.<locals>.<genexpr>%   s     1[q$--2B1[s      )list	itertoolschainfrom_iterableshapeFpad)r   xpadsoutputs   `   r   forwardzCenterPadding.forward#   sH    IOO111[AGGTYUVWYTYN1[[\q$r   )	__name__
__module____qualname__r   r%   torchinference_moder7   __classcell__)r   s   @r   r   r      s,    !- U r   r   )r   )r.   r   r;   torch.nnnntorch.nn.functional
functionalr2   _DINOV2_BASE_URLstrintr   Moduler    r   r   <module>rG      sY          ; Gs G GRU G^a GBII r   