
    RЦi                        S r SSKrSSKJrJr  SSKrSSKJ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  / 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9\" SS9\" SS9\" 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\SS\4S jj5       r g)zRes2Net and Res2NeXt
Adapted from Official Pytorch impl at: https://github.com/gasvn/Res2Net/
Paper: `Res2Net: A New Multi-scale Backbone Architecture` - https://arxiv.org/abs/1904.01169
    N)OptionalTypeIMAGENET_DEFAULT_MEANIMAGENET_DEFAULT_STD   )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\R                  SSSS4S\S\S	\S
\	\R                     S\S\S\S\S\	\   S\\R                     S\	\\R                        S\	\\R                        4U 4S jjjrS rS rSrU =r$ )Bottle2neck   zaRes2Net/Res2NeXT Bottleneck
Adapted from https://github.com/gasvn/Res2Net/blob/master/res2net.py
   r   N   inplanesplanesstride
downsamplecardinality
base_widthscaledilationfirst_dilation	act_layer
norm_layer
attn_layerc                   > XS.n[         TU ]  5         Xpl        US:  =(       d    US LU l        [	        SUS-
  5      U l        [        [        R                  " X&S-  -  5      5      U-  nUU l	        X R                  -  nU	=(       d    Un	[        R                  " UUU-  4SSS.UD6U l        U" UU-  40 UD6U l        / n/ n[        U R
                  5       HI  nUR!                  [        R                  " UU4SUU	U	USS.UD65        UR!                  U" U40 UD65        MK     [        R"                  " U5      U l        [        R"                  " U5      U l        U R                  (       a  [        R(                  " SUSS9U l        OS U l        [        R                  " UU-  U4SSS.UD6U l        U" U40 UD6U l        Ub	  U" U40 UD6OS U l        U
" S	S
9U l        X@l        g )N)devicedtyper   g      P@F)kernel_sizebias   )r!   r   paddingr   groupsr"   )r!   r   r$   T)inplace)super__init__r   is_firstmax
num_scalesintmathfloorwidth	expansionnnConv2dconv1bn1rangeappend
ModuleListconvsbns	AvgPool2dpoolconv3bn3serelur   )selfr   r   r   r   r   r   r   r   r   r   r   r   r   r    _ddr/   	outplanesr8   r9   i	__class__s                         R/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/timm/models/res2net.pyr(   Bottle2neck.__init__   s   $ /

<j&<a+DJJvd):;<=K
^^+	'38YYxXAEXUWX
eem2r2t'ALL
 &'"
 
 
 JJz%.2./ ( ]]5)
==%==61MDIDIYYuu}iYQUYVXY
i.2.1;1G*Y-"-Td+	$    c                     [        U R                  SS 5      b4  [        R                  R	                  U R                  R
                  5        g g )Nweight)getattrr=   r1   initzeros_rJ   )r@   s    rF   zero_init_lastBottle2neck.zero_init_lastV   s2    488Xt,8GGNN488??+ 9rH   c                    UnU R                  U5      nU R                  U5      nU R                  U5      n[        R                  " X0R
                  S5      n/ nUS   n[        [        U R                  U R                  5      5       H]  u  nu  pUS:X  d  U R                  (       a  XG   nOXdU   -   nU" U5      nU	" U5      nU R                  U5      nUR                  U5        M_     U R                  S:  aE  U R                  b$  UR                  U R                  US   5      5        OUR                  US   5        [        R                  " US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$ )Nr   r   )r3   r4   r?   torchsplitr/   	enumeratezipr8   r9   r)   r6   r   r;   catr<   r=   r>   r   )
r@   xshortcutoutspxsposprD   convbns
             rF   forwardBottle2neck.forwardZ   sp   jjmhhsmiinkk#zz1-V&s4::txx'@AMAzAvVa&[bBBB2BJJrN B ::>yy$

499SW-.

3r7#iiQjjohhsm77''#,C??&q)Hiin
rH   )r4   r=   r9   r3   r<   r8   r   r)   r+   r;   r?   r   r>   r/   )__name__
__module____qualname____firstlineno____doc__r0   r1   ReLUr,   r   Moduler   r(   rN   r_   __static_attributes____classcell__)rE   s   @rF   r   r      s     I .2  ,0)+4848;%;% ;% 	;%
 !+;% ;% ;% ;% ;% %SM;% BII;% !bii1;% !bii1;% ;%z,& &rH   r   c                 $    [        [        X40 UD6$ )N)r	   r   )variant
pretrainedkwargss      rF   _create_res2netrn      s    FvFFrH   c                 2    U SSSSS[         [        SSSS	.UE$ )
Ni  )r#      rp   )   rq   g      ?bilinearr3   fcunknown)urlnum_classes
input_size	pool_sizecrop_pctinterpolationmeanstd
first_conv
classifierlicenser   )ru   rm   s     rF   _cfgr      s3    =vJ%.BT  rH   ztimm/)	hf_hub_idzconv1.0)r   r}   )	zres2net50_26w_4s.in1kzres2net50_48w_2s.in1kzres2net50_14w_8s.in1kzres2net50_26w_6s.in1kzres2net50_26w_8s.in1kzres2net101_26w_4s.in1kzres2next50.in1kzres2net50d.in1kzres2net101d.in1kreturnc           	      b    [        [        / SQS[        SS9S9n[        SU 40 [        U40 UD6D6$ )z)Constructs a Res2Net-50 26w4s model.
    r#   r      r#   r   r   r   blocklayersr   
block_argsres2net50_26w_4sdictr   rn   rl   rm   
model_argss      rF   r   r      ;     ,2$UV-YJ-zXT*=WPV=WXXrH   c           	      b    [        [        / SQS[        SS9S9n[        SU 40 [        U40 UD6D6$ )z*Constructs a Res2Net-101 26w4s model.
    r#   r      r#   r   r   r   r   res2net101_26w_4sr   r   s      rF   r   r      s;     -B4VW=ZJ.
Yd:>XQW>XYYrH   c           	      b    [        [        / SQS[        SS9S9n[        SU 40 [        U40 UD6D6$ )z)Constructs a Res2Net-50 26w6s model.
    r   r   r   r   r   res2net50_26w_6sr   r   s      rF   r   r      r   rH   c           	      b    [        [        / SQS[        SS9S9n[        SU 40 [        U40 UD6D6$ )z)Constructs a Res2Net-50 26w8s model.
    r   r      r   r   res2net50_26w_8sr   r   s      rF   r   r      r   rH   c           	      b    [        [        / SQS[        SS9S9n[        SU 40 [        U40 UD6D6$ )z)Constructs a Res2Net-50 48w2s model.
    r   0      r   r   res2net50_48w_2sr   r   s      rF   r   r      r   rH   c           	      b    [        [        / SQS[        SS9S9n[        SU 40 [        U40 UD6D6$ )z)Constructs a Res2Net-50 14w8s model.
    r      r   r   r   res2net50_14w_8sr   r   s      rF   r   r      r   rH   c           
      d    [        [        / SQSS[        SS9S9n[        SU 40 [        U40 UD6D6$ )zConstruct Res2NeXt-50 4s
    r   r   r   r   )r   r   r   r   r   
res2next50r   r   s      rF   r   r      s=     ,1!X\cdXegJ<RtJ7Q&7QRRrH   c                 h    [        [        / SQSSSS[        SS9S9n[        S	U 40 [        U40 UD6D6$ )
Construct Res2Net-50
    r   r   deepT    r   r   r   r   r   	stem_typeavg_down
stem_widthr   
res2net50dr   r   s      rF   r   r      sA     ,2"A@J <RtJ7Q&7QRRrH   c                 h    [        [        / SQSSSS[        SS9S9n[        S	U 40 [        U40 UD6D6$ )
r   r   r   r   Tr   r   r   r   res2net101dr   r   s      rF   r   r      sA     -B&"A@J =*SZ8R68RSSrH   )F) )!re   r-   typingr   r   rR   torch.nnr1   	timm.datar   r   _builderr	   	_registryr
   r   resnetr   __all__rg   r   rn   r   default_cfgsr   r   r   r   r   r   r   r   r    rH   rF   <module>r      s    !   A * < 
m")) m`G	 %!G4!G4!G4!G4!G4"W5g.g)Dw9E
& 
 YF Y Y ZV Z Z YF Y Y YF Y Y YF Y Y YF Y Y Sf S S Sf S S Tv T TrH   