
    ^jYl                     `   d Z ddlmZmZmZmZmZmZ ddlZddl	m
Z
 ddlm
c mZ ddlmZmZ ddlmZmZmZmZ ddlmZ ddlmZ dd	lmZmZ dd
lmZ dgZ G d de
j@                        Z! G d de
j@                        Z" G d de
j@                        Z# G d de
j@                        Z$ G d de
j@                        Z% G d de
j@                        Z& G d de
j@                        Z' G d de
j@                        Z( G d de
j@                        Z) G d de
j@                        Z* e+dg d g d!g d"g d#g d$d%dg d&g d'g d(g d)g d*d%dg d+g d,g d-g d.g d/d%d0d1d1gg d2g d3g d4g d5d%d0d6d7gg d8g d9g d:g d;d%d0d6d7gg d<g d=g d>g d?d%d0d6d7gg d@g dAg dBg dCd%d0d7dDgg dEg dFg dGg dHd%d0d7dIgg dJg dKg dLg dMd%d0dDdNgg dOg dPg dQg dRd%S
      Z,dwdTZ-dxdUZ. ei dV e.dWdXY      dZ e.dWdXY      d[ e.dWdXY      d\ e.dWdXY      d] e.dWdXY      d^ e.dX_      d` e.dX_      da e.dX_      db e.dX_      dc e.dX_      dd e.dX_      de e.dX_      df e.dX_      dg e.dX_      dh e.dX_      di e.dX_      dj e.dX_       e.dX_       e.dX_      dk      Z/edwdle*fdm       Z0edwdle*fdn       Z1edwdle*fdo       Z2edwdle*fdp       Z3edwdle*fdq       Z4edwdle*fdr       Z5edwdle*fds       Z6edwdle*fdt       Z7edwdle*fdu       Z8edwdle*fdv       Z9y)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                   8     e Zd Z	 	 	 	 ddedef fdZd Z xZS )LearnableAffineBlockscale_value
bias_valuec                     ||d}t         |           t        j                  t	        j
                  |gfi |d      | _        t        j                  t	        j
                  |gfi |d      | _        y )NdevicedtypeT)requires_grad)super__init__nn	Parametertorchtensorscalebias)selfr   r   r   r   dd	__class__s         \/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/models/hgnet.pyr!   zLearnableAffineBlock.__init__   s`     /\\%,,}"C"CSWX
LLzl!Ab!AQUV	    c                 :    | j                   |z  | j                  z   S N)r&   r'   r(   xs     r+   forwardzLearnableAffineBlock.forward&   s    zzA~		))r,   )      ?        NN)__name__
__module____qualname__floatr!   r1   __classcell__r*   s   @r+   r   r      s0     "% #
W
W 
W*r,   r   c                   V     e Zd Z	 	 	 	 	 	 	 ddedededededededef fd	Zd
 Z xZS )	ConvBNActin_chsout_chskernel_sizestridegroupspaddinguse_actuse_labc                    |	|
d}t         |           || _        || _        t	        |||f|||d|| _        t        j                  |fi || _        | j                  rt        j                         | _
        nt        j                         | _
        | j                  r| j                  rt        di || _        y t        j                         | _        y )Nr   )r?   rA   r@    )r    r!   rB   rC   r   convr"   BatchNorm2dbnReLUactIdentityr   lab)r(   r<   r=   r>   r?   r@   rA   rB   rC   r   r   r)   r*   s               r+   r!   zConvBNAct.__init__+   s     /!
 
 
	 ../B/<<wwyDH{{}DH<<DLL+1b1DH{{}DHr,   c                     | j                  |      }| j                  |      }| j                  |      }| j                  |      }|S r.   )rF   rH   rJ   rL   r/   s     r+   r1   zConvBNAct.forwardO   s;    IIaLGGAJHHQKHHQKr,   )r   r    TFNN)	r4   r5   r6   intstrboolr!   r1   r8   r9   s   @r+   r;   r;   *   ss      !"%"% "% 	"%
 "% "% "% "% "%Hr,   r;   c                   D     e Zd Z	 	 	 	 ddededededef
 fdZd Z xZS )	LightConvBNActr<   r=   r>   r@   rC   c                     ||d}t         	|           t        ||fdd|d|| _        t        ||f||d|d|| _        y )Nr   r   F)r>   rB   rC   T)r>   r@   rB   rC   )r    r!   r;   conv1conv2)
r(   r<   r=   r>   r@   rC   r   r   r)   r*   s
            r+   r!   zLightConvBNAct.__init__X   sw     /
 
 

 
 $
 

r,   c                 J    | j                  |      }| j                  |      }|S r.   )rU   rV   r/   s     r+   r1   zLightConvBNAct.forwardv   s!    JJqMJJqMr,   )r   FNNr4   r5   r6   rO   rQ   r!   r1   r8   r9   s   @r+   rS   rS   W   sK     !

 
 	

 
 
<r,   rS   c                   ,     e Zd Zddef fdZd Z xZS )	EseModulechsc                     ||d}t         |           t        j                  ||fdddd|| _        t        j
                         | _        y )Nr   r   r   r>   r?   rA   )r    r!   r"   Conv2drF   Sigmoidsigmoid)r(   r[   r   r   r)   r*   s        r+   r!   zEseModule.__init__}   sW    /II
 
 
	 zz|r,   c                     |}|j                  dd      }| j                  |      }| j                  |      }t        j                  ||      S )N)      T)keepdim)meanrF   r`   r$   mul)r(   r0   identitys      r+   r1   zEseModule.forward   sD    FF64F(IIaLLLOyy1%%r,   NN)r4   r5   r6   rO   r!   r1   r8   r9   s   @r+   rZ   rZ   |   s    $C $&r,   rZ   c                   2     e Zd Zddee   f fdZd Z xZS )StemV1stem_chsc                     ||d}t         |           t        j                  t	        t        |      dz
        D cg c]"  }t        ||   ||dz      fd|dk(  rdndd|$ c} | _        t        j                  ddd      | _	        y c c}w )Nr   r   rc   r   rb   )r>   r?   r]   )
r    r!   r"   
Sequentialrangelenr;   stem	MaxPool2dpool)r(   rk   r   r   r)   ir*   s         r+   r!   zStemV1.__init__   s    /MM  %H! #$
  Q Fq	
 $
 	 LLQq!D	$
s   'Bc                 J    | j                  |      }| j                  |      }|S r.   )rp   rr   r/   s     r+   r1   zStemV1.forward   s!    IIaLIIaLr,   rh   )r4   r5   r6   r   rO   r!   r1   r8   r9   s   @r+   rj   rj      s    Ec Er,   rj   c            	       >     e Zd Z	 	 	 ddedededef fdZd Z xZS )StemV2r<   mid_chsr=   rC   c                 T   ||d}t         |           t        ||fdd|d|| _        t        ||dz  fdd|d|| _        t        |dz  |fdd|d|| _        t        |dz  |fdd|d|| _        t        ||fdd|d|| _        t        j                  ddd      | _
        y )Nr   rc   rb   r>   r?   rC   r   T)r>   r?   	ceil_mode)r    r!   r;   stem1stem2astem2bstem3stem4r"   rq   rr   )	r(   r<   rw   r=   rC   r   r   r)   r*   s	           r+   r!   zStemV2.__init__   s     /
 
 

  qL
 
 
  qL
 
 
 aK
 
 

 
 
 

 LLQqDI	r,   c                 \   | j                  |      }t        j                  |d      }| j                  |      }t        j                  |d      }| j	                  |      }| j                  |      }t        j                  ||gd      }| j                  |      }| j                  |      }|S )N)r   r   r   r   r   dim)
r{   Fpadr|   r}   rr   r$   catr~   r   )r(   r0   x2x1s       r+   r1   zStemV2.forward   s    JJqMEE!\"[[^UU2|$[[_YYq\IIr2hA&JJqMJJqMr,   )FNNrX   r9   s   @r+   rv   rv      sD     "3J3J 3J 	3J
 3Jj
r,   rv   c                   p     e Zd Z	 	 	 	 	 	 	 	 ddedededededededed	ed
eee   ef   f fdZ	d Z
 xZS )HighPerfGpuBlockr<   rw   r=   	layer_numr>   residuallight_blockrC   agg	drop_pathc           
         ||d}t         |           || _        t        j                         | _        t        |      D ]f  }|r1| j
                  j                  t        |dk(  r|n||f||d|       6| j
                  j                  t        |dk(  r|n||f|d|d|       h |||z  z   }|	dk(  rDt        ||dz  fdd|d|}t        |dz  |fdd|d|}t        j                  ||      | _        n8t        ||fdd|d|}t        |fi |}t        j                  ||      | _        |
rt        |
      | _        y t        j                         | _        y )Nr   r   )r>   rC   r   ry   serb   )r    r!   r   r"   
ModuleListlayersrn   appendrS   r;   rm   aggregationrZ   r   rK   r   )r(   r<   rw   r=   r   r>   r   r   rC   r   r   r   r   r)   rs   	total_chsaggregation_squeeze_convaggregation_excitation_convaggregation_convattr*   s                       r+   r!   zHighPerfGpuBlock.__init__   s    / mmoy! 	A""""#q&g %0 '	
  """#q&g %0  ' 		0 Y00	$;'01( ( ($ +41+ + +'  "}}(+ D
  )      G*r*C!}}  D
 1:),r{{}r,   c                     |}|g}| j                   D ]  } ||      }|j                  |        t        j                  |d      }| j	                  |      }| j
                  r| j                  |      |z   }|S )Nr   r   )r   r   r$   r   r   r   r   )r(   r0   rg   outputlayers        r+   r1   zHighPerfGpuBlock.forward@  sw    [[ 	EaAMM!	 IIf!$Q==q!H,Ar,   )rc   FFFeser3   NNr4   r5   r6   rO   rQ   rP   r   r   r7   r!   r1   r8   r9   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f
r,   r   c                   z     e Zd Z	 	 	 	 	 	 	 	 	 ddedededededededed	ed
ededeee   ef   f fdZ	d Z
 xZS )HighPerfGpuStager<   rw   r=   	block_numr   
downsampler?   r   r>   rC   r   r   c                    ||d}t         |           || _        |rt        ||fd||d|
d|| _        nt	        j
                         | _        g }t        |      D ]P  }|j                  t        |dk(  r|n||||f|dk(  rdnd|	||
|t        |t        t        f      r||   n|d|       R t	        j                  | | _        d| _        y )Nr   rc   F)r>   r?   r@   rB   rC   r   T)r   r>   r   rC   r   r   )r    r!   r   r;   r"   rK   rn   r   r   
isinstancelisttuplerm   blocksgrad_checkpointing)r(   r<   rw   r=   r   r   r   r?   r   r>   rC   r   r   r   r   r)   blocks_listrs   r*   s                     r+   r!   zHighPerfGpuStage.__init__N  s   " /$'	 	 	DO !kkmDOy! 	A 1fF'	
 '(1fU$ + +#.8T5M.RilXa 	  mm[1!&r,   c                     | j                  |      }| j                  r6t        j                  j	                         st        | j                  |      }|S | j                  |      }|S r.   )r   r   r$   jitis_scriptingr   r   r/   s     r+   r1   zHighPerfGpuStage.forward  sS    OOA""599+A+A+Ct{{A.A  AAr,   )	Trb   Frc   Fr   r3   NNr   r9   s   @r+   r   r   M  s      $ % !354'4' 4' 	4'
 4' 4' 4' 4' 4' 4' 4' 4' T%[%/04'lr,   r   c                   r     e Zd Z	 	 	 	 	 	 ddededededee   def fdZddedee   fdZ	dd	efd
Z
 xZS )ClassifierHeadin_featuresnum_classes	pool_type	drop_ratehidden_sizerC   c	                    ||d}	t         |           || _        ||s|dk(  sJ d       t        |      | _        |}|| _        t        j                  ||fddddd|	}
t        j                         }|r(t        di |	}t        j                  |
||      | _
        n5t        j                  |
|      | _
        nt        j                         | _
        t        j                  |      | _        |rt        j                  d      nt        j                         | _        |dkD  r't        j                   | j                  |fi |	| _        y t        j                         | _        y )	Nr   r   6Classifier head must be removed if pooling is disabledr   r   F)r>   r?   rA   r'   rE   )r    r!   num_featuresr   global_poolr"   r^   rI   r   rm   	last_convrK   DropoutdropoutFlattenflattenLinearfc)r(   r   r   r   r   r   rC   r   r   r)   r   rJ   rL   r*   s                r+   r!   zClassifierHead.__init__  s8    /' "a'a)aa'/)D" +D		  I '')C*0R0!#y#s!C!#y#!>[[]DNzz),(1rzz!}r{{}EPST_"))D--{AbAZ\ZeZeZgr,   c                 :   ||d}|O|s|dk(  sJ d       t        |      | _        |rt        j                  d      nt        j                         | _        |dkD  r't        j                  | j                  |fi || _        y t        j                         | _        y )Nr   r   r   r   r   )	r   r   r"   r   rK   r   r   r   r   )r(   r   r   r   r   r)   s         r+   resetzClassifierHead.reset  s    / "a'a)aa'3iHD,52::a=2;;=DLEPST_"))D--{AbAZ\ZeZeZgr,   
pre_logitsc                     | j                  |      }| j                  |      }| j                  |      }| j                  |      }|r|S | j	                  |      }|S r.   )r   r   r   r   r   r(   r0   r   s      r+   r1   zClassifierHead.forward  sT    QNN1LLOLLOHGGAJr,   )avgr3      FNNNNNF)r4   r5   r6   rO   rP   r7   r   rQ   r!   r   r1   r8   r9   s   @r+   r   r     s    
 #!)-!)h)h )h 	)h
 )h "#)h )hVh h# hT r,   r   c                   4    e Zd Z	 	 	 	 	 	 	 	 	 ddededededee   dededef f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   cfgin_chansr   r   head_hidden_sizer   drop_path_raterC   c                 :   t         !|           |	|
d}|d   }|d   }|d   |d   |d   |d   g}|| _        || _        || _        || _        |dv sJ |d	k(  rt        d||d
   |d   |d|| _        nt        |g|z   fi || _        d}g }g | _	        |D cg c]  }|d   	 }}t        ||d      }t        |      D ]r  \  }}|\  }}}}}}}}|t        d||||||||||dk(  rdnd||   d|gz  }|| _        |r|dz  }| xj                  t        | j                  |d|       gz  c_	        t t        j                   | | _        t%        | j                  f|||||d|| _        | j&                  j                  | _        | j+                         D ]  \  }} t-        | t        j.                        r-t        j0                  j3                  | j4                  dd       Mt-        | t        j6                        rSt        j0                  j9                  | j4                         t        j0                  j;                  | j<                         t-        | t        j>                        st        j0                  j;                  | j<                          y c c}w )Nr   	stem_typerk   stage1stage2stage3stage4)v1v2r   r   r   )r<   rw   r=   rC      rc   T)	stagewiser   r   r   )r<   rw   r=   r   r   r   r   r>   rC   r   r   rb   zstages.)num_chs	reductionmodule)r   r   r   r   rC   fan_outrelu)modenonlinearityrE   ) r    r!   r   r   r   rC   rv   rp   rj   feature_infor   	enumerater   r   dictr"   rm   stagesr   headr   named_modulesr   r^   initkaiming_normal_weightrG   ones_zeros_r'   r   )"r(   r   r   r   r   r   r   r   rC   r   r   kwargsr)   r   rk   
stages_cfgcurrent_strider   cblock_depthsdprrs   stage_configr<   rw   r=   r   r   r   r>   r   nmr*   s"                                    r+   r!   zHighPerfGpuNet.__init__  s    	/$	z?(mS]CM3x=Q
& "L(((   	
 DI zH4;;DI&01!11'PTU(4 	sOA|co`FGWi[+W`' ##%''&$.EDa&   F !(D!#$t/@/@Nelmnlocp"q!rr'	s( mmV,"
#!(
 
	 !%		 6 6&&( 	'DAq!RYY'''yv'VAr~~.ahh'qvv&Aryy)qvv&	'G 2s   Jc                 .    t        d|rd      S d      S )Nz^stemz^stages\.(\d+)z^stages\.(\d+).blocks\.(\d+))rp   r   )r   )r(   coarses     r+   group_matcherzHighPerfGpuNet.group_matcher$  s%    (.$
 	
4S
 	
r,   c                 4    | j                   D ]	  }||_         y r.   )r   r   )r(   enabless      r+   set_grad_checkpointingz%HighPerfGpuNet.set_grad_checkpointing+  s     	*A#)A 	*r,   returnc                 .    | j                   j                  S r.   )r   r   )r(   s    r+   get_classifierzHighPerfGpuNet.get_classifier0  s    yy||r,   c                 P    || _         | j                  j                  ||||       y )Nr   )r   r   r   )r(   r   r   r   r   s        r+   reset_classifierzHighPerfGpuNet.reset_classifier4  s"    &		[uMr,   r0   indicesnorm
stop_early
output_fmtintermediates_onlyc                 r   |dv sJ d       g }t        t        | j                        |      \  }}	| j                  |      }t        j
                  j                         s|s| j                  }
n| j                  d|	dz    }
t        |
      D ]#  \  }} ||      }||v s|j                  |       % |r|S ||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.Nr   )	r   ro   r   rp   r$   r   r   r   r   )r(   r0   r   r   r  r  r  intermediatestake_indices	max_indexr   feat_idxstages                r+   forward_intermediatesz$HighPerfGpuNet.forward_intermediates8  s    * Y&D(DD&"6s4;;7G"Qi IIaL99!!#:[[F[[)a-0F(0 	(OHeaA<'$$Q'	(
   -r,   
prune_norm
prune_headc                     t        t        | j                        |      \  }}| j                  d|dz    | _        |r| j                  dd       |S )z@ Prune layers not required for specified intermediates.
        Nr   r   r   )r   ro   r   r   )r(   r   r  r  r  r  s         r+   prune_intermediate_layersz(HighPerfGpuNet.prune_intermediate_layersb  sM     #7s4;;7G"Qikk.9q=1!!!U+r,   c                 F    | j                  |      }| j                  |      S r.   )rp   r   r/   s     r+   forward_featureszHighPerfGpuNet.forward_featuresp  s    IIaL{{1~r,   r   c                 N    |r| j                  ||      S | j                  |      S )N)r   )r   r   s      r+   forward_headzHighPerfGpuNet.forward_headt  s%    6@tyyzy2RdiiPQlRr,   c                 J    | j                  |      }| j                  |      }|S r.   )r  r  r/   s     r+   r1   zHighPerfGpuNet.forwardw  s'    !!!$a r,   )	rc     r   r   r3   r3   FNNr   )Tr   )NFFr  F)r   FT)r4   r5   r6   r   rO   rP   r   r7   rQ   r!   r$   r   ignorer   r   r"   Moduler   r   Tensorr   r   r   r  r  r  r  r1   r8   r9   s   @r+   r   r     s   
 #$.2!$&!R'R' R' 	R'
 R' 'sm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  `   )r  r     r   FFrc      )r       r   TFrc   r  )r        rb   TFrc   r  )r         r   TFrc   r  )r   rk   r   r   r   r   )@   r#  r  )r  r     r   FFrc      )r$  r  r   r   TFrc   r%  )r   r!  r"  rb   TFrc   r%  )r"  r     r   TFrc   r%  )r  r  r  )r  r!  @  r   FFrc      )r'  r    rb   TFrc   r(  )r)  r$    rc   TFrc   r(  )r*     i   rb   TFrc   r(  r      )r,  r,  r#  r   FFrc   rc   )r#      r$  r   TFrc   rc   )r$  r#  r   rb   TTr  rc   )r   r  r&  r   TTr  rc      r-  )r-  r-  r#  r   FFrc   rc   )r#  r  r$  r   TFrc   rc   )r$  r  r   rb   TTr  rc   )r   r!  r&  r   TTr  rc   )r-  r-  r  r   FFrc   r   )r  r#    r   TFrc   r   )r/  r  r"  rc   TTr  r   )r"  r$  i   r   TTr  r   )r-  r-  r  r   FFrc   r  )r  r#  r   r   TFrc   r  )r   r  r&  rc   TTr  r  )r&  r$  r   r   TTr  r  r  )r  r  r  r   FFrc   r%  )r  r  r   r   TFrc   r%  )r   r!  r&  rc   TTr  r%  )r&  r/  r   r   TTr  r%  r#  )r#  r#  r  r   FFrc   r%  )r  r  r   rb   TFrc   r%  )r   r$  r&  r  TTr  r%  )r&  r   r   rb   TTr  r%  r  )r  r  r!  rb   FFrc   r%  )r!  r!  r   rc   TFrc   r%  )r   r/  r&  r%  TTr  r%  )r&  r"  r   rc   TTr  r%  )

hgnet_tinyhgnet_small
hgnet_base
hgnetv2_b0
hgnetv2_b1
hgnetv2_b2
hgnetv2_b3
hgnetv2_b4
hgnetv2_b5
hgnetv2_b6c                 t    |j                  dd      }t        t        | |ft        |    t	        d|      d|S )Nout_indices)r   r   rb   rc   T)flatten_sequentialr;  )	model_cfgfeature_cfg)popr   r   
model_cfgsr   )variant
pretrainedr   r;  s       r+   _create_hgnetrC    sK    **]L9K W%DkJ  r,   c                 6    | dddddt         t        dddd	d
d|S )Nr  )rc   r  r  )r(  r(  gzG?bicubiczhead.fczstem.stem1.convr2   )rc   r+  r+  z
apache-2.0)urlr   
input_size	pool_sizecrop_pctinterpolationre   std
classifier
first_convtest_crop_pcttest_input_sizelicenser	   )rF  r   s     r+   _cfgrQ    s9    =vI%.B/@	 	 	r,   zhgnet_tiny.paddle_in1kzstem.stem.0.convztimm/)rM  	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)rR  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                     t        dd| i|S )NrB  )r0  rC  rB  r   s     r+   r0  r0  %      G*GGGr,   c                     t        dd| i|S )NrB  )r1  rT  rU  s     r+   r1  r1  *  s    H:HHHr,   c                     t        dd| i|S )NrB  )r2  rT  rU  s     r+   r2  r2  /  rV  r,   c                     t        d| dd|S )NTrB  rC   )r3  rT  rU  s     r+   r3  r3  4      U*dUfUUr,   c                     t        d| dd|S )NTrZ  )r4  rT  rU  s     r+   r4  r4  9  r[  r,   c                     t        d| dd|S )NTrZ  )r5  rT  rU  s     r+   r5  r5  >  r[  r,   c                     t        d| dd|S )NTrZ  )r6  rT  rU  s     r+   r6  r6  C  r[  r,   c                     t        dd| i|S )NrB  )r7  rT  rU  s     r+   r7  r7  H  rV  r,   c                     t        dd| i|S )NrB  )r8  rT  rU  s     r+   r8  r8  M  rV  r,   c                     t        dd| i|S )NrB  )r9  rT  rU  s     r+   r9  r9  R  rV  r,   r   )rN   ):__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;   rS   rZ   rj   rv   r   r   r   r   r   r@  rC  rQ  default_cfgsr0  r1  r2  r3  r4  r5  r6  r7  r8  r9  rE   r,   r+   <module>ro     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,   