
    h                        S SK Jr  S SKJrJrJr  S SK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\R0                  5      r " S S\R4                  5      r " S S\R4                  5      r " S S\5      r\" 5       \" S\R<                  4S9SSS.S\\   S\S\S\4S jj5       5       r g)    )partial)AnyCallableOptionalN)nn)Conv3dNormActivation   )VideoClassification)_log_api_usage_once   )register_modelWeightsWeightsEnum)_KINETICS400_CATEGORIES)_ovewrite_named_paramhandle_legacy_interface)S3DS3D_Weightss3dc                   b   ^  \ rS rSrS\S\S\S\S\S\S\R                  4   4U 4S	 jjrS
r	U =r
$ )TemporalSeparableConv   	in_planes
out_planeskernel_sizestridepadding
norm_layer.c                 x   > [         TU ]  [        UUSX34SXD4SXU4SUS9[        UUUSS4USS4USS4SUS95        g )N   r   F)r   r   r   biasr   )super__init__r   )selfr   r   r   r   r   r   	__class__s          T/var/www/auris/envauris/lib/python3.13/site-packages/torchvision/models/video/s3d.pyr#   TemporalSeparableConv.__init__   sp     	 96*G-% !(!Q/1~ !Q%	
     )__name__
__module____qualname____firstlineno__intr   r   Moduler#   __static_attributes____classcell__r%   s   @r&   r   r      sT    

 
 	

 
 
 S"))^,
 
r(   r   c                   p   ^  \ rS rSrS\S\S\S\S\S\S\S	\S
\R                  4   4U 4S jjrS r	Sr
U =r$ )SepInceptionBlock3D6   r   b0_outb1_midb1_outb2_midb2_outb3_outr   .c	                 |  > [         T	U ]  5         [        XSSUS9U l        [        R
                  " [        XSSUS9[        X4SSSUS95      U l        [        R
                  " [        XSSUS9[        XVSSSUS95      U l        [        R
                  " [        R                  " SSSS9[        XSSUS95      U l
        g )Nr    r   r   r   r	   )r   r   r   r   r	   r	   r	   r   r   r   )r"   r#   r   branch0r   
Sequentialr   branch1branch2	MaxPool3dbranch3)
r$   r   r6   r7   r8   r9   r:   r;   r   r%   s
            r&   r#   SepInceptionBlock3D.__init__7   s     	+I1UVcmn}} !Xbc!&aSTakl
 }} !Xbc!&aSTakl
 }}LLYq!D !Xbc
r(   c                     U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      n[        R
                  " X#XE4S5      nU$ )Nr    )r@   rB   rC   rE   torchcat)r$   xx0x1x2x3outs          r&   forwardSepInceptionBlock3D.forwardR   sP    \\!_\\!_\\!_\\!_ii(!,
r(   )r@   rB   rC   rE   )r*   r+   r,   r-   r.   r   r   r/   r#   rP   r0   r1   r2   s   @r&   r4   r4   6   sm    

 
 	

 
 
 
 
 S"))^,
6 r(   r4   c            
          ^  \ rS rSrSr   SS\S\S\\S\	R                  R                  4      SS4U 4S	 jjjrS
 rSrU =r$ )r   \   a;  S3D main class.

Args:
    num_class (int): number of classes for the classification task.
    dropout (float): dropout probability.
    norm_layer (Optional[Callable]): Module specifying the normalization layer to use.

Inputs:
    x (Tensor): batch of videos with dimensions (batch, channel, time, height, width)
Nnum_classesdropoutr   .returnc                   > [         TU ]  5         [        U 5        Uc  [        [        R
                  SSS9n[        R                  " [        SSSSSU5      [        R                  " SSS	S
9[        SSSSUS9[        SSSSSU5      [        R                  " SSS	S
9[        SSSSSSSU5      [        SSSSSSSU5      [        R                  " SSSS
9[        SSSSSSSU5      [        SSSSSSSU5      [        SSSSSSSU5      [        SSSSSSSU5      [        S SSS!SSSU5      [        R                  " SSS"S
9[        S#SSS!SSSU5      [        S#S$SS$SSSU5      5      U l        [        R                  " S%SS&9U l        [        R                  " [        R                  " US'9[        R                  " S(USSS)S*95      U l        g )+NgMbP?)epsmomentumr	   @      r   )r    r	   r	   )r    r   r   )r   r    r    r?   r    r=      `                r>   )r   r   r   )r    r    r    i     0   i      p            i   i  i@  )r   r   r   i@  i  )r   r[   r[   )r   r   )pi   T)r   r   r!   )r"   r#   r   r   r   BatchNorm3drA   r   rD   r   r4   features	AvgPool3davgpoolDropoutConv3d
classifier)r$   rT   rU   r   r%   s       r&   r#   S3D.__init__h   s    	D! UUKJ!!RAq*=LLYy)T % ""c1aJ?LLYy)TRS"b"jIS#sBB
KLLYy)TS"c2r2zJS#sBB
KS#sBB
KS#sBB
KS#sBS*MLLYy)TS#sBS*MS#sBS*M-
0 ||	!D--JJ!IIdKQqtL
r(   c                     U R                  U5      nU R                  U5      nU R                  U5      n[        R                  " USS9nU$ )N)r   r	      )dim)rk   rm   rp   rH   mean)r$   rJ   s     r&   rP   S3D.forward   s@    MM!LLOOOAJJqi(r(   )rm   rp   rk   )i  g?N)r*   r+   r,   r-   __doc__r.   floatr   r   rH   r   r/   r#   rP   r0   r1   r2   s   @r&   r   r   \   se    	 ?C	(
(
 (
 Xc588??&:;<	(

 
(
 (
T r(   r   c                   R    \ rS rSr\" S\" \SSS9SS\SSS	S
SSS.0SSS.	S9r\r	Sr
g)r      z4https://download.pytorch.org/models/s3d-d76dad2f.pth)rf   rf   )ra   ra   )	crop_sizeresize_size   zOhttps://github.com/pytorch/vision/tree/main/references/video_classification#s3dzThe weights aim to approximate the accuracy of the paper. The accuracies are estimated on clip-level with parameters `frame_rate=15`, `clips_per_video=1`, and `clip_len=128`.i0~ zKinetics-400gd;OQ@g33333V@)zacc@1zacc@5gv1@gF?@)	min_sizemin_temporal_size
categoriesrecipe_docs
num_params_metrics_ops
_file_size)url
transformsmetar)   N)r*   r+   r,   r-   r   r   r
   r   KINETICS400_V1DEFAULTr0   r)   r(   r&   r   r      s`    B "
 #!#1g\ "##!  #
N6 Gr(   r   
pretrained)weightsT)r   progressr   r   kwargsrV   c                     [         R                  U 5      n U b#  [        US[        U R                  S   5      5        [        S0 UD6nU b  UR                  U R                  USS95        U$ )a_  Construct Separable 3D CNN model.

Reference: `Rethinking Spatiotemporal Feature Learning <https://arxiv.org/abs/1712.04851>`__.

.. betastatus:: video module

Args:
    weights (:class:`~torchvision.models.video.S3D_Weights`, optional): The
        pretrained weights to use. See
        :class:`~torchvision.models.video.S3D_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.S3D`` base class.
        Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/video/s3d.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.video.S3D_Weights
    :members:
rT   r   T)r   
check_hashr)   )r   verifyr   lenr   r   load_state_dictget_state_dict)r   r   r   models       r&   r   r      si    0   )GfmSl9S5TUM&MEg44hSW4XYLr(   )!	functoolsr   typingr   r   r   rH   r   torchvision.ops.miscr   transforms._presetsr
   utilsr   _apir   r   r   _metar   _utilsr   r   __all__rA   r   r/   r4   r   r   r   boolr   r)   r(   r&   <module>r      s     * *   5 6 ( 7 7 + C
BMM 
@#")) #L;")) ;|+ > ,0J0J!KL,04  H[)  D  SV  [^   M  r(   