
    RЦiYl                        S r SSK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  SSKJr  SSKJr  SS	KJrJr  SS
K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 Q/ S!Q/ S"Q/ S#Q/ S$QS%.S/ S&Q/ S'Q/ S(Q/ S)Q/ S*QS%.S/ S+Q/ S,Q/ S-Q/ S.Q/ S/QS%.S0S1S1// S2Q/ S3Q/ S4Q/ S5QS%.S0S6S7// S8Q/ S9Q/ S:Q/ S;QS%.S0S6S7// S<Q/ S=Q/ S>Q/ S?QS%.S0S6S7// S@Q/ SAQ/ SBQ/ SCQS%.S0S7SD// SEQ/ SFQ/ SGQ/ SHQS%.S0S7SI// SJQ/ SKQ/ SLQ/ SMQS%.S0SDSN// SOQ/ SPQ/ SQQ/ SRQS%.SS9
r,SwST jr-SxSU jr.\" 0 SV\." SWSXSY9_SZ\." SWSXSY9_S[\." SWSXSY9_S\\." SWSXSY9_S]\." SWSXSY9_S^\." SXS_9_S`\." SXS_9_Sa\." SXS_9_Sb\." SXS_9_Sc\." SXS_9_Sd\." SXS_9_Se\." SXS_9_Sf\." SXS_9_Sg\." SXS_9_Sh\." SXS_9_Si\." SXS_9_Sj\." SXS_9_\." SXS_9\." SXS_9Sk.E5      r/\SwSl\*4Sm jj5       r0\SwSl\*4Sn jj5       r1\SwSl\*4So jj5       r2\SwSl\*4Sp jj5       r3\SwSl\*4Sq jj5       r4\SwSl\*4Sr jj5       r5\SwSl\*4Ss jj5       r6\SwSl\*4St jj5       r7\SwSl\*4Su jj5       r8\SwSl\*4Sv jj5       r9g)ya  PP-HGNet (V1 & V2)

Reference:
https://github.com/PaddlePaddle/PaddleClas/blob/develop/docs/zh_CN/models/ImageNet1k/PP-HGNetV2.md
The Paddle Implement of PP-HGNet (https://github.com/PaddlePaddle/PaddleClas/blob/release/2.5.1/docs/en/models/PP-HGNet_en.md)
PP-HGNet: https://github.com/PaddlePaddle/PaddleClas/blob/release/2.5.1/ppcls/arch/backbone/legendary_models/pp_hgnet.py
PP-HGNetv2: https://github.com/PaddlePaddle/PaddleClas/blob/release/2.5.1/ppcls/arch/backbone/legendary_models/pp_hgnet_v2.py
    )DictListOptionalTupleTypeUnionNIMAGENET_DEFAULT_MEANIMAGENET_DEFAULT_STD)SelectAdaptivePool2dDropPathcalculate_drop_path_ratescreate_conv2d   )build_model_with_cfg)feature_take_indices)register_modelgenerate_default_cfgs)checkpoint_seqHighPerfGpuNetc                   F   ^  \ rS rSr    SS\S\4U 4S jjjrS rSrU =r$ )LearnableAffineBlock   scale_value
bias_valuec                    > X4S.n[         TU ]  5         [        R                  " [        R
                  " U/40 UD6SS9U l        [        R                  " [        R
                  " U/40 UD6SS9U l        g )NdevicedtypeT)requires_grad)super__init__nn	Parametertorchtensorscalebias)selfr   r   r   r   dd	__class__s         P/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/timm/models/hgnet.pyr"   LearnableAffineBlock.__init__   s^     /\\%,,}"C"CSWX
LLzl!Ab!AQUV	    c                 :    U R                   U-  U R                  -   $ N)r'   r(   r)   xs     r,   forwardLearnableAffineBlock.forward&   s    zzA~		))r.   )r(   r'   )      ?        NN)	__name__
__module____qualname____firstlineno__floatr"   r3   __static_attributes____classcell__r+   s   @r,   r   r      s;     "% #
W
W 
W 
W* *r.   r   c                   d   ^  \ rS rSr       SS\S\S\S\S\S\S\S	\4U 4S
 jjjrS rSr	U =r
$ )	ConvBNAct*   in_chsout_chskernel_sizestridegroupspaddinguse_actuse_labc                   > XS.n[         TU ]  5         Xpl        Xl        [	        UUU4UUUS.UD6U l        [        R                  " U40 UD6U l        U R                  (       a  [        R                  " 5       U l
        O[        R                  " 5       U l
        U R                  (       a"  U R                  (       a  [        S0 UD6U l        g [        R                  " 5       U l        g )Nr   )rE   rG   rF    )r!   r"   rH   rI   r   convr#   BatchNorm2dbnReLUactIdentityr   lab)r)   rB   rC   rD   rE   rF   rG   rH   rI   r   r   r*   r+   s               r,   r"   ConvBNAct.__init__+   s     /!
 
 
	 ../B/<<wwyDH{{}DH<<DLL+1b1DH{{}DHr.   c                     U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU$ r0   )rL   rN   rP   rR   r1   s     r,   r3   ConvBNAct.forwardO   s;    IIaLGGAJHHQKHHQKr.   )rP   rN   rL   rR   rH   rI   )r   r    TFNN)r7   r8   r9   r:   intstrboolr"   r3   r<   r=   r>   s   @r,   r@   r@   *   s}      !"%"% "% 	"%
 "% "% "% "% "% "%H r.   r@   c                   R   ^  \ rS rSr    S
S\S\S\S\S\4
U 4S jjjrS rS	rU =r	$ )LightConvBNActW   rB   rC   rD   rF   rI   c                    > XgS.n[         T	U ]  5         [        UU4SSUS.UD6U l        [        UU4UUSUS.UD6U l        g )Nr   r   F)rD   rH   rI   T)rD   rF   rH   rI   )r!   r"   r@   conv1conv2)
r)   rB   rC   rD   rF   rI   r   r   r*   r+   s
            r,   r"   LightConvBNAct.__init__X   su     /
 
 

 
 $
 

r.   c                 J    U R                  U5      nU R                  U5      nU$ r0   r^   r_   r1   s     r,   r3   LightConvBNAct.forwardv   s!    JJqMJJqMr.   rb   )r   FNN
r7   r8   r9   r:   rW   rY   r"   r3   r<   r=   r>   s   @r,   r[   r[   W   sU     !

 
 	

 
 
 
< r.   r[   c                   :   ^  \ rS rSrSS\4U 4S jjjrS rSrU =r$ )	EseModule|   chsc                    > X#S.n[         TU ]  5         [        R                  " UU4SSSS.UD6U l        [        R
                  " 5       U l        g )Nr   r   r   rD   rE   rG   )r!   r"   r#   Conv2drL   Sigmoidsigmoid)r)   rh   r   r   r*   r+   s        r,   r"   EseModule.__init__}   sU    /II
 
 
	 zz|r.   c                     UnUR                  SSS9nU R                  U5      nU R                  U5      n[        R                  " X!5      $ )N)      T)keepdim)meanrL   rm   r%   mul)r)   r2   identitys      r,   r3   EseModule.forward   sB    FF64F(IIaLLLOyy%%r.   )rL   rm   NN)	r7   r8   r9   r:   rW   r"   r3   r<   r=   r>   s   @r,   rf   rf   |   s    $C $ $& &r.   rf   c                   @   ^  \ rS rSrSS\\   4U 4S jjjrS rSrU =r	$ )StemV1   stem_chsc                    > X#S.n[         TU ]  5         [        R                  " [	        [        U5      S-
  5       Vs/ s H"  n[        X   XS-      4SUS:X  a  SOSS.UD6PM$     sn6 U l        [        R                  " SSSS9U l	        g s  snf )Nr   r   rq   r   rp   )rD   rE   rj   )
r!   r"   r#   
Sequentialrangelenr@   stem	MaxPool2dpool)r)   r{   r   r   r*   ir+   s         r,   r"   StemV1.__init__   s    /MM  %H! #$
 #! Q Fq	
 
 #$
 	 LLQq!D	$
s   )Bc                 J    U R                  U5      nU R                  U5      nU$ r0   )r   r   r1   s     r,   r3   StemV1.forward   s!    IIaLIIaLr.   )r   r   rw   )
r7   r8   r9   r:   r   rW   r"   r3   r<   r=   r>   s   @r,   ry   ry      s%    Ec E E r.   ry   c            	       L   ^  \ rS rSr   S	S\S\S\S\4U 4S jjjrS rSrU =r	$ )
StemV2   rB   mid_chsrC   rI   c                 N  > XVS.n[         TU ]  5         [        UU4SSUS.UD6U l        [        UUS-  4SSUS.UD6U l        [        US-  U4SSUS.UD6U l        [        US-  U4SSUS.UD6U l        [        UU4SSUS.UD6U l        [        R                  " SSSS9U l
        g )Nr   rq   rp   rD   rE   rI   r   T)rD   rE   	ceil_mode)r!   r"   r@   stem1stem2astem2bstem3stem4r#   r   r   )	r)   rB   r   rC   rI   r   r   r*   r+   s	           r,   r"   StemV2.__init__   s    /
 
 

  qL
 
 
  qL
 
 
 aK
 
 

 
 
 

 LLQqDI	r.   c                 Z   U R                  U5      n[        R                  " US5      nU R                  U5      n[        R                  " US5      nU R	                  U5      nU R                  U5      n[        R                  " X2/SS9nU R                  U5      nU R                  U5      nU$ )N)r   r   r   r   r   dim)
r   Fpadr   r   r   r%   catr   r   )r)   r2   x2x1s       r,   r3   StemV2.forward   s    JJqMEE!\"[[^UU2|$[[_YYq\IIrhA&JJqMJJqMr.   )r   r   r   r   r   r   )FNNrd   r>   s   @r,   r   r      sO     "3J3J 3J 	3J
 3J 3Jj
 
r.   r   c                   ~   ^  \ rS rSr        SS\S\S\S\S\S\S\S	\S
\S\\\	   \	4   4U 4S jjjr
S rSrU =r$ )HighPerfGpuBlock   rB   r   rC   	layer_numrD   residuallight_blockrI   agg	drop_pathc           
        > XS.n[         TU ]  5         X`l        [        R                  " 5       U l        [        U5       Ho  nU(       a3  U R
                  R                  [        US:X  a  UOUU4UUS.UD65        M=  U R
                  R                  [        US:X  a  UOUU4USUS.UD65        Mq     XU-  -   nU	S:X  aE  [        UUS-  4SSUS.UD6n[        US-  U4SSUS.UD6n[        R                  " UU5      U l        O9[        UU4SSUS.UD6n[        U40 UD6n[        R                  " UU5      U l        U
(       a  [        U
5      U l        g [        R                  " 5       U l        g )Nr   r   )rD   rI   r   r   serp   )r!   r"   r   r#   
ModuleListlayersr~   appendr[   r@   r}   aggregationrf   r   rQ   r   )r)   rB   r   rC   r   rD   r   r   rI   r   r   r   r   r*   r   	total_chsaggregation_squeeze_convaggregation_excitation_convaggregation_convattr+   s                       r,   r"   HighPerfGpuBlock.__init__   s    / mmoy!A""""#q&g %0 '	
  """#q&g %0  ' 	 "0 00	$;'01( ( ($ +41+ + +'  "}}(+ D
  )      G*r*C!}}  D
 1:),r{{}r.   c                     UnU/nU R                    H  nU" U5      nUR                  U5        M     [        R                  " USS9nU R	                  U5      nU R
                  (       a  U R                  U5      U-   nU$ )Nr   r   )r   r   r%   r   r   r   r   )r)   r2   ru   outputlayers        r,   r3   HighPerfGpuBlock.forward@  sr    [[EaAMM! ! IIf!$Q==q!H,Ar.   )r   r   r   r   )rq   FFFeser6   NNr7   r8   r9   r:   rW   rY   rX   r   r   r;   r"   r3   r<   r=   r>   s   @r,   r   r      s      !" %!35QMQM QM 	QM
 QM QM QM QM QM QM T%[%/0QM QMf
 
r.   r   c                      ^  \ rS rSr         SS\S\S\S\S\S\S\S	\S
\S\S\S\\\	   \	4   4U 4S jjjr
S rSrU =r$ )HighPerfGpuStageiM  rB   r   rC   	block_numr   
downsamplerE   r   rD   rI   r   r   c                   > XS.n[         TU ]  5         X`l        U(       a  [        UU4SUUSU
S.UD6U l        O[        R
                  " 5       U l        / n[        U5       HX  nUR                  [        US:X  a  UOUUUU4US:X  a  SOSU	UU
U[        U[        [        45      (       a  UU   OUS.UD65        MZ     [        R                  " U6 U l        SU l        g )Nr   rq   F)rD   rE   rF   rH   rI   r   T)r   rD   r   rI   r   r   )r!   r"   r   r@   r#   rQ   r~   r   r   
isinstancelisttupler}   blocksgrad_checkpointing)r)   rB   r   rC   r   r   r   rE   r   rD   rI   r   r   r   r   r*   blocks_listr   r+   s                     r,   r"   HighPerfGpuStage.__init__N  s    " /$'	 	 	DO !kkmDOy!A 1fF'	
 '(1fU$ + +#.8T5M.R.RilXa  "  mm[1!&r.   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$ r0   )r   r   r%   jitis_scriptingr   r   r1   s     r,   r3   HighPerfGpuStage.forward  sV    OOA""599+A+A+C+Ct{{A.A  AAr.   )r   r   r   )	Trp   Frq   Fr   r6   NNr   r>   s   @r,   r   r   M  s      $ % !354'4' 4' 	4'
 4' 4' 4' 4' 4' 4' 4' 4' T%[%/04' 4'l r.   r   c                      ^  \ rS rSr      SS\S\S\S\S\\   S\4U 4S jjjr	SS\S\\   4S	 jjr
SS
\4S jjrSrU =r$ )ClassifierHeadi  in_featuresnum_classes	pool_type	drop_ratehidden_sizerI   c	                   > XxS.n	[         TU ]  5         Xl        Ub  U(       d  US:X  d   S5       e[        US9U l        Ub  XPl        [
        R                  " UU4SSSSS.U	D6n
[
        R                  " 5       nU(       a(  [        S0 U	D6n[
        R                  " XU5      U l
        O6[
        R                  " X5      U l
        O[
        R                  " 5       U l
        [
        R                  " U5      U l        U(       a  [
        R                  " S5      O[
        R                  " 5       U l        US:  a(  [
        R                   " U R                  U40 U	D6U l        g [
        R                  " 5       U l        g )	Nr   r   6Classifier head must be removed if pooling is disabledr   r   F)rD   rE   rG   r(   rK   )r!   r"   num_featuresr   global_poolr#   rk   rO   r   r}   	last_convrQ   DropoutdropoutFlattenflattenLinearfc)r)   r   r   r   r   r   rI   r   r   r*   r   rP   rR   r+   s                r,   r"   ClassifierHead.__init__  s.    /' "a'a)aa'/)D" +		  I '')C*0R0!#ys!C!#y!>[[]DNzz),(1rzz!}r{{}EPST_"))D--{AbAZ\ZeZeZgr.   c                 T   X4S.nUbY  U(       d  US:X  d   S5       e[        US9U l        U(       a  [        R                  " S5      O[        R                  " 5       U l        US:  a(  [        R                  " U R                  U40 UD6U l        g [        R                  " 5       U l        g )Nr   r   r   r   r   )	r   r   r#   r   rQ   r   r   r   r   )r)   r   r   r   r   r*   s         r,   resetClassifierHead.reset  s    / "a'a)aa'3iHD,52::a=2;;=DLEPST_"))D--{AbAZ\ZeZeZgr.   
pre_logitsc                     U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU(       a  U$ U R	                  U5      nU$ r0   )r   r   r   r   r   r)   r2   r   s      r,   r3   ClassifierHead.forward  sT    QNN1LLOLLOHGGAJr.   )r   r   r   r   r   r   )avgr6      FNNNNNF)r7   r8   r9   r:   rW   rX   r;   r   rY   r"   r   r3   r<   r=   r>   s   @r,   r   r     s    
 #!)-!)h)h )h 	)h
 )h "#)h )h )hVh h# hT  r.   r   c                   X  ^  \ rS rSr         SS\S\S\S\S\\   S\S\S	\	4U 4S
 jjjr
\R                  R                  S S j5       r\R                  R                  S!S j5       r\R                  R                  S\R"                  4S j5       rS"S\S\\   4S jjr     S#S\R(                  S\\\\\   4      S\	S\	S\S\	S\\\R(                     \\R(                  \\R(                     4   4   4S jjr   S$S\\\\   4   S\	S\	4S jjrS rS S\	4S jjrS rSrU =r$ )%r   i  cfgin_chansr   r   head_hidden_sizer   drop_path_raterI   c                 h  > [         T!U ]  5         XS.nUS   nUS   nUS   US   US   US   /nX0l        X l        X`l        Xl        US;   d   eUS	:X  a  [        SUUS
   US   US.UD6U l        O[        U/U-   40 UD6U l        Sn/ n/ U l	        U Vs/ s H  nUS   PM
     nn[        UUSS9n[        U5       Hv  u  nnUu  nnnnnnnnU[        SUUUUUUUUUUS:X  a  SOSUU   S.UD6/-  nUU l        U(       a  US-  nU =R                  [        U R                  USU 3S9/-  sl	        Mx     [        R                   " U6 U l        [%        U R                  4UUUUUS.UD6U l        U R&                  R                  U l        U R+                  5        GH  u  nn [-        U [        R.                  5      (       a+  [        R0                  R3                  U R4                  SSS9  MQ  [-        U [        R6                  5      (       aT  [        R0                  R9                  U R4                  5        [        R0                  R;                  U R<                  5        M  [-        U [        R>                  5      (       d  M  [        R0                  R;                  U R<                  5        GM     g s  snf )Nr   	stem_typer{   stage1stage2stage3stage4)v1v2r   r   r   )rB   r   rC   rI      rq   T)	stagewiser   r   r   )rB   r   rC   r   r   r   r   rD   rI   r   r   rp   zstages.)num_chs	reductionmodule)r   r   r   r   rI   fan_outrelu)modenonlinearityrK   ) r!   r"   r   r   r   rI   r   r   ry   feature_infor   	enumerater   r   dictr#   r}   stagesr   headr   named_modulesr   rk   initkaiming_normal_weightrM   ones_zeros_r(   r   )"r)   r   r   r   r   r   r   r   rI   r   r   kwargsr*   r   r{   
stages_cfgcurrent_strider   cblock_depthsdprr   stage_configrB   r   rC   r   r   r   rD   r   nmr+   s"                                    r,   r"   HighPerfGpuNet.__init__  s    	/$	z?(mS]CM3x=Q
& "L(((   	
 DI zH4;;DI&01j!j1'PTU(4OA|co`FGWi[+W`' ##%''&$.EDa&   F !(D!#$t/@/@Nelmnlocp"q!rr'  5( mmV,"
#!(
 
	 !%		 6 6&&(DAq!RYY''''yv'VAr~~..ahh'qvv&Aryy))qvv& )G 2s   J/c                 ,    [        SU(       a  SS9$ SS9$ )Nz^stemz^stages\.(\d+)z^stages\.(\d+).blocks\.(\d+))r   r   )r   )r)   coarses     r,   group_matcherHighPerfGpuNet.group_matcher$  s%    (.$
 	
4S
 	
r.   c                 6    U R                    H	  nXl        M     g r0   )r   r   )r)   enabless      r,   set_grad_checkpointing%HighPerfGpuNet.set_grad_checkpointing+  s    A#)  r.   returnc                 .    U R                   R                  $ r0   )r   r   )r)   s    r,   get_classifierHighPerfGpuNet.get_classifier0  s    yy||r.   c                 D    Xl         U R                  R                  XX4S9  g )Nr   )r   r   r   )r)   r   r   r   r   s        r,   reset_classifierHighPerfGpuNet.reset_classifier4  s    &		Mr.   r2   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       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   r   r   )r)   r2   r!  r"  r#  r$  r%  intermediatestake_indices	max_indexr   feat_idxstages                r,   forward_intermediates$HighPerfGpuNet.forward_intermediates8  s    * Y&D(DD&"6s4;;7G"Q IIaL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  )r)   r!  r/  r0  r)  r*  s         r,   prune_intermediate_layers(HighPerfGpuNet.prune_intermediate_layersb  sK     #7s4;;7G"Qkk.9q=1!!!U+r.   c                 F    U R                  U5      nU R                  U5      $ r0   )r   r   r1   s     r,   forward_featuresHighPerfGpuNet.forward_featuresp  s    IIaL{{1~r.   r   c                 P    U(       a  U R                  XS9$ U R                  U5      $ )N)r   )r   r   s      r,   forward_headHighPerfGpuNet.forward_headt  s#    6@tyyy2RdiiPQlRr.   c                 J    U R                  U5      nU R                  U5      nU$ r0   )r5  r8  r1   s     r,   r3   HighPerfGpuNet.forwardw  s'    !!!$a r.   )
r   r   r   r   r   r   r   r   r   rI   )	rq     r   r   r6   r6   FNNr   )Tr   )NFFr'  F)r   FT)r7   r8   r9   r:   r   rW   rX   r   r;   rY   r"   r%   r   ignorer  r  r#   Moduler  r  Tensorr   r   r   r-  r2  r5  r8  r3   r<   r=   r>   s   @r,   r   r     s   
 #$.2!$&!R'R' R' 	R'
 R' 'smR' R' "R' R' R'h YY
 
 YY* * YY		  NC Nhsm N 8<$$',( ||(  eCcN34(  	( 
 (  (  !%(  
tELL!5tELL7I)I#JJ	K( X ./$#	3S	>*  	S$ S r.   r   )0   r@  `   )rA  rA     r   FFrq      )rB       r   TFrq   rC  )rE        rp   TFrq   rC  )rG        r   TFrq   rC  )r   r{   r   r   r   r   )@   rJ  rD  )rD  rD     r   FFrq      )rK  rF  rG  r   TFrq   rL  )rG  rH  rI  rp   TFrq   rL  )rI  rB     r   TFrq   rL  )rA  rA  rF  )rF  rH  @  r   FFrq      )rN  rB    rp   TFrq   rO  )rP  rK    rq   TFrq   rO  )rQ     i   rp   TFrq   rO  r      )rS  rS  rJ  r   FFrq   rq   )rJ      rK  r   TFrq   rq   )rK  rJ  rG  rp   TTrC  rq   )rG  rD  rM  r   TTrC  rq      rT  )rT  rT  rJ  r   FFrq   rq   )rJ  r@  rK  r   TFrq   rq   )rK  rA  rG  rp   TTrC  rq   )rG  rH  rM  r   TTrC  rq   )rT  rT  rA  r   FFrq   r   )rA  rJ    r   TFrq   r   )rV  rD  rI  rq   TTrC  r   )rI  rK  i   r   TTrC  r   )rT  rT  rD  r   FFrq   rC  )rD  rJ  rG  r   TFrq   rC  )rG  rD  rM  rq   TTrC  rC  )rM  rK  r   r   TTrC  rC  r@  )r@  r@  rD  r   FFrq   rL  )rD  rA  rG  r   TFrq   rL  )rG  rH  rM  rq   TTrC  rL  )rM  rV  r   r   TTrC  rL  rJ  )rJ  rJ  rD  r   FFrq   rL  )rD  rD  rG  rp   TFrq   rL  )rG  rK  rM  rC  TTrC  rL  )rM  rG  r   rp   TTrC  rL  rA  )rA  rA  rH  rp   FFrq   rL  )rH  rH  rG  rq   TFrq   rL  )rG  rV  rM  rL  TTrC  rL  )rM  rI  r   rq   TTrC  rL  )

hgnet_tinyhgnet_small
hgnet_base
hgnetv2_b0
hgnetv2_b1
hgnetv2_b2
hgnetv2_b3
hgnetv2_b4
hgnetv2_b5
hgnetv2_b6c           	      n    UR                  SS5      n[        [        U U4[        U    [	        SUS9S.UD6$ )Nout_indices)r   r   rp   rq   T)flatten_sequentialrb  )	model_cfgfeature_cfg)popr   r   
model_cfgsr   )variant
pretrainedr  rb  s       r,   _create_hgnetrj    sK    **]L9K W%DkJ  r.   c                 6    U SSSSS[         [        SSSS	S
S.UE$ )Nr<  )rq   rB  rB  )rO  rO  gzG?bicubiczhead.fczstem.stem1.convr5   )rq   rR  rR  z
apache-2.0)urlr   
input_size	pool_sizecrop_pctinterpolationrs   std
classifier
first_convtest_crop_pcttest_input_sizelicenser	   )rm  r  s     r,   _cfgrx    s9    =vI%.B/@	 	 	r.   zhgnet_tiny.paddle_in1kzstem.stem.0.convztimm/)rt  	hf_hub_idzhgnet_tiny.ssld_in1kzhgnet_small.paddle_in1kzhgnet_small.ssld_in1kzhgnet_base.ssld_in1kzhgnetv2_b0.ssld_stage2_ft_in1k)ry  z!hgnetv2_b0.ssld_stage1_in22k_in1kzhgnetv2_b1.ssld_stage2_ft_in1kz!hgnetv2_b1.ssld_stage1_in22k_in1kzhgnetv2_b2.ssld_stage2_ft_in1kz!hgnetv2_b2.ssld_stage1_in22k_in1kzhgnetv2_b3.ssld_stage2_ft_in1kz!hgnetv2_b3.ssld_stage1_in22k_in1kzhgnetv2_b4.ssld_stage2_ft_in1kz!hgnetv2_b4.ssld_stage1_in22k_in1kzhgnetv2_b5.ssld_stage2_ft_in1kz!hgnetv2_b5.ssld_stage1_in22k_in1k)zhgnetv2_b6.ssld_stage2_ft_in1kz!hgnetv2_b6.ssld_stage1_in22k_in1kr  c                     [        SSU 0UD6$ )Nri  )rW  rj  ri  r  s     r,   rW  rW  %      G*GGGr.   c                     [        SSU 0UD6$ )Nri  )rX  r{  r|  s     r,   rX  rX  *  s    H:HHHr.   c                     [        SSU 0UD6$ )Nri  )rY  r{  r|  s     r,   rY  rY  /  r}  r.   c                     [        SU SS.UD6$ )NTri  rI   )rZ  r{  r|  s     r,   rZ  rZ  4      U*dUfUUr.   c                     [        SU SS.UD6$ )NTr  )r[  r{  r|  s     r,   r[  r[  9  r  r.   c                     [        SU SS.UD6$ )NTr  )r\  r{  r|  s     r,   r\  r\  >  r  r.   c                     [        SU SS.UD6$ )NTr  )r]  r{  r|  s     r,   r]  r]  C  r  r.   c                     [        SSU 0UD6$ )Nri  )r^  r{  r|  s     r,   r^  r^  H  r}  r.   c                     [        SSU 0UD6$ )Nri  )r_  r{  r|  s     r,   r_  r_  M  r}  r.   c                     [        SSU 0UD6$ )Nri  )r`  r{  r|  s     r,   r`  r`  R  r}  r.   r   )rV   ):__doc__typingr   r   r   r   r   r   r%   torch.nnr#   torch.nn.functional
functionalr   	timm.datar
   r   timm.layersr   r   r   r   _builderr   	_featuresr   	_registryr   r   _manipulater   __all__r>  r   r@   r[   rf   ry   r   r   r   r   r   r   rg  rj  rx  default_cfgsrW  rX  rY  rZ  r[  r\  r]  r^  r_  r`  rK   r.   r,   <module>r     s   < ;     A ` ` * + < '
*299 *"*		 *Z"RYY "J&		 &,RYY ,ARYY AH^ryy ^B=ryy =@>RYY >BlRYY l^   6777 !8778 !8778 H5557 H5557 H5567 H6678 H6678 H6778 H6778i]
@	
 % ,&d%,& D%	,& t% ,& T%,& D%,&  %d'!,&$ (*%,&( %d'),&, (*-,&0 %d'1,&4 (*5,&8 %d'9,&< (*=,&@ %d'A,&D (*E,&H %d'I,&L (*M,&P '+')-*U,& ,^ Hn H H I~ I I Hn H H Vn V V Vn V V Vn V V Vn V V Hn H H Hn H H Hn H Hr.   