
    ^jE                        d Z ddlZddlmZmZmZmZ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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
jD                        Z# G d= d>e
jH                        Z%eed?Z& G d@ de
jD                        Z' G dA de'      Z(d[dBZ)d\dCZ* e e*dDdEdFG       e*dDH       e*dDdEdFG       e*dDH       e*dDdIJ       e*dDH       e*dDH       e*dDH       e*dDH       e*dDH       e*dDH       e*dDH       e*dDdIdKdLM       e*dDdIdKdLM      dN      Z+ed]dOe'fdP       Z,ed]dOe'fdQ       Z-ed]dOe'fdR       Z.ed]dOe'fdS       Z/ed]dOe'fdT       Z0ed]dOe'fdU       Z1ed]dOe'fdV       Z2ed]dOe'fdW       Z3ed]dOe'fdX       Z4ed]dOe'fdY       Z5ed]dOe'fdZ       Z6y)^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)DictListTypeOptionalTuple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$   )   <   )r0   r1   x   )r0   r1   r2      )r   r   )r   r   r%   r   r   r%      )(   P   )r6   r7      )r6   r7   r8   i@  ),   X   )r9   r:      )r9   r:   r;   i`  )0   `   )r<   r=      )r<   r=   r>   i  )r   r%   )r   r%   r5   )r   r%   r5   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dedeej                     deedf   dee   deedf   de	de
f fd	Zd
 ZddZddZddZd Zdeej$                     deej$                     fdZ xZS )HighResolutionModuler   block_typesr   .
num_in_chsr   r   multi_scale_outputc
                 &   ||	d}
t         |           | j                  |||||       || _        || _        || _        || _         | j                  ||||fi |
| _         | j                  di |
| _
        t        j                  d      | _        y )NdevicedtypeF )super__init___check_branchesrK   r   r   rL   _make_branchesbranches_make_fuse_layersfuse_layersnnReLUfuse_act)selfr   rJ   r   rK   r   r   rL   rO   rP   dd	__class__s              \/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/models/hrnet.pyrS   zHighResolutionModule.__init__f  s     /	
 %&("4+++	

 
 24117B7    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)r\   r   rJ   r   rK   r   	error_msgs          r_   rT   z$HighResolutionModule._check_branches  s    	3z?*<CCLRUV`RabIS..>EElTWXdTefIS_,<CCLRUV`RabIMM)$Y'' r`   c           	      `   ||d}d }	|dk7  s"| j                   |   ||   |j                  z  k7  rvt        j                  t        j                  | j                   |   ||   |j                  z  fd|dd|t        j
                  ||   |j                  z  fdt        i|      }	 || j                   |   ||   ||	fi |g}
||   |j                  z  | j                   |<   t        d||         D ]+  }|
j                   || j                   |   ||   fi |       - t        j                  |
 S NrN   r   F)kernel_sizestridebiasmomentum)	rK   	expansionrY   
SequentialConv2dBatchNorm2d_BN_MOMENTUMrangeappend)r\   branch_indexr   r   r   rl   rO   rP   r]   
downsamplelayersis               r_   _make_one_branchz%HighResolutionModule._make_one_branch  sU   /
Q;$//,7<;UXbXlXl;ll		OOL1 .1E1EE !"!  |L9J<P<PPn[gnkmn
J T__\:L<VX^`jqnpqr(4\(BZEYEY(Y%q*\23 	gAMM*T__\%BLQ]D^ebdef	g }}f%%r`   c           	          ||d}g }t        |      D ]'  }	|j                   | j                  |	|||fi |       ) t        j                  |      S )NrN   )rt   ru   rz   rY   
ModuleList)
r\   r   r   r   r   rO   rP   r]   rV   ry   s
             r_   rU   z#HighResolutionModule._make_branches  s^    /|$ 	bAOO1D11!Z\`]_`a	b }}X&&r`   c                    ||d}| 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fddi|t        j                  ||   fdt        i|t        j                  d|	|z
  z  d	                   |	|k(  r$|j                  t        j                                g }
t	        ||	z
        D ]  }|||	z
  dz
  k(  rb||   }|
j                  t        j                  t        j                  ||	   |d
ddfddi|t        j                  |fdt        i|             p||	   }|
j                  t        j                  t        j                  ||	   |d
ddfddi|t        j                  |fdt        i|t        j                  d                    |j                  t        j                  |
         |j                  t        j                  |              t        j                  |      S )NrN   r   r   rm   Frn   r    nearest)scale_factormoder#   )r   rY   IdentityrK   rt   rL   ru   rp   rq   rr   rs   UpsamplerZ   r|   )r\   rO   rP   r]   r   rK   rX   ry   
fuse_layerjconv3x3sknum_out_chs_conv3x3s                r_   rW   z&HighResolutionModule._make_fuse_layers  sI   /!;;= ((__
t'>'>|AF 	:AJ<( @q5%%bmm		*Q-A1aZeZWYZz!}R|RrRq1uIN'P Q !V%%bkkm4!H"1q5\ A	>2<Q-/$OOBMM "		*Q-9LaQRTU h\a heg h "/B `\ `]_ `- 
 3=Q-/$OOBMM "		*Q-9LaQRTU h\a heg h "/B `\ `]_ ` "-  %%bmmX&>?1@2 r}}Z897	:: }}[))r`   c                     | j                   S N)rK   r\   s    r_   get_num_in_chsz#HighResolutionModule.get_num_in_chs  s    r`   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   rV   	enumeraterX   ru   r[   )	r\   r   ry   branchx_fuse
fuse_outeryr   fs	            r_   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$--*+	, r`   TNNr   NNNN)__name__
__module____qualname__intr   rY   Moduler   r   strboolrS   rT   rz   rU   rW   r   torchTensorr   __classcell__r^   s   @r_   rI   rI   e  s     (,$'$' bii$' c3h	$'
 S	$'  S/$' $' !%$'L
(&.'%*Nell+ U\\0B r`   rI   c                   D     e Zd Z fdZdeej                     fdZ xZS )SequentialListc                     t        |   |  y r   )rR   rS   )r\   argsr^   s     r_   rS   zSequentialList.__init__  s    $r`   r   c                 $    | D ]
  } ||      } |S r   rQ   )r\   r   modules      r_   r   zSequentialList.forward  s     	Fq	A	r`   )	r   r   r   rS   r   r   r   r   r   r   s   @r_   r   r     s     D. r`   r   )r!   r   c                       e Zd Z	 	 	 	 	 	 	 	 ddededededededef fdZdd	Zd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   cfgin_chansnum_classesoutput_strideglobal_pool	drop_rateheadc
           
      
   ||	d}t         |           || _        || _        |dk(  sJ  |j                  d"i |
 |d   }t        j                  ||fddddd|| _        t        j                  |fd	t        i|| _
        t        j                  d
      | _        t        j                  |dfddddd|| _        t        j                  d#d	t        i|| _        t        j                  d
      | _        |d   | _        | j                   d   d   }t"        | j                   d      }| j                   d   d   } | j$                  |d||fi || _        |j(                  |z  }|d   | _        | j*                  d   }t"        | j*                  d      }t-        t/        |            D cg c]  }||   |j(                  z   }} | j0                  |g|fi || _         | j4                  | j*                  |fi |\  | _        }|d   | _        | j8                  d   }t"        | j8                  d      }t-        t/        |            D cg c]  }||   |j(                  z   }} | j0                  ||fi || _         | j4                  | j8                  |fi |\  | _        }|d   | _        | j>                  d   }t"        | j>                  d      }t-        t/        |            D cg c]  }||   |j(                  z   }} | j0                  ||fi || _          | j4                  | j>                  |fdd
i|\  | _!        }|| _"        d | _#        |jI                  dd
      }|dk(  rndx| _%        | _&         | jN                  |fd|i|\  | _(        | _)        | _*        tW        | jJ                  | j                  f||d|\  | _,        | _-        | _.        n|dk(  r-dx| _%        | _&         | jN                  |fdd
i|\  | _(        }}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 )$NrN   r   r&   r#   r    r   F)rk   rl   paddingrm   rn   Tinplacer   r'   r   r   r   r   r(   r)   r*   rL   head_conv_biasclassificationi   	conv_bias)	pool_typer   incre
incre_onlyr5   stem)num_chs	reductionr   r$   stagerQ   r+   )4rR   rS   r   r   updaterY   rq   conv1rr   rs   bn1rZ   act1conv2bn2act2
stage1_cfgblock_types_dict_make_layerlayer1ro   
stage2_cfgrt   rc   _make_transition_layertransition1_make_stager(   
stage3_cfgtransition2r)   
stage4_cfgtransition3r*   r   head_channelspopnum_featureshead_hidden_size
_make_headincre_modulesdownsamp_modulesfinal_layerr   r   	head_drop
classifierr   dictfeature_infor   init_weights)r\   r   r   r   r   r   r   r   rO   rP   kwargsr]   r&   r   r   r   stage1_out_channelry   pre_stage_channelsr   _curr_stridecr^   s                          r_   rS   zHighResolutionNet.__init__  s*    /& """

V&
YYxj1VW^cjgij
>>*J|JrJGGD)	YYz2d1QPQX]dacd
>>B|BrBGGD)	h-~6q9%dool&CD
__\215
&d&&z2|ZVSUV'11L@h-~6%dool&CD
HMcR^N_H`a1Q**>*>>aa64668J7K\`]_`*:$*:*:4??L*_\^*_''h-~6%dool&CD
HMcR^N_H`a1Q**>*>>aa64667I<^[]^*:$*:*:4??L*_\^*_''h-~6%dool&CD
HMcR^N_H`a1Q**>*>>aa64667I<^[]^*:$*:*:4??L*xmq*xuw*x''	!!148##8<<D 5JY$//"K(K KGD 5t7G
 AR!!  A &#	A
 A=Ddndo w<@@!D$9+:4??;M+eZ^+ebd+e("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
 	o b b bs   -S?T,T	c                    ||d}t         }g d| _        g }t        |      D ]9  \  }	}
|j                   | j                  ||
| j                  |	   dfddi|       ; 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d|d|t        j                  |fdt        i|t        j                  d	
            }|j                  |        t        j                  |      }t        j                  t        j                  d| j                  d   |j                  z  | j                  ddd|d|t        j                  | j                  fdt        i|t        j                  d	
            }|||fS )NrN   r4   r   rl   r#   r    )in_channelsout_channelsrk   rl   r   rm   rn   Tr   r   rQ   )r   r   r   ru   r   rY   r|   rt   rc   ro   rp   rq   rr   rs   rZ   r   )r\   r   r   r   rO   rP   r]   head_block_typer   ry   channelsr   r   r   downsamp_moduler   s                   r_   r   zHighResolutionNet._make_headf  s   /$/ $%78 	xKAx  !1!1!1/8TM_M_`aMbde!vno!vsu!vw	xm4 $,, s-.23 	5A,,Q//2K2KKK--a!e47P7PPL mm		  +!- !"  |IlIbI%O ##O4!	5" ==)9:mmII  ..q1O4M4MM!..  NN4,,J|JrJGGD!
 .;;r`   c                 X   ||d}t        |      }t        |      }g }t        |      D ]j  }	|	|k  r||	   ||	   k7  rx|j                  t        j                  t        j
                  ||	   ||	   dddfddi|t        j                  ||	   fdt        i|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fddi|t        j                  |fdt        i|t        j                  d                    |j                  t        j                  |
        m t        j                  |      S )NrN   r#   r   rm   Frn   Tr   r    )rc   rt   ru   rY   rp   rq   rr   rs   rZ   r   r|   )r\   num_channels_pre_layernum_channels_cur_layerrO   rP   r]   num_branches_curnum_branches_pretransition_layersry   r   r   _in_chs_out_chss                 r_   r   z(HighResolutionNet._make_transition_layer  s   /5656'( 	CA##)!,0Fq0II%,,R]]		"8";=STU=VXY[\^_rfkroqr'=a'@^<^[]^-./ 0
 &,,R[[];q1u'778 0A4R8G<=EUAU<U5a8[bHOOBMM		'8Q1O5OBOxM,M"M-%/ 00 "(()AB%	C( }}.//r`   c           	         ||d}d }	|dk7  s|||j                   z  k7  rct        j                  t        j                  |||j                   z  fd|dd|t        j                  ||j                   z  fdt
        i|      }	 |||||	fi |g}
||j                   z  }t        d|      D ]  }|
j                   |||fi |        t        j                  |
 S rj   )ro   rY   rp   rq   rr   rs   rt   ru   )r\   r   inplanesplanesrJ   rl   rO   rP   r]   rw   rx   ry   s               r_   r   zHighResolutionNet._make_layer  s    /
Q;(fz/C/C&CC		(FZ-A-A$ArqY_fkroqrv
(<(<<Z|ZWYZJ
 XvvzHRHIJ000q+& 	>AMM*Xv<<=	> }}f%%r`   c                    |d   }|d   }|d   }|d   }	t         |d      }
|d   }g }t        |      D ]D  }|xs ||dz
  k  }|j                  t        ||
|||	||||	             |d	   j	                         }F t        | |fS )
Nr   r   r   r   r   r   r   rN   r   )r   rt   ru   rI   r   r   )r\   layer_configrK   rL   rO   rP   r   r   r   r   r   r   modulesry   reset_multi_scale_outputs                  r_   r   zHighResolutionNet._make_stage  s    "=1#N3!,/
#N3%l<&@A
"=1{# 	6A'9'PQq=P$NN/(
 
 !335J	6  w'33r`   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)r   nonlinearityr   r   )
r   
isinstancerY   rq   initkaiming_normal_weightrr   	constant_rm   )r\   ms     r_   r   zHighResolutionNet.init_weights  s     	-A!RYY'''HH96 ( CAr~~.!!!((A.!!!&&!,	-r`   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   rJ   )r   )r\   coarsematchers      r_   group_matcherzHighResolutionNet.group_matcher  s"    $?E; L
 r`   c                     |rJ d       y )Nz$gradient checkpointing not supportedrQ   )r\   enables     r_   set_grad_checkpointingz(HighResolutionNet.set_grad_checkpointing  s    AAAz6r`   r   c                     | j                   S r   )r   r   s    r_   get_classifierz HighResolutionNet.get_classifier  s    r`   c                 p    || _         t        | j                  | j                   |      \  | _        | _        y )N)r   )r   r   r   r   r   )r\   r   r   s      r_   reset_classifierz"HighResolutionNet.reset_classifier  s2    &,=t//;-H)$/r`   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   rY   r   r)   r   r*   )r\   r   ry   txlyls         r_   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   )r\   r   r  r   ry   r   downs          r_   forward_featuresz"HighResolutionNet.forward_features  s    JJqMHHQKIIaLJJqMHHQKIIaL [[^%)>)>)FI!$"4"45 	3HAuy"Q%L,,QU3"Q%L4<<?2	3 Qr`   
pre_logitsc                 p    | j                  |      }| j                  |      }|r|S | j                  |      S r   )r   r   r   )r\   r   r  s      r_   forward_headzHighResolutionNet.forward_head)  s6    QNN1q6DOOA$66r`   c                 J    | j                  |      }| j                  |      }|S r   )r  r  )r\   r   r   s      r_   r   zHighResolutionNet.forward/  s'    !!!$a r`   )r#     r   avg        r   NN)FTNNr   r   r   F)T)r  )r   r   r   r   r   r   floatrS   r   r   r   r   r   jitignorer   r	  r  rY   r   r  r  r   r   r  r  r   r  r   r   r   s   @r_   r   r     sJ   
 #!#$"(]] ] 	]
 ] ] ] ]~1<f08& 46 YY- - YY	 	 YYB B YY		  HC Hc H
4- 27$ 7r`   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        |   |f||||||d|	 t        | j                  |      | _        | j                  j	                         D 
ch c]  }
|
d   	 c}
| _        y c c}
w )N)r   rb   )r   r   r   r   r   r   index)rR   rS   r   r   	get_dicts_out_idx)r\   r   r   r   r   r   r   feature_locationout_indicesr   r   r^   s              r_   rS   z"HighResolutionNetFeatures.__init__@  s      =000		
#'#!		
 		
 ((9(9;G-1->->-H-H-JK7KKs   A+c                     J d       )NzNot supportedrQ   )r\   r   s     r_   r  z*HighResolutionNetFeatures.forward_featuresZ  s    %o%ur`   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(  ru   r   r   r   r  r   zipr   )r\   r   outr   r   ry   s         r_   r   z!HighResolutionNetFeatures.forward]  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__rS   r  r   r   r   r   r   r   s   @r_   r   r   5  s?     $'L4&D. r`   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	            r_   _create_hrnetr?  p  s    !IMM/-	6(K$((\l..v7GHL\\ ! +&+# E :5;L;LM!00Lr`   c                 2    | dddddt         t        dddd	|S )
Nr  )r#      rA  )   rB  g      ?bilinearr   r   mit)urlr   
input_size	pool_sizecrop_pctinterpolationmeanstd
first_convr   licenser   )rE  r   s     r_   _cfgrN    s3    =vJ%.B\  r`   ztimm/bicubicz
apache-2.0)	hf_hub_idrI  rM  )rP  gffffff?)rP  rH  g      ?)r#      rQ  )rP  rH  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     r_   r?   r?     s    *JA&AAr`   c                     t        d| fi |S )Nr@   rU  rV  s     r_   r@   r@     s    -zDVDDr`   c                     t        d| fi |S )NrA   rU  rV  s     r_   rA   rA         j;F;;r`   c                     t        d| fi |S )NrB   rU  rV  s     r_   rB   rB     rY  r`   c                     t        d| fi |S )NrC   rU  rV  s     r_   rC   rC     rY  r`   c                     t        d| fi |S )NrD   rU  rV  s     r_   rD   rD     rY  r`   c                     t        d| fi |S )NrE   rU  rV  s     r_   rE   rE     rY  r`   c                     t        d| fi |S )NrF   rU  rV  s     r_   rF   rF     rY  r`   c                     t        d| fi |S )NrG   rU  rV  s     r_   rG   rG     rY  r`   c                 B    |j                  dd       t        dd| d|S )Nr   FrA   r;  r:  )hrnet_w18_ssld
setdefaultr?  rV  s     r_   rb  rb    )    
&.d{zd]cddr`   c                 B    |j                  dd       t        dd| d|S )Nr   FrF   ra  )hrnet_w48_ssldrc  rV  s     r_   rg  rg    re  r`   )FN)rb   r   )7r/  loggingtypingr   r   r   r   r   r   torch.nnrY   	timm.datar	   r
   timm.layersr   _builderr   r   	_featuresr   	_registryr   r   resnetr   r   __all__rs   	getLoggerr   re   r   r6  r   rI   rp   r   r   r   r   r?  rN  default_cfgsr?   r@   rA   rB   rC   rD   rE   rF   rG   rb  rg  rQ   r`   r_   <module>rt     s  	  4 4   A ) G " < * ;
<
'

H
% #
 !
  %
 #*
5"H #
 !
  %
 #*
5"H #
 !
  %
 #*
5"H #
 !
  &
 #+
5"H #
 !
  &
 #+
5"H #
 !
  &
 #+
5"H #
 !
  &
 #+
5"H #
 !
  &
 #+
5"H #
 "
  '
 #,
5"C	DN
L299 L^R]]   m		 m`	8 1 8v:	 %"&	[g"h#g6%)G9^j%k"&"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r`   