
    kh8                     *   d Z ddlZddlmZ ddl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 dd	lmZmZ dd
lmZmZ ddgZdZ ej2                  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jD                  jF                   G d? d@ej                  j<                               Z$eedAZ% G dB dej<                        Z& G dC de&      Z'd\dDZ(d]dEZ) e e)dFdGH       e)dFI       e)dFdGH       e)dFI       e)dFdJK       e)dFI       e)dFI       e)dFI       e)dFI       e)dFI       e)dFI       e)dFI       e)dFdJdLdMN       e)dFdJdLdMN      dO      Z*ed^dPe&fdQ       Z+ed^dPe&fdR       Z,ed^dPe&fdS       Z-ed^dPe&fdT       Z.ed^dPe&fdU       Z/ed^dPe&fdV       Z0ed^dPe&fdW       Z1ed^dPe&fdX       Z2ed^dPe&fdY       Z3ed^dPe&fdZ       Z4ed^dPe&fd[       Z5y)_z 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 )HighResolutionModulec                    t         t        |           | j                  |||||       || _        || _        || _        || _        | j                  ||||      | _	        | j                         | _        t        j                  d      | _        y )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/teggl/fontify/venv/lib/python3.12/site-packages/timm/models/hrnet.pyrH   zHighResolutionModule.__init__f  s     	"D24	
 %&("4++	
  113    c                 F   d}|t        |      k7  rdj                  |t        |            }nS|t        |      k7  rdj                  |t        |            }n)|t        |      k7  rdj                  |t        |            }|r t        j                  |       t	        |      y )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`RabIS..>EElTWXdTefIS_,<CCLRUV`RabIMM)$Y'' rW   c           	      N   d }|dk7  s"| j                   |   ||   |j                  z  k7  rtt        j                  t        j                  | j                   |   ||   |j                  z  d|d      t        j
                  ||   |j                  z  t                    } || j                   |   ||   ||      g}||   |j                  z  | j                   |<   t        d||         D ]*  }|j                   || j                   |   ||                , t        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  s#   
Q;$//,7<;UXbXlXl;ll		OOL1<3MPZPdPd3d !&u> |L9J<P<PP[gh	J T__\:L<VX^`jkl(4\(BZEYEY(Y%q*\23 	aAMM*T__\%BLQ]D^_`	a }}f%%rW   c           	          g }t        |      D ]%  }|j                  | j                  ||||             ' t        j                  |      S N)rl   rm   rr   rP   
ModuleList)rS   r   r   r   r   rM   rq   s          rV   rL   z#HighResolutionModule._make_branches  sK    |$ 	\AOOD11!Z\Z[	\ }}X&&rW   c                    | j                   dk(  rt        j                         S | j                   }| j                  }g }t	        | j
                  r|nd      D ]  }g }t	        |      D ]  }||kD  r}|j                  t        j                  t        j                  ||   ||   dddd      t        j                  ||   t              t        j                  d||z
  z  d                   ||k(  r$|j                  t        j                                g }t	        ||z
        D ]  }|||z
  dz
  k(  r`||   }	|j                  t        j                  t        j                  ||   |	d	ddd      t        j                  |	t                           n||   }	|j                  t        j                  t        j                  ||   |	d	ddd      t        j                  |	t              t        j                  d                    |j                  t        j                  |         |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'>'>|AF 	:AJ<( @q5%%bmm		*Q-A1aeTz!}|Lq1uIN'P Q !V%%bkkm4!H"1q5\ A	>2<Q-/$OOBMM "		*Q-9LaQRTU\a b "/B\ Z- 
 3=Q-/$OOBMM "		*Q-9LaQRTU\a b "/B\ Z "-  %%bmmX&>?1@2 r}}Z897	:: }}[))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 ]V  \  }}d }t        |      D ]!  \  }}| |||         }| |||         z   }# |j	                  | j                  |             X |S )Nr   r   )r   rM   	enumeraterO   rm   rR   )	rS   r   rq   branchx_fuse
fuse_outeryr~   fs	            rV   forwardzHighResolutionModule.forward  s    !$DMM!$QqT*++"4==1 	 IAv!A$<AaD	  &t'7'78 	,MAzA!*- $19!A$AAadGA	$
 MM$--*+	, rW   Tr   )__name__
__module____qualname__rH   rI   rr   rL   rN   r   r   torchTensorr   __classcell__rU   s   @rV   rE   rE   e  sM      $ 'D
(&"'$*Lell+ 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                 &    t        t        | 
  |  y rt   )rG   r   rH   )rS   argsrU   s     rV   rH   zSequentialList.__init__  s    nd,d3rW   c                      y rt    rS   r   s     rV   r   zSequentialList.forward       	rW   c                      y 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	A	rW   )r   r   r   rH   r   jit_overload_methodr   r   r   r   r   s   @rV   r   r     sY    4 YY   YY  D. rW   r   c                   D    e Zd Zdej                  dej                  fdZy)ModuleInterfaceinputr   c                      y 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\\ ell rW   r   )r   r   c                       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   c           
      	   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   }| j%                  |d|
|      | _        |j(                  |
z  }|d   | _        | j*                  d   }
t"        | j*                  d      }t-        t/        |
            D cg c]  }|
|   |j(                  z   }
}| j1                  |g|
      | _        | j5                  | j*                  |
      \  | _        }|d   | _        | j8                  d   }
t"        | j8                  d      }t-        t/        |
            D cg c]  }|
|   |j(                  z   }
}| j1                  ||
      | _        | j5                  | j8                  |
      \  | _        }|d   | _        | j>                  d   }
t"        | j>                  d      }t-        t/        |
            D cg c]  }|
|   |j(                  z   }
}| j1                  ||
      | _         | j5                  | j>                  |
d	      \  | _!        }|| _"        d | _#        |jI                  dd	      }|dk(  rkdx| _%        | _&        | jO                  ||      \  | _(        | _)        | _*        tW        | jJ                  | j                  ||      \  | _,        | _-        | _.        n|dk(  r+dx| _%        | _&        | jO                  |d	      \  | _(        }}ndx| _%        | _&        d | _(        t        j^                         | _,        t        j^                         | _-        t        j^                         | _.        d}ta        d|d      g| _1        te        | jF                  r| jF                  n|
      D ]E  \  }}|dz  }| jF                  r|dz  n|}| xjb                  ta        ||d |dz          gz  c_1        G | jg                          y c c}w c c}w c c}w )"Nr   r#   r    r   r   F)rb   rc   paddingrd   re   Tinplacer   r$   r   r   r   r   r%   r&   r'   )rK   head_conv_biasclassificationi   )	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   r   r   stage1_out_channelrq   pre_stage_channelsr   _curr_stridecrU   s                       rV   rH   zHighResolutionNet.__init__  s    	/1&"""

V&
YYx1VW^cd
>>*|DGGD)	YYz21QPQX]^
>>"|<GGD)	h-~6q9%dool&CD
__\215
&&z2|ZP'11L@h-~6%dool&CD
HMcR^N_H`a1Q**>*>>aa668J7K\Z*.*:*:4??L*Y''h-~6%dool&CD
HMcR^N_H`a1Q**>*>>aa667I<X*.*:*:4??L*Y''h-~6%dool&CD
HMcR^N_H`a1Q**>*>>aa667I<X*.*:*:4??Lmq*:*r''	!!148##8<<D 5JN//"( KZ KGD 5t7G AR!!  %#	A=Ddndo w<@@!D$9+/??;MZ^?+_("Aq<??!D$9%)"!{{}D[[]DN kkmDO!"FSTD4F4Fd00LY 	bDAq1K++AA$qKRWXY\]X]W^P_"`!aa	b
 	k b b bs    S!<S&S+c                    t         }g d| _        g }t        |      D ]7  \  }}|j                  | j	                  ||| j                  |   dd             9 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	            }|j                  |        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_headd  s   $/ $%78 	rKAx  !1!1/8TM_M_`aMbdeno!1!pq	rm4 $,, s-.23 
	5A,,Q//2K2KKK--a!e47P7PPL mm		 +, !!QYH |lC%O ##O4
	5 ==)9:mmII ..q1O4M4MM\`\m\maD NN4,,|DGGD!
 .;;rW   c                 F   t        |      }t        |      }g }t        |      D ]f  }||k  r||   ||   k7  rv|j                  t        j                  t        j
                  ||   ||   dddd      t        j                  ||   t              t        j                  d                   |j                  t        j                                g }t        |dz   |z
        D ]  }|d   }	|||z
  k(  r||   n|	}
|j                  t        j                  t        j
                  |	|
dd	dd      t        j                  |
t              t        j                  d                    |j                  t        j                  |        i 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56'( 	CA##)!,0Fq0II%,,R]]		"8";=STU=VXY[\^_fkl'=a'@<X-./ 0
 &,,R[[];q1u'778 0A4R8G<=EUAU<U5a8[bHOOBMM		'8Q15Ix,G-%/ 00 "(()AB%	C( }}.//rW   c           	         d }|dk7  s|||j                   z  k7  rat        j                  t        j                  |||j                   z  d|d      t        j                  ||j                   z  t
                    } |||||      g}||j                   z  }t        d|      D ]  }|j                   |||              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-A$AqY_fklv
(<(<<|TJ
 XvvzBCJ000q+& 	8AMM*Xv67	8 }}f%%rW   c                    |d   }|d   }|d   }|d   }t         |d      }|d   }	g }
t        |      D ]A  }|xs ||dz
  k  }|
j                  t        ||||||	|             |
d   j	                         }C t        |
 |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{# 	6A'9'PQq=P$NN/j*j,P[]uw  !335J	6 w'33rW   c                    | j                         D ]  }t        |t        j                        r-t        j                  j                  |j                  dd       Jt        |t        j                        set        j                  j                  |j                  d       t        j                  j                  |j                  d        y )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!RYY'''HH96 ( CAr~~.!!!((A.!!!&&!,	-rW   c                 ,    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
 rW   c                     |rJ d       y )Nz$gradient checkpointing not supportedr   )rS   enables     rV   set_grad_checkpointingz(HighResolutionNet.set_grad_checkpointing  s    AAAz6rW   r   c                     | j                   S rt   )r   r   s    rV   get_classifierz HighResolutionNet.get_classifier  s    rW   r   r   c                 p    || _         t        | j                  | j                   |      \  | _        | _        y )N)r   )r   r   r   r   r   )rS   r   r   s      rV   reset_classifierz"HighResolutionNet.reset_classifier  s2    &,=t//;-H)$/rW   c                 H   | j                  |      }t        | j                        D cg c]  \  }} ||       }}}| j                  |      }t        | j                        D cg c]/  \  }}t        |t        j                        s ||d         n||   1 }}}| j                  |      }t        | j                        D cg c]/  \  }}t        |t        j                        s ||d         n||   1 }}}| j                  |      }|S c c}}w c c}}w c c}}w )Nr   )r   r   r   r%   r   r   rP   r{   r&   r   r'   )rS   r   rq   txlyls         rV   stageszHighResolutionNet.stages  s    KKN()9)9:;tq!ad;;[[_QZ[_[k[kQlmAz!R[[9a2ir!uDmm[[_QZ[_[k[kQlmAz!R[[9a2ir!uDmm[[_	 < n ns   D(4D4Dc                    | j                  |      }| j                  |      }| j                  |      }| j                  |      }| j	                  |      }| j                  |      }| j                  |      }| j                  | j                  |S d }t        | j                        D ]B  \  }}| |||         }| j                  |dz
     } |||         |j                  |      z   }D | j                  |      }|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    JJqMHHQKIIaLJJqMHHQKIIaL [[^%)>)>)FI!$"4"45 	3HAuy"Q%L(,(=(=a!e(D"Q%L4<<?2	3 QrW   
pre_logitsc                 p    | j                  |      }| j                  |      }|r|S | j                  |      S rt   )r   r   r   )rS   r   r  s      rV   forward_headzHighResolutionNet.forward_head  s6    QNN1q6DOOA$66rW   c                 J    | j                  |      }| j                  |      }|S rt   )r  r  )rS   r   r   s      rV   r   zHighResolutionNet.forward  s'    !!!$a rW   )r      r   avg        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r$<L06&4& YY- - YY	 	 YYB B YY		  HC Hc H
4- 27$ 7rW   c                   ^     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.
    c	           
          |dv sJ t        t        | 
  |f||||||d|	 t        | j                  |      | _        | j                  j                         D 
ch c]  }
|
d   	 c}
| _        y c c}
w )N)r   rY   )r   r   r   r   r   r   index)rG   r   rH   r   r   	get_dicts_out_idx)rS   r   r   r   r   r   r   feature_locationout_indicesr   r   rU   s              rV   rH   z"HighResolutionNetFeatures.__init__'  s      =000'7		
#'#!		
 		
 ((9(9;G-1->->-H-H-JK7KKs   A/c                     J d       )NzNot supportedr   r   s     rV   r  z*HighResolutionNetFeatures.forward_featuresA  s    %o%urW   r   c                 "   g }| j                  |      }| j                  |      }| j                  |      }d| j                  v r|j	                  |       | j                  |      }| j                  |      }| j                  |      }| j                  |      }| j                  .t        || j                        D cg c]  \  }} ||       }}}t        |      D ](  \  }}|dz   | j                  v s|j	                  |       * |S c c}}w )Nr   r   )r   r   r   r(  rm   r   r   r   r  r   zipr   )rS   r   outr   r   rq   s         rV   r   z!HighResolutionNetFeatures.forwardD  s    JJqMHHQKIIaLJJqMJJqMHHQKIIaLKKN)*-a1C1C*DEhaqEAEaL 	DAq1u%

1	 
	 Fs   >D)r    r  r   r  r  r   )r   r   r   r    r!   )r   r   r   __doc__rH   r  r   r   r   r   r   r   s   @rV   r   r     s?     $'L4&D. rW   c                 >   t         }d}d }|j                  dd      r
t        }d}d}|xs | }|j                  d| xr |j                  dd      dk(        }t	        || |ft
        |   ||d|}|r+t        |j                        |_        |j                  |_        |S )	NFfeatures_only)r   r   Tpretrained_strictr   r   )	model_cfgr2  kwargs_filter)	r   r   r   getr	   cfg_clsr
   default_cfgpretrained_cfg)	variant
pretrainedcfg_variantmodel_kwargs	model_clsr1  r4  r2  models	            rV   _create_hrnetr?  W  s    !IMM/-	6(K$((\l..v7GHL\\ ! +&+# E :5;L;LM!00LrW   c                 0    | dddddt         t        ddd
|S )	Nr  )r       rA  )   rB  g      ?bilinearr   r   )
urlr   
input_size	pool_sizecrop_pctinterpolationmeanstd
first_convr   r   )rD  r   s     rV   _cfgrL  t  s0    =vJ%.B\  rW   ztimm/bicubic)	hf_hub_idrH  )rN  gffffff?)rN  rG  g      ?)r       rO  )rN  rG  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;   r?  r:  r   s     rV   r;   r;     s    *JA&AArW   c                     t        d| fi |S )Nr<   rS  rT  s     rV   r<   r<     s    -zDVDDrW   c                     t        d| fi |S )Nr=   rS  rT  s     rV   r=   r=         j;F;;rW   c                     t        d| fi |S )Nr>   rS  rT  s     rV   r>   r>     rW  rW   c                     t        d| fi |S )Nr?   rS  rT  s     rV   r?   r?     rW  rW   c                     t        d| fi |S )Nr@   rS  rT  s     rV   r@   r@     rW  rW   c                     t        d| fi |S )NrA   rS  rT  s     rV   rA   rA     rW  rW   c                     t        d| fi |S )NrB   rS  rT  s     rV   rB   rB     rW  rW   c                     t        d| fi |S )NrC   rS  rT  s     rV   rC   rC     rW  rW   c                 B    |j                  dd       t        dd| d|S )Nr   Fr=   r;  r:  )hrnet_w18_ssld
setdefaultr?  rT  s     rV   r`  r`    )    
&.d{zd]cddrW   c                 B    |j                  dd       t        dd| d|S )Nr   FrB   r_  )hrnet_w48_ssldra  rT  s     rV   re  re    rc  rW   )FN)rY   r  )6r/  loggingtypingr   r   torch.nnrP   	timm.datar   r   timm.layersr   _builderr	   r
   	_featuresr   	_registryr   r   resnetr   r   __all__rk   	getLoggerr   r\   r   r6  r   rE   rh   r   r   	interfacer   r   r   r   r?  rL  default_cfgsr;   r<   r=   r>   r?   r@   rA   rB   rC   r`  re  r   rW   rV   <module>rs     s"  	     A ) G " < * ;
<
'

H
% #
 !
  %
 #*
5"H #
 !
  %
 #*
5"H #
 !
  %
 #*
5"H #
 !
  &
 #+
5"H #
 !
  &
 #+
5"H #
 !
  &
 #+
5"H #
 !
  &
 #+
5"H #
 !
  &
 #+
5"H #
 "
  '
 #,
5"C	DN
@299 @FR]] * ehhoo    P		 Pf8 1 8v: %"&	"R#g6%)G9%U"&"9! 0000000"&S-# #'S-#+& 8 B3D B B E6G E E <-> < < <-> < < <-> < < <-> < < <-> < < <-> < < <-> < < e2C e e
 e2C e erW   