
    9i>7                         S SK r S SKrS SKJr  SSKJr  SS/r " S S\5      r " S S	\R                  5      r
 " S
 S\R                  5      r " S S\R                  5      rg)    N   )SplAtConv2dResNet
Bottleneckc                       \ rS rSrS rSrg)DropBlock2D   c                     [         e)N)NotImplementedError)selfargskwargss      n/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/models/cv/animal_recognition/resnet.py__init__DropBlock2D.__init__   s    !!     N)__name__
__module____qualname____firstlineno__r   __static_attributes__r   r   r   r   r      s    "r   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )GlobalAvgPool2d   c                 *   > [         [        U ]  5         g)z:Global average pooling over the input's spatial dimensionsN)superr   r   )r   	__class__s    r   r   GlobalAvgPool2d.__init__   s    ot-/r   c                     [         R                  R                  US5      R                  UR	                  S5      S5      $ )Nr   r   )nn
functionaladaptive_avg_pool2dviewsize)r   inputss     r   forwardGlobalAvgPool2d.forward   s3    }}0012448DQ4L	Mr   r   )r   r   r   r   r   r(   r   __classcell__r   s   @r   r   r      s    0M Mr   r   c                   R   ^  \ rS rSrSr              SU 4S jjrS rSrU =r$ )r         c                   > [         [        U ]  5         [        X'S-  -  5      U-  n[        R
                  " UUSSS9U l        U" U5      U l        Xl        XPl	        U=(       a    US:  =(       d    UU l
        Xl        U R                  (       a  [        R                  " SUSS9U l        SnUS:  a9  [        US5      U l        US:X  a  [        US5      U l        [        US5      U l        US:  a  [%        UUSUU
U
USUUUUUS9U l        ObU(       a.  [        R
                  " UUSUU
U
USS	9U l        U" U5      U l        O-[        R
                  " UUSUU
U
USS	9U l        U" U5      U l        [        R
                  " UUS
-  SSS9U l        U" US
-  5      U l        U(       a"  SSKJn  U" U R,                  R2                  5        [        R4                  " SS9U l        X@l        Xl        X0l        g )Ng      P@r   F)kernel_sizebias   )padding        )r0   strider3   dilationgroupsr1   radixrectifyrectify_avg
norm_layerdropblock_prob)r0   r5   r3   r6   r7   r1   r.   r   )zeros_Tinplace)r   r   r   intr"   Conv2dconv1bn1r<   r8   avd	avd_first	AvgPool2d	avd_layerr   
dropblock1
dropblock2
dropblock3r   conv2bn2conv3bn3torch.nn.initr=   weightReLUrelu
downsampler6   r5   )r   inplanesplanesr5   rS   r8   cardinalitybottleneck_widthrD   rE   r6   is_firstrectified_convr:   r;   r<   
last_gammagroup_widthr=   r   s                      r   r   Bottleneck.__init__"   s   " 	j$(*&s$:;<{JYYkqu>
k*,
3FQJ2("88\\!VQ?DNFC).!<DOz"-na"@).!<DOA:$ !"&'%-/DJ  !"DJ "+.DH !"DJ "+.DHYY!@
fqj),488??#GGD)	$ r   c                 2   UnU R                  U5      nU R                  U5      nU R                  S:  a  U R                  U5      nU R	                  U5      nU R
                  (       a"  U R                  (       a  U R                  U5      nU R                  U5      nU R                  S:X  aC  U R                  U5      nU R                  S:  a  U R                  U5      nU R	                  U5      nU R
                  (       a"  U R                  (       d  U R                  U5      nU R                  U5      nU R                  U5      nU R                  S:  a  U R                  U5      nU R                  b  U R                  U5      nX2-  nU R	                  U5      nU$ )Nr4   r   )rB   rC   r<   rH   rR   rD   rE   rG   rK   r8   rL   rI   rM   rN   rJ   rS   )r   xresidualouts       r   r(   Bottleneck.forwardy   s5   jjmhhsm$//#&Ciin88..%Cjjo::?((3-C""S(ooc*))C.C88DNN..%Cjjohhsm$//#&C??&q)Hiin
r   )rD   rE   rG   rC   rL   rN   rB   rK   rM   r6   rS   rH   rI   rJ   r<   r8   rR   r5   )r   Nr   r   @   FFr   FFFNr4   F)	r   r   r   r   	expansionr   r(   r   r*   r+   s   @r   r   r      sE    I
  "$  %"  #!!Un! !r   c                   |   ^  \ rS rSrSSSSSSSSSSSSSSSS\R
                  4U 4S jjr     SS	 jrS
 rSr	U =r
$ )r      r   rb   i  Fr4   r   c                   > X@l         XPl        U	(       a  U
S-  OSU l        Xl        UU l        X0l        Xl        Xl        [        [        U ]+  5         Xl        Xl        U(       a  [        R                  nO[        R                  nU(       a  SU0O0 nU	(       a|  [        R                  " U" SU
4SSSSS.UD6U" U
5      [        R                   " SS	9U" U
U
4SSSSS.UD6U" U
5      [        R                   " SS	9U" U
U
S-  4SSSSS.UD65      U l        OU"   SS
SSSS.UD6U l        U" U R                  5      U l        [        R                   " SS	9U l        [        R(                  " SSSS9U l        U R-                  USUS   USS9U l        U R-                  USUS   SUS9U l        U(       d  US:X  a;  U R-                  USUS   SSUUS9U l        U R-                  USUS   SSUUS9U l        OyUS:X  a;  U R-                  USUS   SSUUS9U l        U R-                  USUS   SSUUS9U l        O8U R-                  USUS   SUUS9U l        U R-                  USUS   SUUS9U l        [7        5       U l        US:  a  [        R:                  " U5      OS U l        [        R>                  " SUR@                  -  U5      U l!        U RE                  5        H  n[G        U[        R                  5      (       ak  URH                  S   URH                  S   -  URJ                  -  nURL                  RN                  RQ                  S[R        RT                  " SU-  5      5        M  [G        UU5      (       d  M  URL                  RN                  RW                  S5        URX                  RN                  R[                  5         M     g )N   rb   average_moder2   r   F)r0   r5   r3   r1   Tr>      )r0   r5   r3   r   )r;   rX      )r5   r;   r.      )r5   r6   r;   r<   i   )r5   r;   r<   r4   g       @)r2   rb   ).rV   rW   rT   avg_downrZ   r8   rD   rE   r   r   r   rY   r:   r"   rA   
SequentialrQ   rB   rC   rR   	MaxPool2dmaxpool_make_layerlayer1layer2layer3layer4r   avgpoolDropoutdropLinearrc   fcmodules
isinstancer0   out_channelsrP   datanormal_mathsqrtfill_r1   zero_)r   blocklayersr8   r7   rW   num_classesdilatedr6   	deep_stem
stem_widthrl   rY   r:   rD   rE   
final_dropr<   rZ   r;   
conv_layerconv_kwargsmnr   s                           r   r   ResNet.__init__   s   ( " 0*3
Q $
"fd$&,&JJ7E~{32# !"# "# :&%# !"# "# :&%N# !"# "#+DJ> $  DJ dmm,GGD)	||!QG&&2vayZ% ' I&&3q	!
 ' Dh!m**q	%- + /DK **q	%- + /DK ]**q	%- + /DK **q	%- + /DK **q	%- + /DK **q	%- + /DK '(.83.>BJJz*D	))C%//1;?A!RYY''MM!$q}}Q'77!..H%%a26):;Az**##A&!!#  r   c	                 :   S n	US:w  d  U R                   X!R                  -  :w  Ga  / n
U R                  (       a  US:X  a'  U
R                  [        R
                  " UUSSS95        O&U
R                  [        R
                  " SSSSS95        U
R                  [        R                  " U R                   X!R                  -  SSSS95        O=U
R                  [        R                  " U R                   X!R                  -  SUSS95        U
R                  U" X!R                  -  5      5        [        R                  " U
6 n	/ nUS:X  d  US:X  a  UR                  U" U R                   UUU	U R                  U R                  U R                  U R                  U R                  SUU R                  U R                  UUU R                  S95        OUS:X  a  UR                  U" U R                   UUU	U R                  U R                  U R                  U R                  U R                  SUU R                  U R                  UUU R                  S95        O[!        S	R#                  U5      5      eX!R                  -  U l         [%        SU5       H~  nUR                  U" U R                   UU R                  U R                  U R                  U R                  U R                  UU R                  U R                  UUU R                  S
95        M     [        R                  " U6 $ )Nr   TF)r0   r5   	ceil_modecount_include_pad)r0   r5   r1   rg   )rS   r8   rV   rW   rD   rE   r6   rX   rY   r:   r;   r<   rZ   r.   z=> unknown dilation size: {})r8   rV   rW   rD   rE   r6   rY   r:   r;   r<   rZ   )rT   rc   rl   appendr"   rF   rA   rm   r8   rV   rW   rD   rE   rY   r:   rZ   RuntimeErrorformatrange)r   r   rU   blocksr5   r6   r;   r<   rX   rS   down_layersr   is                r   rp   ResNet._make_layer2  s    
Q;$--6OO+CCK}}q=&&(.#)&*.3	56  &&()#$&*.3	56 ""II0$% "$% ""II0$%%"$% z&??*BCD4Jq=HMMMMM)** $ 0 0%)%:%:"nn%#'#6#6 $ 0 0)#1#!01$ ]MMMM)** $ 0 0%)%:%:"nn%#'#6#6 $ 0 0)#1#!01& =DDXNOO0q&!AMMMM** $ 0 0%)%:%:"nn%#'#6#6 $ 0 0)#1#01 "" }}f%%r   c                    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                  U5      nU R                  U5      nU R                  U5      nU R                  U5      n[        R                  " US5      nU R                  (       a  U R                  U5      nU R                  U5      nU$ )Nr   )rB   rC   rR   ro   rq   rr   rs   rt   ru   torchflattenrw   ry   )r   r^   s     r   r(   ResNet.forward  s    JJqMHHQKIIaLLLOKKNKKNKKNKKNLLOMM!Q99		!AGGAJr   )rD   rE   rl   ru   rC   rW   rV   rB   rw   ry   rT   rZ   rq   rr   rs   rt   ro   r8   rY   r:   rR   )r   r   Nr4   T)r   r   r   r   r"   BatchNorm2dr   rp   r(   r   r*   r+   s   @r   r   r      se    
 "$!  %"  !!NN'Q$n ##&!i&V r   )r   r   torch.nnr"   splatr   __all__objectr   Moduler   r   r   r   r   r   <module>r      s`       \
""& "Mbii M{ {|QRYY Qr   