
    RЦiWR                        S r SSKrSSKJrJrJrJrJrJrJ	r	  SSK
r
SSKJr  SSKJs  Jr  SSKJrJr  SSKJrJrJrJrJrJrJr  SSKJr  SSKJr  SS	KJ r   SS
K!J"r"J#r#  S/r$ " S S\RJ                  5      r& " S S\RJ                  5      r' " S S\RJ                  5      r( " S S\RJ                  5      r) " S S\RJ                  5      r* " S S\RJ                  5      r+S r,S%S jr-S&S jr.\#" \." SS9\." SS9\." SS9\." SS9\." SS9\." SS9\." SS9S.5      r/\"S%S\+4S jj5       r0\"S%S\+4S jj5       r1\"S%S\+4S  jj5       r2\"S%S\+4S! jj5       r3\"S%S\+4S" jj5       r4\"S%S\+4S# jj5       r5\"S%S\+4S$ jj5       r6g)'a  Pyramid Vision Transformer v2

@misc{wang2021pvtv2,
      title={PVTv2: Improved Baselines with Pyramid Vision Transformer},
      author={Wenhai Wang and Enze Xie and Xiang Li and Deng-Ping Fan and Kaitao Song and Ding Liang and
        Tong Lu and Ping Luo and Ling Shao},
      year={2021},
      eprint={2106.13797},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

Based on Apache 2.0 licensed code at https://github.com/whai362/PVT

Modifications and timm support by / Copyright 2022, Ross Wightman
    N)CallableListOptionalTupleUnionTypeAnyIMAGENET_DEFAULT_MEANIMAGENET_DEFAULT_STD)DropPathcalculate_drop_path_rates	to_2tuple	to_ntupletrunc_normal_	LayerNormuse_fused_attn   )build_model_with_cfg)feature_take_indices)
checkpoint)register_modelgenerate_default_cfgsPyramidVisionTransformerV2c                      ^  \ rS rSrSS\R
                  SSSS4S\S\\   S\\   S\\R                     S	\
S
\4U 4S jjjrS\\   4S jrSrU =r$ )MlpWithDepthwiseConv#   N        Fin_featureshidden_featuresout_features	act_layerdrop
extra_reluc	                   > [         T
U ]  5         XxS.n	U=(       d    UnU=(       d    Un[        R                  " X40 U	D6U l        U(       a  [        R
                  " 5       O[        R                  " 5       U l        [        R                  " X"SSS4SUS.U	D6U l	        U" 5       U l
        [        R                  " X#40 U	D6U l        [        R                  " U5      U l        g )Ndevicedtype   r   T)biasgroups)super__init__nnLinearfc1ReLUIdentityreluConv2ddwconvactfc2Dropoutr#   )selfr   r    r!   r"   r#   r$   r'   r(   dd	__class__s             Q/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/timm/models/pvt_v2.pyr-   MlpWithDepthwiseConv.__init__$   s     	/#2{)8[99[@R@!+BGGI	ii!QsPT]lsprs;99_AbAJJt$	    	feat_sizec                    U R                  U5      nUR                  u  p4nUR                  SS5      R                  X5US   US   5      nU R	                  U5      nU R                  U5      nUR                  S5      R                  SS5      nU R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU$ )Nr      r   )
r0   shape	transposeviewr3   r5   flattenr6   r#   r7   )r9   xr?   BNCs         r<   forwardMlpWithDepthwiseConv.forward:   s    HHQK''aKK1""11y|DIIaLKKNIIaL""1a(HHQKIIaLHHQKIIaLr>   )r6   r#   r5   r0   r7   r3   )__name__
__module____qualname____firstlineno__r.   GELUintr   r   Modulefloatboolr-   r   rJ   __static_attributes____classcell__r;   s   @r<   r   r   #   s     .2*.)+$%% &c]% #3-	%
 BII% % % %,DI  r>   r   c                      ^  \ rS rSr% \R
                  R                  \   \S'           SS\	S\	S\	S\S\S\
S	\
4U 4S
 jjjrS\\	   4S jrSrU =r$ )	AttentionH   
fused_attndim	num_headssr_ratiolinear_attnqkv_bias	attn_drop	proj_dropc
                   > [         TU ]  5         XS.n
X-  S:X  d   SU SU S35       eXl        X l        X-  U l        U R                  S-  U l        [        5       U l        [        R                  " X4SU0U
D6U l
        [        R                  " XS-  4SU0U
D6U l        [        R                  " U5      U l        [        R                  " X40 U
D6U l        [        R                  " U5      U l        U(       d^  S U l        US	:  a;  [        R"                  " X4X3S
.U
D6U l        [        R&                  " U40 U
D6U l        OS U l        S U l        S U l        g [        R,                  " S5      U l        [        R"                  " X4S	S	S
.U
D6U l        [        R&                  " U40 U
D6U l        [        R.                  " 5       U l        g )Nr&   r   zdim z  should be divided by num_heads .g      r*   rA   r   )kernel_sizestride   )r,   r-   r\   r]   head_dimscaler   r[   r.   r/   qkvr8   ra   projrb   poolr4   srr   normr6   AdaptiveAvgPool2drP   )r9   r\   r]   r^   r_   r`   ra   rb   r'   r(   r:   r;   s              r<   r-   Attention.__init__K   s    	/!#]tC50PQZP[[\%]]#"(]]d*
(*39(9b9))Cq>x>2>I.IIc-"-	I.DI!|))CZ(ZWYZLL33	 	DH,,Q/DIiiHaHRHDGS/B/DIwwyDHr>   r?   c                 R   UR                   u  p4nUu  pgU R                  U5      R                  X4U R                  S5      R	                  SSSS5      nU R
                  b  UR	                  SSS5      R                  X5Xg5      nU R                  U R                  U5      5      R                  X5S5      R	                  SSS5      nU R                  U5      nU R                  U5      nU R                  U5      R                  USSU R                  U R                  5      R	                  SSSSS5      n	GO
U R                  b  UR	                  SSS5      R                  X5Xg5      nU R                  U5      R                  X5S5      R	                  SSS5      nU R                  U5      nU R                  U5      R                  USSU R                  U R                  5      R	                  SSSSS5      n	OKU R                  U5      R                  USSU R                  U R                  5      R	                  SSSSS5      n	U	R                  S5      u  pU R                  (       a=  [        R                  " XXR                  (       a  U R                   R"                  OSS9nOFXR$                  -  nXR'                  S	S5      -  nUR)                  SS
9nU R!                  U5      nX-  nUR'                  SS5      R                  X4U5      nU R+                  U5      nU R-                  U5      nU$ )Nr   rA   r   r)      r   )	dropout_pr\   )rB   rj   reshaper]   permuterm   rn   ro   r6   rk   rh   unbindr[   Fscaled_dot_product_attentiontrainingra   pri   rC   softmaxrl   rb   )r9   rF   r?   rG   rH   rI   HWrj   rk   kvattns                r<   rJ   Attention.forwardv   s   ''aFF1IaDNNB7??1aK99 		!Q"**16A		!%--aB7??1aHA		!AA##Ar1dnndmmLTTUVXY[\^_abcBww"IIaA&..qQ:GGAJ&&qR088AqAIIaLWWQZ''2q$..$--PXXYZ\]_`bcefgWWQZ''2q$..$--PXXYZ\]_`bcefgyy|??..qQVcVc$..BRBRiklAJJA{{2r**D<<B<'D>>$'DAKK1%%aA.IIaLNN1r>   )r6   ra   r\   r[   rh   rk   ro   r]   rm   rl   rb   rj   ri   rn   )   r   FTr   r   NN)rL   rM   rN   rO   torchjitFinalrT   __annotations__rQ   rS   r-   r   rJ   rU   rV   rW   s   @r<   rY   rY   H   s    		%%
  %!!!)!)! )! 	)!
 )! )! )! )! )!V!DI ! !r>   rY   c                      ^  \ rS rSrSSSSSSS\R
                  \SS4S\S\S	\S
\S\	S\	S\S\S\S\
\R                     S\
\R                     4U 4S jjjrS\\   4S jrSrU =r$ )Block         @r   Fr   Nr\   r]   	mlp_ratior^   r_   r`   rb   ra   	drop_pathr"   
norm_layerc           
        > [         TU ]  5         XS.nU" U40 UD6U l        [        U4UUUUUUS.UD6U l        U	S:  a  [        U	5      O[        R                  " 5       U l        U" U40 UD6U l	        [        SU[        X-  5      U
UUS.UD6U l        U	S:  a  [        U	5      U l        g [        R                  " 5       U l        g )Nr&   )r]   r^   r_   r`   ra   rb   r   )r   r    r"   r#   r$    )r,   r-   norm1rY   r   r   r.   r2   
drop_path1norm2r   rQ   mlp
drop_path2)r9   r\   r]   r   r^   r_   r`   rb   ra   r   r"   r   r'   r(   r:   r;   s                  r<   r-   Block.__init__   s      	/*r*
	
#	
 	
	 2;R(9-R[[]*r*
' 
0"
 
 2;R(9-R[[]r>   r?   c                     XR                  U R                  U R                  U5      U5      5      -   nXR                  U R	                  U R                  U5      U5      5      -   nU$ N)r   r   r   r   r   r   )r9   rF   r?   s      r<   rJ   Block.forward   sO    		$**Q- CDDA	 BCCr>   )r   r   r   r   r   r   )rL   rM   rN   rO   r.   rP   r   rQ   rS   rT   r   rR   r-   r   rJ   rU   rV   rW   s   @r<   r   r      s      " %"!!!)+*3(S(S (S 	(S
 (S (S (S (S (S (S BII(S RYY(S (STDI  r>   r   c            	       j   ^  \ rS rSrSr      S
S\\\\\4   4   S\S\S\4U 4S jjjrS r	S	r
U =r$ )OverlapPatchEmbed   zImage to Patch Embedding
    
patch_sizerf   in_chans	embed_dimc                 
  > [         TU ]  5         XVS.n[        U5      n[        U5      U:  d   S5       eXl        [
        R                  " X4U4X!S   S-  US   S-  4S.UD6U l        [
        R                  " U40 UD6U l	        g )Nr&   z!Set larger patch_size than strider   rA   r   )rf   padding)
r,   r-   r   maxr   r.   r4   rl   r   ro   )	r9   r   rf   r   r   r'   r(   r:   r;   s	           r<   r-   OverlapPatchEmbed.__init__   s     	/z*
:'L)LL'$IISqMQ$6
18J#KSOQS	 LL1b1	r>   c                 r    U R                  U5      nUR                  SSSS5      nU R                  U5      nU$ )Nr   rA   r)   r   )rl   ry   ro   r9   rF   s     r<   rJ   OverlapPatchEmbed.forward   s5    IIaLIIaAq!IIaLr>   )ro   r   rl   )rg   rt   r)   i   NN)rL   rM   rN   rO   __doc__r   rQ   r   r-   rJ   rU   rV   rW   s   @r<   r   r      sh     78 2c5c?232 2 	2
 2 2& r>   r   c                      ^  \ rS rSrSSSSSSSSS\SS4S	\S
\S\S\S\S\S\S\S\S\S\S\\	\   \4   S\
4U 4S jjjrS rSrU =r$ )PyramidVisionTransformerStage   Tr   r   Fr   r   Nr\   dim_outdepth
downsampler]   r^   r_   r   r`   rb   ra   r   r   c                 z  > [         TU ]  5         XS.nSU l        U(       a  [        SSSUUS.UD6U l        OX:X  d   eS U l        [
        R                  " [        U5       Vs/ s H3  n[        SUUUUUU	U
U[        U[        5      (       a  UU   OUUS.
UD6PM5     sn5      U l        U" U40 UD6U l        g s  snf )Nr&   Fr)   rA   r   rf   r   r   )
r\   r]   r^   r_   r   r`   rb   ra   r   r   r   )r,   r-   grad_checkpointingr   r   r.   
ModuleListranger   
isinstancelistblocksro   )r9   r\   r   r   r   r]   r^   r_   r   r`   rb   ra   r   r   r'   r(   r:   ir;   s                     r<   r-   &PyramidVisionTransformerStage.__init__   s    $ 	/"'/ !	
 DO >!>"DOmm <%!  a &+ &
#&0D&A&Aily!&
 &
  %! " w-"-	%!s   #:B8c                    U R                   b  U R                  U5      nUR                  u  p#pEX44nUR                  USU5      nU R                   HM  nU R                  (       a1  [
        R                  R                  5       (       d  [        XqU5      nME  U" X5      nMO     U R                  U5      nUR                  X&S   US   S5      R                  SSSS5      R                  5       nU$ )Nrs   r   r   r)   rA   )r   rB   rx   r   r   r   r   is_scriptingr   ro   ry   
contiguous)r9   rF   rG   r   r   rI   r?   blks           r<   rJ   %PyramidVisionTransformerStage.forward  s    ??&"AWW
aF	IIaQ;;C&&uyy/E/E/G/Gsy1%	 
 IIaLIIa1y|R8@@Aq!LWWYr>   )r   r   r   ro   )rL   rM   rN   rO   r   rQ   rT   rS   r   r   r   r-   rJ   rU   rV   rW   s   @r<   r   r      s      $ %"!!!36#,!0.0. 0. 	0.
 0. 0. 0. 0. 0. 0. 0. 0. T%[%/00. !0. 0.d r>   r   c                      ^  \ rS rSrSSSSSSSS	S
SSSSS\SS4S\S\S\S\\S4   S\\S4   S\\S4   S\\S4   S\\S4   S\	S\	S\S\S\S\S\
\R                     4U 4S jjjrS rS  r\R"                  R$                  S! 5       r\R"                  R$                  S6S" j5       r\R"                  R$                  S7S# j5       rS$\R                  4S% jrS8S\S\\   4S& jjr     S9S'\R2                  S(\\\\\   4      S)\	S*\	S+\S,\	S$\\\R2                     \\R2                  \\R2                     4   4   4S- jjr   S:S(\\\\   4   S.\	S/\	4S0 jjrS1 rS6S2\	4S3 jjrS4 r S5r!U =r"$ );r   i/  r)     avgr)   rt      r)   )@            )r   rA   rt   r   )r   rt   rA   r   )       @r   r   r   TFr   Nr   num_classesglobal_pooldepths.
embed_dimsr]   	sr_ratios
mlp_ratiosr`   linear	drop_rateproj_drop_rateattn_drop_ratedrop_path_rater   c                   > [         TU ]  5         UUS.nX l        Xl        US;   d   eX0l        X@l        [        U5      n[        U5      " U5      n[        U5      " U5      n[        U5      " U5      n[        U5      U:X  d   e/ U l        [        SSSUUS   S.UD6U l
        [        XSS9nSnUS   n/ n[        U5       Hj  nU[        SUUU   UU   US:  UU   UU   UU   U
U	UUUU   US	.UD6/-  nUU   nUUU   -  nU =R                  [        USS
U-  -  SU 3S9/-  sl        Ml     [        R                   " U6 U l        US   =U l        U l        [        R(                  " U5      U l        US:  a  [        R,                  " US   U40 UD6O[        R.                  " 5       U l        U R3                  U R4                  5        g )Nr&   r    rg   rt   r   r   T)	stagewise)r\   r   r   r   r]   r^   r   r_   r`   rb   ra   r   r   rA   stages.)num_chs	reductionmodulers   r   )r,   r-   r   r   r   r   lenr   feature_infor   patch_embedr   r   r   dictr.   
Sequentialstagesnum_featureshead_hidden_sizer8   	head_dropr/   r2   headapply_init_weights)r9   r   r   r   r   r   r]   r   r   r`   r   r   r   r   r   r   r'   r(   r:   
num_stagesdprcurprev_dimr   r   r;   s                            r<   r-   #PyramidVisionTransformerV2.__init__0  s   ( 	/& k)))&[
z*:6
j))4	j))4	::---, 
 m	

 
 ($Oa=z"A4 "1Qiq5#A,"1$Q-"!((a&%   F  "!}H6!9C$x1q!t8V]^_]`Ta"b!cc' #( mmV, 5?rNBD1I.DORSOBIIjnk@R@Y[YdYdYf	

4%%&r>   c                    [        U[        R                  5      (       am  [        UR                  SS9  [        U[        R                  5      (       a9  UR
                  b+  [        R                  R                  UR
                  S5        g g g [        U[        R                  5      (       a  UR                  S   UR                  S   -  UR                  -  nX!R                  -  nUR                  R                  R                  S[        R                  " SU-  5      5        UR
                  b%  UR
                  R                  R!                  5         g g g )Ng{Gz?)stdr   r   g       @)r   r.   r/   r   weightr*   init	constant_r4   re   out_channelsr+   datanormal_mathsqrtzero_)r9   mfan_outs      r<   r   (PyramidVisionTransformerV2._init_weights{  s    a##!((,!RYY''AFF,>!!!&&!, -?'299%%mmA&q)99ANNJG GHHMM!!!TYYsW}%=>vv!!!# "	 &r>   c                 &    SU R                   l        g )NF)r   requires_gradr9   s    r<   freeze_patch_emb+PyramidVisionTransformerV2.freeze_patch_emb  s    ).&r>   c                     0 $ r   r   r   s    r<   no_weight_decay*PyramidVisionTransformerV2.no_weight_decay  s    	r>   c                     [        SSS9nU$ )Nz^patch_embedz^stages\.(\d+))stemr   )r   )r9   coarsematchers      r<   group_matcher(PyramidVisionTransformerV2.group_matcher  s     $
 r>   c                 6    U R                    H	  nXl        M     g r   )r   r   )r9   enabless      r<   set_grad_checkpointing1PyramidVisionTransformerV2.set_grad_checkpointing  s    A#)  r>   returnc                     U R                   $ r   )r   r   s    r<   get_classifier)PyramidVisionTransformerV2.get_classifier  s    yyr>   c                    Xl         Ub  US;   d   eX l        [        U R                  S5      (       a   U R                  R                  R
                  OS n[        U R                  S5      (       a   U R                  R                  R                  OS nUS:  a&  [        R                  " U R                  XUS9U l        g [        R                  " 5       U l        g )Nr   r   r   r&   )r   r   hasattrr   r   r'   r(   r.   r/   r   r2   )r9   r   r   r'   r(   s        r<   reset_classifier+PyramidVisionTransformerV2.reset_classifier  s    &"+---*,3DIIx,H,H!!((d*1$))X*F*F		  &&D]hkl]lBIId//SXY	rtr}r}r	r>   rF   indicesro   
stop_early
output_fmtintermediates_onlyc                    US;   d   S5       e/ n[        [        U R                  5      U5      u  pU R                  U5      n[        R
                  R                  5       (       d  U(       d  U R                  n
OU R                  SU	S-    n
[        U
5       H%  u  pU" U5      nX;   d  M  UR                  U5        M'     U(       a  U$ X4$ )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.Nr   )	r   r   r   r   r   r   r   	enumerateappend)r9   rF   r  ro   r  r  r  intermediatestake_indices	max_indexr   feat_idxstages                r<   forward_intermediates0PyramidVisionTransformerV2.forward_intermediates  s    * Y&D(DD&"6s4;;7G"Q Q99!!##:[[F[[)a-0F(0OHaA'$$Q'  1
   r>   
prune_norm
prune_headc                     [        [        U R                  5      U5      u  pEU R                  SUS-    U l        U(       a  U R                  SS5        U$ )z?Prune layers not required for specified intermediates.
        Nr   r   r   )r   r   r   r  )r9   r  r&  r'  r   r!  s         r<   prune_intermediate_layers4PyramidVisionTransformerV2.prune_intermediate_layers  sK     #7s4;;7G"Qkk.9q=1!!!R(r>   c                 J    U R                  U5      nU R                  U5      nU$ r   )r   r   r   s     r<   forward_features+PyramidVisionTransformerV2.forward_features  s$    QKKNr>   
pre_logitsc                     U R                   (       a  UR                  SS9nU R                  U5      nU(       a  U$ U R                  U5      $ )N)rs   rv   rw   )r   meanr   r   )r9   rF   r.  s      r<   forward_head'PyramidVisionTransformerV2.forward_head  s>    8$ANN1q0DIIaL0r>   c                 J    U R                  U5      nU R                  U5      nU$ r   )r,  r1  r   s     r<   rJ   "PyramidVisionTransformerV2.forward  s'    !!!$a r>   )r   r   r   r   r   r   r   r   r   r   r   F)Tr   )NFFr  F)r   FT)#rL   rM   rN   rO   r   rQ   strr   rS   rT   r   r.   rR   r-   r   r   r   r   ignorer  r  r  r  r   r  Tensorr   r   r$  r)  r,  r1  rJ   rU   rV   rW   s   @r<   r   r   /  s    #$&2*=)5)5,<! !$&$&$&*3%I'I' I' 	I'
 #s(OI' c3hI' S#XI' S#XI' eSj)I' I' I' I' "I' "I' "I'  RYY!I' I'V
$/ YY  YY  YY* *		 @C @hsm @ 8<$$',( ||(  eCcN34(  	( 
 (  (  !%(  
tELL!5tELL7I)I#JJ	K( X ./$#	3S	>*  	
1$ 1 r>   c                    SU ;   a  U $ 0 nSSK nU R                  5        H  u  pEUR                  S5      (       aH  UR                  SS5      nUR                  SS5      nUR                  SS	5      nUR                  S
S5      nUR                  SS5      nUR	                  SS U5      nUR	                  SS U5      nXRU'   M     U$ )z#Remap original checkpoints -> timm zpatch_embed.proj.weightr   Nr   patch_embed1patch_embed2zstages.1.downsamplepatch_embed3zstages.2.downsamplepatch_embed4zstages.3.downsamplezdwconv.dwconvr5   zblock(\d+).(\d+)c                 f    S[        U R                  S5      5      S-
   SU R                  S5       3$ )Nr   r   z.blocks.rA   rQ   grouprF   s    r<   <lambda>&checkpoint_filter_fn.<locals>.<lambda>  s2    GC
Oa<O;PPXYZY`Y`abYcXd2er>   z
^norm(\d+)c                 D    S[        U R                  S5      5      S-
   S3$ )Nr   r   z.normr?  rA  s    r<   rB  rC    s    gc!''!*o6I5J%,Pr>   )reitems
startswithreplacesub)
state_dictmodelout_dictrE  r   r   s         r<   checkpoint_filter_fnrM    s     J.H  "<<&&		.-8A		.*?@A		.*?@A		.*?@AIIox0FF&(eghiFF="PRST # Or>   c           	          [        [        S5      5      nUR                  SU5      n[        [        U U4[
        [        SUS9S.UD6nU$ )Nrt   out_indicesT)flatten_sequentialrO  )pretrained_filter_fnfeature_cfg)tupler   popr   r   rM  r   )variant
pretrainedkwargsdefault_out_indicesrO  rK  s         r<   _create_pvt2rY    sY    a/**],?@K " 2DkJ E Lr>   c                 4    U SSSSS[         [        SSSS	S
.UE$ )Nr   )r)      r[  )rg   rg   g?bicubiczpatch_embed.projr   Fz
apache-2.0)urlr   
input_size	pool_sizecrop_pctinterpolationr0  r   
first_conv
classifierfixed_input_sizelicenser
   )r]  rW  s     r<   _cfgrf    s6    4}SY)%.B(TY  r>   ztimm/)	hf_hub_id)zpvt_v2_b0.in1kzpvt_v2_b1.in1kzpvt_v2_b2.in1kzpvt_v2_b3.in1kzpvt_v2_b4.in1kzpvt_v2_b5.in1kzpvt_v2_b2_li.in1kr  c           	      F    [        SSSS9n[        SSU 0[        U40 UD6D6$ )NrA   rA   rA   rA   )    r      r   r   rA      r   r   r   r]   rV  )	pvt_v2_b0r   rY  rV  rW  
model_argss      r<   ro  ro  (  s0    \6HT`aJY
Yd:>XQW>XYYr>   c           	      F    [        SSSS9n[        SSU 0[        U40 UD6D6$ )Nri  r   r   i@  r   rl  rn  rV  )	pvt_v2_b1rp  rq  s      r<   ru  ru  .  0    \6IUabJY
Yd:>XQW>XYYr>   c           	      F    [        SSSS9n[        SSU 0[        U40 UD6D6$ )Nr   rt  rl  rn  rV  )	pvt_v2_b2rp  rq  s      r<   rx  rx  4  rv  r>   c           	      F    [        SSSS9n[        SSU 0[        U40 UD6D6$ )N)r)   rt      r)   rt  rl  rn  rV  )	pvt_v2_b3rp  rq  s      r<   r{  r{  :  0    ]7JVbcJY
Yd:>XQW>XYYr>   c           	      F    [        SSSS9n[        SSU 0[        U40 UD6D6$ )N)r)   r      r)   rt  rl  rn  rV  )	pvt_v2_b4rp  rq  s      r<   r  r  @  r|  r>   c           	      H    [        SSSSS9n[        SSU 0[        U40 UD6D6$ )N)r)   r   (   r)   rt  rl  )rt   rt   rt   rt   )r   r   r]   r   rV  )	pvt_v2_b5rp  rq  s      r<   r  r  F  s6    )<amoJY
Yd:>XQW>XYYr>   c           	      H    [        SSSSS9n[        SSU 0[        U40 UD6D6$ )Nr   rt  rl  T)r   r   r]   r   rV  )pvt_v2_b2_lirp  rq  s      r<   r  r  M  s6    (;|\`bJ\:\jA[TZA[\\r>   r5  )r   )7r   r   typingr   r   r   r   r   r   r	   r   torch.nnr.   torch.nn.functional
functionalr{   	timm.datar   r   timm.layersr   r   r   r   r   r   r   _builderr   	_featuresr   _manipulater   	_registryr   r   __all__rR   r   rY   r   r   r   r   rM  rY  rf  default_cfgsro  ru  rx  r{  r  r  r  r   r>   r<   <module>r     s  "  D D D     A { { { * + # <'
("299 "JO		 Od0BII 0f		 :BBII BJ~ ~B( %W-W-W-W-W-W-0&  Z-G Z Z
 Z-G Z Z
 Z-G Z Z
 Z-G Z Z
 Z-G Z Z
 Z-G Z Z ]0J ] ]r>   