
    hA                        S SK Jr  S SKJr  S SKJrJrJrJr  S SK	J
r
  S SKJr  SSKJr  SSKJr  S	S
KJrJrJr  S	SKJr  S	SKJrJr  / SQr " S S\
R6                  5      r " S S\
R:                  5      r " S S\
R6                  5      r " S S\
R@                  5      r! " S S\
R@                  5      r" " S S\
R:                  5      r# " S S\
R:                  5      r$ " S S\
R@                  5      r%S\&\\!\"4      S\\&\\\\4         S \'\(   S!\S"\
R@                  4   S#\\   S$\)S%\S&\%4S' jr*S(\S)S*S+.r+ " S, S-\5      r, " S. S/\5      r- " S0 S1\5      r.\" 5       \" S2\,R^                  4S39SS4S5.S#\\,   S$\)S%\S&\%4S6 jj5       5       r0\" 5       \" S2\-R^                  4S39SS4S5.S#\\-   S$\)S%\S&\%4S7 jj5       5       r1\" 5       \" S2\.R^                  4S39SS4S5.S#\\.   S$\)S%\S&\%4S8 jj5       5       r2S	S9KJ3r3  \3" \,R^                  Rh                  \-R^                  Rh                  \.R^                  Rh                  S:.5      r5g);    )Sequence)partial)AnyCallableOptionalUnionN)Tensor   )VideoClassification)_log_api_usage_once   )register_modelWeightsWeightsEnum)_KINETICS400_CATEGORIES)_ovewrite_named_paramhandle_legacy_interface)VideoResNetR3D_18_WeightsMC3_18_WeightsR2Plus1D_18_Weightsr3d_18mc3_18r2plus1d_18c                   x   ^  \ rS rSr SS\S\S\\   S\S\SS4U 4S	 jjjr\S\S\\\\4   4S
 j5       r	Sr
U =r$ )Conv3DSimple   N	in_planes
out_planes	midplanesstridepaddingreturnc           	      *   > [         TU ]  UUSUUSS9  g )N)r
   r
   r
   Fin_channelsout_channelskernel_sizer!   r"   biassuper__init__selfr   r   r    r!   r"   	__class__s         W/var/www/auris/envauris/lib/python3.13/site-packages/torchvision/models/video/resnet.pyr,   Conv3DSimple.__init__   s)     	!#! 	 	
    c                 
    X U 4$ N r!   s    r0   get_downsample_stride"Conv3DSimple.get_downsample_stride(       v%%r2   r5   N   r;   __name__
__module____qualname____firstlineno__intr   r,   staticmethodtupler7   __static_attributes____classcell__r/   s   @r0   r   r      sq    pq

*-
:B3-
X[
jm
	
 
 &c &eCcM.B & &r2   r   c                   p   ^  \ rS rSrSS\S\S\S\S\SS4U 4S	 jjjr\S\S\\\\4   4S
 j5       rSr	U =r
$ )Conv2Plus1D-   r   r   r    r!   r"   r#   Nc                    > [         TU ]  [        R                  " UUSSXD4SXU4SS9[        R                  " U5      [        R
                  " SS9[        R                  " X2SUSS4USS4SS95        g )	Nr;   r
   r
   r;   r   Fr(   r!   r"   r)   Tinplacer
   r;   r;   r+   r,   nnConv3dBatchNorm3dReLUr-   s         r0   r,   Conv2Plus1D.__init__.   s{    II%6*G- NN9%GGD!II9faQR^^eghjk]lsx	
r2   c                 
    X U 4$ r4   r5   r6   s    r0   r7   !Conv2Plus1D.get_downsample_stride?   r9   r2   r5   r;   r;   )r=   r>   r?   r@   rA   r,   rB   rC   r7   rD   rE   rF   s   @r0   rH   rH   -   sg    
# 
3 
3 
PS 
be 
nr 
 
" &c &eCcM.B & &r2   rH   c                   x   ^  \ rS rSr SS\S\S\\   S\S\SS4U 4S	 jjjr\S\S\\\\4   4S
 j5       r	Sr
U =r$ )Conv3DNoTemporalD   Nr   r   r    r!   r"   r#   c           	      2   > [         TU ]  UUSSXD4SXU4SS9  g )NrK   r;   r   Fr%   r*   r-   s         r0   r,   Conv3DNoTemporal.__init__E   s3     	!#!v&) 	 	
r2   c                 
    SX 4$ Nr;   r5   r6   s    r0   r7   &Conv3DNoTemporal.get_downsample_strideR   s    &  r2   r5   r:   r<   rF   s   @r0   rZ   rZ   D   sq    pq

*-
:B3-
X[
jm
	
 
 !c !eCcM.B ! !r2   rZ   c                      ^  \ rS rSrSr  SS\S\S\S\R                  4   S\S	\	\R                     S
S4U 4S jjjr
S\S
\4S jrSrU =r$ )
BasicBlockW   r;   Ninplanesplanesconv_builder.r!   
downsampler#   c                   > X-  S-  S-  S-  US-  S-  SU-  -   -  n[         TU ]  5         [        R                  " U" XXd5      [        R                  " U5      [        R
                  " SS95      U l        [        R                  " U" X"U5      [        R                  " U5      5      U l        [        R
                  " SS9U l        XPl	        X@l
        g )Nr
   TrM   )r+   r,   rQ   
SequentialrS   rT   conv1conv2relurg   r!   r.   rd   re   rf   r!   rg   r    r/   s          r0   r,   BasicBlock.__init__[   s     &*Q.21q8H1v:8UV	]]9=r~~f?UWYW^W^gkWl

 ]]<	#JBNN[aLbc
GGD)	$r2   xc                     UnU R                  U5      nU R                  U5      nU R                  b  U R                  U5      nX2-  nU R                  U5      nU$ r4   )rj   rk   rg   rl   r.   ro   residualouts       r0   forwardBasicBlock.forwardn   sR    jjmjjo??&q)Hiin
r2   )rj   rk   rg   rl   r!   r;   Nr=   r>   r?   r@   	expansionrA   r   rQ   Moduler   r,   r	   rt   rD   rE   rF   s   @r0   rb   rb   W   s    I *.  sBII~.	
  RYY' 
 & F  r2   rb   c                      ^  \ rS rSrSr  SS\S\S\S\R                  4   S\S	\	\R                     S
S4U 4S jjjr
S\S
\4S jrSrU =r$ )
Bottleneck|      Nrd   re   rf   .r!   rg   r#   c           	        > [         TU ]  5         X-  S-  S-  S-  US-  S-  SU-  -   -  n[        R                  " [        R                  " XSSS9[        R
                  " U5      [        R                  " SS95      U l        [        R                  " U" X"Xd5      [        R
                  " U5      [        R                  " SS95      U l        [        R                  " [        R                  " X"U R                  -  SSS9[        R
                  " X R                  -  5      5      U l
        [        R                  " SS9U l        XPl        X@l        g )Nr
   r;   F)r(   r)   TrM   )r+   r,   rQ   ri   rR   rS   rT   rj   rk   rx   conv3rl   rg   r!   rm   s          r0   r,   Bottleneck.__init__   s    	&*Q.21q8H1v:8UV	 ]]IIhAEBBNNSYDZ\^\c\clp\q

 ]];R^^F=SUWU\U\eiUj


 ]]IIft~~515QNN6NN23

 GGD)	$r2   ro   c                     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X2-  nU R	                  U5      nU$ r4   )rj   rk   r   rg   rl   rq   s       r0   rt   Bottleneck.forward   s_    jjmjjojjo??&q)Hiin
r2   )rj   rk   r   rg   rl   r!   rv   rw   rF   s   @r0   r{   r{   |   s    I *.  sBII~.	
  RYY' 
 < F  r2   r{   c                   0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )	BasicStem   z$The default conv-batchnorm-relu stemc                    > [         TU ]  [        R                  " SSSSSSS9[        R                  " S5      [        R
                  " SS	95        g )
Nr
   @   )r
      r   r;   r   r   rK   FrL   TrM   rP   r.   r/   s    r0   r,   BasicStem.__init__   s?    IIa9i^cdNN2GGD!	
r2   r5   r#   Nr=   r>   r?   r@   __doc__r,   rD   rE   rF   s   @r0   r   r      s    .
 
r2   r   c                   0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )R2Plus1dStem   zRR(2+1)D stem is different than the default one as it uses separated 3D convolutionc                 "  > [         TU ]  [        R                  " SSSSSSS9[        R                  " S5      [        R
                  " SS	9[        R                  " SS
SSSSS9[        R                  " S
5      [        R
                  " SS	95        g )Nr
   rI   )r;   r   r   r   )r   r
   r
   FrL   TrM   r   rO   r;   r;   r;   )r;   r   r   rP   r   s    r0   r,   R2Plus1dStem.__init__   sn    IIa9i^cdNN2GGD!IIb")Iy_deNN2GGD!	
r2   r5   r   r   rF   s   @r0   r   r      s    \
 
r2   r   c                     ^  \ rS rSr  SS\\\\4      S\\\\	\
\4         S\\   S\S\R                   4   S\S\S	S
4U 4S jjjrS\S	\4S jr SS\\\\4      S\\\	\
\4      S\S\S\S	\R*                  4S jjrSrU =r$ )r      blockconv_makerslayersstem.num_classeszero_init_residualr#   Nc                   > [         TU ]  5         [        U 5        SU l        U" 5       U l        U R                  XS   SUS   SS9U l        U R                  XS   SUS   SS9U l        U R                  XS   SUS   SS9U l        U R                  XS   S	US   SS9U l	        [        R                  " S
5      U l        [        R                  " S	UR                  -  U5      U l        U R!                  5        GHs  n[#        U[        R$                  5      (       ad  [        R&                  R)                  UR*                  SSS9  UR,                  b,  [        R&                  R/                  UR,                  S5        M  M  [#        U[        R0                  5      (       aV  [        R&                  R/                  UR*                  S5        [        R&                  R/                  UR,                  S5        M  [#        U[        R                  5      (       d  GM  [        R&                  R3                  UR*                  SS5        [        R&                  R/                  UR,                  S5        GMv     U(       ac  U R!                  5        HN  n[#        U[4        5      (       d  M  [        R&                  R/                  UR6                  R*                  S5        MP     gg)a  Generic resnet video generator.

Args:
    block (Type[Union[BasicBlock, Bottleneck]]): resnet building block
    conv_makers (List[Type[Union[Conv3DSimple, Conv3DNoTemporal, Conv2Plus1D]]]): generator
        function for each layer
    layers (List[int]): number of blocks per layer
    stem (Callable[..., nn.Module]): module specifying the ResNet stem.
    num_classes (int, optional): Dimension of the final FC layer. Defaults to 400.
    zero_init_residual (bool, optional): Zero init bottleneck residual BN. Defaults to False.
r   r   r;   r6      r      r
   i   r   fan_outrl   )modenonlinearityNg{Gz?)r+   r,   r   rd   r   _make_layerlayer1layer2layer3layer4rQ   AdaptiveAvgPool3davgpoolLinearrx   fcmodules
isinstancerR   initkaiming_normal_weightr)   	constant_rS   normal_r{   bn3)	r.   r   r   r   r   r   r   mr/   s	           r0   r,   VideoResNet.__init__   s   ( 	D!F	&&u!nb&)TU&V&&u!nc6!9UV&W&&u!nc6!9UV&W&&u!nc6!9UV&W++I6))C%//1;? A!RYY''''yv'V66%GG%%affa0 &Ar~~..!!!((A.!!!&&!,Aryy))!T2!!!&&!,   \\^a,,GG%%aeellA6 $ r2   ro   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                  S5      nU R                  U5      nU$ r_   )r   r   r   r   r   r   flattenr   )r.   ro   s     r0   rt   VideoResNet.forward   so    IIaLKKNKKNKKNKKNLLOIIaLGGAJr2   rf   re   blocksr!   c           
      2   S nUS:w  d  U R                   X1R                  -  :w  at  UR                  U5      n[        R                  " [        R
                  " U R                   X1R                  -  SUSS9[        R                  " X1R                  -  5      5      n/ nUR                  U" U R                   X2XV5      5        X1R                  -  U l         [        SU5       H%  n	UR                  U" U R                   X25      5        M'     [        R                  " U6 $ )Nr;   F)r(   r!   r)   )	rd   rx   r7   rQ   ri   rR   rS   appendrange)
r.   r   rf   re   r   r!   rg   	ds_strider   is
             r0   r   VideoResNet._make_layer
  s     
Q;$--6OO+CC$::6BI		$--//)AqYbinov78J eDMM6TU0q&!AMM%vDE " }}f%%r2   )r   r   rd   r   r   r   r   r   )i  F)r;   )r=   r>   r?   r@   typer   rb   r{   r   r   rZ   rH   listrA   r   rQ   ry   boolr,   r	   rt   ri   r   rD   rE   rF   s   @r0   r   r      s    #(27E*j01227 d57G)T#UVW27 S		27
 sBII~&27 27 !27 
27 27h F * &E*j012& 5/?!LMN& 	&
 & & 
& &r2   r   r   r   r   r   .weightsprogresskwargsr#   c                     Ub#  [        US[        UR                  S   5      5        [        XX#40 UD6nUb  UR	                  UR                  USS95        U$ )Nr   
categoriesT)r   
check_hash)r   lenmetar   load_state_dictget_state_dict)r   r   r   r   r   r   r   models           r0   _video_resnetr   $  s_     fmSl9S5TUFCFCEg44hSW4XYLr2   rX   zKhttps://github.com/pytorch/vision/tree/main/references/video_classificationzThe weights reproduce closely the accuracy of the paper. The accuracies are estimated on video-level with parameters `frame_rate=15`, `clips_per_video=5`, and `clip_len=16`.)min_sizer   recipe_docsc            
       P    \ rS rSr\" S\" \SSS90 \ESSSS	S
.0SSS.ES9r\r	Sr
g)r   iC  z7https://download.pytorch.org/models/r3d_18-b3b3357e.pthp   r   r      	crop_sizeresize_sizeiP5Kinetics-400gO@g-T@zacc@1zacc@5gK7YD@g"_@
num_params_metrics_ops
_file_sizeurl
transformsr   r5   Nr=   r>   r?   r@   r   r   r   _COMMON_METAKINETICS400_V1DEFAULTrD   r5   r2   r0   r   r   C  sT    E.*R\]

"##! !
N  Gr2   r   c            
       P    \ rS rSr\" S\" \SSS90 \ESSSS	S
.0SSS.ES9r\r	Sr
g)r   iW  z7https://download.pytorch.org/models/mc3_18-a90a0ba3.pthr   r   r   iPu r   g{GO@gQU@r   gClE@gtVF@r   r   r5   Nr   r5   r2   r0   r   r   W  sT    E.*R\]

"##!  
N  Gr2   r   c            
       P    \ rS rSr\" S\" \SSS90 \ESSSS	S
.0SSS.ES9r\r	Sr
g)r   ik  z<https://download.pytorch.org/models/r2plus1d_18-91a641e6.pthr   r   r   ir   gʡP@g33333U@r   gOnBD@g1Z^@r   r   r5   Nr   r5   r2   r0   r   r   k  sT    J.*R\]

"##! !
N  Gr2   r   
pretrained)r   T)r   r   c                 r    [         R                  U 5      n [        [        [        /S-  / SQ[
        U U40 UD6$ )a  Construct 18 layer Resnet3D model.

.. betastatus:: video module

Reference: `A Closer Look at Spatiotemporal Convolutions for Action Recognition <https://arxiv.org/abs/1711.11248>`__.

Args:
    weights (:class:`~torchvision.models.video.R3D_18_Weights`, optional): The
        pretrained weights to use. See
        :class:`~torchvision.models.video.R3D_18_Weights`
        below for more details, and possible values. By default, no
        pre-trained weights are used.
    progress (bool): If True, displays a progress bar of the download to stderr. Default is True.
    **kwargs: parameters passed to the ``torchvision.models.video.resnet.VideoResNet`` base class.
        Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/video/resnet.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.video.R3D_18_Weights
    :members:
r}   r   r   r   r   )r   verifyr   rb   r   r   r   r   r   s      r0   r   r     sD    0 ##G,G	  r2   c                     [         R                  U 5      n [        [        [        /[
        /S-  -   / SQ[        U U40 UD6$ )a  Construct 18 layer Mixed Convolution network as in

.. betastatus:: video module

Reference: `A Closer Look at Spatiotemporal Convolutions for Action Recognition <https://arxiv.org/abs/1711.11248>`__.

Args:
    weights (:class:`~torchvision.models.video.MC3_18_Weights`, optional): The
        pretrained weights to use. See
        :class:`~torchvision.models.video.MC3_18_Weights`
        below for more details, and possible values. By default, no
        pre-trained weights are used.
    progress (bool): If True, displays a progress bar of the download to stderr. Default is True.
    **kwargs: parameters passed to the ``torchvision.models.video.resnet.VideoResNet`` base class.
        Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/video/resnet.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.video.MC3_18_Weights
    :members:
r
   r   )r   r   r   rb   r   rZ   r   r   s      r0   r   r     sM    0 ##G,G	*+a//  r2   c                 r    [         R                  U 5      n [        [        [        /S-  / SQ[
        U U40 UD6$ )a  Construct 18 layer deep R(2+1)D network as in

.. betastatus:: video module

Reference: `A Closer Look at Spatiotemporal Convolutions for Action Recognition <https://arxiv.org/abs/1711.11248>`__.

Args:
    weights (:class:`~torchvision.models.video.R2Plus1D_18_Weights`, optional): The
        pretrained weights to use. See
        :class:`~torchvision.models.video.R2Plus1D_18_Weights`
        below for more details, and possible values. By default, no
        pre-trained weights are used.
    progress (bool): If True, displays a progress bar of the download to stderr. Default is True.
    **kwargs: parameters passed to the ``torchvision.models.video.resnet.VideoResNet`` base class.
        Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/video/resnet.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.video.R2Plus1D_18_Weights
    :members:
r}   r   )r   r   r   rb   rH   r   r   s      r0   r   r     sD    0 "((1G	  r2   )
_ModelURLs)r   r   r   )6collections.abcr   	functoolsr   typingr   r   r   r   torch.nnrQ   torchr	   transforms._presetsr   utilsr   _apir   r   r   _metar   _utilsr   r   __all__rR   r   ri   rH   rZ   ry   rb   r{   r   r   r   r   r   rA   r   r   r   r   r   r   r   r   r   r   r   r   
model_urlsr5   r2   r0   <module>r      s   $  1 1   6 ( 7 7 + C&299 &&&"-- &.!ryy !&" "J. .b
 

2== 
[&")) [&|j*,-.$u\3C[%PQRS I 3		>
"	
 k"   * )[	S[ ([ (+ ( ,0M0M!NO26  x/  $  Y\  al   P  F ,0M0M!NO26  x/  $  Y\  al   P  F ,0C0R0R!ST<@SW  H%89  D  cf  kv   U  H    //33 //33*99==
r2   