
    khac                     n   d Z ddlmZ ddlmZmZmZmZ ddlZddl	m
c mZ ddlm
Z
 ddlmZmZ ddlmZmZmZmZmZmZ ddlmZ d	d
lmZ d	dlmZ d	dlmZmZ d	dlm Z m!Z! dgZ"d-dZ# G d de
jH                        Z%d-dZ& G d de
jH                        Z' G d de
jH                        Z( G d de
jH                        Z) G d de
jH                        Z* G d de
jH                        Z+ G d de
jH                        Z, G d de
jH                        Z-d  Z.d.d!Z/d/d"Z0 e  e0d#$       e0d#$       e0d#$       e0d#d%d&d'(       e0d#d%d&d'(       e0d#d%d&d'(       e0d#$       e0d#$       e0d#$       e0d#d%d&d'(       e0d#d%d&d'(       e0d#d%d&d'(      d)      Z1e!d.d*       Z2e!d.d+       Z3e!d.d,       Z4y)0z Next-ViT

As described in https://arxiv.org/abs/2207.05501

Next-ViT model defs and weights adapted from https://github.com/bytedance/Next-ViT, original copyright below
    )partial)ListOptionalTupleUnionN)nnIMAGENET_DEFAULT_MEANIMAGENET_DEFAULT_STD)DropPathtrunc_normal_ConvMlpget_norm_layerget_act_layeruse_fused_attn)ClassifierHead   )build_model_with_cfg)feature_take_indices)
checkpointcheckpoint_seq)generate_default_cfgsregister_modelNextViTc                    | j                   j                  }| j                  bt        j                  | j
                  |j                        j                  |j                               }t        j                  |      | _        | j                  j                  }||j                  du sJ d       |j                  du sJ d       |j                  j                  |j                        j                  d      }||j                   z  }|j                  |j                   |j                   z  |z  z
  }n.|j                  du sJ d       |j                  du sJ d       |j                  du sJ d       |j                  du sJ d       |j                  j                  |j                        j                  d      }	|j                  j                  |j                        j                  d      }
|	|j                   z  |
z  |j                   z  }|
|j                   z  |j                  |j                   |j                   z  |	z  z
  |j                   z
  z  |j                  z   }t#        | t        j$                        rE||z  }|j'                  |j)                  d|j+                  d            j-                  |             nt#        | t        j.                        r|j0                  d   dk(  r|j0                  d	   dk(  sJ |j3                  |j0                  d
   |j0                  d         }||z  }|j'                  |j)                  d|j+                  d            j-                  |             |j3                  |j0                  d
   |j0                  d   dd      }|j5                  |       || j                   _        || j                  _        y)z/ Merge pre BN to reduce inference runtime.
    N)deviceTz2Unsupported bn_module.track_running_stats is Falsez%Unsupported bn_module.affine is False      r         r   )weightdatabiastorchzerosout_chsr   typer   	Parametertrack_running_statsaffinerunning_varaddepspowrunning_mean
isinstanceLinearmul_viewsize	expand_asConv2dshapereshapeadd_)modulepre_bn_1pre_bn_2r    r$   r"   scale_invstdextra_weight
extra_biasscale_invstd_1scale_invstd_2s              O/var/www/teggl/fontify/venv/lib/python3.12/site-packages/timm/models/nextvit.pymerge_pre_bnrB      s"    ]]F{{FNN6==AFFv{{}Ull5);;D++t3i5ii3$&O(OO&++//=AA$G#hoo5]]X__x7L7L%L|%[[
++t3i5ii3$&O(OO&++t3i5ii3$&O(OO&!--11(,,?CCDI!--11(,,?CCDI%7.H8??Z0==8??X5J5J#J^#[[^f^s^ssu--  	 &"))$j(
L%%aQ8BB6JK	FBII	&||A!#Q1(<<<QaAj(
L%%aQ8BB6JKQa!QGIIjFMMFKK    c                   X     e Zd Zdddej                  ej
                  f fd	Zd Z xZS )ConvNormActr   r   c           	          t         t        |           t        j                  ||||d|d      | _         ||      | _         |       | _        y )Nr   Fkernel_sizestridepaddinggroupsr"   )superrE   __init__r   r5   convnormact)	selfin_chsr%   rH   rI   rK   
norm_layer	act_layer	__class__s	           rA   rM   zConvNormAct.__init__J   sI     	k4)+IIGVf52	 w'	;rC   c                 l    | j                  |      }| j                  |      }| j                  |      }|S N)rN   rO   rP   rQ   xs     rA   forwardzConvNormAct.forward[   s.    IIaLIIaLHHQKrC   )	__name__
__module____qualname__r   BatchNorm2dReLUrM   rZ   __classcell__rU   s   @rA   rE   rE   I   s&    
 ~~gg"rC   rE   c                 j    ||}t        |t        | |dz  z         |z  |z        }|d| z  k  r||z  }|S )Nr   g?)maxint)vdivisor	min_valuenew_vs       rA   _make_divisibleri   b   sJ    		3q7Q;/7:WDEEsQwLrC   c                   >     e Zd Zdej                  f fd	Zd Z xZS )
PatchEmbedr   c                    t         t        |           |dk(  rKt        j                  dddd      | _        t        j                  ||ddd      | _         ||      | _        y ||k7  rFt        j                         | _        t        j                  ||ddd      | _         ||      | _        y t        j                         | _        t        j                         | _        t        j                         | _        y )Nr   )r   r   TF)rI   	ceil_modecount_include_padr   )rH   rI   r"   )
rL   rk   rM   r   	AvgPool2dpoolr5   rN   rO   Identity)rQ   rR   r%   rI   rS   rU   s        rA   rM   zPatchEmbed.__init__m   s     	j$(*Q;VAY^_DI		&'qQVWDI"7+DIwDI		&'qQVWDI"7+DIDIDIDIrC   c                 `    | j                  | j                  | j                  |                  S rW   )rO   rN   rp   rX   s     rA   rZ   zPatchEmbed.forward   s"    yy499Q<011rC   )r[   r\   r]   r   r^   rM   rZ   r`   ra   s   @rA   rk   rk   l   s     	&*2rC   rk   c                   V     e Zd ZdZej
                  ej                  f fd	Zd Z xZ	S )ConvAttentionz,
    Multi-Head Convolutional Attention
    c           	          t         t        |           t        j                  ||ddd||z  d      | _         ||      | _         |       | _        t        j                  ||dd      | _        y )Nr   r   FrG   )rH   r"   )	rL   rt   rM   r   r5   group_conv3x3rO   rP   
projection)rQ   r%   head_dimrS   rT   rU   s        rA   rM   zConvAttention.__init__   sd    mT+-YYW!Qw(7JQV
 w'	;))GW!%PrC   c                     | j                  |      }| j                  |      }| j                  |      }| j                  |      }|S rW   )rv   rO   rP   rw   rQ   rY   outs      rA   rZ   zConvAttention.forward   s?      #iinhhsmooc"
rC   )
r[   r\   r]   __doc__r   r^   r_   rM   rZ   r`   ra   s   @rA   rt   rt      s%     8:~~SUSZSZ QrC   rt   c                        e Zd ZdZdddddej
                  ej                  f fd	Z ej                         d        Z
d Z xZS )	NextConvBlockz 
    Next Convolution Block
    r               g      @c
                 T   t         t        |           || _        || _        ||z  dk(  sJ t        ||||      | _        t        ||||	      | _        t        |      | _
         ||      | _        t        |t        ||z        |d|	      | _        t        |      | _        d| _        y )Nr   )rS   )rS   rT   T)hidden_featuresdropr"   rT   F)rL   r~   rM   rR   r%   rk   patch_embedrt   mhcar   attn_drop_pathrO   r   rd   mlpmlp_drop_pathis_fused)rQ   rR   r%   rI   	drop_pathr   rx   	mlp_ratiorS   rT   rU   s             rA   rM   zNextConvBlock.__init__   s     	mT+-!Q&&&%fgv*U!!	
	 'y1w'	) 34
 &i0rC   c                     | j                   sKt        | j                  j                  | j                         t        j                         | _        d| _         y y NT)r   rB   r   fc1rO   r   rq   rQ   s    rA   reparameterizezNextConvBlock.reparameterize   s8    }}tyy1DI DM rC   c                     | j                  |      }|| j                  | j                  |            z   }| j                  |      }|| j	                  | j                  |            z   }|S rW   )r   r   r   rO   r   r   rz   s      rA   rZ   zNextConvBlock.forward   s^    Q##DIIaL11iil""488C=11rC   r[   r\   r]   r|   r   r^   r_   rM   r#   no_gradr   rZ   r`   ra   s   @rA   r~   r~      sN     ~~gg#J U]]_! !rC   r~   c                        e Zd ZU dZej
                  j                  e   ed<   dddddde	j                  f fd	Zd	 Z xZS )
EfficientAttentionz-
    Efficient Multi-Head Self Attention
    
fused_attnNr   Tr   r   c	                 "   t         	|           || _        ||n|| _        | j                  |z  | _        || _        |dz  | _        t               | _        t        j                  || j                  |      | _        t        j                  || j                  |      | _        t        j                  || j                  |      | _        t        j                  | j                  | j                        | _        t        j                  |      | _        t        j                  |      | _        || _        |dz  | _        |dkD  r>t        j(                  | j&                  | j&                        | _         ||      | _        y d | _        d | _        y )Nr   )r"   r   r   )rH   rI   )rL   rM   dimout_dim	num_headsrx   scaler   r   r   r0   qkre   projDropout	attn_drop	proj_dropsr_ratioN_ratio	AvgPool1dsrrO   )
rQ   r   r   rx   qkv_biasr   r   r   rS   rU   s
            rA   rM   zEfficientAttention.__init__   s     	")"5w3X- %
(*3x83x83x8IIdhh5	I.I. 1}a<llt||DLLQDG"3DIDGDIrC   c                 "   |j                   \  }}}| j                  |      j                  ||| j                  | j                        j                  dddd      }| j                  B| j                  |j                  dd            }| j                  |      j                  dd      }| j                  |      j                  |d| j                  | j                        j                  dd      }| j                  |      j                  |d| j                  | j                        j                  dd      }| j                  r<t        j                  |||| j                  r| j                  j                   nd      }nL|| j"                  z  }||j                  dd      z  }|j%                  d	      }| j                  |      }||z  }|j                  dd      j                  |||      }| j'                  |      }| j)                  |      }|S )
Nr   r   r   r   r   )	dropout_pr   )r6   r   r7   r   rx   permuter   	transposerO   r   re   r   Fscaled_dot_product_attentiontrainingr   pr   softmaxr   r   )	rQ   rY   BNCr   r   re   attns	            rA   rZ   zEfficientAttention.forward   s   ''1aFF1IaDNNDMMBJJ1aQRTUV77Aq)*A		!&&q!,AFF1IaT^^T]]CMMaQRSFF1IaT^^T]]CMMaQRS??..1a.2mm$..**A
 DJJAq{{2r**D<<B<'D>>$'DqAKK1%%aA.IIaLNN1rC   )r[   r\   r]   r|   r#   jitFinalbool__annotations__r   BatchNorm1drM   rZ   r`   ra   s   @rA   r   r      sC     		%%
 ~~!FrC   r   c            	            e Zd ZdZdddddddej
                  ej                  f	 fd	Z ej                         d        Z
d	 Z xZS )
NextTransformerBlockz 
    Next Transformer Block
    r   r   r         ?r   c                    t         t        |           || _        || _        || _        t        t        ||z        d      | _        || j                  z
  | _	        t        || j                  |      | _         || j                        | _        t        | j                  |||	|
      | _        t        ||z        | _        t        | j                  | j                  d|      | _        t%        | j                  |||      | _        t        |d|z
  z        | _         ||      | _        t-        |t        ||z        ||
      | _        t        |      | _        d| _        y )Nr   )rx   r   r   r   r   )rI   rS   )rx   rS   rT   )r   rT   r   F)rL   r   rM   rR   r%   mix_block_ratiori   rd   mhsa_out_chsmhca_out_chsrk   r   norm1r   e_mhsar   mhsa_drop_pathrw   rt   r   mhca_drop_pathnorm2r   r   r   r   )rQ   rR   r%   r   rI   r   r   rx   r   r   r   rS   rT   rU   s                rA   rM   zNextTransformerBlock.__init__!  sN    	"D24.+C/0I,JBO#d&7&77%fd.?.?H 1 12
(
 'y?'BC$T%6%68I8IRS`jk!!	
	 'yA4G'HI(
) 34	
 &i0rC   c                 R   | j                   st        | j                  j                  | j                         | j                  j
                  t        | j                  j                  | j                  | j                  j
                         t        | j                  j                  | j                  | j                  j
                         t        j                         | j                  _        nTt        | j                  j                  | j                         t        | j                  j                  | j                         t        j                         | _        t        | j                  j                  | j                         t        j                         | _        d| _         y y r   )r   rB   r   r   r   rO   r   re   r   rq   r   r   r   r   s    rA   r   z#NextTransformerBlock.reparameterizeV  s    }}

3{{+T[[]]DJJ8H8HIT[[]]DJJ8H8HI#%;;= T[[]]DJJ7T[[]]DJJ7DJtzz2DJ DM rC   c                 B   | j                  |      }|j                  \  }}}}| j                  |      }|j                  ||d      j	                  dd      }| j                  | j                  |            }||j	                  dd      j                  ||||      z   }| j                  |      }|| j                  | j                  |            z   }t        j                  ||gd      }| j                  |      }|| j                  | j                  |            z   }|S )Nr   r   r   r   )r   r6   r   r7   r   r   r   rw   r   r   r#   catr   r   r   )rQ   rY   r   r   HWr{   s          rA   rZ   zNextTransformerBlock.forwardg  s    QWW
1ajjmkk!Q#--b"5!!$++c"23b"%--aAq99ooa D''		#77IIq#hA&jjm""488C=11rC   r   ra   s   @rA   r   r     sT      ~~gg3j U]]_! ! rC   r   c            	            e Zd Zdddddddej                  ej
                  f	 fd	Zej                  j                  d	d       Z
d Z xZS )
	NextStager   r         ?r   r   c                    t         |           d| _        g }t        |      D ]  \  }}|dk(  r|nd}||   }||   }t	        |	t
        t        f      r|	|   n|	}|t        u r%t        ||||||
||      }|j                  |       n/|t        u r't        ||||||
|||||      }|j                  |       |} t        j                  | | _        y )NFr   r   )rI   r   r   rx   rS   rT   )	r   rI   r   rx   r   r   r   rS   rT   )rL   rM   grad_checkpointing	enumerater/   listtupler~   appendr   r   
Sequentialblocks)rQ   rR   	block_chsblock_typesrI   r   r   r   r   r   rx   rS   rT   r   	block_idx
block_typer%   dprlayerrU   s                      rA   rM   zNextStage.__init__{  s    	"'%.{%;  	!Iz(A~V1F	*G$Y/J*4Yu*N)I&T]C]*%!!%)'	 e$33,!!%%$3')' e$FA 	D mmV,rC   c                     || _         y rW   )r   )rQ   enables     rA   set_grad_checkpointingz NextStage.set_grad_checkpointing  s
    "(rC   c                     | j                   r6t        j                  j                         st	        | j
                  |      }|S | j                  |      }|S rW   )r   r#   r   is_scriptingr   r   rX   s     rA   rZ   zNextStage.forward  sE    ""599+A+A+Ct{{A.A  AArC   T)r[   r\   r]   r   r^   r_   rM   r#   r   ignorer   rZ   r`   ra   s   @rA   r   r   y  sQ     ~~gg5-n YY) )rC   r   c                   .    e Zd Zdddddddddd	d
ej                  df fd	Zd Zej                  j                  d#d       Z
ej                  j                  d$d       Zej                  j                  dej                  fd       Zd%dedee   fdZ	 	 	 	 	 d&dej$                  deeeee   f      dededededeeej$                     eej$                  eej$                     f   f   fdZ	 	 	 d'deeee   f   dedefdZd Zd#d efd!Zd" Z xZS )(r     avg)@   r   r   r      
   r   )r   r   r   r   )   r   r   r   皙?r   r   r   Nc                    t         t        |           d| _        || _        t        |      }|t        t        j                  d      }nt        |      }dg|d   z  dg|d   dz
  z  dgz   g d	|d
   dz  z  dg|d   dz
  z  dgz   g| _
        t        | j                        D cg c]  \  }}t        |d   d
|d
z   z  d|       ! c}}| _        t        g|d   z  t        g|d   dz
  z  t        gz   t        t        t        t        t        g|d
   dz  z  t        g|d   dz
  z  t        gz   g| _        t        j"                  t%        ||d   dd
||      t%        |d   |d   dd||      t%        |d   |d
   dd||      t%        |d
   |d
   dd
||            | _        |d   x}}g }d}t)        j*                  d|t-        |            j/                  |      D cg c]  }|j1                          }}t3        t5        |            D ]^  }t7        || j                  |   | j                   |   ||   ||   |||
|	||   ||      }| j                  |   d   x}}||gz  }|||   z  }` |x| _        | _        t        j"                  | | _         ||      | _        tA        |||      | _!        t3        t5        |            D cg c]  }t-        |d |dz          dz
   c}| _"        | jG                          y c c}}w c c}w c c}w )NFT)inplace`   r      r      )  r   r   r   i   r      i   r   i   r   zstages.)num_chs	reductionr9   )rH   rI   rS   rT   )rR   r   r   rI   r   r   rx   r   r   r   rS   rT   )	pool_typein_featuresnum_classes)$rL   r   rM   r   r   r   r   r   r_   r   stage_out_chsr   dictfeature_infor~   r   stage_block_typesr   rE   stemr#   linspacesumsplittolistrangelenr   num_featureshead_hidden_sizestagesrO   r   headstage_out_idx_initialize_weights)rQ   in_chansr   global_poolstem_chsdepthsstrides	sr_ratiosdrop_path_rateattn_drop_rate	drop_raterx   r   rS   rT   iscrR   r%   r  idxrY   r   	stage_idxstagerU   s                            rA   rM   zNextViT.__init__  se   " 	gt%'"'&#J/
6I%i0I DF1IEVAY]#se+%a8EVAY]#tf,	
 !!3!34	6 a	 "rF!a%jQC=
 6 OfQi'Ovay1}-1E0FFM=-I]^bhijbkopbpqOvay1}-1E0FF	"H MM(1+1QS]irsXa[aV`luvXa[aV`luvXa[aV`luv	
	 $B<'#(>>!^S[#Q#W#WX^#_`aqxxz``s6{+ 	%I,,Y7 229=y)"9- /!(i.%#E  $11)<R@@FWugF6)$$C#	%$ 5<;D1mmV,w'	"[g[fg	CHVCUVCc&#'"23a7V  "_6, a0 Ws   '$K?"LL
c                    | j                         D ]  \  }}t        |t        j                        r\t	        |j
                  d       t        |d      sD|j                  Qt        j                  j                  |j                  d       |t        |t        j                        st	        |j
                  d       t        |d      s|j                  t        j                  j                  |j                  d        y )Ng{Gz?)stdr"   r   )named_modulesr/   r   r0   r   r    hasattrr"   init	constant_r5   )rQ   nms      rA   r
  zNextViT._initialize_weights  s    &&( 	1DAq!RYY'ahhC01f%!&&*<GG%%affa0Aryy)ahhC01f%!&&*<GG%%affa0	1rC   c                 2    t        d|rd      S ddg      S )Nz^stemz^stages\.(\d+))z^stages\.(\d+)\.blocks\.(\d+)N)z^norm)i )r   r   )r   )rQ   coarses     rA   group_matcherzNextViT.group_matcher  s/    (.$
 	
 9$5
 	
rC   c                 X    || _         | j                  D ]  }|j                  |        y )N)r   )r   r  r   )rQ   r   r  s      rA   r   zNextViT.set_grad_checkpointing%  s.    "([[ 	8E(((7	8rC   returnc                 .    | j                   j                  S rW   )r  fcr   s    rA   get_classifierzNextViT.get_classifier+  s    yy||rC   r   r  c                 L    || _         | j                  j                  ||       y )N)r   )r   r  reset)rQ   r   r  s      rA   reset_classifierzNextViT.reset_classifier/  s    &		{;rC   rY   indicesrO   
stop_early
output_fmtintermediates_onlyc                    |dv sJ d       g }t        t        | j                        |      \  }}	| j                  |      }t        | j                        dz
  }
t        j
                  j                         s|s| j                  }n| j                  d|	dz    }t        |      D ]  \  }}| j                  r+t        j
                  j                         st        ||      }n ||      }||v sJ||
k(  r'|r| j                  |      n|}|j                  |       v|j                  |        |r|S |
k(  r| j                  |      }||fS )a   Forward features that returns intermediates.

        Args:
            x: Input image tensor
            indices: Take last n blocks if int, all if None, select matching indices if sequence
            norm: Apply norm layer to compatible intermediates
            stop_early: Stop iterating over blocks when last desired intermediate hit
            output_fmt: Shape of intermediate feature outputs
            intermediates_only: Only return intermediate features
        Returns:

        )NCHWzOutput shape must be NCHW.r   N)r   r  r  r   r#   r   r   r   r   r   rO   r   )rQ   rY   r,  rO   r-  r.  r/  intermediatestake_indices	max_indexlast_idxr  feat_idxr  x_inters                  rA   forward_intermediateszNextViT.forward_intermediates3  s5   * Y&D(DD&"6s4;;7G"Qi IIaLt{{#a'99!!#:[[F[[)a-0F(0 
	,OHe&&uyy/E/E/Gua(!H<'x'.2diilG!((1!((+
	,   x		!A-rC   
prune_norm
prune_headc                     t        t        | j                        |      \  }}| j                  d|dz    | _        |rt        j                         | _        |r| j                  dd       |S )z@ Prune layers not required for specified intermediates.
        Nr   r    )r   r  r  r   rq   rO   r+  )rQ   r,  r9  r:  r3  r4  s         rA   prune_intermediate_layersz!NextViT.prune_intermediate_layersh  s]     #7s4;;7G"Qikk.9q=1DI!!!R(rC   c                     | j                  |      }| j                  r5t        j                  j	                         st        | j                  |      }n| j                  |      }| j                  |      }|S rW   )r   r   r#   r   r   r   r  rO   rX   s     rA   forward_featureszNextViT.forward_featuresx  sV    IIaL""599+A+A+Ct{{A.AAAIIaLrC   
pre_logitsc                 N    |r| j                  ||      S | j                  |      S )N)r@  )r  )rQ   rY   r@  s      rA   forward_headzNextViT.forward_head  s%    6@tyyzy2RdiiPQlRrC   c                 J    | j                  |      }| j                  |      }|S rW   )r?  rB  rX   s     rA   rZ   zNextViT.forward  s'    !!!$a rC   Fr   rW   )NFFr1  F)r   FT)r[   r\   r]   r   r^   rM   r
  r#   r   r   r#  r   Moduler(  rd   r   strr+  Tensorr   r   r   r   r8  r=  r?  rB  rZ   r`   ra   s   @rA   r   r     s    !  " ~~O#b	1 YY
 
 YY8 8
 YY		  <C <hsm < 8<$$',3 ||3  eCcN343  	3 
 3  3  !%3  
tELL!5tELL7I)I#JJ	K3 n ./$#	3S	>*  	 S$ SrC   c                     d| v r| S |j                         }i }t        |j                         | j                         |j                         | j                               D ]  \  }}}}|||<    |S )z$ Remap original checkpoints -> timm zhead.fc.weight)
state_dictzipkeysvalues)rI  modelDout_dictkakbvavbs           rA   checkpoint_filter_fnrT    sq    :%AHaffh
(9188:zGXGXGZ[ BB OrC   c           	          t        d t        |j                  dd            D              }|j                  d|      }t	        t
        | |ft        t        d|      d|}|S )Nc              3   &   K   | ]	  \  }}|  y wrW    ).0r  _s      rA   	<genexpr>z"_create_nextvit.<locals>.<genexpr>  s     \da\s   r  )r   r   r   r   out_indicesT)flatten_sequentialr[  )pretrained_filter_fnfeature_cfg)r   r   getpopr   r   rT  r   )variant
pretrainedkwargsdefault_out_indicesr[  rM  s         rA   _create_nextvitre    sl    \i

8\8Z.[\\**],?@K  2DkJ E LrC   c                 0    | dddddt         t        ddd
|S )	Nr   )r      rg  )   rh  gffffff?bicubiczstem.0.convzhead.fc)
urlr   
input_size	pool_sizecrop_pctinterpolationmeanr  
first_conv
classifierr	   )rj  rc  s     rA   _cfgrr    s0    =v9%.B#9  rC   ztimm/)	hf_hub_id)r   r   r   )   rt  r   )rs  rk  rl  rm  )znextvit_small.bd_in1kznextvit_base.bd_in1kznextvit_large.bd_in1kznextvit_small.bd_in1k_384znextvit_base.bd_in1k_384znextvit_large.bd_in1k_384znextvit_small.bd_ssld_6m_in1kznextvit_base.bd_ssld_6m_in1kznextvit_large.bd_ssld_6m_in1kz!nextvit_small.bd_ssld_6m_in1k_384z nextvit_base.bd_ssld_6m_in1k_384z!nextvit_large.bd_ssld_6m_in1k_384c           	      P    t        dd      }t        	 dd| it        |fi |}|S )Nr   r   r  r  rb  )nextvit_smallr   re  rb  rc  
model_argsrM  s       rA   rw  rw    =    ]3?JN$.N26z2LV2LNELrC   c           	      P    t        dd      }t        	 dd| it        |fi |}|S )N)r   r      r   皙?rv  rb  )nextvit_baserx  ry  s       rA   r  r    s=    ]3?JM#-M15j1KF1KMELrC   c           	      P    t        dd      }t        	 dd| it        |fi |}|S )N)r   r      r   r~  rv  rb  )nextvit_largerx  ry  s       rA   r  r    r{  rC   rW   rD  )r<  )5r|   	functoolsr   typingr   r   r   r   r#   torch.nn.functionalr   
functionalr   	timm.datar
   r   timm.layersr   r   r   r   r   r   r   _builderr   	_featuresr   _manipulater   r   	_registryr   r   __all__rB   rE  rE   ri   rk   rt   r~   r   r   r   r   rT  re  rr  default_cfgsrw  r  r  rW  rC   rA   <module>r     s    / /     A g g & * + 3 <+,^")) 22 24BII ,7BII 7tC CLZ299 ZzB		 BJIbii IX %! ! " "& Hs" !% Hs! "& Hs"
 &*& %)% &*& *. Hs* )- Hs) *. Hs*Q,& ,^      rC   