Ë
    þÍ:jK  ã                   óh  — U d dl mZ d dlmZmZmZmZ d dl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	j0                  «      Zd<deeeef      dede	j<                  fd„Zg d¢g d¢g d¢g d¢dœZ e!eeeeef      f   e"d<   dede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 d$„ d%e«      Z' G d&„ d'e«      Z( G d(„ d)e«      Z) G d*„ d+e«      Z* G d,„ d-e«      Z+ G d.„ d/e«      Z, e«        ed0e%jZ                  f¬1«      dd2d3œdee%   dededefd4„«       «       Z. e«        ed0e&jZ                  f¬1«      dd2d3œdee&   dededefd5„«       «       Z/ e«        ed0e'jZ                  f¬1«      dd2d3œdee'   dededefd6„«       «       Z0 e«        ed0e(jZ                  f¬1«      dd2d3œdee(   dededefd7„«       «       Z1 e«        ed0e)jZ                  f¬1«      dd2d3œdee)   dededefd8„«       «       Z2 e«        ed0e*jZ                  f¬1«      dd2d3œdee*   dededefd9„«       «       Z3 e«        ed0e+jZ                  f¬1«      dd2d3œdee+   dededefd:„«       «       Z4 e«        ed0e,jZ                  f¬1«      dd2d3œdee,   dededefd;„«       «       Z5y)=é    )Úpartial)ÚAnyÚcastÚOptionalÚUnionNé   )ÚImageClassification)Ú_log_api_usage_onceé   )Úregister_modelÚWeightsÚWeightsEnum)Ú_IMAGENET_CATEGORIES)Ú_ovewrite_named_paramÚhandle_legacy_interface)ÚVGGÚVGG11_WeightsÚVGG11_BN_WeightsÚVGG13_WeightsÚVGG13_BN_WeightsÚVGG16_WeightsÚVGG16_BN_WeightsÚVGG19_WeightsÚVGG19_BN_WeightsÚvgg11Úvgg11_bnÚvgg13Úvgg13_bnÚvgg16Úvgg16_bnÚvgg19Úvgg19_bnc                   ó„   ‡ — e Zd Z	 d
dej                  dedededdf
ˆ fd„Zde	j                  de	j                  fd	„Zˆ xZS )r   ÚfeaturesÚnum_classesÚinit_weightsÚdropoutÚreturnNc                 óÀ  •— t         ‰| �  «        t        | «       || _        t	        j
                  d«      | _        t	        j                  t	        j                  dd«      t	        j                  d«      t	        j                  |¬«      t	        j                  dd«      t	        j                  d«      t	        j                  |¬«      t	        j                  d|«      «      | _        |�rv| j                  «       D �]a  }t        |t        j                  «      rdt        j                  j!                  |j"                  dd¬«       |j$                  €ŒWt        j                  j'                  |j$                  d	«       Œ‚t        |t        j(                  «      rUt        j                  j'                  |j"                  d
«       t        j                  j'                  |j$                  d	«       Œñt        |t        j                  «      s�Œt        j                  j+                  |j"                  d	d«       t        j                  j'                  |j$                  d	«       �Œd y y )N)é   r*   i b  i   T)ÚpÚfan_outÚrelu)ÚmodeÚnonlinearityr   r   g{®Gáz„?)ÚsuperÚ__init__r
   r$   ÚnnÚAdaptiveAvgPool2dÚavgpoolÚ
SequentialÚLinearÚReLUÚDropoutÚ
classifierÚmodulesÚ
isinstanceÚConv2dÚinitÚkaiming_normal_ÚweightÚbiasÚ	constant_ÚBatchNorm2dÚnormal_)Úselfr$   r%   r&   r'   ÚmÚ	__class__s         €úk/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/torchvision/models/vgg.pyr1   zVGG.__init__$   s‚  ø€ ô 	‰ÑÔÜ˜DÔ!Ø ˆŒÜ×+Ñ+¨FÓ3ˆŒÜŸ-™-Ü�I‰I�k 4Ó(Ü�G‰G�D‹MÜ�J‰J˜Ô!Ü�I‰I�d˜DÓ!Ü�G‰G�D‹MÜ�J‰J˜Ô!Ü�I‰I�d˜KÓ(ó
ˆŒò Ø—\‘\“^ó 
1�Ü˜a¤§¡Ô+Ü—G‘G×+Ñ+¨A¯H©H¸9ÐSYÐ+ÔZØ—v‘vÑ)ÜŸ™×)Ñ)¨!¯&©&°!Õ4Ü ¤2§>¡>Ô2Ü—G‘G×%Ñ% a§h¡h°Ô2Ü—G‘G×%Ñ% a§f¡f¨aÕ0Ü ¤2§9¡9Ö-Ü—G‘G—O‘O A§H¡H¨a°Ô6Ü—G‘G×%Ñ% a§f¡f¨aÖ0ñ
1ð ó    Úxc                 ó˜   — | j                  |«      }| j                  |«      }t        j                  |d«      }| j	                  |«      }|S )Nr   )r$   r4   ÚtorchÚflattenr9   )rD   rI   s     rG   ÚforwardzVGG.forwardA   s@   € Ø�M‰M˜!ÓˆØ�L‰L˜‹OˆÜ�M‰M˜!˜QÓˆØ�O‰O˜AÓˆØˆrH   )iè  Tg      à?)Ú__name__Ú
__module__Ú__qualname__r2   ÚModuleÚintÚboolÚfloatr1   rK   ÚTensorrM   Ú__classcell__)rF   s   @rG   r   r   #   sR   ø„ àhkñ1ØŸ	™	ð1Ø03ð1ØJNð1Ø`eð1à	õ1ð:˜Ÿ™ð ¨%¯,©,÷ rH   r   ÚcfgÚ
batch_normr(   c                 ón  — g }d}| D ]›  }|dk(  r|t        j                  dd¬«      gz  }Œ$t        t        |«      }t        j                  ||dd¬«      }|r0||t        j
                  |«      t        j                  d¬«      gz  }n||t        j                  d¬«      gz  }|}Œ� t        j                  |Ž S )	Né   ÚMr   )Úkernel_sizeÚstrider   )r\   ÚpaddingT)Úinplace)r2   Ú	MaxPool2dr   rR   r<   rB   r7   r5   )rW   rX   ÚlayersÚin_channelsÚvÚconv2ds         rG   Úmake_layersre   I   s­   € Ø €FØ€KØò 
ˆØ�Š8Ø”r—|‘|°¸!Ô<Ð=Ñ=‰Fä”S˜!“ˆAÜ—Y‘Y˜{¨A¸1ÀaÔHˆFÙØ˜6¤2§>¡>°!Ó#4´b·g±gÀdÔ6KÐLÑL‘à˜6¤2§7¡7°4Ô#8Ð9Ñ9�Ø‰Kð
ô �=‰=˜&Ð!Ð!rH   )é@   r[   é€   r[   é   rh   r[   é   ri   r[   ri   ri   r[   )rf   rf   r[   rg   rg   r[   rh   rh   r[   ri   ri   r[   ri   ri   r[   )rf   rf   r[   rg   rg   r[   rh   rh   rh   r[   ri   ri   ri   r[   ri   ri   ri   r[   )rf   rf   r[   rg   rg   r[   rh   rh   rh   rh   r[   ri   ri   ri   ri   r[   ri   ri   ri   ri   r[   )ÚAÚBÚDÚEÚcfgsÚweightsÚprogressÚkwargsc                 óü   — |�7d|d<   |j                   d   �#t        |dt        |j                   d   «      «       t        t	        t
        |    |¬«      fi |¤Ž}|�"|j                  |j                  |d¬«      «       |S )NFr&   Ú
categoriesr%   )rX   T)rp   Ú
check_hash)Úmetar   Úlenr   re   rn   Úload_state_dictÚget_state_dict)rW   rX   ro   rp   rq   Úmodels         rG   Ú_vggrz   b   s   € ØÐØ!&ˆˆ~ÑØ�<‰<˜Ñ%Ð1Ü! &¨-¼¸W¿\¹\È,Ñ=WÓ9XÔYÜ”œD ™I°*Ô=ÑHÀÑH€EØÐØ×Ñ˜g×4Ñ4¸hÐSWÐ4ÓXÔYØ€LrH   )é    r{   zUhttps://github.com/pytorch/vision/tree/main/references/classification#alexnet-and-vggzNThese weights were trained from scratch by using a simplified training recipe.)Úmin_sizers   ÚrecipeÚ_docsc            
       óR   — e Zd Z ed eed¬«      i e¥dddddœid	d
dœ¥¬«      ZeZy)r   z6https://download.pytorch.org/models/vgg11-8a719046.pthéà   ©Ú	crop_sizeihUëúImageNet-1Kgáz®GAQ@gÕxé&1(V@©zacc@1zacc@5çV-²�o@g=
×£p­@©Ú
num_paramsÚ_metricsÚ_opsÚ
_file_size©ÚurlÚ
transformsru   N©	rN   rO   rP   r   r   r	   Ú_COMMON_METAÚIMAGENET1K_V1ÚDEFAULT© rH   rG   r   r   u   sQ   „ ÙØDÙÐ.¸#Ô>ð
Øð
à#àØ#Ø#ñ ðð Ø ò
ô€Mð  �GrH   r   c            
       óR   — e Zd Z ed eed¬«      i e¥dddddœid	d
dœ¥¬«      ZeZy)r   z9https://download.pytorch.org/models/vgg11_bn-6002323d.pthr€   r�   ièjërƒ   gHáz®—Q@g¤p=
×sV@r„   r…   gj¼t“®@r†   r‹   NrŽ   r’   rH   rG   r   r   ‰   óQ   „ ÙØGÙÐ.¸#Ô>ð
Øð
à#àØ#Ø#ñ ðð Ø!ò
ô€Mð  �GrH   r   c            
       óR   — e Zd Z ed eed¬«      i e¥dddddœid	d
dœ¥¬«      ZeZy)r   z6https://download.pytorch.org/models/vgg13-19584684.pthr€   r�   i(&îrƒ   g¬Zd{Q@g9´Èv¾OV@r„   çV-²�&@g…ëQ¸¸@r†   r‹   NrŽ   r’   rH   rG   r   r   �   óQ   „ ÙØDÙÐ.¸#Ô>ð
Øð
à#àØ#Ø#ñ ðð Ø!ò
ô€Mð  �GrH   r   c            
       óR   — e Zd Z ed eed¬«      i e¥dddddœid	d
dœ¥¬«      ZeZy)r   z9https://download.pytorch.org/models/vgg13_bn-abd245e5.pthr€   r�   i(=îrƒ   g/Ý$�åQ@g-²�ï—V@r„   r–   g=
×£p¹@r†   r‹   NrŽ   r’   rH   rG   r   r   ±   sQ   „ ÙØGÙÐ.¸#Ô>ð
Øð
à#àØ#Ø#ñ ðð Ø ò
ô€Mð  �GrH   r   c                   ó¶   — e Zd Z ed eed¬«      i e¥dddddœid	d
dœ¥¬«      Z ed eeddd¬«      i e¥dddd ed«       ed«      dœid	dddœ¥¬«      Z	eZ
y)r   z6https://download.pytorch.org/models/vgg16-397923af.pthr€   r�   i(+?rƒ   gÙÎ÷SãåQ@gœÄ °r˜V@r„   çq=
×£ð.@gî|?5^~€@r†   r‹   zIhttps://download.pytorch.org/models/vgg16_features-amdegroot-88682ab5.pth)g;pÎˆÒÞÞ?gÌ°�N]Ý?g|
€ñÚ?)çp?r›   r›   )r‚   ÚmeanÚstdNz5https://github.com/amdegroot/ssd.pytorch#training-ssdÚnang#Ûù~j~€@a`  
                These weights can't be used for classification because they are missing values in the `classifier`
                module. Only the `features` module has valid values and can be used for feature extraction. The weights
                were trained using the original input standardization method as described in the paper.
            )r‡   rs   r}   rˆ   r‰   rŠ   r~   )rN   rO   rP   r   r   r	   r�   r�   rT   ÚIMAGENET1K_FEATURESr‘   r’   rH   rG   r   r   Å   s¸   „ ÙØDÙÐ.¸#Ô>ð
Øð
à#àØ#Ø#ñ ðð Ø!ò
ô€Mñ  "àWÙØØØ,Ø7ô	
ð
Øð
à#ØØMàÙ" 5›\Ù" 5›\ñ ðð Ø!ðò
ôÐð: �GrH   r   c            
       óR   — e Zd Z ed eed¬«      i e¥dddddœid	d
dœ¥¬«      ZeZy)r   z9https://download.pytorch.org/models/vgg16_bn-6c64b313.pthr€   r�   i(L?rƒ   g×£p=
WR@g/Ý$áV@r„   rš   g°rh‘í~€@r†   r‹   NrŽ   r’   rH   rG   r   r   ö   r”   rH   r   c            
       óR   — e Zd Z ed eed¬«      i e¥dddddœid	d
dœ¥¬«      ZeZy)r   z6https://download.pytorch.org/models/vgg19-dcbb9e9d.pthr€   r�   i(0�rƒ   gòÒMbR@gòÒMb¸V@r„   çoƒÀÊ¡3@gÅ °rh �@r†   r‹   NrŽ   r’   rH   rG   r   r   
  r—   rH   r   c            
       óR   — e Zd Z ed eed¬«      i e¥dddddœid	d
dœ¥¬«      ZeZy)r   z9https://download.pytorch.org/models/vgg19_bn-c79401a0.pthr€   r�   i([�rƒ   gË¡E¶ó�R@gÙÎ÷SãõV@r„   r¢   g /Ý$!�@r†   r‹   NrŽ   r’   rH   rG   r   r     sQ   „ ÙØGÙÐ.¸#Ô>ð
Øð
à#àØ#Ø#ñ ðð Ø!ò
ô€Mð  �GrH   r   Ú
pretrained)ro   T)ro   rp   c                 óJ   — t         j                  | «      } t        dd| |fi |¤ŽS )ap  VGG-11 from `Very Deep Convolutional Networks for Large-Scale Image Recognition <https://arxiv.org/abs/1409.1556>`__.

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

    .. autoclass:: torchvision.models.VGG11_Weights
        :members:
    rj   F)r   Úverifyrz   ©ro   rp   rq   s      rG   r   r   2  ó*   € ô* ×"Ñ" 7Ó+€Gä��U˜G XÑ8°Ñ8Ð8rH   c                 óJ   — t         j                  | «      } t        dd| |fi |¤ŽS )a|  VGG-11-BN from `Very Deep Convolutional Networks for Large-Scale Image Recognition <https://arxiv.org/abs/1409.1556>`__.

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

    .. autoclass:: torchvision.models.VGG11_BN_Weights
        :members:
    rj   T)r   r¦   rz   r§   s      rG   r   r   L  ó*   € ô* ×%Ñ% gÓ.€Gä��T˜7 HÑ7°Ñ7Ð7rH   c                 óJ   — t         j                  | «      } t        dd| |fi |¤ŽS )ap  VGG-13 from `Very Deep Convolutional Networks for Large-Scale Image Recognition <https://arxiv.org/abs/1409.1556>`__.

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

    .. autoclass:: torchvision.models.VGG13_Weights
        :members:
    rk   F)r   r¦   rz   r§   s      rG   r   r   f  r¨   rH   c                 óJ   — t         j                  | «      } t        dd| |fi |¤ŽS )a|  VGG-13-BN from `Very Deep Convolutional Networks for Large-Scale Image Recognition <https://arxiv.org/abs/1409.1556>`__.

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

    .. autoclass:: torchvision.models.VGG13_BN_Weights
        :members:
    rk   T)r   r¦   rz   r§   s      rG   r   r   €  rª   rH   c                 óJ   — t         j                  | «      } t        dd| |fi |¤ŽS )ap  VGG-16 from `Very Deep Convolutional Networks for Large-Scale Image Recognition <https://arxiv.org/abs/1409.1556>`__.

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

    .. autoclass:: torchvision.models.VGG16_Weights
        :members:
    rl   F)r   r¦   rz   r§   s      rG   r   r   š  r¨   rH   c                 óJ   — t         j                  | «      } t        dd| |fi |¤ŽS )a|  VGG-16-BN from `Very Deep Convolutional Networks for Large-Scale Image Recognition <https://arxiv.org/abs/1409.1556>`__.

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

    .. autoclass:: torchvision.models.VGG16_BN_Weights
        :members:
    rl   T)r   r¦   rz   r§   s      rG   r    r    ´  rª   rH   c                 óJ   — t         j                  | «      } t        dd| |fi |¤ŽS )ap  VGG-19 from `Very Deep Convolutional Networks for Large-Scale Image Recognition <https://arxiv.org/abs/1409.1556>`__.

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

    .. autoclass:: torchvision.models.VGG19_Weights
        :members:
    rm   F)r   r¦   rz   r§   s      rG   r!   r!   Î  r¨   rH   c                 óJ   — t         j                  | «      } t        dd| |fi |¤ŽS )a|  VGG-19_BN from `Very Deep Convolutional Networks for Large-Scale Image Recognition <https://arxiv.org/abs/1409.1556>`__.

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

    .. autoclass:: torchvision.models.VGG19_BN_Weights
        :members:
    rm   T)r   r¦   rz   r§   s      rG   r"   r"   è  rª   rH   )F)6Ú	functoolsr   Útypingr   r   r   r   rK   Útorch.nnr2   Útransforms._presetsr	   Úutilsr
   Ú_apir   r   r   Ú_metar   Ú_utilsr   r   Ú__all__rQ   r   ÚlistÚstrrR   rS   r5   re   rn   ÚdictÚ__annotations__rz   r�   r   r   r   r   r   r   r   r   r�   r   r   r   r   r   r    r!   r"   r’   rH   rG   ú<module>r¾      s  ðÞ ß -Ó -ã Ý å 5Ý 'ß 6Ñ 6Ý 'ß Bò€ô*#ˆ"�)‰)ô #ñL"�T˜%  S ™/Ñ*ð "¸ð "ÈÏÉó "ò$ 
JÚ	RÚ	aÚ	pñ	*€€dˆ3��U˜3 ˜8‘_Ñ%Ð%Ñ&ó ðˆcð ˜tð ¨h°{Ñ.Cð Ètð Ð_bð Ðgjó ð Ø&ØeØañ	€ô�Kô ô(�{ô ô(�Kô ô(�{ô ô(.�Kô .ôb�{ô ô(�Kô ô(�{ô ñ( ÓÙ ,°×0KÑ0KÐ!LÔMØ04Àtò 9�h˜}Ñ-ð 9Àð 9ÐWZð 9Ð_bò 9ó Nó ð9ñ0 ÓÙ ,Ð0@×0NÑ0NÐ!OÔPØ6:ÈTò 8˜Ð"2Ñ3ð 8Àdð 8Ð]`ð 8Ðehò 8ó Qó ð8ñ0 ÓÙ ,°×0KÑ0KÐ!LÔMØ04Àtò 9�h˜}Ñ-ð 9Àð 9ÐWZð 9Ð_bò 9ó Nó ð9ñ0 ÓÙ ,Ð0@×0NÑ0NÐ!OÔPØ6:ÈTò 8˜Ð"2Ñ3ð 8Àdð 8Ð]`ð 8Ðehò 8ó Qó ð8ñ0 ÓÙ ,°×0KÑ0KÐ!LÔMØ04Àtò 9�h˜}Ñ-ð 9Àð 9ÐWZð 9Ð_bò 9ó Nó ð9ñ0 ÓÙ ,Ð0@×0NÑ0NÐ!OÔPØ6:ÈTò 8˜Ð"2Ñ3ð 8Àdð 8Ð]`ð 8Ðehò 8ó Qó ð8ñ0 ÓÙ ,°×0KÑ0KÐ!LÔMØ04Àtò 9�h˜}Ñ-ð 9Àð 9ÐWZð 9Ð_bò 9ó Nó ð9ñ0 ÓÙ ,Ð0@×0NÑ0NÐ!OÔPØ6:ÈTò 8˜Ð"2Ñ3ð 8Àdð 8Ð]`ð 8Ðehò 8ó Qó ñ8rH   