
    j_                         U d dl 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 ddlmZ d	gZd	d
dd eed                   ddiZeeeeef         f         ed<   	 	 ddededededee         dz  dede	j        fdZddedede	j        fdZdS )    N)deepcopy)Any)nn)vgg)VOCABS   load_pretrained_params
vgg16_bn_r)gh|?5?g=
ףp=?gV-?)gA`"?gl?g$C?)r       r   frenchzMhttps://doctr-static.mindee.com/models?id=v0.4.1/vgg16_bn_r-d108c19c.pt&src=0)meanstdinput_shapeclassesurldefault_cfgsarch
pretrainedtv_archnum_rect_poolsignore_keyskwargsreturnc                    |                     dt          t          |          d                             |d<   |                     dt          |          d                   |d<   t          t          |                    }|d         |d<   |d         |d<   |                    d           t          j        |         di |dd i}d t          |j                  D             }|| d          D ]}	t          j
        d          |j        |	<   t          j        d          |_        t          j        d|d                   |_        dt          d	t           d
d fd}
t#          j        |
|          |_        |rV|d         t          t          |          d                   k    r|nd }|                    t          |          d         |           ||_        |S )Nnum_classesr   weightsc                 L    g | ]!\  }}t          |t          j                  |"S  )
isinstancer   	MaxPool2d).0idxms      j/var/www/html/Carbon-Document/venv/lib/python3.11/site-packages/doctr/models/classification/vgg/pytorch.py
<listcomp>z_vgg.<locals>.<listcomp>2   s-    \\\a
1bl@[@[\\\\    )      )r)   r)   i   path_or_urlr   r   c                 "    t          | |fi | dS )zLoad pretrained parameters onto the model

        Args:
            path_or_url: the path or URL to the model parameters (checkpoint)
            **kwargs: additional arguments to be passed to `doctr.models.utils.load_pretrained_params`
        Nr	   )selfr*   r   s      r%   from_pretrainedz_vgg.<locals>.from_pretrained;   s"     	t[;;F;;;;;r'   r   )r   r   )getlenr   r   poptv_vgg__dict__	enumeratefeaturesr   r!   AdaptiveAvgPool2davgpoolLinear
classifierstrr   types
MethodTyper-   cfg)r   r   r   r   r   r   _cfgmodel	pool_idcsr#   r-   _ignore_keyss               r%   _vggrA      s    #JJ}c,t:LY:W6X6XYYF=

9l4.@.KLLF9L&''D /DY'DO
JJy OG$<<v<<t<<<E\\9U^#<#<\\\I.))* 3 3 l622s(00EMyf]&;<<E<3 <# <$ < < < < ",_eDDE  S '-]&;s<PTCUV_C`?a?a&a&a{{gkl407\RRREILr'   Fc                 *    t          d| ddfdddgi|S )a  VGG-16 architecture as described in `"Very Deep Convolutional Networks for Large-Scale Image Recognition"
    <https://arxiv.org/pdf/1409.1556.pdf>`_, modified by adding batch normalization, rectangular pooling and a simpler
    classification head.

    >>> import torch
    >>> from doctr.models import vgg16_bn_r
    >>> model = vgg16_bn_r(pretrained=False)
    >>> input_tensor = torch.rand((1, 3, 512, 512), dtype=torch.float32)
    >>> out = model(input_tensor)

    Args:
        pretrained (bool): If True, returns a model pre-trained on ImageNet
        **kwargs: keyword arguments of the VGG architecture

    Returns:
        VGG feature extractor
    r   vgg16_bnr   r   zclassifier.weightzclassifier.bias)rA   )r   r   s     r%   r   r   S   sA    $ 		 
 )*;<   r'   )r   N)F)r:   copyr   typingr   torchr   torchvision.modelsr   r1   doctr.datasetsr   utilsr
   __all__listr   dictr9   __annotations__boolintVGGrA   r   r   r'   r%   <module>rQ      s                      , , , , , , ! ! ! ! ! ! + + + + + +. %$"4x())^ +d3S#X&'    $(1 1
11 1 	1
 cT!1 1 Z1 1 1 1h 4 3 6:      r'   