Ë
    þÍ:j‹A  ã                   ó�  — d dl mZ d dlmZ d dlmZmZmZmZ d dl	m
Z
 d dlmZ ddlmZ ddlmZ d	d
lmZmZmZ d	dlmZ d	dlmZmZ g d¢Z G d„ de
j6                  «      Z G d„ de
j:                  «      Z G d„ de
j6                  «      Z G d„ de
j@                  «      Z! G d„ de
j@                  «      Z" G d„ de
j:                  «      Z# G d„ de
j:                  «      Z$ G d„ de
j@                  «      Z%de&ee!e"f      dee&eeeef         d e'e(   d!ed"e
j@                  f   d#ee   d$e)d%ed&e%fd'„Z*d(ed)d*d+œZ+ G d,„ d-e«      Z, G d.„ d/e«      Z- G d0„ d1e«      Z. e«        ed2e,j^                  f¬3«      dd4d5œd#ee,   d$e)d%ed&e%fd6„«       «       Z0 e«        ed2e-j^                  f¬3«      dd4d5œd#ee-   d$e)d%ed&e%fd7„«       «       Z1 e«        ed2e.j^                  f¬3«      dd4d5œd#ee.   d$e)d%ed&e%fd8„«       «       Z2d	d9lm3Z3  e3e,j^                  jh                  e-j^                  jh                  e.j^                  jh                  d:œ«      Z5y);é    )Ú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                   óh   ‡ — e Zd Z	 d
dededee   dededdfˆ fd„Zededeeeef   fd	„«       Zˆ xZ	S )ÚConv3DSimpleNÚ	in_planesÚ
out_planesÚ	midplanesÚstrideÚpaddingÚreturnc                 ó0   •— t         ‰| �  ||d||d¬«       y )N)r
   r
   r
   F©Úin_channelsÚout_channelsÚkernel_sizer    r!   Úbias©ÚsuperÚ__init__©Úselfr   r   r   r    r!   Ú	__class__s         €út/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/torchvision/models/video/resnet.pyr+   zConv3DSimple.__init__   s)   ø€ ô 	‰ÑØ!Ø#Ø!ØØØð 	õ 	
ó    c                 ó   — | | | fS ©N© ©r    s    r/   Úget_downsample_stridez"Conv3DSimple.get_downsample_stride(   ó   € à�v˜vÐ%Ð%r0   ©Né   r8   ©
Ú__name__Ú
__module__Ú__qualname__Úintr   r+   ÚstaticmethodÚtupler5   Ú__classcell__©r.   s   @r/   r   r      sl   ø„ àpqñ
Øð
Ø*-ð
Ø:BÀ3¹-ð
ØX[ð
Øjmð
à	õ
ð ð& cð &¨e°C¸¸c°MÑ.Bò &ó ô&r0   r   c                   ó`   ‡ — e Zd Zd
dedededededdfˆ fd„Zededeeeef   fd	„«       Zˆ xZS )ÚConv2Plus1Dr   r   r   r    r!   r"   Nc                 óô   •— t         ‰| �  t        j                  ||dd||fd||fd¬«      t        j                  |«      t        j
                  d¬«      t        j                  ||d|ddf|ddfd¬«      «       y )	N©r8   r
   r
   r8   r   F©r'   r    r!   r(   T©Úinplace©r
   r8   r8   ©r*   r+   ÚnnÚConv3dÚBatchNorm3dÚReLUr,   s         €r/   r+   zConv2Plus1D.__init__.   s�   ø€ Ü‰ÑÜ�I‰IØØØ%Ø˜6 6Ð*Ø˜G WÐ-Øôô �N‰N˜9Ó%Ü�G‰G˜DÔ!Ü�I‰IØ˜:°9ÀfÈaÐQRÀ^Ð^eÐghÐjkÐ]lÐsxôõ	
r0   c                 ó   — | | | fS r2   r3   r4   s    r/   r5   z!Conv2Plus1D.get_downsample_stride?   r6   r0   ©r8   r8   )	r:   r;   r<   r=   r+   r>   r?   r5   r@   rA   s   @r/   rC   rC   -   sb   ø„ ñ
 #ð 
°3ð 
À3ð 
ÐPSð 
Ðbeð 
Ðnrõ 
ð" ð& cð &¨e°C¸¸c°MÑ.Bò &ó ô&r0   rC   c                   óh   ‡ — e Zd Z	 d
dededee   dededdfˆ fd„Zededeeeef   fd	„«       Zˆ xZ	S )ÚConv3DNoTemporalNr   r   r   r    r!   r"   c           	      ó<   •— t         ‰| �  ||dd||fd||fd¬«       y )NrE   r8   r   Fr$   r)   r,   s         €r/   r+   zConv3DNoTemporal.__init__E   s7   ø€ ô 	‰ÑØ!Ø#Ø!Ø�v˜vÐ&Ø˜ Ð)Øð 	õ 	
r0   c                 ó   — d| | fS ©Nr8   r3   r4   s    r/   r5   z&Conv3DNoTemporal.get_downsample_strideR   s   € à�&˜&Ð Ð r0   r7   r9   rA   s   @r/   rR   rR   D   sl   ø„ àpqñ
Øð
Ø*-ð
Ø:BÀ3¹-ð
ØX[ð
Øjmð
à	õ
ð ð! cð !¨e°C¸¸c°MÑ.Bò !ó ô!r0   rR   c                   óŠ   ‡ — e Zd ZdZ	 	 ddedededej                  f   dedeej                     d	dfˆ fd
„Z	de
d	e
fd„Zˆ xZS )Ú
BasicBlockr8   NÚinplanesÚplanesÚconv_builder.r    Ú
downsampler"   c                 ó²  •— ||z  dz  dz  dz  |dz  dz  d|z  z   z  }t         ‰| �  «        t        j                   |||||«      t        j                  |«      t        j
                  d¬«      «      | _        t        j                   ||||«      t        j                  |«      «      | _        t        j
                  d¬«      | _        || _	        || _
        y )Nr
   TrG   )r*   r+   rK   Ú
SequentialrM   rN   Úconv1Úconv2Úrelur[   r    ©r-   rX   rY   rZ   r    r[   r   r.   s          €r/   r+   zBasicBlock.__init__[   s½   ø€ ð  Ñ&¨Ñ*¨QÑ.°Ñ2¸À1¹ÀqÑ8HÈ1ÈvÉ:Ñ8UÑVˆ	ä‰ÑÔÜ—]‘]Ù˜ 6¨9°fÓ=¼r¿~¹~ÈfÓ?UÔWY×W^ÑW^ÐgkÔWló
ˆŒ
ô —]‘]¡<°¸À	Ó#JÌBÏNÉNÐ[aÓLbÓcˆŒ
Ü—G‘G DÔ)ˆŒ	Ø$ˆŒØˆ�r0   Úxc                 ó´   — |}| j                  |«      }| j                  |«      }| j                  �| j                  |«      }||z  }| j                  |«      }|S r2   )r^   r_   r[   r`   ©r-   rb   ÚresidualÚouts       r/   ÚforwardzBasicBlock.forwardn   sT   € Øˆà�j‰j˜‹mˆØ�j‰j˜‹oˆØ�?‰?Ð&Ø—‘ qÓ)ˆHàˆx‰ˆØ�i‰i˜‹nˆàˆ
r0   ©r8   N©r:   r;   r<   Ú	expansionr=   r   rK   ÚModuler   r+   r	   rg   r@   rA   s   @r/   rW   rW   W   sx   ø„ à€Ið Ø*.ñàðð ðð ˜s B§I¡I˜~Ñ.ð	ð
 ðð ˜RŸY™YÑ'ðð 
õð&˜ð  F÷ r0   rW   c                   óŠ   ‡ — e Zd ZdZ	 	 ddedededej                  f   dedeej                     d	dfˆ fd
„Z	de
d	e
fd„Zˆ xZS )Ú
Bottlenecké   NrX   rY   rZ   .r    r[   r"   c                 ó¸  •— t         ‰| �  «        ||z  dz  dz  dz  |dz  dz  d|z  z   z  }t        j                  t        j                  ||dd¬«      t        j
                  |«      t        j                  d¬«      «      | _        t        j                   |||||«      t        j
                  |«      t        j                  d¬«      «      | _        t        j                  t        j                  ||| j                  z  dd¬«      t        j
                  || j                  z  «      «      | _
        t        j                  d¬«      | _        || _        || _        y )Nr
   r8   F)r'   r(   TrG   )r*   r+   rK   r]   rL   rM   rN   r^   r_   rj   Úconv3r`   r[   r    ra   s          €r/   r+   zBottleneck.__init__   s  ø€ ô 	‰ÑÔØ Ñ&¨Ñ*¨QÑ.°Ñ2¸À1¹ÀqÑ8HÈ1ÈvÉ:Ñ8UÑVˆ	ô —]‘]Ü�I‰I�h °A¸EÔBÄBÇNÁNÐSYÓDZÔ\^×\cÑ\cÐlpÔ\qó
ˆŒ
ô —]‘]Ù˜ ¨°FÓ;¼R¿^¹^ÈFÓ=SÔUW×U\ÑU\ÐeiÔUjó
ˆŒ
ô
 —]‘]Ü�I‰I�f˜f t§~¡~Ñ5À1È5ÔQÜ�N‰N˜6 D§N¡NÑ2Ó3ó
ˆŒ
ô —G‘G DÔ)ˆŒ	Ø$ˆŒØˆ�r0   rb   c                 óÖ   — |}| j                  |«      }| j                  |«      }| j                  |«      }| j                  �| j                  |«      }||z  }| j	                  |«      }|S r2   )r^   r_   rp   r[   r`   rd   s       r/   rg   zBottleneck.forward�   sa   € Øˆà�j‰j˜‹mˆØ�j‰j˜‹oˆØ�j‰j˜‹oˆà�?‰?Ð&Ø—‘ qÓ)ˆHàˆx‰ˆØ�i‰i˜‹nˆàˆ
r0   rh   ri   rA   s   @r/   rm   rm   |   sx   ø„ Ø€Ið Ø*.ñàðð ðð ˜s B§I¡I˜~Ñ.ð	ð
 ðð ˜RŸY™YÑ'ðð 
õð<˜ð  F÷ r0   rm   c                   ó$   ‡ — e Zd ZdZdˆ fd„Zˆ xZS )Ú	BasicStemz$The default conv-batchnorm-relu stemc           
      ó¨   •— t         ‰| �  t        j                  dddddd¬«      t        j                  d«      t        j
                  d¬	«      «       y )
Nr
   é@   )r
   é   rv   ©r8   r   r   rE   FrF   TrG   rJ   ©r-   r.   s    €r/   r+   zBasicStem.__init__°   s?   ø€ Ü‰ÑÜ�I‰I�a˜¨¸9ÈiÐ^cÔdÜ�N‰N˜2ÓÜ�G‰G˜DÔ!õ	
r0   ©r"   N©r:   r;   r<   Ú__doc__r+   r@   rA   s   @r/   rs   rs   ­   s   ø„ Ù.÷
ñ 
r0   rs   c                   ó$   ‡ — e Zd ZdZdˆ fd„Zˆ xZS )ÚR2Plus1dStemzRR(2+1)D stem is different than the default one as it uses separated 3D convolutionc                 ó.  •— t         ‰| �  t        j                  dddddd¬«      t        j                  d«      t        j
                  d¬	«      t        j                  dd
dddd¬«      t        j                  d
«      t        j
                  d¬	«      «       y )Nr
   é-   )r8   rv   rv   rw   )r   r
   r
   FrF   TrG   ru   rI   ©r8   r8   r8   )r8   r   r   rJ   rx   s    €r/   r+   zR2Plus1dStem.__init__»   sn   ø€ Ü‰ÑÜ�I‰I�a˜¨¸9ÈiÐ^cÔdÜ�N‰N˜2ÓÜ�G‰G˜DÔ!Ü�I‰I�b˜"¨)¸IÈyÐ_dÔeÜ�N‰N˜2ÓÜ�G‰G˜DÔ!õ	
r0   ry   rz   rA   s   @r/   r}   r}   ¸   s   ø„ Ù\÷
ñ 
r0   r}   c                   óø   ‡ — e Zd Z	 	 ddeeeef      deeeee	e
f         dee   dedej                  f   dededd	fˆ fd
„Zdedefd„Z	 ddeeeef      deeee	e
f      dedededej(                  fd„Zˆ xZS )r   ÚblockÚconv_makersÚlayersÚstem.Únum_classesÚzero_init_residualr"   Nc                 óŽ  •— t         ‰| �  «        t        | «       d| _         |«       | _        | j                  ||d   d|d   d¬«      | _        | j                  ||d   d|d   d¬«      | _        | j                  ||d   d|d   d¬«      | _        | j                  ||d   d	|d   d¬«      | _	        t        j                  d
«      | _        t        j                  d	|j                  z  |«      | _        | j!                  «       D �]a  }t#        |t        j$                  «      rdt        j&                  j)                  |j*                  dd¬«       |j,                  €ŒWt        j&                  j/                  |j,                  d«       Œ‚t#        |t        j0                  «      rUt        j&                  j/                  |j*                  d«       t        j&                  j/                  |j,                  d«       Œñt#        |t        j                  «      s�Œt        j&                  j3                  |j*                  dd«       t        j&                  j/                  |j,                  d«       �Œd |r[| j!                  «       D ]G  }t#        |t4        «      sŒt        j&                  j/                  |j6                  j*                  d«       ŒI yy)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.
        ru   r   r8   r4   é€   r   é   r
   i   r€   Úfan_outr`   )ÚmodeÚnonlinearityNg{®Gáz„?)r*   r+   r   rX   r…   Ú_make_layerÚlayer1Úlayer2Úlayer3Úlayer4rK   ÚAdaptiveAvgPool3dÚavgpoolÚLinearrj   ÚfcÚmodulesÚ
isinstancerL   ÚinitÚkaiming_normal_Úweightr(   Ú	constant_rM   Únormal_rm   Úbn3)	r-   r‚   rƒ   r„   r…   r†   r‡   Úmr.   s	           €r/   r+   zVideoResNet.__init__Ç   s  ø€ ô( 	‰ÑÔÜ˜DÔ!ØˆŒá“FˆŒ	à×&Ñ& u¨k¸!©n¸bÀ&ÈÁ)ÐTUÐ&ÓVˆŒØ×&Ñ& u¨k¸!©n¸cÀ6È!Á9ÐUVÐ&ÓWˆŒØ×&Ñ& u¨k¸!©n¸cÀ6È!Á9ÐUVÐ&ÓWˆŒØ×&Ñ& u¨k¸!©n¸cÀ6È!Á9ÐUVÐ&ÓWˆŒä×+Ñ+¨IÓ6ˆŒÜ—)‘)˜C %§/¡/Ñ1°;Ó?ˆŒð —‘“ó 
	-ˆAÜ˜!œRŸY™YÔ'Ü—‘×'Ñ'¨¯©°yÈvÐ'ÔVØ—6‘6Ñ%Ü—G‘G×%Ñ% a§f¡f¨aÕ0Ü˜AœrŸ~™~Ô.Ü—‘×!Ñ! !§(¡(¨AÔ.Ü—‘×!Ñ! !§&¡&¨!Õ,Ü˜AœrŸy™yÖ)Ü—‘—‘ §¡¨!¨TÔ2Ü—‘×!Ñ! !§&¡&¨!Ö,ð
	-ñ Ø—\‘\“^ò 7�Ü˜a¤Õ,Ü—G‘G×%Ñ% a§e¡e§l¡l°AÕ6ñ7ð r0   rb   c                 ó  — | j                  |«      }| j                  |«      }| j                  |«      }| j                  |«      }| j	                  |«      }| j                  |«      }|j                  d«      }| j                  |«      }|S rU   )r…   r�   r�   r‘   r’   r”   Úflattenr–   )r-   rb   s     r/   rg   zVideoResNet.forwardû   so   € Ø�I‰I�a‹Lˆà�K‰K˜‹NˆØ�K‰K˜‹NˆØ�K‰K˜‹NˆØ�K‰K˜‹Nˆà�L‰L˜‹Oˆà�I‰I�a‹LˆØ�G‰G�A‹Jˆàˆr0   rZ   rY   Úblocksr    c           	      ó6  — d }|dk7  s| j                   ||j                  z  k7  rv|j                  |«      }t        j                  t        j
                  | j                   ||j                  z  d|d¬«      t        j                  ||j                  z  «      «      }g }|j                   || j                   ||||«      «       ||j                  z  | _         t        d|«      D ]%  }	|j                   || j                   ||«      «       Œ' t        j                  |Ž S )Nr8   F)r'   r    r(   )	rX   rj   r5   rK   r]   rL   rM   ÚappendÚrange)
r-   r‚   rZ   rY   r¢   r    r[   Ú	ds_strider„   Úis
             r/   rŽ   zVideoResNet._make_layer
  sð   € ð ˆ
à�QŠ;˜$Ÿ-™-¨6°E·O±OÑ+CÒCØ$×:Ñ:¸6ÓBˆIÜŸ™Ü—	‘	˜$Ÿ-™-¨°%·/±/Ñ)AÈqÐYbÐinÔoÜ—‘˜v¨¯©Ñ7Ó8óˆJð ˆØ�‰‘e˜DŸM™M¨6°<ÀÈÓTÔUà §¡Ñ0ˆŒÜ�q˜&Ó!ò 	FˆAØ�M‰M™% §¡¨v°|ÓDÕEð	Fô �}‰}˜fÐ%Ð%r0   )i�  F)r8   )r:   r;   r<   Útyper   rW   rm   r   r   rR   rC   Úlistr=   r   rK   rk   Úboolr+   r	   rg   r]   rŽ   r@   rA   s   @r/   r   r   Æ   s  ø„ ð Ø#(ñ27à�E˜* jÐ0Ñ1Ñ2ð27ð ˜d 5¨Ð7GÈÐ)TÑ#UÑVÑWð27ð �S‘	ð	27ð
 �s˜BŸI™I�~Ñ&ð27ð ð27ð !ð27ð 
õ27ðh˜ð  Fó ð* ñ&à�E˜* jÐ0Ñ1Ñ2ð&ð ˜5 Ð/?ÀÐ!LÑMÑNð&ð ð	&ð
 ð&ð ð&ð 
�‰÷&r0   r   r‚   rƒ   r„   r…   .ÚweightsÚprogressÚkwargsr"   c                 ó¶   — |�#t        |dt        |j                  d   «      «       t        | |||fi |¤Ž}|�"|j	                  |j                  |d¬«      «       |S )Nr†   Ú
categoriesT)r¬   Ú
check_hash)r   ÚlenÚmetar   Úload_state_dictÚget_state_dict)r‚   rƒ   r„   r…   r«   r¬   r­   Úmodels           r/   Ú_video_resnetr¶   $  sc   € ð ÐÜ˜f m´S¸¿¹ÀlÑ9SÓ5TÔUä˜˜{¨F°DÑC¸FÑC€EàÐØ×Ñ˜g×4Ñ4¸hÐSWÐ4ÓXÔYà€Lr0   rP   zKhttps://github.com/pytorch/vision/tree/main/references/video_classificationz­The 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            
       óT   — e Zd Z ed eedd¬«      i e¥ddddd	œid
ddœ¥¬«      ZeZy)r   z7https://download.pytorch.org/models/r3d_18-b3b3357e.pth©ép   r¼   ©r‰   é«   ©Ú	crop_sizeÚresize_sizeiP5ýúKinetics-400gš™™™™™O@g-²�ï§ÞT@©zacc@1zacc@5gð§ÆK7YD@gåÐ"ÛùÖ_@©Ú
num_paramsÚ_metricsÚ_opsÚ
_file_size©ÚurlÚ
transformsr²   N©	r:   r;   r<   r   r   r   Ú_COMMON_METAÚKINETICS400_V1ÚDEFAULTr3   r0   r/   r   r   C  sT   „ ÙØEÙÐ.¸*ÐR\Ô]ð
Øð
à"àØ#Ø#ñ!ðð Ø!ò
ô€Nð  �Gr0   r   c            
       óT   — e Zd Z ed eedd¬«      i e¥ddddd	œid
ddœ¥¬«      ZeZy)r   z7https://download.pytorch.org/models/mc3_18-a90a0ba3.pthr»   r½   r¿   iPu² rÂ   g{®GáúO@g¸…ëQU@rÃ   g–C‹lç«E@g¼t“VF@rÄ   rÉ   NrÌ   r3   r0   r/   r   r   W  sT   „ ÙØEÙÐ.¸*ÐR\Ô]ð
Øð
à"àØ#Ø#ñ!ðð Ø ò
ô€Nð  �Gr0   r   c            
       óT   — e Zd Z ed eedd¬«      i e¥ddddd	œid
ddœ¥¬«      ZeZy)r   z<https://download.pytorch.org/models/r2plus1d_18-91a641e6.pthr»   r½   r¿   i­»àrÂ   gƒÀÊ¡ÝP@g33333‹U@rÃ   gßO�—nBD@g1¬Z^@rÄ   rÉ   NrÌ   r3   r0   r/   r   r   k  sT   „ ÙØJÙÐ.¸*ÐR\Ô]ð
Øð
à"àØ#Ø#ñ!ðð Ø!ò
ô€Nð  �Gr0   r   Ú
pretrained)r«   T)r«   r¬   c                 ór   — t         j                  | «      } t        t        t        gdz  g d¢t
        | |fi |¤ŽS )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:
    rn   ©r   r   r   r   )r   Úverifyr¶   rW   r   rs   ©r«   r¬   r­   s      r/   r   r     sD   € ô0 ×#Ñ# GÓ,€GäÜÜ	ˆ˜ÑÚÜØØñð ñð r0   c                 ó‚   — t         j                  | «      } t        t        t        gt
        gdz  z   g d¢t        | |fi |¤ŽS )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¶   rW   r   rR   rs   rÖ   s      r/   r   r   ¤  sM   € ô0 ×#Ñ# GÓ,€GäÜÜ	ˆÔ*Ð+¨aÑ/Ñ/ÚÜØØñð ñð r0   c                 ór   — t         j                  | «      } t        t        t        gdz  g d¢t
        | |fi |¤ŽS )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:
    rn   rÔ   )r   rÕ   r¶   rW   rC   r}   rÖ   s      r/   r   r   É  sD   € ô0 "×(Ñ(¨Ó1€GäÜÜ	ˆ˜ÑÚÜØØñð ñð r0   )Ú
_ModelURLs)r   r   r   )6Úcollections.abcr   Ú	functoolsr   Útypingr   r   r   r   Útorch.nnrK   Útorchr	   Útransforms._presetsr   Úutilsr   Ú_apir   r   r   Ú_metar   Ú_utilsr   r   Ú__all__rL   r   r]   rC   rR   rk   rW   rm   rs   r}   r   r¨   r©   r=   rª   r¶   rÍ   r   r   r   rÎ   r   r   r   rÙ   rÊ   Ú
model_urlsr3   r0   r/   ú<module>ræ      sÏ  ðÝ $Ý ß 1Ó 1å Ý å 6Ý (ß 7Ñ 7Ý +ß Cò€ô&�2—9‘9ô &ô&&�"—-‘-ô &ô.!�r—y‘yô !ô&"�—‘ô "ôJ.�—‘ô .ôb
�—‘ô 
ô
�2—=‘=ô 
ô[&�"—)‘)ô [&ð|Ø��j *Ð,Ñ-Ñ.ðà˜$˜u \Ð3CÀ[Ð%PÑQÑRÑSðð �‰Iðð �3˜Ÿ	™	�>Ñ
"ð	ð
 �kÑ"ðð ðð ðð óð* Ø)Ø[ð	Sñ€ô�[ô ô(�[ô ô(˜+ô ñ( ÓÙ ,°×0MÑ0MÐ!NÔOØ26Èò  �x Ñ/ð  À$ð  ÐY\ð  Ðalò  ó Pó ð ñF ÓÙ ,°×0MÑ0MÐ!NÔOØ26Èò  �x Ñ/ð  À$ð  ÐY\ð  Ðalò  ó Pó ð ñF ÓÙ ,Ð0C×0RÑ0RÐ!SÔTØ<@ÐSWò  ˜HÐ%8Ñ9ð  ÈDð  Ðcfð  Ðkvò  ó Uó ð õH  ñ à ×/Ñ/×3Ñ3Ø ×/Ñ/×3Ñ3Ø*×9Ñ9×=Ñ=ñó�
r0   