
    RЦiT                        S r SSKJrJrJrJrJr  SSKrSSKJ	r	  SSK
JrJr  SSKJrJrJrJr  SSKJr  SSKJr  SS	KJrJr  SS
KJrJr  S/r " S S\	R:                  5      r " S S\	R:                  5      r " S S\	R@                  5      r! " S S\	R@                  5      r" " S S\	R@                  5      r# " S S\	R@                  5      r$ " S S\	R@                  5      r% " S S\	R@                  5      r& " S S\	R@                  5      r' " S S\	R@                  5      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 S!9\)" S S!9\)" S S!9\)" S S!9\)" S S!9\)" S S!9S".5      r*S-S# jr+\S-S$ j5       r,\S-S% j5       r-\S-S& j5       r.\S-S' j5       r/\S-S( j5       r0\S-S) j5       r1\S-S* j5       r2\S-S+ j5       r3g).a  RepViT

Paper: `RepViT: Revisiting Mobile CNN From ViT Perspective`
    - https://arxiv.org/abs/2307.09283

@misc{wang2023repvit,
      title={RepViT: Revisiting Mobile CNN From ViT Perspective},
      author={Ao Wang and Hui Chen and Zijia Lin and Hengjun Pu and Guiguang Ding},
      year={2023},
      eprint={2307.09283},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

Adapted from official impl at https://github.com/jameslahm/RepViT
    )ListOptionalTupleUnionTypeNIMAGENET_DEFAULT_MEANIMAGENET_DEFAULT_STD)SqueezeExcitetrunc_normal_	to_ntuple	to_2tuple   )build_model_with_cfg)feature_take_indices)
checkpointcheckpoint_seq)register_modelgenerate_default_cfgsRepVitc                      ^  \ rS rSr        SS\S\S\S\S\S\S\S	\4U 4S
 jjjr\R                  " 5       S 5       r	Sr
U =r$ )ConvNorm    in_dimout_dimksstridepaddilationgroupsbn_weight_initc                   > XS.n[         TU ]  5         U R                  S[        R                  " XX4XVU4SS0UD65        U R                  S[        R
                  " U40 UD65        [        R                  R                  U R                  R                  U5        [        R                  R                  U R                  R                  S5        g )NdevicedtypecbiasFbnr   )super__init__
add_modulennConv2dBatchNorm2dinit	constant_r(   weightr'   )selfr   r   r   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/repvit.pyr*   ConvNorm.__init__!   s     /RYYvCSYl`eliklmbnnW;;<
$''...9
$'',,*    c                 \   U R                   R                  5       u  pUR                  UR                  UR                  -   S-  -  nUR                  US S 2S S S 4   -  nUR
                  UR                  UR                  -  UR                  UR                  -   S-  -  -
  n[        R                  " UR                  S5      U R                  R                  -  UR                  S5      UR                  SS  U R                  R                  U R                  R                  U R                  R                  U R                  R                  UR                  R                   S9nUR                  R"                  R%                  U5        UR
                  R"                  R%                  U5        U$ )N      ?r   r      )r   paddingr   r    r$   )_modulesvaluesr1   running_varepsr'   running_meanr,   r-   sizer&   r    shaper   r;   r   r$   datacopy_)r2   r&   r(   wbms         r5   fuseConvNorm.fuse5   s-   $$&II"&&0S88HHqD$,--GGboo		1R^^bff5LQT4TTTIIFF1I%FF1IGGABK66==FFNNVV__66==88??	
 	
A	!r7    )r   r   r   r   r   r   NN)__name__
__module____qualname____firstlineno__intfloatr*   torchno_gradrH   __static_attributes____classcell__r4   s   @r5   r   r       s    
 $%++ + 	+
 + + + + "+ +( ]]_ r7   r   c            	       v   ^  \ rS rSr    S	S\S\S\S\4U 4S jjjr\R                  " 5       S 5       r
SrU =r$ )

NormLinearJ   r   r   r'   stdc                 ~  > XVS.n[         TU ]  5         U R                  S[        R                  " U40 UD65        U R                  S[        R
                  " X4SU0UD65        [        U R                  R                  US9  U(       a5  [        R                  R                  U R                  R                  S5        g g )Nr#   r(   lr'   )rY   r   )r)   r*   r+   r,   BatchNorm1dLinearr   r[   r1   r/   r0   r'   )	r2   r   r   r'   rY   r$   r%   r3   r4   s	           r5   r*   NormLinear.__init__K   s     /bnnV:r:;RYYvHTHRHIdffmm-GGdffkk1- r7   c                 f   U R                   R                  5       u  pUR                  UR                  UR                  -   S-  -  nUR
                  U R                  R                  U R                  R                  -  UR                  UR                  -   S-  -  -
  nUR                  US S S 24   -  nUR
                  c#  X@R                  R                  R                  -  nO<UR                  US S 2S 4   -  R                  S5      U R                  R
                  -   n[        R                  " UR                  S5      UR                  S5      UR                  R                  S9nUR                  R                  R!                  U5        UR
                  R                  R!                  U5        U$ )Nr9   r   r   r$   )r<   r=   r1   r>   r?   r'   r(   r@   r[   Tviewr,   r]   rA   r$   rC   rD   )r2   r(   r[   rE   rF   rG   s         r5   rH   NormLinear.fuse\   s2   $$&II"&&0S88GGdgg**TWW^^;r~~PRPVPV?V[^>^^^HHqqz!66>FFMMOO#AAagJ&,,R0466;;>AIIaffQi188??C	A	!r7   rJ   )Tg{Gz?NN)rK   rL   rM   rN   rO   boolrP   r*   rQ   rR   rH   rS   rT   rU   s   @r5   rW   rW   J   s[    
 .. . 	.
 . ." ]]_ r7   rW   c                   v   ^  \ rS rSr   S	S\S\S\4U 4S jjjrS r\R                  " 5       S 5       r
SrU =r$ )
RepVggDwl   edkernel_sizelegacyc                 d  > XES.n[         TU ]  5         [        XUSUS-
  S-  4SU0UD6U l        U(       a1  [        XSSS4SU0UD6U l        [
        R                  " 5       U l        O=[
        R                  " XSSS4SU0UD6U l        [
        R                  " U40 UD6U l        Xl
        X0l        g )Nr#   r   r:   r    r   )r)   r*   r   convconv1r,   Identityr(   r-   r.   dimrk   )r2   ri   rj   rk   r$   r%   r3   r4   s          r5   r*   RepVggDw.__init__m   s     /R[!kAo!5K]TV]Z\]	!"!QC"CCDJkkmDG21aD2DDDJnnR.2.DGr7   c                 l    U R                  U R                  U5      U R                  U5      -   U-   5      $ N)r(   rm   rn   r2   xs     r5   forwardRepVggDw.forward   s+    wwtyy|djjm3a788r7   c           
         U R                   R                  5       nU R                  (       a  U R                  R                  5       nOU R                  nUR                  nUR
                  nUR                  nUR
                  n[        R                  R                  U/ SQ5      n[        R                  R                  [        R                  " UR                  S   UR                  S   SSUR                  S9/ SQ5      nX5-   U-   nXF-   n	UR                  R                  R                  U5        UR
                  R                  R                  U	5        U R                  (       d  U R                  n
U
R                  U
R                   U
R"                  -   S-  -  nUR                  US S 2S S S 4   -  nU
R
                  UR
                  U
R$                  -
  U
R                  -  U
R                   U
R"                  -   S-  -  -   nUR                  R                  R                  U5        UR
                  R                  R                  U5        U$ )N)r   r   r   r   r   r   ra   r9   )rm   rH   rk   rn   r1   r'   r,   
functionalr   rQ   onesrB   r$   rC   rD   r(   r>   r?   r@   )r2   rm   rn   conv_wconv_bconv1_wconv1_bidentityfinal_conv_wfinal_conv_br(   rE   rF   s                r5   rH   RepVggDw.fuse   s   yy~~;;JJOO%EJJE,,**--##G\:==$$JJw}}Q'q)91aWYe
 '(2'|,		\*{{B		R^^bff4<<Aa4t 344A499r6"))Cr~~XZX^X^G^cfFfffAKK""1%IINN  #r7   )r(   rm   rn   rp   rk   FNN)rK   rL   rM   rN   rO   re   r*   rv   rQ   rR   rH   rS   rT   rU   s   @r5   rg   rg   l   sS    
 !  	 *9 ]]_   r7   rg   c                   `   ^  \ rS rSr  SS\S\S\\R                     4U 4S jjjrS r	Sr
U =r$ )		RepVitMlp   r   
hidden_dim	act_layerc                    > XES.n[         TU ]  5         [        XSSS40 UD6U l        U" 5       U l        [        X!SSS4SS0UD6U l        g )Nr#   r   r   r!   )r)   r*   r   rn   actconv2)r2   r   r   r   r$   r%   r3   r4   s          r5   r*   RepVitMlp.__init__   sT     /f!Q@R@
;j!QR!RrR
r7   c                 `    U R                  U R                  U R                  U5      5      5      $ rs   )r   r   rn   rt   s     r5   rv   RepVitMlp.forward   s"    zz$((4::a=122r7   )r   rn   r   NNrK   rL   rM   rN   rO   r   r,   Moduler*   rv   rS   rT   rU   s   @r5   r   r      sH     SS S BII	S S3 3r7   r   c                   n   ^  \ rS rSr   SS\S\S\S\S\\R                     S\4U 4S jjjr
S	 rS
rU =r$ )RepViTBlock   r   	mlp_ratiorj   use_ser   rk   c	                    > XxS.n	[         T
U ]  5         [        XU40 U	D6U l        U(       a  [	        US40 U	D6O[
        R                  " 5       U l        [        XU-  U40 U	D6U l	        g )Nr#   g      ?)
r)   r*   rg   token_mixerr   r,   ro   ser   channel_mixer)r2   r   r   rj   r   r   rk   r$   r%   r3   r4   s             r5   r*   RepViTBlock.__init__   sc     /#FF2F7=-332;;=&v	/A9SPRSr7   c                 t    U R                  U5      nU R                  U5      nUnU R                  U5      nX!-   $ rs   )r   r   r   r2   ru   r   s      r5   rv   RepViTBlock.forward   s<    QGGAJq!|r7   )r   r   r   r   )rK   rL   rM   rN   rO   rP   re   r   r,   r   r*   rv   rS   rT   rU   s   @r5   r   r      sl     !TT T 	T
 T BIIT T T" r7   r   c                   `   ^  \ rS rSr  SS\S\S\\R                     4U 4S jjjrS r	Sr
U =r$ )	
RepVitStem   in_chsout_chsr   c                    > XES.n[         TU ]  5         [        XS-  SSS40 UD6U l        U" 5       U l        [        US-  USSS40 UD6U l        SU l        g )Nr#   r:      r      )r)   r*   r   rn   act1r   r   )r2   r   r   r   r$   r%   r3   r4   s          r5   r*   RepVitStem.__init__   s`     /flAq!BrB
K	glGQ1CC
r7   c                 `    U R                  U R                  U R                  U5      5      5      $ rs   )r   r   rn   rt   s     r5   rv   RepVitStem.forward   s"    zz$))DJJqM233r7   )r   rn   r   r   r   r   rU   s   @r5   r   r      sC       BII	 4 4r7   r   c                   n   ^  \ rS rSr   SS\S\S\S\S\\R                     S\	4U 4S jjjr
S	 rS
rU =r$ )RepVitDownsample   r   r   r   rj   r   rk   c	                    > XxS.n	[         T
U ]  5         [        UUU4SUUS.U	D6U l        [	        UUU4SUS-
  S-  US.U	D6U l        [	        XSS40 U	D6U l        [        X3U-  U40 U	D6U l        g )Nr#   F)r   r   rk   r:   r   )r   r   r    )	r)   r*   r   	pre_blockr   spatial_downsamplechannel_downsampler   ffn)r2   r   r   r   rj   r   rk   r$   r%   r3   r4   s             r5   r*   RepVitDownsample.__init__   s     /$
 
 
 #+#
 qQ&#
 #
 #+6Aq"GB"GW	&99KKr7   c                     U R                  U5      nU R                  U5      nU R                  U5      nUnU R                  U5      nX-   $ rs   )r   r   r   r   r   s      r5   rv   RepVitDownsample.forward  sJ    NN1##A&##A&HHQK|r7   )r   r   r   r   r   rK   rL   rM   rN   rO   rP   r   r,   r   re   r*   rv   rS   rT   rU   s   @r5   r   r      sm     ! L L  L 	 L
  L BII L  L  LD r7   r   c            	       |   ^  \ rS rSr    S
S\S\S\S\4U 4S jjjrS r\	R                  " 5       S 5       rS	rU =r$ )RepVitClassifieri  rp   num_classesdistillationdropc                 F  > XVS.n[         TU ]  5         [        R                  " U5      U l        US:  a  [        X40 UD6O[        R                  " 5       U l        X0l        SU l	        X l
        U(       a-  US:  a  [        X40 UD6O[        R                  " 5       U l        g g )Nr#   r   F)r)   r*   r,   Dropout	head_droprW   ro   headr   distilled_trainingr   	head_dist)	r2   rp   r   r   r   r$   r%   r3   r4   s	           r5   r*   RepVitClassifier.__init__  s     /D):E/Js626r{{}	("'&CNQR?Z?B?XZXcXcXeDN r7   c                 L   U R                  U5      nU R                  (       ap  U R                  U5      U R                  U5      p2U R                  (       a7  U R
                  (       a&  [        R                  R                  5       (       d  X#4$ X#-   S-  $ U R                  U5      nU$ )Nr:   )	r   r   r   r   trainingr   rQ   jitis_scripting)r2   ru   x1x2s       r5   rv   RepVitClassifier.forward*  sw    NN1YYq\4>>!#4}}!8!8AWAWAYAYv1}$		!AHr7   c                    U R                   S:  d  [        R                  " 5       $ U R                  R	                  5       nU R
                  (       a  U R                  R	                  5       nU=R                  UR                  -  sl        U=R                  UR                  -  sl        U=R                  S-  sl        U=R                  S-  sl        U$ U$ )Nr   r:   )	r   r,   ro   r   rH   r   r   r1   r'   )r2   r   r   s      r5   rH   RepVitClassifier.fuse6  s    !#;;= yy~~++-IKK9+++KII'IKK1KIINIKKr7   )r   r   r   r   r   r   )F        NN)rK   rL   rM   rN   rO   re   rP   r*   rv   rQ   rR   rH   rS   rT   rU   s   @r5   r   r     sf    
 "'ff f 	f
 f f&
 ]]_ r7   r   c                   z   ^  \ rS rSr     SS\S\S\S\S\\R                     S\S\	S	\	4U 4S
 jjjr
S rSrU =r$ )RepVitStageiF  r   r   depthr   r   rj   
downsamplerk   c                 N  > XS.n[         TU ]  5         U(       a  [        UUUU4UUS.UD6U l        O!X:X  d   e[        R
                  " 5       U l        / nSn[        U5       H'  nUR                  [        X$XmXX40 UD65        U(       + nM)     [        R                  " U6 U l
        g )Nr#   )r   rk   T)r)   r*   r   r   r,   ro   rangeappendr   
Sequentialblocks)r2   r   r   r   r   r   rj   r   rk   r$   r%   r3   r   r   _r4   s                  r5   r*   RepVitStage.__init__G  s     /.	
 $ DO $$$ kkmDOuAMM+g+ygdfghZF  mmV,r7   c                 J    U R                  U5      nU R                  U5      nU$ rs   )r   r   rt   s     r5   rv   RepVitStage.forwardl  s"    OOAKKNr7   )r   r   )r   TFNNr   rU   s   @r5   r   r   F  s      !# #-#- #- 	#-
 #- BII#- #- #- #- #-J r7   r   c                     ^  \ rS rSrSSSSSSSS\R
                  S	S
SSS4S\S\S\\S4   S\\S4   S\S\	S\S\S\
\R                     S\S\S\4U 4S jjjr\R                  R                   S1S j5       r\R                  R                   S2S j5       r\R                  R                   S\R                  4S j5       rS3S\S\\	   S\4S jjr\R                  R                   S2S  j5       r     S4S!\R.                  S"\\\\\   4      S#\S$\S%\	S&\S\\\R.                     \\R.                  \\R.                     4   4   4S' jjr   S5S"\\\\   4   S(\S)\4S* jjrS+ rS1S,\4S- jjrS. r\R>                  " 5       S/ 5       r S0r!U =r"$ )6r   ir  r      )0   )r:   r:   avg  Tr   FNin_chansimg_size	embed_dim.r   r   global_poolrj   r   r   r   	drop_raterk   c                   > [         TU ]  5         XS.nSU l        X`l        X0l        Xl        Xl        US   n[        UUU	40 UD6U l        U R                  R                  n[        [        [        U5      [        U5      5       VVs/ s H  u  nnUU-  PM     snn5      n[        U5      n[        U5      " U5      n/ U l        / n[!        U5       H  nUS:w  a  SOSnUR#                  [%        UUU   UU   4UU   U	UUUS.UD65        U(       a  SOSnUU-  n[        U Vs/ s H  nUS-
  U-  S-   PM     sn5      nU =R                  ['        UU   USU 3S	9/-  sl        UU   nM     [(        R*                  " U6 U l        US
   =U l        U l        [(        R2                  " U5      U l        [7        US
   X40 UD6U l        g s  snnf s  snf )Nr#   Fr   T)r   r   rj   r   rk   r:   r   zstages.)num_chs	reductionmoduler`   )r)   r*   grad_checkpointingr   r   r   r   r   stemr   tuplezipr   lenr   feature_infor   r   r   dictr,   r   stagesnum_featureshead_hidden_sizer   r   r   r   )r2   r   r   r   r   r   r   rj   r   r   r   r   rk   r$   r%   r3   r   r   ip
resolution
num_stages
mlp_ratiosr   r   stage_striderr4   s                              r5   r*   RepVit.__init__s  s   " 	/"'&"& 1xAbA	!!s9X3F	RXHY/Z[/Ztq!AF/Z[\
^
z*95
z"A!"aUJMMaL!H
 )m' +)!
 
 !+1Ll"FZPZQ< 7! ;ZPQJ$y|vX_`a_bVc"d!eeq\F' #( mmV,4=bMAD1I.$Yr]KTQST	? \0  Qs   G
#G
c                     [        SSS/S9nU$ )Nz^stem)z^blocks\.(\d+)N)z^norm)i )r   r   )r   )r2   coarsematchers      r5   group_matcherRepVit.group_matcher  s    H.GI]-^_r7   c                     Xl         g rs   )r   r2   enables     r5   set_grad_checkpointingRepVit.set_grad_checkpointing  s    "(r7   returnc                     U R                   $ rs   )r   )r2   s    r5   get_classifierRepVit.get_classifier  s    yyr7   c                 h    Xl         Ub  X l        XES.n[        U R                  S   X40 UD6U l        g )Nr#   r`   )r   r   r   r   r   )r2   r   r   r   r$   r%   r3   s          r5   reset_classifierRepVit.reset_classifier  s9    &"*/$T^^B%7YVXY	r7   c                 $    XR                   l        g rs   )r   r   r   s     r5   set_distilled_trainingRepVit.set_distilled_training  s    '-		$r7   ru   indicesnorm
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       He  u  pU R                  (       a/  [        R
                  R                  5       (       d  [        X5      nOU" U5      nX;   d  MT  UR                  U5        Mg     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   rQ   r   r   	enumerater   r   r   )r2   ru   r  r  r  r  r  intermediatestake_indices	max_indexr   feat_idxstages                r5   forward_intermediatesRepVit.forward_intermediates  s    * Y&D(DD&"6s4;;7G"Q IIaL99!!##:[[F[[)a-0F(0OH&&uyy/E/E/G/Gu(!H'$$Q'  1   r7   
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	  )r2   r  r  r  r  r  s         r5   prune_intermediate_layers RepVit.prune_intermediate_layers  sK     #7s4;;7G"Qkk.9q=1!!!R(r7   c                     U R                  U5      nU R                  (       a;  [        R                  R	                  5       (       d  [        U R                  U5      nU$ U R                  U5      nU$ rs   )r   r   rQ   r   r   r   r   rt   s     r5   forward_featuresRepVit.forward_features  sU    IIaL""599+A+A+C+Ct{{A.A  AAr7   
pre_logitsc                     U R                   S:X  a  UR                  SSS9nU R                  U5      nU(       a  U$ U R                  U5      $ )Nr   )r:   r   F)keepdim)r   meanr   r   )r2   ru   r&  s      r5   forward_headRepVit.forward_head  sF    u$vu-ANN1Hyy|r7   c                 J    U R                  U5      nU R                  U5      nU$ rs   )r$  r*  rt   s     r5   rv   RepVit.forward  s'    !!!$a r7   c                 "   ^ U4S jmT" U 5        g )Nc                    > U R                  5        HD  u  p[        US5      (       a&  UR                  5       n[        XU5        T" U5        M<  T" U5        MF     g )NrH   )named_childrenhasattrrH   setattr)net
child_namechildfusedfuse_childrens       r5   r7  "RepVit.fuse.<locals>.fuse_children  sK    %(%7%7%9!
5&))!JJLECU3!%(!%( &:r7   rJ   )r2   r7  s    @r5   rH   RepVit.fuse  s    	) 	dr7   )r   r   r   r   r   r   r   r   r   r   r   r   F)T)NFNN)NFFr  F)r   FT)#rK   rL   rM   rN   r,   GELUrO   r   rP   strr   r   re   r*   rQ   r   ignorer   r  r  r   r	  r  Tensorr   r   r  r!  r$  r*  rv   rR   rH   rS   rT   rU   s   @r5   r   r   r  s    %*!% %'WW!;U;U ;U c?	;U
 S#X;U ;U ;U ;U ;U 		?;U ;U ;U ;U ;Uz YY  YY) ) YY		  ZC Zhsm Zbf Z YY. . 8<$$',+ ||+  eCcN34+  	+ 
 +  +  !%+  
tELL!5tELL7I)I#JJ	K+ ^ ./$#	3S	>*  	$ 
 ]]_
 
r7   c                 2    U SSSSS[         [        SSSS	.UE$ )
Nr   )r   r   r   )   r@  gffffff?bicubiczstem.conv1.c)zhead.head.lzhead.head_dist.lz
apache-2.0)urlr   
input_size	pool_sizecrop_pctinterpolationr)  rY   
first_conv
classifierlicenser   )rB  kwargss     r5   _cfgrK  &  s7    #"%#$9  r7   ztimm/)	hf_hub_id)zrepvit_m1.dist_in1kzrepvit_m2.dist_in1kzrepvit_m3.dist_in1kzrepvit_m0_9.dist_300e_in1kzrepvit_m0_9.dist_450e_in1kzrepvit_m1_0.dist_300e_in1kzrepvit_m1_0.dist_450e_in1kzrepvit_m1_1.dist_300e_in1kzrepvit_m1_1.dist_450e_in1kzrepvit_m1_5.dist_300e_in1kzrepvit_m1_5.dist_450e_in1kzrepvit_m2_3.dist_300e_in1kzrepvit_m2_3.dist_450e_in1kc           	      b    UR                  SS5      n[        [        U U4S[        SUS90UD6nU$ )Nout_indices)r   r   r:   r   feature_cfgT)flatten_sequentialrN  )popr   r   r   )variant
pretrainedrJ  rN  models        r5   _create_repvitrU  d  sG    **]L9K  DkJ	
 E Lr7   c           	      F    [        SSSS9n[        SSU 0[        U40 UD6D6$ )z
Constructs a RepViT-M1 model
r   `      i  r:   r:      r:   Tr   r   rk   rS  )	repvit_m1r   rU  rS  rJ  
model_argss      r5   r]  r]  p  s2    
  2-PTUJ[*[Z@ZSY@Z[[r7   c           	      F    [        SSSS9n[        SSU 0[        U40 UD6D6$ )z
Constructs a RepViT-M2 model
@         i   r:   r:      r:   Tr\  rS  )	repvit_m2r^  r_  s      r5   rh  rh  y  2    
  3=QUVJ[*[Z@ZSY@Z[[r7   c           	      F    [        SSSS9n[        SSU 0[        U40 UD6D6$ )z
Constructs a RepViT-M3 model
rb  )r   r      r:   Tr\  rS  )	repvit_m3r^  r_  s      r5   rl  rl    ri  r7   c           	      D    [        SSS9n[        SSU 0[        U40 UD6D6$ )z 
Constructs a RepViT-M0.9 model
rW  rZ  r   r   rS  )repvit_m0_9r^  r_  s      r5   ro  ro    s/    
  2-HJ]J]$zB\U[B\]]r7   c           	      D    [        SSS9n[        SSU 0[        U40 UD6D6$ )z 
Constructs a RepViT-M1.0 model
)8   p   r   i  rZ  rn  rS  )repvit_m1_0r^  r_  s      r5   rs  rs    /    
  3=IJ]J]$zB\U[B\]]r7   c           	      D    [        SSS9n[        SSU 0[        U40 UD6D6$ )z 
Constructs a RepViT-M1.1 model
rb  rf  rn  rS  )repvit_m1_1r^  r_  s      r5   rv  rv    rt  r7   c           	      D    [        SSS9n[        SSU 0[        U40 UD6D6$ )z 
Constructs a RepViT-M1.5 model
rb  )r   r      r   rn  rS  )repvit_m1_5r^  r_  s      r5   ry  ry    rt  r7   c           	      D    [        SSS9n[        SSU 0[        U40 UD6D6$ )z 
Constructs a RepViT-M2.3 model
)P      i@  i  )   r}  "   r:   rn  rS  )repvit_m2_3r^  r_  s      r5   r  r    rt  r7   )r   r:  )4__doc__typingr   r   r   r   r   rQ   torch.nnr,   	timm.datar	   r
   timm.layersr   r   r   r   _builderr   	_featuresr   _manipulater   r   	_registryr   r   __all__r   r   rW   r   rg   r   r   r   r   r   r   r   rK  default_cfgsrU  r]  rh  rl  ro  rs  rv  ry  r  rJ   r7   r5   <module>r     sQ    6 5   A J J * + 3 <*'r}} 'T D:ryy :z3		 3&")) 44 4()ryy )X-ryy -`)")) )XqRYY qh" %# 
  $ 
  $ 
 '+'
 '+'
 '+'
 '+'
 '+'
 '+'
 '+'
 '+'
 '+'
 '+'
K(*Z	 \ \ \ \ \ \ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^r7   