
    QЦiA                        S SK Jr  S SKJrJrJrJr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\R:                  5      r " S S\R>                  5      r  " S S\R:                  5      r! " S S\RD                  5      r# " S S\RD                  5      r$ " S S\R>                  5      r% " S S\R>                  5      r& " S S\RD                  5      r'S\	\
\#\$4      S\\	\
\\!\ 4         S\\(   S \S!\RD                  4   S"\\   S#\)S$\S%\'4S& jr*S'\S(S)S*.r+ " S+ S,\5      r, " S- S.\5      r- " S/ S0\5      r.\" 5       \" S1\,R^                  4S29SS3S4.S"\\,   S#\)S$\S%\'4S5 jj5       5       r0\" 5       \" S1\-R^                  4S29SS3S4.S"\\-   S#\)S$\S%\'4S6 jj5       5       r1\" 5       \" S1\.R^                  4S29SS3S4.S"\\.   S#\)S$\S%\'4S7 jj5       5       r2SS8KJ3r3  \3" \,R^                  Rh                  \-R^                  Rh                  \.R^                  Rh                  S9.5      r5g):    )partial)AnyCallableListOptionalSequenceTupleType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         ^/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/torchvision/models/video/resnet.pyr/   Conv3DSimple.__init__   s)     	!#! 	 	
    c                 
    X U 4$ N r$   s    r3   get_downsample_stride"Conv3DSimple.get_downsample_stride'       v%%r5   r8   N   r>   __name__
__module____qualname____firstlineno__intr   r/   staticmethodr	   r:   __static_attributes____classcell__r2   s   @r3   r   r      sq    pq

*-
:B3-
X[
jm
	
 
 &c &eCcM.B & &r5   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ReLUr0   s         r3   r/   Conv2Plus1D.__init__-   s{    II%6*G- NN9%GGD!II9faQR^^eghjk]lsx	
r5   c                 
    X U 4$ r7   r8   r9   s    r3   r:   !Conv2Plus1D.get_downsample_stride>   r<   r5   r8   r>   r>   )r@   rA   rB   rC   rD   r/   rE   r	   r:   rF   rG   rH   s   @r3   rJ   rJ   ,   sg    
# 
3 
3 
PS 
be 
nr 
 
" &c &eCcM.B & &r5   rJ   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$ )Conv3DNoTemporalC   Nr!   r"   r#   r$   r%   r&   c           	      2   > [         TU ]  UUSSXD4SXU4SS9  g )NrM   r>   r   Fr(   r-   r0   s         r3   r/   Conv3DNoTemporal.__init__D   s3     	!#!v&) 	 	
r5   c                 
    SX 4$ Nr>   r8   r9   s    r3   r:   &Conv3DNoTemporal.get_downsample_strideQ   s    &  r5   r8   r=   r?   rH   s   @r3   r\   r\   C   sq    pq

*-
:B3-
X[
jm
	
 
 !c !eCcM.B ! !r5   r\   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$ )
BasicBlockV   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   TrO   )r.   r/   rS   
SequentialrU   rV   conv1conv2reluri   r$   r1   rf   rg   rh   r$   ri   r#   r2   s          r3   r/   BasicBlock.__init__Z   s     &*Q.21q8H1v:8UV	]]9=r~~f?UWYW^W^gkWl

 ]]<	#JBNN[aLbc
GGD)	$r5   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$ r7   )rl   rm   ri   rn   r1   rq   residualouts       r3   forwardBasicBlock.forwardm   sR    jjmjjo??&q)Hiin
r5   )rl   rm   ri   rn   r$   r>   Nr@   rA   rB   rC   	expansionrD   r   rS   Moduler   r/   r   rv   rF   rG   rH   s   @r3   rd   rd   V   s    I *.  sBII~.	
  RYY' 
 & F  r5   rd   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{      Nrf   rg   rh   .r$   ri   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,   TrO   )r.   r/   rS   rk   rT   rU   rV   rl   rm   rz   conv3rn   ri   r$   ro   s          r3   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)	$r5   rq   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$ r7   )rl   rm   r   ri   rn   rs   s       r3   rv   Bottleneck.forward   s_    jjmjjojjo??&q)Hiin
r5   )rl   rm   r   ri   rn   r$   rx   ry   rH   s   @r3   r}   r}   {   s    I *.  sBII~.	
  RYY' 
 < F  r5   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   rM   FrN   TrO   rR   r1   r2   s    r3   r/   BasicStem.__init__   s?    IIa9i^cdNN2GGD!	
r5   r8   r&   Nr@   rA   rB   rC   __doc__r/   rF   rG   rH   s   @r3   r   r      s    .
 
r5   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   -   )r>   r   r   r   )r   r   r   FrN   TrO   r   rQ   r>   r>   r>   )r>   r   r   rR   r   s    r3   r/   R2Plus1dStem.__init__   sn    IIa9i^cdNN2GGD!IIb")Iy_deNN2GGD!	
r5   r8   r   r   rH   s   @r3   r   r      s    \
 
r5   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>   r9      r      r   i   r   fan_outrn   )modenonlinearityNg{Gz?)r.   r/   r   rf   r   _make_layerlayer1layer2layer3layer4rS   AdaptiveAvgPool3davgpoolLinearrz   fcmodules
isinstancerT   initkaiming_normal_weightr,   	constant_rU   normal_r}   bn3)	r1   r   r   r   r   r   r   mr2   s	           r3   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 $ r5   rq   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$ ra   )r   r   r   r   r   r   flattenr   )r1   rq   s     r3   rv   VideoResNet.forward   so    IIaLKKNKKNKKNKKNLLOIIaLGGAJr5   rh   rg   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,   )	rf   rz   r:   rS   rk   rT   rU   appendrange)
r1   r   rh   rg   r   r$   ri   	ds_strider   is
             r3   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%%r5   )r   r   rf   r   r   r   r   r   )i  F)r>   )r@   rA   rB   rC   r
   r   rd   r}   r   r   r\   rJ   r   rD   r   rS   r{   boolr/   r   rv   rk   r   rF   rG   rH   s   @r3   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& 	&
 & & 
& &r5   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           r3   _video_resnetr   #  s_     fmSl9S5TUFCFCEg44hSW4XYLr5   rZ   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   iB  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   r8   Nr@   rA   rB   rC   r   r   r   _COMMON_METAKINETICS400_V1DEFAULTrF   r8   r5   r3   r   r   B  sT    E.*R\]

"##! !
N  Gr5   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   iV  z7https://download.pytorch.org/models/mc3_18-a90a0ba3.pthr   r   r   iPu r   g{GO@gQU@r   gClE@gtVF@r   r   r8   Nr   r8   r5   r3   r   r   V  sT    E.*R\]

"##!  
N  Gr5   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   ij  z<https://download.pytorch.org/models/r2plus1d_18-91a641e6.pthr   r   r   ir   gʡP@g33333U@r   gOnBD@g1Z^@r   r   r8   Nr   r8   r5   r3   r   r   j  sT    J.*R\]

"##! !
N  Gr5   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   rd   r   r   r   r   r   s      r3   r   r   ~  sD    0 ##G,G	  r5   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   rd   r   r\   r   r   s      r3   r   r     sM    0 ##G,G	*+a//  r5   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   rd   rJ   r   r   s      r3   r   r     sD    0 "((1G	  r5   )
_ModelURLs)r   r   r   )6	functoolsr   typingr   r   r   r   r   r	   r
   r   torch.nnrS   torchr   transforms._presetsr   utilsr   _apir   r   r   _metar   _utilsr   r   __all__rT   r   rk   rJ   r\   r{   rd   r}   r   r   r   rD   r   r   r   r   r   r   r   r   r   r   r   r   
model_urlsr8   r5   r3   <module>r      s    N N N   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==
r5   