Ë
    T^(hBJ  ã                   óJ  — d Z ddlmZ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mZmZ ddlmZ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mZmZmZ ddlm Z   ejB                  e"«      Z#dZ$dZ%g d¢Z& G d„ de	jN                  «      Z( G d„ de	jN                  «      Z) G d„ de	jN                  «      Z* G d„ de	jN                  «      Z+dZ,dZ- G d„ de«      Z. ede,«       G d„ de.«      «       Z/ ede,«       G d„ d e.«      «       Z0 ed!e,«       G d"„ d#e.e «      «       Z1g d$¢Z2y)%zPyTorch TextNet model.é    )ÚAnyÚListÚOptionalÚTupleÚUnionN)ÚTensor)ÚBCEWithLogitsLossÚCrossEntropyLossÚMSELoss)ÚPreTrainedModelÚadd_start_docstrings)ÚACT2CLS)ÚBackboneOutputÚBaseModelOutputWithNoAttentionÚ(BaseModelOutputWithPoolingAndNoAttentionÚ$ImageClassifierOutputWithNoAttention)ÚTextNetConfig)Úadd_code_sample_docstringsÚ%add_start_docstrings_to_model_forwardÚloggingÚreplace_return_docstrings)ÚBackboneMixinr   zczczup/textnet-base)é   i   é   é   c                   ó\   ‡ — e Zd Zdefˆ fd„Zdej                  dej                  fd„Zˆ xZS )ÚTextNetConvLayerÚconfigc                 ó”  •— t         ‰| �  «        |j                  | _        |j                  | _        |j                  | _        t        |j                  t        «      r$|j                  d   dz  |j                  d   dz  fn|j                  dz  }t        j                  |j                  |j                  |j                  |j                  |d¬«      | _        t        j                  |j                  |j                   «      | _        t        j$                  «       | _        | j                  �t)        | j                     «       | _        y y )Nr   é   r   F)Úkernel_sizeÚstrideÚpaddingÚbias)ÚsuperÚ__init__Ústem_kernel_sizer!   Ústem_strider"   Ústem_act_funcÚactivation_functionÚ
isinstanceÚtupleÚnnÚConv2dÚstem_num_channelsÚstem_out_channelsÚconvÚBatchNorm2dÚbatch_norm_epsÚ
batch_normÚIdentityÚ
activationr   )Úselfr   r#   Ú	__class__s      €új/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/models/textnet/modeling_textnet.pyr&   zTextNetConvLayer.__init__3   s  ø€ Ü‰ÑÔà!×2Ñ2ˆÔØ×(Ñ(ˆŒØ#)×#7Ñ#7ˆÔ ô ˜&×1Ñ1´5Ô9ð ×Ñ Ñ" aÑ'¨×);Ñ);¸AÑ)>À!Ñ)CÑDà×(Ñ(¨AÑ-ð 	ô —I‘IØ×$Ñ$Ø×$Ñ$Ø×/Ñ/Ø×%Ñ%ØØô
ˆŒ	ô Ÿ.™.¨×)AÑ)AÀ6×CXÑCXÓYˆŒäŸ+™+›-ˆŒØ×#Ñ#Ð/Ü% d×&>Ñ&>Ñ?ÓAˆD�Oð 0ó    Úhidden_statesÚreturnc                 óh   — | j                  |«      }| j                  |«      }| j                  |«      S ©N)r1   r4   r6   )r7   r;   s     r9   ÚforwardzTextNetConvLayer.forwardN   s-   € ØŸ	™	 -Ó0ˆØŸ™¨Ó6ˆØ�‰˜}Ó-Ð-r:   )	Ú__name__Ú
__module__Ú__qualname__r   r&   Útorchr   r?   Ú__classcell__©r8   s   @r9   r   r   2   s,   ø„ ðB˜}õ Bð6. U§\¡\ð .°e·l±l÷ .r:   r   c            
       óp   ‡ — e Zd ZdZdededededef
ˆ fd„Zdej                  d	ej                  fd
„Z	ˆ xZ
S )ÚTextNetRepConvLayera›  
    This layer supports re-parameterization by combining multiple convolutional branches
    (e.g., main convolution, vertical, horizontal, and identity branches) during training.
    At inference time, these branches can be collapsed into a single convolution for
    efficiency, as per the re-parameterization paradigm.

    The "Rep" in the name stands for "re-parameterization" (introduced by RepVGG).
    r   Úin_channelsÚout_channelsr!   r"   c                 ót  •— t         ‰	| �  «        || _        || _        || _        || _        |d   dz
  dz  |d   dz
  dz  f}t        j                  «       | _        t        j                  |||||d¬«      | _
        t        j                  ||j                  ¬«      | _        |d   dz
  dz  df}d|d   dz
  dz  f}|d   dk7  rLt        j                  |||d   df||d¬«      | _        t        j                  ||j                  ¬«      | _        nd\  | _        | _        |d   dk7  rLt        j                  ||d|d   f||d¬«      | _        t        j                  ||j                  ¬«      | _        nd\  | _        | _        ||k(  r,|dk(  r't        j                  ||j                  ¬«      | _        y d | _        y )Nr   r   r    F)rH   rI   r!   r"   r#   r$   )Únum_featuresÚeps©NN)r%   r&   Únum_channelsrI   r!   r"   r-   ÚReLUr*   r.   Ú	main_convr2   r3   Úmain_batch_normÚvertical_convÚvertical_batch_normÚhorizontal_convÚhorizontal_batch_normÚrbr_identity)
r7   r   rH   rI   r!   r"   r#   Úvertical_paddingÚhorizontal_paddingr8   s
            €r9   r&   zTextNetRepConvLayer.__init__^   sÓ  ø€ Ü‰ÑÔà'ˆÔØ(ˆÔØ&ˆÔØˆŒà ‘N QÑ&¨1Ñ,¨{¸1©~ÀÑ/AÀaÑ.GÐHˆä#%§7¡7£9ˆÔ äŸ™Ø#Ø%Ø#ØØØô
ˆŒô  "Ÿ~™~¸<ÈV×MbÑMbÔcˆÔà(¨™^¨aÑ/°AÑ5°qÐ9ÐØ +¨a¡.°1Ñ"4¸Ñ!:Ð;Ðà�q‰>˜QÒÜ!#§¡Ø'Ø)Ø(¨™^¨QÐ/ØØ(Øô"ˆDÔô (*§~¡~À<ÐU[×UjÑUjÔ'kˆDÕ$à;EÑ8ˆDÔ Ô 8à�q‰>˜QÒÜ#%§9¡9Ø'Ø)Ø ¨A¡Ð/ØØ*Øô$ˆDÔ ô *,¯©À\ÐW]×WlÑWlÔ)mˆDÕ&à?IÑ<ˆDÔ  $Ô"<ð ˜{Ò*¨v¸ª{ô �N‰N¨¸×9NÑ9NÔOð 	Õð ð 	Õr:   r;   r<   c                 óx  — | j                  |«      }| j                  |«      }| j                  �'| j                  |«      }| j                  |«      }||z   }| j                  �'| j	                  |«      }| j                  |«      }||z   }| j                  �| j                  |«      }||z   }| j                  |«      S r>   )rP   rQ   rR   rS   rT   rU   rV   r*   )r7   r;   Úmain_outputsÚvertical_outputsÚhorizontal_outputsÚid_outs         r9   r?   zTextNetRepConvLayer.forward—   sÏ   € Ø—~‘~ mÓ4ˆØ×+Ñ+¨LÓ9ˆð ×ÑÐ)Ø#×1Ñ1°-Ó@ÐØ#×7Ñ7Ð8HÓIÐØ'Ð*:Ñ:ˆLð ×ÑÐ+Ø!%×!5Ñ!5°mÓ!DÐØ!%×!;Ñ!;Ð<NÓ!OÐØ'Ð*<Ñ<ˆLà×ÑÐ(Ø×&Ñ& }Ó5ˆFØ'¨&Ñ0ˆLà×'Ñ'¨Ó5Ð5r:   )r@   rA   rB   Ú__doc__r   Úintr&   rC   r   r?   rD   rE   s   @r9   rG   rG   T   sN   ø„ ñð7
˜}ð 7
¸3ð 7
Ècð 7
Ð`cð 7
Ðmpõ 7
ðr6 U§\¡\ð 6°e·l±l÷ 6r:   rG   c                   ó.   ‡ — e Zd Zdedefˆ fd„Zd„ Zˆ xZS )ÚTextNetStager   Údepthc                 óp  •— t         ‰| �  «        |j                  |   }|j                  |   }t	        |«      }|j
                  |   }|j
                  |dz      }|g|g|dz
  z  z   }|g|z  }	g }
t        ||	||«      D ]  }|
j                  t        |g|¢­Ž «       Œ t        j                  |
«      | _        y )Nr   )r%   r&   Úconv_layer_kernel_sizesÚconv_layer_stridesÚlenÚhidden_sizesÚzipÚappendrG   r-   Ú
ModuleListÚstage)r7   r   rb   r!   r"   Ú
num_layersÚstage_in_channel_sizeÚstage_out_channel_sizerH   rI   rk   Ústage_configr8   s               €r9   r&   zTextNetStage.__init__¯   sÎ   ø€ Ü‰ÑÔØ×4Ñ4°UÑ;ˆØ×*Ñ*¨5Ñ1ˆä˜Ó%ˆ
Ø &× 3Ñ 3°EÑ :ÐØ!'×!4Ñ!4°U¸Q±YÑ!?Ðà,Ð-Ð1GÐ0HÈJÐYZÉNÑ0[Ñ[ˆØ.Ð/°*Ñ<ˆàˆÜ ¨\¸;ÈÓOò 	EˆLØ�L‰LÔ,¨VÐC°lÒCÕDð	Eä—]‘] 5Ó)ˆ�
r:   c                 ó8   — | j                   D ]
  } ||«      }Œ |S r>   )rk   )r7   Úhidden_stateÚblocks      r9   r?   zTextNetStage.forwardÀ   s%   € Ø—Z‘Zò 	/ˆEÙ  Ó.‰Lð	/àÐr:   )r@   rA   rB   r   r_   r&   r?   rD   rE   s   @r9   ra   ra   ®   s   ø„ ð*˜}ð *°Sõ *ö"r:   ra   c            	       ób   ‡ — e Zd Zdefˆ fd„Z	 	 ddej                  dee   dee   de	fd„Z
ˆ xZS )	ÚTextNetEncoderr   c                 óÚ   •— t         ‰| �  «        g }t        |j                  «      }t	        |«      D ]  }|j                  t        ||«      «       Œ t        j                  |«      | _	        y r>   )
r%   r&   rf   rd   Úrangeri   ra   r-   rj   Ústages)r7   r   rw   Ú
num_stagesÚstage_ixr8   s        €r9   r&   zTextNetEncoder.__init__Ç   s\   ø€ Ü‰ÑÔàˆÜ˜×7Ñ7Ó8ˆ
Ü˜jÓ)ò 	:ˆHØ�M‰Mœ, v¨xÓ8Õ9ð	:ô —m‘m FÓ+ˆ�r:   rq   Úoutput_hidden_statesÚreturn_dictr<   c                 ó”   — |g}| j                   D ]  } ||«      }|j                  |«       Œ |s|f}|r||fz   S |S t        ||¬«      S )N)Úlast_hidden_stater;   )rw   ri   r   )r7   rq   rz   r{   r;   rk   Úoutputs          r9   r?   zTextNetEncoder.forwardÑ   se   € ð &˜ˆØ—[‘[ò 	/ˆEÙ  Ó.ˆLØ× Ñ  Õ.ð	/ñ Ø"�_ˆFÙ0D�6˜]Ð,Ñ,ÐPÈ&ÐPä-ÀÐ\iÔjÐjr:   rM   )r@   rA   rB   r   r&   rC   r   r   Úboolr   r?   rD   rE   s   @r9   rt   rt   Æ   sS   ø„ ð,˜}õ ,ð 04Ø&*ñ	kà—l‘lðkð ' t™nðkð ˜d‘^ð	kð
 
(÷kr:   rt   aI  
    This model is a PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) subclass. Use it
    as a regular PyTorch Module and refer to the PyTorch documentation for all matter related to general usage and
    behavior.

    Parameters:
        config ([`TextNetConfig`]): Model configuration class with all the parameters of the model.
            Initializing with a config file does not load the weights associated with the model, only the
            configuration. Check out the [`~PreTrainedModel.from_pretrained`] method to load the model weights.
aE  
    Args:
        pixel_values (`torch.FloatTensor` of shape `(batch_size, num_channels, height, width)`):
            Pixel values. Pixel values can be obtained using [`AutoImageProcessor`]. See
            [`TextNetImageProcessor.__call__`] for details.

        output_hidden_states (`bool`, *optional*):
            Whether or not to return the hidden states of all layers. See `hidden_states` under returned tensors for
            more detail.
        return_dict (`bool`, *optional*):
            Whether or not to return a [`~utils.ModelOutput`] instead of a plain tuple.
c                   ó"   — e Zd ZdZeZdZdZd„ Zy)ÚTextNetPreTrainedModelz†
    An abstract class to handle weights initialization and a simple interface for downloading and loading pretrained
    models.
    ÚtextnetÚpixel_valuesc                 ó  — t        |t        j                  t        j                  f«      rm|j                  j
                  j                  d| j                  j                  ¬«       |j                  �%|j                  j
                  j                  «        y y t        |t        j                  «      rW|j                  j
                  j                  d«       |j                  �%|j                  j
                  j                  «        y y y )Ng        )ÚmeanÚstdg      ð?)r+   r-   ÚLinearr.   ÚweightÚdataÚnormal_r   Úinitializer_ranger$   Úzero_r2   Úfill_)r7   Úmodules     r9   Ú_init_weightsz$TextNetPreTrainedModel._init_weights  sµ   € Ü�fœrŸy™y¬"¯)©)Ð4Ô5Ø�M‰M×Ñ×&Ñ&¨C°T·[±[×5RÑ5RÐ&ÔSØ�{‰{Ð&Ø—‘× Ñ ×&Ñ&Õ(ð 'ä˜¤§¡Ô/Ø�M‰M×Ñ×$Ñ$ SÔ)Ø�{‰{Ð&Ø—‘× Ñ ×&Ñ&Õ(ð 'ð 0r:   N)	r@   rA   rB   r^   r   Úconfig_classÚbase_model_prefixÚmain_input_namer�   © r:   r9   r�   r�   ü   s   „ ñð
 !€LØ!ÐØ$€Oó)r:   r�   zPThe bare Textnet model outputting raw features without any specific head on top.c                   óž   ‡ — e Zd Zˆ fd„Z ee«       eeee	de
¬«      	 d	dedee   dee   deeeee   f   ee   ef   fd„«       «       Zˆ xZS )
ÚTextNetModelc                 ó¸   •— t         ‰| �  |«       t        |«      | _        t	        |«      | _        t        j                  d«      | _        | j                  «        y )N)r    r    )
r%   r&   r   Ústemrt   Úencoderr-   ÚAdaptiveAvgPool2dÚpoolerÚ	post_init©r7   r   r8   s     €r9   r&   zTextNetModel.__init__  sD   ø€ Ü‰Ñ˜Ô Ü$ VÓ,ˆŒ	Ü% fÓ-ˆŒÜ×*Ñ*¨6Ó2ˆŒØ�‰Õr:   Úvision)Ú
checkpointÚoutput_typer�   ÚmodalityÚexpected_outputrƒ   rz   r{   r<   c                 ó:  — |�|n| j                   j                  }|�|n| j                   j                  }| j                  |«      }| j	                  |||¬«      }|d   }| j                  |«      }|s||f}|r	||d   fz   S |S t        |||r
|d   ¬«      S d ¬«      S )N©rz   r{   r   r   )r}   Úpooler_outputr;   )r   Úuse_return_dictrz   r—   r˜   rš   r   )	r7   rƒ   rz   r{   rq   Úencoder_outputsr}   Úpooled_outputr~   s	            r9   r?   zTextNetModel.forward  sÑ   € ð &1Ð%<‘kÀ$Ç+Á+×B]ÑB]ˆà$8Ð$DÑ È$Ï+É+×JjÑJjð 	ð —y‘y Ó.ˆàŸ,™,ØÐ/CÐQ\ð 'ó 
ˆð ,¨AÑ.ÐØŸ™Ð$5Ó6ˆáØ'¨Ð7ˆFÙ5I�6˜_¨QÑ/Ð1Ñ1ÐUÈvÐUä7Ø/Ø'Ù0D˜/¨!Ñ,ô
ð 	
ð KOô
ð 	
r:   rM   )r@   rA   rB   r&   r   ÚTEXTNET_INPUTS_DOCSTRINGr   Ú_CHECKPOINT_FOR_DOCr   Ú_CONFIG_FOR_DOCÚ_EXPECTED_OUTPUT_SHAPEr   r   r   r   r   r   r   r?   rD   rE   s   @r9   r•   r•     sŽ   ø„ ô
ñ +Ð+CÓDÙØ&Ø<Ø$ØØ.ôð ptñ
Ø"ð
Ø:BÀ4¹.ð
Ø^fÐgkÑ^lð
à	ˆu�S˜$˜s™)�^Ñ$ e¨C¡jÐ2ZÐZÑ	[ò
óó Eô
r:   r•   z‡
    TextNet Model with an image classification head on top (a linear layer on top of the pooled features), e.g. for
    ImageNet.
    c                   ó´   ‡ — e Zd Zˆ fd„Z ee«       eee¬«      	 	 	 	 d	de	e
j                     de	e
j                     de	e   de	e   def
d„«       «       Zˆ xZS )
ÚTextNetForImageClassificationc                 óö  •— t         ‰| �  |«       |j                  | _        t        |«      | _        t        j                  d«      | _        t        j                  «       | _	        |j                  dkD  r-t        j                  |j                  d   |j                  «      nt        j                  «       | _        t        j                  | j                  | j                  g«      | _        | j!                  «        y )N)r   r   r   éÿÿÿÿ)r%   r&   Ú
num_labelsr•   r‚   r-   r™   Úavg_poolÚFlattenÚflattenr‡   rg   r5   Úfcrj   Ú
classifierr›   rœ   s     €r9   r&   z&TextNetForImageClassification.__init__I  s°   ø€ Ü‰Ñ˜Ô Ø ×+Ñ+ˆŒÜ# FÓ+ˆŒÜ×,Ñ,¨VÓ4ˆŒÜ—z‘z“|ˆŒØKQ×K\ÑK\Ð_`ÒK`”"—)‘)˜F×/Ñ/°Ñ3°V×5FÑ5FÔGÔfh×fqÑfqÓfsˆŒô Ÿ-™-¨¯©¸¿¹Ð(EÓFˆŒð 	�‰Õr:   ©rŸ   r�   rƒ   Úlabelsrz   r{   r<   c                 ó.  — |�|n| j                   j                  }| j                  |||¬«      }|d   }| j                  D ]
  } ||«      }Œ | j	                  |«      }d}	|��‡| j                   j
                  €�| j                  dk(  rd| j                   _        nl| j                  dkD  rL|j                  t        j                  k(  s|j                  t        j                  k(  rd| j                   _        nd| j                   _        | j                   j
                  dk(  rIt        «       }
| j                  dk(  r& |
|j                  «       |j                  «       «      }	nŒ |
||«      }	n‚| j                   j
                  dk(  r=t        «       }
 |
|j                  d| j                  «      |j                  d«      «      }	n,| j                   j
                  dk(  rt        «       }
 |
||«      }	|s|f|d	d z   }|	�|	f|z   S |S t!        |	||j"                  ¬
«      S )a~  
        labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
            Labels for computing the image classification/regression loss. Indices should be in `[0, ...,
            config.num_labels - 1]`. If `config.num_labels == 1` a regression loss is computed (Mean-Square loss), If
            `config.num_labels > 1` a classification loss is computed (Cross-Entropy).

        Returns:

        Examples:
        ```python
        >>> import torch
        >>> import requests
        >>> from transformers import TextNetForImageClassification, TextNetImageProcessor
        >>> from PIL import Image

        >>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
        >>> image = Image.open(requests.get(url, stream=True).raw)

        >>> processor = TextNetImageProcessor.from_pretrained("czczup/textnet-base")
        >>> model = TextNetForImageClassification.from_pretrained("czczup/textnet-base")

        >>> inputs = processor(images=image, return_tensors="pt")
        >>> with torch.no_grad():
        ...     outputs = model(**inputs)
        >>> outputs.logits.shape
        torch.Size([1, 2])
        ```Nr£   r   r   Ú
regressionÚsingle_label_classificationÚmulti_label_classificationr¯   r    )ÚlossÚlogitsr;   )r   r¥   r‚   rµ   r´   Úproblem_typer°   ÚdtyperC   Úlongr_   r   Úsqueezer
   Úviewr	   r   r;   )r7   rƒ   r·   rz   r{   Úoutputsr}   Úlayerr½   r¼   Úloss_fctr~   s               r9   r?   z%TextNetForImageClassification.forwardW  sÓ  € ðH &1Ð%<‘kÀ$Ç+Á+×B]ÑB]ˆà—,‘,˜|ÐBVÐdo�,ÓpˆØ# A™JÐØ—_‘_ò 	9ˆEÙ %Ð&7Ó 8Ñð	9à—‘Ð*Ó+ˆØˆàÑØ�{‰{×'Ñ'Ð/Ø—?‘? aÒ'Ø/;�D—K‘KÕ,Ø—_‘_ qÒ(¨f¯l©l¼e¿j¹jÒ.HÈFÏLÉLÔ\a×\eÑ\eÒLeØ/L�D—K‘KÕ,à/K�D—K‘KÔ,Ø�{‰{×'Ñ'¨<Ò7Ü"›9�Ø—?‘? aÒ'Ù# F§N¡NÓ$4°f·n±nÓ6FÓG‘Dá# F¨FÓ3‘DØ—‘×)Ñ)Ð-JÒJÜ+Ó-�Ù §¡¨B°·±Ó @À&Ç+Á+ÈbÃ/ÓR‘Ø—‘×)Ñ)Ð-IÒIÜ,Ó.�Ù ¨Ó/�áØ�Y ¨¨ Ñ,ˆFØ'+Ð'7�D�7˜VÑ#ÐC¸VÐCä3¸ÀfÐ\c×\qÑ\qÔrÐrr:   )NNNN)r@   rA   rB   r&   r   r¨   r   r   rª   r   rC   ÚFloatTensorÚ
LongTensorr   r?   rD   rE   s   @r9   r­   r­   A  sŸ   ø„ ôñ +Ð+CÓDÙÐ+OÐ^mÔnð 59Ø-1Ø/3Ø&*ñDsà˜u×0Ñ0Ñ1ðDsð ˜×)Ñ)Ñ*ðDsð ' t™nð	Dsð
 ˜d‘^ðDsð 
.òDsó oó EôDsr:   r­   zP
    TextNet backbone, to be used with frameworks like DETR and MaskFormer.
    c                   ó†   ‡ — e Zd Zˆ fd„Z ee«       eee¬«      	 dde	de
e   de
e   deee   ef   fd„«       «       Zˆ xZS )	ÚTextNetBackbonec                 ó¤   •— t         ‰| �  |«       t         ‰| �	  |«       t        |«      | _        |j
                  | _        | j                  «        y r>   )r%   r&   Ú_init_backboner•   r‚   rg   rK   r›   rœ   s     €r9   r&   zTextNetBackbone.__init__§  sC   ø€ Ü‰Ñ˜Ô Ü‰Ñ˜vÔ&ä# FÓ+ˆŒØ"×/Ñ/ˆÔð 	�‰Õr:   r¶   rƒ   rz   r{   r<   c                 ó®  — |�|n| j                   j                  }|�|n| j                   j                  }| j                  |d|¬«      }|r|j                  n|d   }d}t        | j                  «      D ]  \  }}|| j                  v sŒ|||   fz  }Œ |s |f}	|r|r|j                  n|d   }|	|fz  }	|	S t        ||r|j                  d¬«      S dd¬«      S )a’  
        Returns:

        Examples:

        ```python
        >>> import torch
        >>> import requests
        >>> from PIL import Image
        >>> from transformers import AutoImageProcessor, AutoBackbone

        >>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
        >>> image = Image.open(requests.get(url, stream=True).raw)

        >>> processor = AutoImageProcessor.from_pretrained("czczup/textnet-base")
        >>> model = AutoBackbone.from_pretrained("czczup/textnet-base")

        >>> inputs = processor(image, return_tensors="pt")
        >>> with torch.no_grad():
        >>>     outputs = model(**inputs)
        ```NTr£   r    r“   )Úfeature_mapsr;   Ú
attentions)	r   r¥   rz   r‚   r;   Ú	enumerateÚstage_namesÚout_featuresr   )
r7   rƒ   rz   r{   rÃ   r;   rÍ   Úidxrk   r~   s
             r9   r?   zTextNetBackbone.forward±  s  € ð4 &1Ð%<‘kÀ$Ç+Á+×B]ÑB]ˆà$8Ð$DÑ È$Ï+É+×JjÑJjð 	ð —,‘,˜|À$ÐT_�,Ó`ˆá1<˜×-Ò-À'È!Á*ˆàˆÜ# D×$4Ñ$4Ó5ò 	6‰JˆC�Ø˜×)Ñ)Ò)Ø ¨sÑ!3Ð 5Ñ5‘ð	6ñ Ø"�_ˆFÙ#Ù9D × 5Ò 5È'ÐRSÉ*�Ø˜=Ð*Ñ*�ØˆMäØ%Ù3G˜'×/Ñ/Øô
ð 	
àMQØô
ð 	
r:   rM   )r@   rA   rB   r&   r   r¨   r   r   rª   r   r   r   r   r   r?   rD   rE   s   @r9   rÉ   rÉ      sn   ø„ ôñ +Ð+CÓDÙ¨>ÈÔXàosñ1
Ø"ð1
Ø:BÀ4¹.ð1
Ø^fÐgkÑ^lð1
à	ˆu�U‰|˜^Ð+Ñ	,ò1
ó Yó Eô1
r:   rÉ   )rÉ   r•   r�   r­   )3r^   Útypingr   r   r   r   r   rC   Útorch.nnr-   r   r	   r
   r   Útransformersr   r   Útransformers.activationsr   Útransformers.modeling_outputsr   r   r   r   Ú1transformers.models.textnet.configuration_textnetr   Útransformers.utilsr   r   r   r   Ú!transformers.utils.backbone_utilsr   Ú
get_loggerr@   Úloggerrª   r©   r«   ÚModuler   rG   ra   rt   ÚTEXTNET_START_DOCSTRINGr¨   r�   r•   r­   rÉ   Ú__all__r“   r:   r9   ú<module>rà      s]  ðñ ç 4Õ 4ã Ý Ý ß AÑ Aç >Ý ,÷ó õ L÷ó õ <ð 
ˆ×	Ñ	˜HÓ	%€ð "€Ø+Ð Ú)Ð ô.�r—y‘yô .ôDW6˜"Ÿ)™)ô W6ôt�2—9‘9ô ô0k�R—Y‘Yô kð:	Ð ðÐ ô)˜_ô )ñ* ØVØóô)
Ð)ó )
ó	ð)
ñX ðð óôUsÐ$:ó UsóðUsñp ðð ó	ô>
Ð,¨mó >
óð>
òB i�r:   