
    NgX                     	   d Z ddlZddl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 ddlmZmZ ddlmZ dd	lmZmZ dd
lmZmZ ddgZdZ ej        e          Z e ed edddddd           edddddd           edddddd           edddddd                     ed eddddd d           eddddd!d           eddddd"d           eddddd#d                     ed edddd$d d           edddd%d!d           edddd&d"d           edddd'd#d                     ed edddd$d d           edddd%d(d           edddd&d)d           edddd'd*d                     ed edddd$d d           edddd%d+d           edddd&d,d           edddd'd-d                     ed edddd$d d           edddd%d.d           edddd&d/d           edddd'd0d                     ed edddd$d d           edddd%d1d           edddd&d2d           edddd'd3d                     ed edddd$d d           edddd%d4d           edddd&d5d           edddd'd6d                     ed edddd$d d           edddd%d7d           edddd&d8d           edddd'd9d                    :	  	        Z  G d; d<ej!                  Z" G d= d>ej#                  Z$ej%        j&         G d? d@ej        j!                              Z'eedAZ( G dB dej!                  Z) G dC de)          Z*d^dEZ+d_dGZ, e e,dHdIJ           e,dHK           e,dHdIJ           e,dHK           e,dHdLM           e,dHK           e,dHK           e,dHK           e,dHK           e,dHK           e,dHK           e,dHK           e,dHdLdNdOP           e,dHdLdNdOP          dQ          Z-ed`dRe)fdS            Z.ed`dRe)fdT            Z/ed`dRe)fdU            Z0ed`dRe)fdV            Z1ed`dRe)fdW            Z2ed`dRe)fdX            Z3ed`dRe)fdY            Z4ed`dRe)fdZ            Z5ed`dRe)fd[            Z6ed`dRe)fd\            Z7ed`dRe)fd]            Z8dS )az HRNet

Copied from https://github.com/HRNet/HRNet-Image-Classification

Original header:
  Copyright (c) Microsoft
  Licensed under the MIT License.
  Written by Bin Xiao (Bin.Xiao@microsoft.com)
  Modified by Ke Sun (sunk@mail.ustc.edu.cn)
    N)ListIMAGENET_DEFAULT_MEANIMAGENET_DEFAULT_STD)create_classifier   )build_model_with_cfgpretrained_cfg_for_features)FeatureInfo)register_modelgenerate_default_cfgs)
BasicBlock
BottleneckHighResolutionNetHighResolutionNetFeaturesg?@   
BOTTLENECKr   )    SUM)num_modulesnum_branches
block_type
num_blocksnum_channelsfuse_method   BASIC)r   r   )   r      )r   r   r   )r   r   r      )r   r   r   r   )r   r   r      )
stem_widthstage1stage2stage3stage4)r   )r   )   $   )r(   r)   H   )r(   r)   r*      )r!   )r!   r!   )r!   r!   r!   )r!   r!   r!   r!   )   <   )r,   r-   x   )r,   r-   r.      )r   r   )r   r   r"   r   r   r"      )(   P   )r2   r3      )r2   r3   r4   i@  ),   X   )r5   r6      )r5   r6   r7   i`  )0   `   )r8   r9      )r8   r9   r:   i  )r   r"   )r   r"   r1   )r   r"   r1   i   )	hrnet_w18_smallhrnet_w18_small_v2	hrnet_w18	hrnet_w30	hrnet_w32	hrnet_w40	hrnet_w44	hrnet_w48	hrnet_w64c                   ~     e Zd Z	 d fd	Zd ZddZd Zd Zd Zd	e	e
j                 d
e	e
j                 fdZ xZS )HighResolutionModuleTc                 ^   t          t          |                                            |                     |||||           || _        || _        || _        || _        |                     ||||          | _	        | 
                                | _        t          j        d          | _        d S )NF)superrE   __init___check_branches
num_in_chsr   r   multi_scale_output_make_branchesbranches_make_fuse_layersfuse_layersnnReLUfuse_act)	selfr   block_typesr   rJ   r   r   rK   	__class__s	           M/var/www/html/ai-engine/env/lib/python3.11/site-packages/timm/models/hrnet.pyrH   zHighResolutionModule.__init__g  s     	"D))22444	
 	
 	
 %&("4++	
 
  1133    c                    d}|t          |          k    r$d                    |t          |                    }nm|t          |          k    r$d                    |t          |                    }n6|t          |          k    r#d                    |t          |                    }|r)t                              |           t	          |          d S )N z"num_branches({}) <> num_blocks({})z$num_branches({}) <> num_channels({})z"num_branches({}) <> num_in_chs({}))lenformat_loggererror
ValueError)rS   r   rT   r   rJ   r   	error_msgs          rV   rI   z$HighResolutionModule._check_branches  s    	3z??**<CCLRUV`RaRabbIIS....>EElTWXdTeTeffIIS__,,<CCLRUV`RaRabbI 	(MM)$$$Y'''	( 	(rW   r   c           	      F   d }|dk    s| j         |         ||         |j        z  k    rlt          j        t          j        | j         |         ||         |j        z  d|d          t          j        ||         |j        z  t                              } || j         |         ||         ||          g}||         |j        z  | j         |<   t          d||                   D ]2}|                     || j         |         ||                              3t          j        | S Nr   F)kernel_sizestridebiasmomentum)	rJ   	expansionrP   
SequentialConv2dBatchNorm2d_BN_MOMENTUMrangeappend)	rS   branch_indexr   r   r   rc   
downsamplelayersis	            rV   _make_one_branchz%HighResolutionModule._make_one_branch  s3   
Q;;$/,7<;UXbXl;lll	OL1<3MPZPd3d !&u> > > |L9J<PP[ghhh	 J *T_\:L<VX^`jkkl(4\(BZEY(Y%q*\233 	a 	aAMM**T_\%BLQ]D^__````}f%%rW   c           	          g }t          |          D ]-}|                    |                     ||||                     .t          j        |          S N)rl   rm   rr   rP   
ModuleList)rS   r   r   r   r   rM   rq   s          rV   rL   z#HighResolutionModule._make_branches  sY    |$$ 	\ 	\AOOD11!Z\ZZ[[[[}X&&&rW   c                    | j         dk    rt          j                    S | j         }| j        }g }t	          | j        r|nd          D ] }g }t	          |          D ]}||k    r|                    t          j        t          j        ||         ||         dddd          t          j	        ||         t                    t          j        d||z
  z  d                               ||k    r'|                    t          j                               g }t	          ||z
            D ]}|||z
  dz
  k    rh||         }	|                    t          j        t          j        ||         |	d	ddd          t          j	        |	t                                         v||         }	|                    t          j        t          j        ||         |	d	ddd          t          j	        |	t                    t          j        d                               |                    t          j        |            |                    t          j        |                     "t          j        |          S )
Nr   r   Frd   re   r   nearest)scale_factormoder    )r   rP   IdentityrJ   rl   rK   rm   rh   ri   rj   rk   UpsamplerQ   ru   )
rS   r   rJ   rO   rq   
fuse_layerjconv3x3sknum_out_chs_conv3x3s
             rV   rN   z&HighResolutionModule._make_fuse_layers  s   !!;== (_
t'>E||AFF 	: 	:AJ<(( @ @q55%%bm	*Q-A1aeTTTz!}|LLLq1uINNN'P 'P Q Q Q Q !VV%%bkmm4444!H"1q5\\  A	>>2<Q-/$OOBM "	*Q-9LaQRTU\a b b b "/B\ Z Z Z- -    
 3=Q-/$OOBM "	*Q-9LaQRTU\a b b b "/B\ Z Z Z "- -    
 %%bmX&>????r}Z889999}[)))rW   c                     | j         S rt   )rJ   rS   s    rV   get_num_in_chsz#HighResolutionModule.get_num_in_chs  s
    rW   xreturnc                    | j         dk    r | j        d         |d                   gS t          | j                  D ]\  }} |||                   ||<   g }t          | j                  D ]l\  }}d }t          |          D ]-\  }}| |||                   }| |||                   z   }.|                    |                     |                     m|S )Nr   r   )r   rM   	enumeraterO   rm   rR   )	rS   r   rq   branchx_fuse
fuse_outeryr~   fs	            rV   forwardzHighResolutionModule.forward  s    !!$DM!$QqT**++"4=11 	  	 IAv6!A$<<AaDD&t'788 	, 	,MAzA!*-- $ $19!A$AAAAadGGAAMM$--**++++rW   Tr   )__name__
__module____qualname__rH   rI   rr   rL   rN   r   r   torchTensorr   __classcell__rU   s   @rV   rE   rE   f  s          $ '  '  '  '  '  'D
( 
( 
(& & & &"' ' '$* $* $*L  el+ U\0B        rW   rE   c                        e Zd Z fdZej        j        d             Zej        j        d             Zdeej	                 fdZ xZ
S )SequentialListc                 B     t          t          |           j        |  d S rt   )rG   r   rH   )rS   argsrU   s     rV   rH   zSequentialList.__init__  s#    ,nd##,d3333rW   c                     d S rt    rS   r   s     rV   r   zSequentialList.forward  	     	rW   c                     d S rt   r   r   s     rV   r   zSequentialList.forward  r   rW   r   c                 &    | D ]} ||          }|S rt   r   )rS   r   modules      rV   r   zSequentialList.forward  s%     	 	Fq		AArW   )r   r   r   rH   r   jit_overload_methodr   r   r   r   r   s   @rV   r   r     s        4 4 4 4 4 Y    Y   D.        rW   r   c                   2    e Zd Zdej        dej        fdZdS )ModuleInterfaceinputr   c                     d S rt   r   )rS   r   s     rV   r   zModuleInterface.forward   s    rW   N)r   r   r   r   r   r   r   rW   rV   r   r     s:        U\ el      rW   r   )r   r   c                   T    e Zd Z	 	 	 	 	 	 d fd	Zdd
Zd ZddZddZej	        j
        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fdZdeej                 fdZd Zd defdZd Z xZS )"r   r      r   avg        classificationc           
      	   t          t          |                                            || _        |dk    sJ  |j        d$i | |d         }	t          j        ||	dddd          | _        t          j        |	t                    | _
        t          j        d	
          | _        t          j        |	ddddd          | _        t          j        dt                    | _        t          j        d	
          | _        |d         | _        | j        d         d         t"          | j        d                  | j        d         d         }
|                     d|
          | _        j        z  }|d         | _        | j        d         t"          | j        d                  fdt-          t/                              D             |                     |g          | _        |                     | j                  \  | _        }|d         | _        | j        d         t"          | j        d                  fdt-          t/                              D             |                     |          | _        |                     | j                  \  | _        }|d         | _        | j        d         t"          | j        d                  fdt-          t/                              D             |                     |          | _         |                     | j        d	          \  | _!        }|| _"        d | _#        |$                    dd	          }|dk    ridx| _%        | _&        | '                    ||          \  | _(        | _)        | _*        tW          | j%        | j        ||          \  | _,        | _-        | _.        n|dk    r/dx| _%        | _&        | '                    |d	          \  | _(        }}ndx| _%        | _&        d | _(        t          j/                    | _,        t          j/                    | _-        t          j/                    | _.        d}ta          d|d !          g| _1        te          | j#        r| j#        n          D ]?\  }}|dz  }| j#        r|d"z  n|}| xj1        ta          ||d#|dz    !          gz  c_1        @| 3                                 d S )%Nr   r#   r    r   r   F)rb   rc   paddingrd   re   Tinplacer   r$   r   r   r   r   r%   c                 0    g | ]}|         j         z  S r   rg   .0rq   r   r   s     rV   
<listcomp>z.HighResolutionNet.__init__.<locals>.<listcomp>.  %    aaa1Q**>>aaarW   r&   c                 0    g | ]}|         j         z  S r   r   r   s     rV   r   z.HighResolutionNet.__init__.<locals>.<listcomp>5  r   rW   r'   c                 0    g | ]}|         j         z  S r   r   r   s     rV   r   z.HighResolutionNet.__init__.<locals>.<listcomp><  r   rW   )rK   head_conv_biasr   i   )	conv_bias)	pool_type	drop_rateincre)
incre_onlyr1   stem)num_chs	reductionr   r!   stager   )4rG   r   rH   num_classesupdaterP   ri   conv1rj   rk   bn1rQ   act1conv2bn2act2
stage1_cfgblock_types_dict_make_layerlayer1rg   
stage2_cfgrl   rZ   _make_transition_layertransition1_make_stager%   
stage3_cfgtransition2r&   
stage4_cfgtransition3r'   headhead_channelspopnum_featureshead_hidden_size
_make_headincre_modulesdownsamp_modulesfinal_layerr   global_pool	head_drop
classifierr{   dictfeature_infor   init_weights)rS   cfgin_chansr   output_strider   r   r   kwargsr#   r   stage1_out_channelpre_stage_channelsr   _curr_striderq   cr   r   rU   s                     @@rV   rH   zHighResolutionNet.__init__  s    	&&//111&""""
V&
Yx1VW^cddd
>*|DDDGD)))	Yz21QPQX]^^^
>"|<<<GD)))	h-~6q9%dol&CD
_\215
&&z2|ZPP'1L@h-~6%dol&CD
aaaaacR^N_N_H`H`aaa668J7K\ZZ*.*:*:4?L*Y*Y''h-~6%dol&CD
aaaaacR^N_N_H`H`aaa667I<XX*.*:*:4?L*Y*Y''h-~6%dol&CD
aaaaacR^N_N_H`H`aaa667I<XX*.*:*:4?Lmq*:*r*r''	!!1488###8<<D 5JN//"( KZ K KGD 5t7G AR! %#	A A A=Ddndoo w<@@!D$9+/??;MZ^?+_+_("Aqq<??!D$9%)"!{}}D[]]DN kmmDO!"FSSSTD4FXd00LYY 	b 	bDAq1K+2AA$qKP_XY\]X]P_P_"`"`"`!aarW   FTc                    t           }g d| _        g }t          |          D ]=\  }}|                    |                     ||| j        |         dd                     >t          j        |          }|r|d d fS g }t          t          |          dz
            D ]}| j        |         |j	        z  }	| j        |dz            |j	        z  }
t          j
        t          j        |	|
ddd|          t          j        |
t                    t          j        d	                    }|                    |           t          j        |          }t          j
        t          j        | j        d         |j	        z  | j        ddd
|          t          j        | j        t                    t          j        d	                    }|||fS )Nr0   r   )rc   r    r   )in_channelsout_channelsrb   rc   r   rd   re   Tr   r   )r   r   r   rm   r   rP   ru   rl   rZ   rg   rh   ri   rj   rk   rQ   r   )rS   r   r   r   head_block_typer   rq   channelsr   r   r   downsamp_moduler   s                rV   r   zHighResolutionNet._make_heade  s   $/// $%788 	r 	rKAx  !1!1/8TM_`aMbdeno!1!p!pqqqqm44 	- $,, s-..233 
	5 
	5A,Q//2KKK-a!e47PPL m	 +, !!QYH H H |lCCC%%% O ##O4444=)9::mI .q1O4MM\`\maD D D N4,|DDDGD!!!
 
 .;;rW   c                    t          |          }t          |          }g }t          |          D ]}||k     r||         ||         k    r|                    t          j        t          j        ||         ||         dddd          t          j        ||         t                    t          j        d                               |                    t          j	                               g }t          |dz   |z
            D ]}|d         }	|||z
  k    r||         n|	}
|                    t          j        t          j        |	|
dd	dd          t          j        |
t                    t          j        d                               |                    t          j        |            t          j
        |          S )
Nr    r   Frw   re   Tr   r   )rZ   rl   rm   rP   rh   ri   rj   rk   rQ   r{   ru   )rS   num_channels_pre_layernum_channels_cur_layernum_branches_curnum_branches_pretransition_layersrq   r   r~   _in_chs_out_chss              rV   r   z(HighResolutionNet._make_transition_layer  s   566566'(( 	C 	CA###)!,0Fq0III%,,R]	"8";=STU=VXY[\^_fklll'=a'@<XXX---./ ./ 0 0 0 0
 &,,R[]];;;;q1u'7788 0 0A4R8G<=EUAU<U<U5a88[bHOOBM	'8Q15IIIx,GGG---%/ %/ 0 0 0 0 "(()ABBBB}.///rW   r   c           	         d }|dk    s|||j         z  k    rUt          j        t          j        |||j         z  d|d          t          j        ||j         z  t
                              } |||||          g}||j         z  }t          d|          D ]!}|                     |||                     "t          j        | S ra   )rg   rP   rh   ri   rj   rk   rl   rm   )	rS   r   inplanesplanesrT   rc   ro   rp   rq   s	            rV   r   zHighResolutionNet._make_layer  s    
Q;;(fz/C&CCC	(FZ-A$AqY_fklllv
(<<|TTT J
 *XvvzBBCJ00q+&& 	8 	8AMM**Xv667777}f%%rW   c                 P   |d         }|d         }|d         }|d         }t           |d                  }|d         }	g }
t          |          D ]O}|p||dz
  k     }|
                    t          ||||||	|                     |
d                                         }Pt          |
 |fS )	Nr   r   r   r   r   r   r   r   )r   rl   rm   rE   r   r   )rS   layer_configrJ   rK   r   r   r   r   r   r   modulesrq   reset_multi_scale_outputs                rV   r   zHighResolutionNet._make_stage  s    "=1#N3!,/
#N3%l<&@A
"=1{## 	6 	6A'9'PQq=P$NN/j*j,P[]uw w    !3355JJw'33rW   c                    |                                  D ]}t          |t          j                  r(t          j                            |j        dd           Dt          |t          j                  rJt          j                            |j        d           t          j                            |j	        d           d S )Nfan_outrelu)rz   nonlinearityr   r   )
r  
isinstancerP   ri   initkaiming_normal_weightrj   	constant_rd   )rS   ms     rV   r   zHighResolutionNet.init_weights  s     	- 	-A!RY'' -''H96 ( C C C CAr~.. -!!!(A...!!!&!,,,	- 	-rW   c                 4    t          d|rdng d          }|S )Nz^conv[12]|bn[12]z ^(?:layer|stage|transition)(\d+)))z^layer(\d+)\.(\d+)N)z^stage(\d+)\.(\d+)N)z^transition(\d+))i )r   rT   )r   )rS   coarsematchers      rV   group_matcherzHighResolutionNet.group_matcher  s@    $?E ;; L L L
 
 
 rW   c                     |r
J d            d S )Nz$gradient checkpointing not supportedr   )rS   enables     rV   set_grad_checkpointingz(HighResolutionNet.set_grad_checkpointing  s    AAAAAAAArW   r   c                     | j         S rt   )r   r   s    rV   get_classifierz HighResolutionNet.get_classifier  s
    rW   r   r   c                 f    || _         t          | j        | j         |          \  | _        | _        d S )N)r   )r   r   r   r   r   )rS   r   r   s      rV   reset_classifierz"HighResolutionNet.reset_classifier  s<    &,=t/;-H -H -H)$///rW   c                 r   |                                fdt          | j                  D             }|                     |          fdt          | j                  D             }|                     |          fdt          | j                  D             }|                     |          S )Nc                 ,    g | ]\  }} |          S r   r   )r   rq   tr   s      rV   r   z,HighResolutionNet.stages.<locals>.<listcomp>  s%    ;;;tq!aadd;;;rW   c                 |    g | ]8\  }}t          |t          j                  s |d                    n|         9S r   r	  rP   r{   r   rq   r  yls      rV   r   z,HighResolutionNet.stages.<locals>.<listcomp>  B    mmmAz!R[99Daa2iiir!ummmrW   c                 |    g | ]8\  }}t          |t          j                  s |d                    n|         9S r  r  r   s      rV   r   z,HighResolutionNet.stages.<locals>.<listcomp>  r"  rW   )r   r   r   r%   r   r&   r   r'   )rS   r   xlr!  s    ` @rV   stageszHighResolutionNet.stages  s    KKNN;;;;y)9::;;;[[__mmmmQZ[_[kQlQlmmm[[__mmmmQZ[_[kQlQlmmm[[__	rW   c                 D   |                      |          }|                     |          }|                     |          }|                     |          }|                     |          }|                     |          }|                     |          }| j        | j        |S d }t          | j                  D ]P\  }}| |||                   }| j        |dz
           } |||                   |
                    |          z   }Q|                     |          }|S )Nr   )r   r   r   r   r   r   r%  r   r   r   r   r   )rS   r   r!  r   rq   r   downs          rV   forward_featuresz"HighResolutionNet.forward_features  s	   JJqMMHHQKKIIaLLJJqMMHHQKKIIaLL [[^^%)>)FI!$"455 	3 	3HAuyE"Q%LL(,(=a!e(DE"Q%LL4<<??2QrW   
pre_logitsc                     |                      |          }|                     |          }|r|n|                     |          S rt   )r   r   r   )rS   r   r)  s      rV   forward_headzHighResolutionNet.forward_head  sA    QNN16qqDOOA$6$66rW   c                 Z    |                      |          }|                     |          }|S rt   )r(  r+  )rS   r   r   s      rV   r   zHighResolutionNet.forward  s-    !!!$$a  rW   )r    r   r   r   r   r   )FTr   r   F)r   )r   r   r   rH   r   r   r   r   r   r   ignorer   r  r  rP   Moduler  intstrr  r   r   r%  r(  boolr+  r   r   r   s   @rV   r   r   
  s       
 !W W W W W Wr$< $< $< $<L0 0 06& & & &4 4 4 4& Y- - - Y	 	 	 	 YB B B B Y	    H HC Hc H H H H
4-      27 7$ 7 7 7 7      rW   c                   Z     e Zd ZdZ	 	 	 	 	 	 	 d fd		Zd
 Zdeej                 fdZ	 xZ
S )r   a  HighResolutionNet feature extraction

    The design of HRNet makes it easy to grab feature maps, this class provides a simple wrapper to do so.
    It would be more complicated to use the FeatureNet helpers.

    The `feature_location=incre` allows grabbing increased channel count features using part of the
    classification head. If `feature_location=''` the default HRNet features are returned. First stem
    conv is used for stride 2 features.
    r    r   r   r   r   r   r   r   r   r    r!   c	           
          |dv sJ  t          t          |           j        |f||||||d|	 t          | j        |          | _        d | j                                        D             | _        d S )N)r   rY   )r   r   r   r   r   r   c                     h | ]
}|d          S )indexr   )r   r   s     rV   	<setcomp>z5HighResolutionNetFeatures.__init__.<locals>.<setcomp>@  s    KKK7KKKrW   )rG   r   rH   r   r   	get_dicts_out_idx)rS   r   r   r   r   r   r   feature_locationout_indicesr   rU   s             rV   rH   z"HighResolutionNetFeatures.__init__(  s      =00007'..7		
#'#!		
 		
 		
 		
 		
 ((9;GGKKT->-H-H-J-JKKKrW   c                     J d            )NFzNot supportedr   r   s     rV   r(  z*HighResolutionNetFeatures.forward_featuresB  s    %o%%%rW   r   c                 $   g }|                      |          }|                     |          }|                     |          }d| j        v r|                    |           |                     |          }|                     |          }|                     |          }|                     |          }| j	        d t          || j	                  D             }t          |          D ]&\  }}|dz   | j        v r|                    |           '|S )Nr   c                 *    g | ]\  }} ||          S r   r   )r   r   r   s      rV   r   z5HighResolutionNetFeatures.forward.<locals>.<listcomp>Q  s$    EEEhaqEEErW   r   )r   r   r   r:  rm   r   r   r   r%  r   zipr   )rS   r   outrq   r   s        rV   r   z!HighResolutionNetFeatures.forwardE  s    JJqMMHHQKKIIaLLJJqMMMJJqMMHHQKKIIaLLKKNN)EE#a1C*D*DEEEAaLL 	 	DAq1u%%

1
rW   )r    r   r   r   r   r   r4  )r   r   r   __doc__rH   r(  r   r   r   r   r   r   s   @rV   r   r     s          $'L L L L L L4& & &D.        rW   Fc                 R   t           }d}d }|                    dd          rt          }d}d}|p| }|                    d| o|                    dd          dk              }t	          || |ft
          |         ||d|}|r%t          |j                  |_        |j        |_        |S )	NFfeatures_only)r   r   Tpretrained_strictr   r   )	model_cfgrE  kwargs_filter)	r   r   r   getr	   cfg_clsr
   default_cfgpretrained_cfg)	variant
pretrainedcfg_variantmodel_kwargs	model_clsrD  rG  rE  models	            rV   _create_hrnetrR  X  s    !IMM// -	6(K$((\l..v7GHHL\\  ! +&+#   E  1:5;LMM!0LrW   rY   c                 4    | dddddt           t          ddd
|S )	Nr   )r       rT  )   rU  g      ?bilinearr   r   )
urlr   
input_size	pool_sizecrop_pctinterpolationmeanstd
first_convr   r   )rW  r   s     rV   _cfgr_  u  s5    =vJ%.B\   rW   ztimm/bicubic)	hf_hub_idr[  )ra  gffffff?)ra  rZ  g      ?)r       rb  )ra  rZ  test_crop_pcttest_input_size)zhrnet_w18_small.gluon_in1kzhrnet_w18_small.ms_in1kzhrnet_w18_small_v2.gluon_in1kzhrnet_w18_small_v2.ms_in1kzhrnet_w18.ms_aug_in1kzhrnet_w18.ms_in1kzhrnet_w30.ms_in1kzhrnet_w32.ms_in1kzhrnet_w40.ms_in1kzhrnet_w44.ms_in1kzhrnet_w48.ms_in1kzhrnet_w64.ms_in1kzhrnet_w18_ssld.paddle_in1kzhrnet_w48_ssld.paddle_in1kr   c                     t          d| fi |S )Nr;   rR  rM  r   s     rV   r;   r;     s    *JAA&AAArW   c                     t          d| fi |S )Nr<   rf  rg  s     rV   r<   r<     s    -zDDVDDDrW   c                     t          d| fi |S )Nr=   rf  rg  s     rV   r=   r=         j;;F;;;rW   c                     t          d| fi |S )Nr>   rf  rg  s     rV   r>   r>     rj  rW   c                     t          d| fi |S )Nr?   rf  rg  s     rV   r?   r?     rj  rW   c                     t          d| fi |S )Nr@   rf  rg  s     rV   r@   r@     rj  rW   c                     t          d| fi |S )NrA   rf  rg  s     rV   rA   rA     rj  rW   c                     t          d| fi |S )NrB   rf  rg  s     rV   rB   rB     rj  rW   c                     t          d| fi |S )NrC   rf  rg  s     rV   rC   rC     rj  rW   c                 L    |                     dd           t          dd| d|S )Nr   Fhrnet_w18_ssldr=   rN  rM  )rr  
setdefaultrR  rg  s     rV   rr  rr    5    
&...d{zdd]cdddrW   c                 L    |                     dd           t          dd| d|S )Nr   Fhrnet_w48_ssldrB   rs  )rx  rt  rg  s     rV   rx  rx    rv  rW   )FN)rY   r-  )9rB  loggingtypingr   r   torch.nnrP   torch.nn.functional
functionalF	timm.datar   r   timm.layersr   _builderr	   r
   	_featuresr   	_registryr   r   resnetr   r   __all__rk   	getLoggerr   r\   r   rI  r/  rE   rh   r   r   	interfacer   r   r   r   rR  r_  default_cfgsr;   r<   r=   r>   r?   r@   rA   rB   rC   rr  rx  r   rW   rV   <module>r     s  	 	                        A A A A A A A A ) ) ) ) ) ) G G G G G G G G " " " " " " < < < < < < < < * * * * * * * * ;
<
'
H
%
% $Dt#
 
 
 t!
 
 
 t %
 
 
 t#*
 
 
5" " "H tt#
 
 
 t!
 
 
 t %
 
 
 t#*
 
 
5" " "H dt#
 
 
 t!
 
 
 t %
 
 
 t#*
 
 
5" " "H dt#
 
 
 t!
 
 
 t &
 
 
 t#+
 
 
5" " "H dt#
 
 
 t!
 
 
 t &
 
 
 t#+
 
 
5" " "H dt#
 
 
 t!
 
 
 t &
 
 
 t#+
 
 
5" " "H dt#
 
 
 t!
 
 
 t &
 
 
 t#+
 
 
5" " "H dt#
 
 
 t!
 
 
 t &
 
 
 t#+
 
 
5" " "H dt#
 
 
 t"
 
 
 t '
 
 
 t#,
 
 
5" " "C	D D DN
@ @ @ @ @29 @ @ @F    R]   *     eho      P P P P P	 P P Pf8 8 8 8 8 1 8 8 8v   :    %$"&$	"R"R"R#tg666%)TG9%U%U%U"&$"9"9"9!T   000000000000000000000"&$S-# # # #'$S-# # #+& &  8 B B3D B B B B E E6G E E E E < <-> < < < < < <-> < < < < < <-> < < < < < <-> < < < < < <-> < < < < < <-> < < < < < <-> < < < < e e2C e e e e
 e e2C e e e e e erW   