
    RЦi(                         S r SSKJrJr  SSKJr  SSKJrJr  SSK	J
r
  SSKJr  SSKJrJr  SS	KJr   " S
 S\R$                  5      rS'S jrS(S jr\" \" SS9\" SS9\" SS9\" SSSS9\" SSSSSS9\" SSSSSS9\" SSS9\" SSS9S.5      r\S'S\4S jj5       r\S'S\4S jj5       r\S'S\4S  jj5       r\S'S\4S! jj5       r\S'S\4S" jj5       r\S'S\4S# jj5       r\S'S\4S$ jj5       r\S'S\4S% jj5       rg&))a  ResNeSt Models

Paper: `ResNeSt: Split-Attention Networks` - https://arxiv.org/abs/2004.08955

Adapted from original PyTorch impl w/ weights at https://github.com/zhanghang1989/ResNeSt by Hang Zhang

Modified for torchscript compat, and consistency with timm by Ross Wightman
    )OptionalType)nnIMAGENET_DEFAULT_MEANIMAGENET_DEFAULT_STD)	SplitAttn   )build_model_with_cfg)register_modelgenerate_default_cfgs)ResNetc            (         ^  \ rS rSrSrSrSSSSSSSSSSS\R                  \R                  SSSSSS4S\	S	\	S
\	S\
\R                     S\	S\	S\	S\S\S\S\	S\	S\
\	   S\\R                     S\\R                     S\
\\R                        S\
\\R                        S\
\\R                        S\
\R                     4&U 4S jjjrS rS rSrU =r$ )ResNestBottleneck   zResNet Bottleneck
       r
   N@   Finplanesplanesstride
downsampleradixcardinality
base_widthavd	avd_firstis_firstreduce_firstdilationfirst_dilation	act_layer
norm_layer
attn_layeraa_layer
drop_block	drop_pathc                 J  > UUS.n[         TU ]  5         US:X  d   eUb   S5       eUb   S5       e[        X'S-  -  5      U-  nU=(       d    UnU(       a  US:  d  U
(       a  UnSnOSnXPl        [        R
                  " UU4SSS.UD6U l        U" U40 UD6U l        U" S	S
9U l        US:  a  U	(       a  [        R                  " SUSS9OS U l
        U R                  S:  aj  [        UU4SUUUUUUUS.UD6U l        [        R                  " 5       U l        [        R                  " 5       U l        [        R                  " 5       U l        Oa[        R
                  " UU4SUUUUSS.UD6U l        U" U40 UD6U l        Ub  U" 5       O[        R                  " 5       U l        U" S	S
9U l        US:  a  U	(       d  [        R                  " SUSS9OS U l        [        R
                  " UUS-  4SSS.UD6U l        U" US-  40 UD6U l        U" S	S
9U l        X@l        UU l        g )N)devicedtyper
   zattn_layer is not supportedzaa_layer is not supportedg      P@r   F)kernel_sizebiasT)inplace   )padding)r*   r   r.   r   groupsr   r"   
drop_layer)r*   r   r.   r   r/   r+   r   )super__init__intr   r   Conv2dconv1bn1act1	AvgPool2dr   r	   conv2Identitybn2r%   act2avd_lastconv3bn3act3r   r&   )selfr   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r(   r)   ddgroup_width
avd_stride	__class__s                            R/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/timm/models/resnest.pyr2   ResNestBottleneck.__init__   s6   0 /q   !@#@@!<!<<&$456D'38FQJ(JFJ
YYxV!%VSUV
k0R0d+	CMPQ>V_aQ?ei::?" &'"%% DJ {{}DH kkmDODI
 &'"
 
DJ "+44DH.8.Djl"++-DO!$/DIBLq.YbQ
A>hlYY{FQJXAEXUWX
fqj/B/d+	$"    c                     [        U R                  SS 5      b4  [        R                  R	                  U R                  R
                  5        g g )Nweight)getattrr?   r   initzeros_rJ   )rA   s    rF   zero_init_last ResNestBottleneck.zero_init_lastn   s2    488Xt,8GGNN488??+ 9rH   c                 V   UnU R                  U5      nU R                  U5      nU R                  U5      nU R                  b  U R                  U5      nU R	                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU R                  b  U R                  U5      nU R                  U5      nU R                  U5      nU R                  b  U R                  U5      nU R                  b  U R                  U5      nX2-  nU R                  U5      nU$ N)r5   r6   r7   r   r9   r;   r%   r<   r=   r>   r?   r&   r   r@   )rA   xshortcutouts       rF   forwardResNestBottleneck.forwardr   s    jjmhhsmiin>>%..%Cjjohhsmooc"iin==$--$Cjjohhsm>>%q!A??&q)Hiin
rH   )r7   r<   r@   r   r=   r6   r;   r?   r5   r9   r>   r   r%   r&   r   )__name__
__module____qualname____firstlineno____doc__	expansionr   ReLUBatchNorm2dr3   r   Moduleboolr   r2   rN   rU   __static_attributes____classcell__)rE   s   @rF   r   r      s    I .2  #" !,0)+*,..482648-1-R#R# R# 	R#
 !+R# R# R# R# R# R# R# R# R# %SMR# BIIR#  RYY!R#" !bii1#R#$ tBII/%R#& !bii1'R#(  		*)R# R#h, rH   r   c                 &    [        [        U U40 UD6$ rQ   )r   r   )variant
pretrainedkwargss      rF   _create_resnestrg      s"     	 rH   c                 2    U SSSSS[         [        SSSS	.UE$ )
Ni  )r-      ri   )   rj   g      ?bilinearzconv1.0fcz
apache-2.0)urlnum_classes
input_size	pool_sizecrop_pctinterpolationmeanstd
first_conv
classifierlicenser   )rm   rf   s     rF   _cfgrx      s3    =vJ%.Bt  rH   ztimm/)	hf_hub_id)r-      rz   )   r{   )ry   ro   rp   )r-   @  r|   )
   r}   gJ+?bicubic)ry   ro   rp   rq   rr   )r-     r   )   r   gV-?)ry   rr   )zresnest14d.gluon_in1kzresnest26d.gluon_in1kzresnest50d.in1kzresnest101e.in1kzresnest200e.in1kzresnest269e.in1kzresnest50d_4s2x40d.in1kzresnest50d_1s4x24d.in1kreturnc                 n    [        [        / SQSSSSS[        SSSS	9S
9n[        SSU 0[        U40 UD6D6$ )z4ResNeSt-14d model. Weights ported from GluonCV.
    )r
   r
   r
   r
   deep    Tr   r
      Fr   r   r   blocklayers	stem_type
stem_widthavg_downr   r   
block_argsre   )
resnest14ddictr   rg   re   rf   model_kwargss      rF   r   r      K     R$2STaTU;=L _J_$|B^W]B^__rH   c                 n    [        [        / SQSSSSS[        SSSS	9S
9n[        SSU 0[        U40 UD6D6$ )z4ResNeSt-26d model. Weights ported from GluonCV.
    )r   r   r   r   r   r   Tr   r
   r   Fr   r   re   )
resnest26dr   r   s      rF   r   r      r   rH   c                 n    [        [        / SQSSSSS[        SSSS	9S
9n[        SSU 0[        U40 UD6D6$ )zResNeSt-50d model. Matches paper ResNeSt-50 model, https://arxiv.org/abs/2004.08955
Since this codebase supports all possible variations, 'd' for deep stem, stem_width 32, avg in downsample.
r-   r      r-   r   r   Tr   r
   r   Fr   r   re   )
resnest50dr   r   s      rF   r   r      sK    
 R$2STaTU;=L _J_$|B^W]B^__rH   c                 n    [        [        / SQSSSSS[        SSSS9S	9n[        SS
U 0[        U40 UD6D6$ )zResNeSt-101e model. Matches paper ResNeSt-101 model, https://arxiv.org/abs/2004.08955
Since this codebase supports all possible variations, 'e' for deep stem, stem_width 64, avg in downsample.
)r-   r      r-   r   r   Tr
   r   Fr   r   re   )resnest101er   r   s      rF   r   r      sK    
 R$2STaTU;=L `Z`4C_X^C_``rH   c                 n    [        [        / SQSSSSS[        SSSS9S	9n[        SS
U 0[        U40 UD6D6$ )zResNeSt-200e model. Matches paper ResNeSt-200 model, https://arxiv.org/abs/2004.08955
Since this codebase supports all possible variations, 'e' for deep stem, stem_width 64, avg in downsample.
)r-      $   r-   r   r   Tr
   r   Fr   r   re   )resnest200er   r   s      rF   r   r      K    
 R$2STaTU;=L `Z`4C_X^C_``rH   c                 n    [        [        / SQSSSSS[        SSSS9S	9n[        SS
U 0[        U40 UD6D6$ )zResNeSt-269e model. Matches paper ResNeSt-269 model, https://arxiv.org/abs/2004.08955
Since this codebase supports all possible variations, 'e' for deep stem, stem_width 64, avg in downsample.
)r-      0   r{   r   r   Tr
   r   Fr   r   re   )resnest269er   r   s      rF   r   r      r   rH   c                 n    [        [        / SQSSSSS[        SSSS9S	9n[        SS
U 0[        U40 UD6D6$ )z]ResNeSt-50 4s2x40d from https://github.com/zhanghang1989/ResNeSt/blob/master/ablation.md
    r   r   r   T(   r   r   r   r   re   )resnest50d_4s2x40dr   r   s      rF   r   r     K     R$2STaTT:<L gJg$|Jf_eJfggrH   c                 n    [        [        / SQSSSSS[        SSSS9S	9n[        SS
U 0[        U40 UD6D6$ )z]ResNeSt-50 1s4x24d from https://github.com/zhanghang1989/ResNeSt/blob/master/ablation.md
    r   r   r   Tr   r   r
   r   r   re   )resnest50d_1s4x24dr   r   s      rF   r   r     r   rH   N)F) )r[   typingr   r   torchr   	timm.datar   r   timm.layersr	   _builderr   	_registryr   r   resnetr   r_   r   rg   rx   default_cfgsr   r   r   r   r   r   r   r    rH   rF   <module>r      s   "  A ! * < {		 {|	 %!G4!G4g. F4  HuT]_  HuT]_  $ !  $ !!& , `f ` ` `f ` ` `f ` ` av a a av a a av a a hf h h hf h hrH   