Ë
    ÜÓ^jH  ã                   óŠ  — d dl Z d dlmZ d dlZd dlmZ d dlmc mZ ddl	m
Z ddlmZmZ ddlmZmZ ddlmZ ddlmZ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" ddl#m$Z$  G d„ de«      Z%ee G d„ de«      «       «       Z& G d„ dejN                  «      Z( G d„ dejN                  «      Z) G d„ de%«      Z* G d„ dejN                  «      Z+ G d„ de«      Z, G d„ dejN                  «      Z- G d „ d!ejN                  «      Z. G d"„ d#ejN                  «      Z/ G d$„ d%e%«      Z0 ed&¬'«       G d(„ d)e%«      «       Z1g d*¢Z2y)+é    N)Ú	dataclassé   )Úinitialization)ÚACT2CLSÚACT2FN)Úfilter_output_hidden_statesÚload_backbone)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithNoAttention)ÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tuple)Úmerge_with_config_defaults)Úcapture_outputsé   )ÚSLANetConfigc                   óf   ‡ — e Zd ZU eed<   dZdZdZdZg Z	 e
j                  «       ˆ fd„«       Zˆ xZS )ÚSLANetPreTrainedModelÚconfigÚbackboneÚpixel_values)ÚimageTc                 ó¤  •— t         ‰| �  |«       t        |t        j                  «      rÓ|j
                  dkD  r"dt        j                  |j
                  «      z  nd}t        j                  |j                  | |«       t        j                  |j                  | |«       |j                  �"t        j                  |j                  | |«       |j                  �"t        j                  |j                  | |«       t        |t        «      rÃdt        j                  | j                  j
                  dz  «      z  }|j                   fD ]ƒ  }|j#                  «       D ]n  }t        |t        j$                  «      sŒt        j                  |j&                  | |«       |j(                  €ŒMt        j                  |j(                  | |«       Œp Œ… yy)zInitialize the weightsr   g      ð?N)ÚsuperÚ_init_weightsÚ
isinstanceÚnnÚGRUCellÚhidden_sizeÚmathÚsqrtÚinitÚuniform_Ú	weight_ihÚ	weight_hhÚbias_ihÚbias_hhÚSLANetSLAHeadr   Ústructure_generatorÚchildrenÚLinearÚweightÚbias)ÚselfÚmoduleÚstdÚ	generatorÚlayerÚ	__class__s        €úu/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/slanet/modeling_slanet.pyr   z#SLANetPreTrainedModel._init_weights2   sf  ø€ ô 	‰Ñ˜fÔ%ô �fœbŸj™jÔ)Ø9?×9KÑ9KÈaÒ9O�#œŸ	™	 &×"4Ñ"4Ó5Ò5ÐUVˆCÜ�M‰M˜&×*Ñ*¨S¨D°#Ô6Ü�M‰M˜&×*Ñ*¨S¨D°#Ô6Ø�~‰~Ð)Ü—‘˜fŸn™n¨s¨d°CÔ8Ø�~‰~Ð)Ü—‘˜fŸn™n¨s¨d°CÔ8ô �fœmÔ,ØœŸ	™	 $§+¡+×"9Ñ"9¸CÑ"?Ó@Ñ@ˆCà$×8Ñ8Ð:ò A�	Ø&×/Ñ/Ó1ò A�EÜ! %¬¯©Õ3ÜŸ™ e§l¡l°S°D¸#Ô>Ø Ÿ:™:Ñ1Ü ŸM™M¨%¯*©*°s°d¸CÕ@ñ	AñAð -ó    )Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚsupports_gradient_checkpointingÚ_keep_in_fp32_modules_strictÚtorchÚno_gradr   Ú__classcell__©r6   s   @r7   r   r   *   sB   ø… ØÓØ"ÐØ$€OØ!ÐØ&*Ð#Ø#%Ð à€U‡]�]ƒ_óAó ôAr8   r   c                   ób   — e Zd ZU dZdZej                  dz  ed<   dZej                  dz  ed<   y)ÚSLANetForTableRecognitionOutputak  
    head_hidden_states (`tuple(torch.FloatTensor)`, *optional*, returned when `output_hidden_states=True` is passed or when `config.output_hidden_states=True`):
        Hidden-states of the SLANetSLAHead at each prediction step, varies up to max `self.config.max_text_length` states (depending on early exits).
    head_attentions (`tuple(torch.FloatTensor)`, *optional*, returned when `output_attentions=True` is passed or when `config.output_attentions=True`):
        Attentions of the SLANetSLAHead at each prediction step, varies up to max `self.config.max_text_length` attentions (depending on early exits).
    NÚhead_hidden_statesÚhead_attentions)	r9   r:   r;   Ú__doc__rH   rB   ÚFloatTensorr<   rI   © r8   r7   rG   rG   M   s4   … ñð 48Ð˜×)Ñ)¨DÑ0Ó7Ø04€O�U×&Ñ&¨Ñ-Ô4r8   rG   c            	       óx   ‡ — e Zd Zˆ fd„Zdej
                  dej
                  dej
                  dee   fd„Zˆ xZ	S )ÚSLANetAttentionGRUCellc                 ó  •— t         ‰| �  «        t        j                  ||d¬«      | _        t        j                  ||«      | _        t        j                  |dd¬«      | _        t        j                  ||z   |«      | _        y )NF)r0   r   )	r   Ú__init__r    r.   Úinput_to_hiddenÚhidden_to_hiddenÚscorer!   Úrnn)r1   Ú
input_sizer"   Únum_embeddingsr6   s       €r7   rP   zSLANetAttentionGRUCell.__init__\   sa   ø€ Ü‰ÑÔä!Ÿy™y¨°[ÀuÔMˆÔÜ "§	¡	¨+°{Ó CˆÔÜ—Y‘Y˜{¨A°EÔ:ˆŒ
ä—:‘:˜j¨>Ñ9¸;ÓGˆ�r8   Úprev_hiddenÚbatch_hiddenÚchar_onehotsÚkwargsc                 ó  — | j                  |«      }| j                  |«      j                  d«      }||z   }t        j                  |«      }| j                  |«      }t        j                  |dt        j                  ¬«      j                  |j                  «      }|j                  dd«      }t        j                  ||«      j                  d«      }	t        j                  |	|gd«      }
| j                  |
|«      }||fS )Nr   ©ÚdimÚdtypeé   )rQ   rR   Ú	unsqueezerB   ÚtanhrS   ÚFÚsoftmaxÚfloat32Útor^   Ú	transposeÚmatmulÚsqueezeÚcatrT   )r1   rW   rX   rY   rZ   Úbatch_hidden_projÚprev_hidden_projÚattention_scoresÚattn_weightsÚcontextÚconcat_contextÚhidden_statess               r7   ÚforwardzSLANetAttentionGRUCell.forwarde   sã   € ð !×0Ñ0°Ó>ÐØ×0Ñ0°Ó=×GÑGÈÓJÐà,Ð/?Ñ?ÐÜ Ÿ:™:Ð&6Ó7ÐØŸ:™:Ð&6Ó7Ðä—y‘yÐ!1°qÄÇÁÔN×QÑQÐRb×RhÑRhÓiˆØ#×-Ñ-¨a°Ó3ˆÜ—,‘,˜|¨\Ó:×BÑBÀ1ÓEˆÜŸ™ G¨\Ð#:¸AÓ>ˆØŸ™ °Ó=ˆà˜lÐ*Ð*r8   )
r9   r:   r;   rP   rB   rK   r   r   rq   rD   rE   s   @r7   rN   rN   [   sL   ø„ ôHð+à×&Ñ&ð+ð ×'Ñ'ð+ð ×'Ñ'ð	+ð
 Ð+Ñ,÷+r8   rN   c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )Ú	SLANetMLPc                 óê   •— t         ‰| �  «        t        j                  ||«      | _        t        j                  ||«      | _        |€t        j                  «       | _        y t        |   «       | _        y ©N)	r   rP   r    r.   Úfc1Úfc2ÚIdentityr   Úact_fn)r1   r"   Úout_channelsÚ
activationr6   s       €r7   rP   zSLANetMLP.__init__}   sR   ø€ Ü‰ÑÔÜ—9‘9˜[¨+Ó6ˆŒÜ—9‘9˜[¨,Ó7ˆŒØ'1Ð'9”b—k‘k“mˆ�¼wÀzÑ?RÓ?Tˆ�r8   c                 ól   — | j                  |«      }| j                  |«      }| j                  |«      }|S ru   )rv   rw   ry   ©r1   rp   s     r7   rq   zSLANetMLP.forwardƒ   s2   € ØŸ™ Ó/ˆØŸ™ Ó/ˆØŸ™ MÓ2ˆØÐr8   ru   )r9   r:   r;   rP   rq   rD   rE   s   @r7   rs   rs   |   s   ø„ õUör8   rs   c                   ó    ‡ — e Zd ZdeiZ	 d	dedz  fˆ fd„Zeee		 d	de
j                  de
j                  dz  dee   fd„«       «       «       Zˆ xZS )
r+   Ú
attentionsNr   c                 óî   •— t         ‰| �  |«       t        |j                  |j                  |j
                  «      | _        t        |j                  |j
                  «      | _        | j                  «        y ru   )
r   rP   rN   Úpost_conv_out_channelsr"   rz   Ústructure_attention_cellrs   r,   Ú	post_init)r1   r   rZ   r6   s      €r7   rP   zSLANetSLAHead.__init__�   s_   ø€ ô
 	‰Ñ˜Ô ä(>Ø×)Ñ)¨6×+=Ñ+=¸v×?RÑ?Ró)
ˆÔ%ô $-¨V×-?Ñ-?À×ATÑATÓ#UˆÔ à�‰Õr8   rp   ÚtargetsrZ   c                 ó6  — t        j                  |j                  d   | j                  j                  ft         j
                  |j                  ¬«      }t        j                  |j                  d   gt         j                  |j                  ¬«      }g }g }t        | j                  j                  dz   «      D ]ÿ  }t        j                  || j                  j                  «      j                  «       }	| j                  ||j                  «       |	«      \  }}| j                  |«      }
|
j!                  d¬«      }|j#                  |
«       |j#                  |«       t        j$                  |d¬«      j'                  | j                  j                  dz
  «      j)                  d«      j+                  «       sŒÿ n t        j,                  t        j$                  |d¬«      dt         j
                  ¬«      j/                  |j0                  «      }t3        ||¬«      S )	Nr   )r^   Údevice)Úsizer^   r†   r   ©r]   éÿÿÿÿr\   ©Úlast_hidden_staterp   )rB   ÚzerosÚshaper   r"   rd   r†   ÚlongÚrangeÚmax_text_lengthrb   Úone_hotrz   Úfloatr‚   r,   ÚargmaxÚappendÚstackÚeqÚanyÚallrc   re   r^   r   )r1   rp   r„   rZ   ÚfeaturesÚpredicted_charsÚstructure_preds_listÚstructure_ids_listÚ_Úembedding_featureÚstructure_stepÚstructure_predss               r7   rq   zSLANetSLAHead.forward�   s­  € ô —;‘;Ø× Ñ  Ñ# T§[¡[×%<Ñ%<Ð=ÄUÇ]Á]Ð[h×[oÑ[oô
ˆô  Ÿ+™+¨M×,?Ñ,?ÀÑ,BÐ+CÌ5Ï:É:Ð^k×^rÑ^rÔsˆà!ÐØÐÜ�t—{‘{×2Ñ2°QÑ6Ó7ò 		ˆAÜ !§	¡	¨/¸4¿;¹;×;SÑ;SÓ T× ZÑ ZÓ \ÐØ×7Ñ7¸À-×BUÑBUÓBWÐYjÓk‰KˆH�aØ!×5Ñ5°hÓ?ˆNØ,×3Ñ3¸Ð3Ó:ˆOà ×'Ñ'¨Ô7Ø×%Ñ% oÔ6Ü�{‰{Ð-°1Ô5×8Ñ8¸¿¹×9QÑ9QÐTUÑ9UÓV×ZÑZÐ[]Ó^×bÑbÕdÙð		ô Ÿ)™)¤E§K¡KÐ0DÈ!Ô$LÐRTÔ\a×\iÑ\iÔj×mÑmØ×Ñó
ˆô °ÐPdÔeÐer8   ru   )r9   r:   r;   rN   Ú_can_record_outputsÚdictrP   r   r   r   rB   rK   ÚTensorr   r   rq   rD   rE   s   @r7   r+   r+   Š   s†   ø„ àÐ,ðÐð #ñà�t‘õð  ØØ ð (,ñfà×(Ñ(ðfð —‘ Ñ$ðfð Ð+Ñ,ò	fó !ó ó  ôfr8   r+   c                   ó–   ‡ — e Zd Z	 	 	 	 	 	 ddedededededeeeef   z  dedefˆ fd	„Zd
ej                  dej                  fd„Z
ˆ xZS )ÚSLANetConvLayerÚin_channelsrz   Úkernel_sizeÚstrider0   ÚdilationÚgroupsr{   c	           
      óô   •— t         ‰	| �  «        t        j                  |||||dz  |||¬«      | _        t        j
                  |«      | _        |�t        |   | _	        y t        j                  «       | _	        y )Nr_   )r¦   rz   r§   r¨   Úpaddingr0   r©   rª   )
r   rP   r    ÚConv2dÚconvolutionÚBatchNorm2dÚnormalizationr   rx   r{   )
r1   r¦   rz   r§   r¨   r0   r©   rª   r{   r6   s
            €r7   rP   zSLANetConvLayer.__init__¿   sn   ø€ ô 	‰ÑÔÜŸ9™9Ø#Ø%Ø#ØØ 1Ñ$ØØØô	
ˆÔô  Ÿ^™^¨LÓ9ˆÔØ0:Ð0Fœ& Ñ,ˆ�ÌBÏKÉKËMˆ�r8   rp   Úreturnc                 ól   — | j                  |«      }| j                  |«      }| j                  |«      }|S ru   )r®   r°   r{   r}   s     r7   rq   zSLANetConvLayer.forwardØ   s6   € Ø×(Ñ(¨Ó7ˆØ×*Ñ*¨=Ó9ˆØŸ™¨Ó6ˆØÐr8   )r   r   Fr   r   Ú	hardswish)r9   r:   r;   ÚintÚboolÚtupleÚstrrP   rB   r£   rq   rD   rE   s   @r7   r¥   r¥   ¾   s›   ø„ ð
 ØØØ*+ØØ%ñZàðZð ðZð ð	Zð
 ðZð ðZð ˜˜c 3˜h™Ñ'ðZð ðZð õZð2 U§\¡\ð °e·l±l÷ r8   r¥   c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )Ú!SLANetDepthwiseSeparableConvLayerzæ
    Depthwise Separable Convolution Layer: Depthwise Conv -> Pointwise Conv
    Core component of lightweight models (e.g., MobileNet, PP-LCNet) that significantly reduces
    the number of parameters and computational cost.
    c                 óÒ   •— t         ‰| �  «        t        ||||||j                  ¬«      | _        t        j                  «       | _        t        |d|d|j                  ¬«      | _        y )N)r¦   rz   r§   r¨   rª   r{   r   )r¦   r§   rz   r¨   r{   )	r   rP   r¥   Ú
hidden_actÚdepthwise_convolutionr    rx   Úsqueeze_excitation_moduleÚpointwise_convolution)r1   r¦   rz   r¨   r§   r   r6   s         €r7   rP   z*SLANetDepthwiseSeparableConvLayer.__init__æ   sg   ø€ ô 	‰ÑÔÜ%4Ø#Ø$Ø#ØØØ×(Ñ(ô&
ˆÔ"ô *,¯©«ˆÔ&Ü%4Ø#ØØ%ØØ×(Ñ(ô&
ˆÕ"r8   c                 ól   — | j                  |«      }| j                  |«      }| j                  |«      }|S ru   )r¼   r½   r¾   )r1   Úhidden_states     r7   rq   z)SLANetDepthwiseSeparableConvLayer.forward   s8   € Ø×1Ñ1°,Ó?ˆØ×5Ñ5°lÓCˆØ×1Ñ1°,Ó?ˆàÐr8   )r9   r:   r;   rJ   rP   rq   rD   rE   s   @r7   r¹   r¹   ß   s   ø„ ñô
ö4r8   r¹   c                   óV   ‡ — e Zd Zˆ fd„Zdej
                  dej
                  fd„Zˆ xZS )ÚSLANetBottleneckc                 ót   •— t         ‰| �  «        t        ||d|¬«      | _        t	        |||d|¬«      | _        y )Nr   ©r¦   rz   r§   r{   )r¦   rz   r§   r¨   r   )r   rP   r¥   Úconv1r¹   Úconv2)r1   r¦   rz   r§   r{   r   r6   s         €r7   rP   zSLANetBottleneck.__init__	  sC   ø€ ô 	‰ÑÔÜ$Ø#°,ÈAÐZdô
ˆŒ
ô 7Ø$Ø%Ø#ØØô
ˆ�
r8   rp   r±   c                 óJ   — | j                  |«      }| j                  |«      }|S ru   )rÅ   rÆ   r}   s     r7   rq   zSLANetBottleneck.forward  s$   € ØŸ
™
 =Ó1ˆØŸ
™
 =Ó1ˆàÐr8   )r9   r:   r;   rP   rB   rK   rq   rD   rE   s   @r7   rÂ   rÂ     s'   ø„ ô
ð( U×%6Ñ%6ð ¸5×;LÑ;L÷ r8   rÂ   c                   ód   ‡ — e Zd ZdZ	 	 	 	 dˆ fd„	Zdej                  dej                  fd„Zˆ xZS )ÚSLANetCSPLayerz†
    Cross Stage Partial (CSP) network layer. Similar in structure to DFineCSPRepLayer, but with a different forward computation.
    c                 óB  •— t         ‰
| �  «        t        ||z  «      }t        ||d|¬«      | _        t        ||d|¬«      | _        t        d|z  |d|¬«      | _        t        j                  t        |«      D �	cg c]  }	t        |||||«      ‘Œ c}	«      | _        y c c}	w )Nr   )r{   r_   )r   rP   r´   r¥   rÅ   rÆ   Úconv3r    Ú
ModuleListr�   rÂ   Úbottlenecks)r1   r   r¦   rz   r§   Ú	expansionÚ
num_blocksr{   Úhidden_channelsr�   r6   s             €r7   rP   zSLANetCSPLayer.__init__)  sŸ   ø€ ô 	‰ÑÔÜ˜l¨YÑ6Ó7ˆÜ$ [°/À1ÐQ[Ô\ˆŒ
Ü$ [°/À1ÐQ[Ô\ˆŒ
Ü$ Q¨Ñ%8¸,ÈÐV`ÔaˆŒ
ÜŸ=™=ô ˜zÓ*öàô ! °/À;ÐPZÐ\bÕcòó
ˆÕùòs   Á9Brp   r±   c                 óÐ   — | j                  |«      }| j                  |«      }| j                  D ]
  } ||«      }Œ t        j                  ||fd¬«      }| j                  |«      }|S )Nr   rˆ   )rÅ   rÆ   rÍ   rB   ri   rË   )r1   rp   ÚresidualÚ
bottlenecks       r7   rq   zSLANetCSPLayer.forward?  sh   € Ø—:‘:˜mÓ,ˆàŸ
™
 =Ó1ˆØ×*Ñ*ò 	6ˆJÙ& }Ó5‰Mð	6ô Ÿ	™	 =°(Ð";ÀÔCˆØŸ
™
 =Ó1ˆàÐr8   )r   g      à?r   r³   ©	r9   r:   r;   rJ   rP   rB   rK   rq   rD   rE   s   @r7   rÉ   rÉ   $  s:   ø„ ñð ØØØõ
ð,
 U×%6Ñ%6ð 
¸5×;LÑ;L÷ 
r8   rÉ   c                   óZ   ‡ — e Zd ZdZˆ fd„Zdej                  dej                  fd„Zˆ xZS )ÚSLANetCSPPANz;
    CSP-PAN: Path Aggregation Network with CSP layers
    c                 óL  •— t         ‰	| �  «        |j                  }|j                  }|j                  }|j
                  }t        j                  t        t        |«      «      D �cg c]  }t        ||   |d|¬«      ‘Œ c}«      | _        t        j                  dd¬«      | _        t        j                  t        t        |«      dz
  dd«      D �cg c]  }t        ||dz  ||||¬«      ‘Œ c}«      | _        t        j                  t        t        |«      dz
  «      D �cg c]  }t!        |||d|¬	«      ‘Œ c}«      | _        t        j                  t        t        |«      dz
  «      D �cg c]  }t        ||dz  ||||¬«      ‘Œ c}«      | _        y c c}w c c}w c c}w c c}w )
Nr   rÄ   r_   Únearest)Úscale_factorÚmoder   r‰   )r§   rÏ   r{   )r§   r¨   r   )r   rP   r�   r»   Úcsp_kernel_sizeÚcsp_num_blocksr    rÌ   r�   Úlenr¥   Úchannel_projectorÚUpsampleÚupsamplerÉ   Útop_down_blocksr¹   ÚdownsamplesÚbottom_up_blocks)
r1   r   Úin_channel_listrz   r{   r§   rÜ   Úir�   r6   s
            €r7   rP   zSLANetCSPPAN.__init__Q  s±  ø€ ô
 	‰ÑÔØ×4Ñ4ˆØ×&Ñ&ˆ
Ø×,Ñ,ˆØ×.Ñ.ˆä!#§¡ô
 œs ?Ó3Ó4ö	ð ô  Ø /°Ñ 2ÀÐ[\Ðisöòó"
ˆÔô Ÿ™°¸ÔCˆŒÜ!Ÿ}™}ô œs ?Ó3°aÑ7¸¸BÓ?ö
ð ô ØØ  1Ñ$Ø Ø +Ø-Ø)öò
ó 
ˆÔô Ÿ=™=ô œs ?Ó3°aÑ7Ó8ö	ð ô 2Ø Ø Ø +ØØ!öò	ó
ˆÔô !#§¡ô œs ?Ó3°aÑ7Ó8ö
ð ô ØØ  1Ñ$Ø Ø +Ø-Ø)öò
ó!
ˆÕùòKùò
ùò	ùò
s   Á%FÃFÄFÅ*F!rp   r±   c                 óÎ  — g }t        t        | j                  «      «      D ])  }|j                   | j                  |   ||   «      «       Œ+ |d   g}t	        | j
                  t        |d d «      «      D ]_  \  }}|d   }t        j                  ||j                  dd  d¬«      } |t        j                  ||gd¬«      «      }	|j                  |	«       Œa t        t        |«      «      }
|
d   }t	        | j                  | j                  |
dd  «      D ]-  \  }}} ||«      } |t        j                  ||gd¬«      «      }Œ/ |j                  d«      j!                  dd«      }|S )	Nr‰   éþÿÿÿrØ   )r‡   rÚ   r   rˆ   r   r_   )r�   rÝ   rÞ   r”   Úziprá   Úreversedrb   Úinterpolater�   rB   ri   Úlistrâ   rã   Úflattenrf   )r1   rp   Úprojected_featuresÚidxÚtop_down_featuresÚtop_down_blockÚlow_level_featureÚhigh_level_featureÚupsampled_featureÚfused_featureÚpyramid_featuresÚoutput_featureÚdownsample_layerÚbottom_up_blockÚdownsampled_features                  r7   rq   zSLANetCSPPAN.forward�  s•  € ØÐÜœ˜T×3Ñ3Ó4Ó5ò 	WˆCØ×%Ñ%Ð&A d×&<Ñ&<¸SÑ&AÀ-ÐPSÑBTÓ&UÕVð	Wð 0°Ñ3Ð4ÐÜ14°T×5IÑ5IÌ8ÐTfÐgjÐhjÐTkÓKlÓ1mò 	4Ñ-ˆNÐ-Ø!2°2Ñ!6ÐÜ !§¡Ø"Ø&×,Ñ,¨R¨SÐ1Øô!Ðñ
 +¬5¯9©9Ð6GÐIZÐ5[ÐabÔ+cÓdˆMØ×$Ñ$ ]Õ3ð	4ô  ¤Ð):Ó ;Ó<ÐØ)¨!Ñ,ˆÜEHØ×Ñ˜d×3Ñ3Ð5EÀaÀbÐ5IóF
ò 	jÑAÐ˜oÐ/Añ #3°>Ó"BÐÙ,¬U¯Y©YÐ8KÐM_Ð7`ÐfgÔ-hÓi‰Nð		jð '×.Ñ.¨qÓ1×;Ñ;¸A¸qÓAˆØÐr8   rÔ   rE   s   @r7   rÖ   rÖ   L  s-   ø„ ñô=
ð~ U×%6Ñ%6ð ¸5×;LÑ;L÷ r8   rÖ   c            	       ó†   ‡ — e Zd Zdefˆ fd„Zeedej                  de	e
   deej                     ez  fd„«       «       Zˆ xZS )ÚSLANetBackboner   c                 ó´   •— t         ‰| �  |«       t        |«      | _        t	        || j                  j
                  dd  «      | _        | j                  «        y )Nr_   )r   rP   r	   Úvision_backbonerÖ   Únum_featuresÚpost_csp_panrƒ   ©r1   r   r6   s     €r7   rP   zSLANetBackbone.__init__­  sK   ø€ Ü‰Ñ˜Ô Ü,¨VÓ4ˆÔÜ(¨°×1EÑ1E×1RÑ1RÐSTÐSUÐ1VÓWˆÔà�‰Õr8   rp   rZ   r±   c                 óŒ   —  | j                   |fi |¤Ž}| j                  |j                  «      }t        ||j                  ¬«      S )NrŠ   )rý   rÿ   Úfeature_mapsr   rp   )r1   rp   rZ   Úoutputss       r7   rq   zSLANetBackbone.forward´  sJ   € ð
 '�$×&Ñ& }Ñ?¸Ñ?ˆØ×)Ñ)¨'×*>Ñ*>Ó?ˆÜ-Ø+Ø!×/Ñ/ô
ð 	
r8   )r9   r:   r;   r   rP   r   r   rB   rK   r   r   r¶   r   rq   rD   rE   s   @r7   rû   rû   ¬  s`   ø„ ð˜|õ ð Øð
Ø"×.Ñ.ð
Ø:@ÐASÑ:Tð
à	ˆu× Ñ Ñ	!Ð$BÑ	Bò
ó ó ô
r8   rû   zº
    SLANet Table Recognition model for table recognition tasks. Wraps the core SLANetPreTrainedModel
    and returns outputs compatible with the Transformers table recognition API.
    )Úcustom_introc            	       óŒ   ‡ — e Zd ZdgZdefˆ fd„Zeedej                  de
e   deej                     ez  fd„«       «       Zˆ xZS )ÚSLANetForTableRecognitionÚnum_batches_trackedr   c                 óˆ   •— t         ‰| �  |«       t        |¬«      | _        t	        |¬«      | _        | j                  «        y )N)r   )r   rP   rû   r   r+   Úheadrƒ   r   s     €r7   rP   z"SLANetForTableRecognition.__init__Ê  s2   ø€ Ü‰Ñ˜Ô Ü&¨fÔ5ˆŒÜ!¨Ô0ˆŒ	Ø�‰Õr8   r   rZ   r±   c                 óÐ   —  | j                   |fi |¤Ž} | j                  |j                  fi |¤Ž}t        |j                  |j                  |j                  |j
                  ¬«      S )N)r‹   rp   rH   rI   )r   r	  r‹   rG   rp   r   )r1   r   rZ   r  Úhead_outputss        r7   rq   z!SLANetForTableRecognition.forwardÐ  se   € ð
  �$—-‘- Ñ7°Ñ7ˆØ �t—y‘y ×!:Ñ!:ÑE¸fÑEˆä.Ø*×<Ñ<Ø!×/Ñ/Ø+×9Ñ9Ø(×3Ñ3ô	
ð 	
r8   )r9   r:   r;   Ú_keys_to_ignore_on_load_missingr   rP   r   r   rB   rK   r   r   r¶   rG   rq   rD   rE   s   @r7   r  r  Á  sk   ø„ ð (=Ð&=Ð#ð˜|õ ð Øð
Ø!×-Ñ-ð
Ø9?Ð@RÑ9Sð
à	ˆu× Ñ Ñ	!Ð$CÑ	Cò
ó ó ô
r8   r  )r  r   r+   rû   )3r#   Údataclassesr   rB   Útorch.nnr    Útorch.nn.functionalÚ
functionalrb   Ú r   r%   Úactivationsr   r   Úbackbone_utilsr   r	   Úmodeling_layersr
   Úmodeling_outputsr   r   Úmodeling_utilsr   Úprocessing_utilsr   Úutilsr   r   r   Úutils.genericr   Úutils.output_capturingr   Úconfiguration_slanetr   r   rG   ÚModulerN   rs   r+   r¥   r¹   rÂ   rÉ   rÖ   rû   r  Ú__all__rL   r8   r7   ú<module>r     s/  ðó, Ý !ã Ý ß Ð å &ß *ß HÝ 9ß OÝ -Ý &ß IÑ IÝ 7Ý 5Ý .ô A˜Oô  AðF Ø
ô	5Ð&Dó 	5ó ó ð	5ô+˜RŸY™Yô +ôB�—	‘	ô ô1fÐ)ô 1fôh�b—i‘iô ôB&Ð(Bô &ôR�r—y‘yô ô8%�R—Y‘Yô %ôP]�2—9‘9ô ]ô@
Ð*ô 
ñ* ðôô
Ð 5ó 
óð
ò2 d�r8   