Ë
    ÜÓ^jç5  ã                   ó’  — 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 ddl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mZ ddlmZ ddl m!Z!m"Z" ddl#m$Z$ ddl%m&Z&m'Z'm(Z(  ejR                  e*«      Z+ ed¬«      e
 G d„ de$«      «       «       Z, G d„ de'«      Z-ee G d„ de«      «       «       Z. G d„ de(«      Z/ G d„ de!«      Z0 G d„ de"«      Z1 G d„ d ejd                  «      Z3 G d!„ d"ejd                  «      Z4 G d#„ d$ejd                  «      Z5 G d%„ d&e-«      Z6 ed'¬(«       G d)„ d*e&«      «       Z7g d+¢Z8y),é    N)Ú	dataclass)Ústricté   )Úinitialization)Ú%consolidate_backbone_kwargs_to_configÚload_backbone)ÚPreTrainedConfig)ÚBaseModelOutputWithNoAttention)ÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚloggingé   )Ú
AutoConfig)ÚPPLCNetConvLayerÚ"PPLCNetDepthwiseSeparableConvLayer)ÚSLANeXtConfig)ÚSLANeXtForTableRecognitionÚSLANeXtPreTrainedModelÚSLANeXtSLAHeadz$PaddlePaddle/SLANet_plus_safetensors)Ú
checkpointc                   óœ   — e Zd ZU dZdeiZ e«       ZdZe	e
z  dz  ed<    e«       ZdZeed<   dZeed<   dZeed	<   d
Zeed<   dZeed<   d„ Zy)ÚSLANetConfiga™  
    post_conv_out_channels (`int`, *optional*, defaults to 96):
        Number of output channels for the post-encoder convolution layer.
    out_channels (`int`, *optional*, defaults to 50):
        Vocabulary size for the table structure token prediction head, i.e., the number of distinct structure
        tokens the model can predict.
    hidden_size (`int`, *optional*, defaults to 256):
        Dimensionality of the hidden states in the attention GRU cell and the structure/location prediction heads.
    max_text_length (`int`, *optional*, defaults to 500):
        Maximum number of autoregressive decoding steps (tokens) for the structure and location decoder.
    csp_kernel_size (`int`, *optional*, defaults to 5):
        The kernel size of the Cross Stage Partial (CSP) layer.
    csp_num_blocks (`int`, *optional*, defaults to 1):
        Number of blocks within the Cross Stage Partial (CSP) layer.
    Úbackbone_configNé`   Úpost_conv_out_channelsé   Úhidden_sizeÚ	hardswishÚ
hidden_acté   Úcsp_kernel_sizeé   Úcsp_num_blocksc           
      ó‚   — t        d| j                  ddg d¢g d¢ddœdœ|¤Ž\  | _        }t        j                  di |¤Ž y )	NÚpp_lcnetr%   )Ústage2Ústage3Ústage4Ústage5)r   r   é   r#   é   )ÚscaleÚout_featuresÚout_indicesÚdivisor)r   Údefault_config_typeÚdefault_config_kwargs© )r   r   r	   Ú__post_init__)ÚselfÚkwargss     út/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/slanet/modular_slanet.pyr6   zSLANetConfig.__post_init__L   sS   € Ü'Lð 
(
Ø ×0Ñ0Ø *àÚ HÚ+Øñ	#ñ
(
ð ñ
(
Ñ$ˆÔ˜fô 	×&Ñ&Ñ0¨Ó0ó    )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úsub_configsÚAttributeErrorÚvision_configr   Údictr	   Ú__annotations__Úpost_conv_in_channelsr   Úintr    r"   Ústrr$   r&   r6   r5   r:   r9   r   r   ,   sq   … ñð  % jÐ1€Ká"Ó$€MØ6:€O�TÐ,Ñ,¨tÑ3Ó:á*Ó,ÐØ"$Ð˜CÓ$Ø€K�Óà!€J�Ó!Ø€O�SÓØ€N�CÓó1r:   r   c                   ó>   — e Zd Zg Z ej
                  «       d„ «       Zy)ÚSLANetPreTrainedModelc                 ó®  — t        j                  |«       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)r   Ú_init_weightsÚ
isinstanceÚnnÚGRUCellr    ÚmathÚsqrtÚinitÚuniform_Ú	weight_ihÚ	weight_hhÚbias_ihÚbias_hhÚSLANetSLAHeadÚconfigÚstructure_generatorÚchildrenÚLinearÚweightÚbias)r7   ÚmoduleÚstdÚ	generatorÚlayers        r9   rJ   z#SLANetPreTrainedModel._init_weights^   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ð -r:   N)r;   r<   r=   Ú_keep_in_fp32_modules_strictÚtorchÚno_gradrJ   r5   r:   r9   rH   rH   [   s$   „ Ø#%Ð à€U‡]�]ƒ_ñAó ñAr:   rH   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)	r;   r<   r=   r>   rf   rb   ÚFloatTensorrC   rg   r5   r:   r9   re   re   y   s4   … ñð 48Ð˜×)Ñ)¨DÑ0Ó7Ø04€O�U×&Ñ&¨Ñ-Ô4r:   re   c                   ó   — e Zd Zy)rV   N©r;   r<   r=   r5   r:   r9   rV   rV   ‡   ó   „ Ør:   rV   c                   ó   — e Zd Zy)ÚSLANetConvLayerNrj   r5   r:   r9   rm   rm   ‹   rk   r:   rm   c                   ó"   ‡ — e Zd ZdZˆ f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         ‰| �  «        t        j                  «       | _        y ©N)ÚsuperÚ__init__rL   ÚIdentityÚsqueeze_excitation_module)r7   Úin_channelsÚout_channelsÚstrideÚkernel_sizerW   Ú	__class__s         €r9   rs   z*SLANetDepthwiseSeparableConvLayer.__init__–   s   ø€ ô 	‰ÑÔÜ)+¯©«ˆÕ&r:   )r;   r<   r=   r>   rs   Ú__classcell__©rz   s   @r9   ro   ro   �   s   ø„ ñ÷	7ð 	7r:   ro   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%   ©rv   rw   ry   Ú
activation)rv   rw   ry   rx   rW   )rr   rs   rm   Úconv1ro   Úconv2)r7   rv   rw   ry   r�   rW   rz   s         €r9   rs   zSLANetBottleneck.__init__£   sC   ø€ ô 	‰ÑÔÜ$Ø#°,ÈAÐZdô
ˆŒ
ô 7Ø$Ø%Ø#ØØô
ˆ�
r:   Úhidden_statesÚreturnc                 óJ   — | j                  |«      }| j                  |«      }|S rq   )r‚   rƒ   )r7   r„   s     r9   ÚforwardzSLANetBottleneck.forward·   s$   € ØŸ
™
 =Ó1ˆØŸ
™
 =Ó1ˆàÐr:   )r;   r<   r=   rs   rb   rh   r‡   r{   r|   s   @r9   r~   r~   ¢   s'   ø„ ô
ð( U×%6Ñ%6ð ¸5×;LÑ;L÷ r:   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   )rr   rs   rE   rm   r‚   rƒ   Úconv3rL   Ú
ModuleListÚranger~   Úbottlenecks)r7   rW   rv   rw   ry   Ú	expansionÚ
num_blocksr�   Úhidden_channelsÚ_rz   s             €r9   rs   zSLANetCSPLayer.__init__Ã   sŸ   ø€ ô 	‰ÑÔÜ˜l¨YÑ6Ó7ˆÜ$ [°/À1ÐQ[Ô\ˆŒ
Ü$ [°/À1ÐQ[Ô\ˆŒ
Ü$ Q¨Ñ%8¸,ÈÐV`ÔaˆŒ
ÜŸ=™=ô ˜zÓ*öàô ! °/À;ÐPZÐ\bÕcòó
ˆÕùòs   Á9Br„   r…   c                 óÐ   — | j                  |«      }| j                  |«      }| j                  D ]
  } ||«      }Œ t        j                  ||fd¬«      }| j                  |«      }|S )Nr%   ©Údim)r‚   rƒ   rŽ   rb   Úcatr‹   )r7   r„   ÚresidualÚ
bottlenecks       r9   r‡   zSLANetCSPLayer.forwardÙ   sh   € Ø—:‘:˜mÓ,ˆàŸ
™
 =Ó1ˆØ×*Ñ*ò 	6ˆJÙ& }Ó5‰Mð	6ô Ÿ	™	 =°(Ð";ÀÔCˆØŸ
™
 =Ó1ˆàÐr:   )r   g      à?r%   r!   ©	r;   r<   r=   r>   rs   rb   rh   r‡   r{   r|   s   @r9   r‰   r‰   ¾   s:   ø„ ñð ØØØõ
ð,
 U×%6Ñ%6ð 
¸5×;LÑ;L÷ 
r:   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   éÿÿÿÿ)ry   r�   r�   )ry   rx   rW   )rr   rs   r   r"   r$   r&   rL   rŒ   r�   Úlenrm   Úchannel_projectorÚUpsampleÚupsampler‰   Útop_down_blocksro   ÚdownsamplesÚbottom_up_blocks)
r7   rW   Úin_channel_listrw   r�   ry   r&   Úir’   rz   s
            €r9   rs   zSLANetCSPPAN.__init__ë   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!r„   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�   )ÚsizerŸ   r%   r”   r   r   )r�   r¡   r¢   ÚappendÚzipr¥   ÚreversedÚFÚinterpolateÚshaperb   r–   Úlistr¦   r§   ÚflattenÚ	transpose)r7   r„   Ú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                  r9   r‡   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ˆØÐr:   r™   r|   s   @r9   r›   r›   æ   s-   ø„ ñô=
ð~ U×%6Ñ%6ð ¸5×;LÑ;L÷ r:   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 )ÚSLANetBackbonerW   c                 ó´   •— t         ‰| �  |«       t        |«      | _        t	        || j                  j
                  dd  «      | _        | j                  «        y )Nr   )rr   rs   r   Úvision_backboner›   Únum_featuresÚpost_csp_panÚ	post_init)r7   rW   rz   s     €r9   rs   zSLANetBackbone.__init__G  sK   ø€ Ü‰Ñ˜Ô Ü,¨VÓ4ˆÔÜ(¨°×1EÑ1E×1RÑ1RÐSTÐSUÐ1VÓWˆÔà�‰Õr:   r„   r8   r…   c                 óŒ   —  | j                   |fi |¤Ž}| j                  |j                  «      }t        ||j                  ¬«      S )N)Úlast_hidden_stater„   )rÆ   rÈ   Úfeature_mapsr
   r„   )r7   r„   r8   Úoutputss       r9   r‡   zSLANetBackbone.forwardN  sJ   € ð
 '�$×&Ñ& }Ñ?¸Ñ?ˆØ×)Ñ)¨'×*>Ñ*>Ó?ˆÜ-Ø+Ø!×/Ñ/ô
ð 	
r:   )r;   r<   r=   r   rs   r   r   rb   rh   r   r   Útupler
   r‡   r{   r|   s   @r9   rÄ   rÄ   F  s`   ø„ ð˜|õ ð Øð
Ø"×.Ñ.ð
Ø:@ÐASÑ:Tð
à	ˆu× Ñ Ñ	!Ð$BÑ	Bò
ó ó ô
r:   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            	       ót   — e Zd ZdgZeedej                  dee	   de
ej                     ez  fd„«       «       Zy)ÚSLANetForTableRecognitionÚnum_batches_trackedÚpixel_valuesr8   r…   c                 óÐ   —  | j                   |fi |¤Ž} | j                  |j                  fi |¤Ž}t        |j                  |j                  |j                  |j
                  ¬«      S )N)rË   r„   rf   rg   )ÚbackboneÚheadrË   re   r„   Ú
attentions)r7   rÓ   r8   rÍ   Úhead_outputss        r9   r‡   z!SLANetForTableRecognition.forwardd  se   € ð
  �$—-‘- Ñ7°Ñ7ˆØ �t—y‘y ×!:Ñ!:ÑE¸fÑEˆä.Ø*×<Ñ<Ø!×/Ñ/Ø+×9Ñ9Ø(×3Ñ3ô	
ð 	
r:   N)r;   r<   r=   Ú_keys_to_ignore_on_load_missingr   r   rb   rh   r   r   rÎ   re   r‡   r5   r:   r9   rÑ   rÑ   [  s\   „ ð (=Ð&=Ð#àØð
Ø!×-Ñ-ð
Ø9?Ð@RÑ9Sð
à	ˆu× Ñ Ñ	!Ð$CÑ	Cò
ó ó ñ
r:   rÑ   )r   rÑ   rH   rV   rÄ   )9rN   Údataclassesr   rb   Útorch.nnrL   Útorch.nn.functionalÚ
functionalr°   Úhuggingface_hub.dataclassesr   Ú r   rP   Úbackbone_utilsr   r   Úconfiguration_utilsr	   Úmodeling_outputsr
   Úmodeling_utilsr   Úprocessing_utilsr   Úutilsr   r   r   r   Úautor   Úpp_lcnet.modeling_pp_lcnetr   r   Úslanext.configuration_slanextr   Úslanext.modeling_slanextr   r   r   Ú
get_loggerr;   Úloggerr   rH   re   rV   rm   ro   ÚModuler~   r‰   r›   rÄ   rÑ   Ú__all__r5   r:   r9   ú<module>rî      sN  ðó  Ý !ã Ý ß Ð Ý .å &ß RÝ 3Ý >Ý -Ý &ß RÓ RÝ ß ]Ý 9÷ñ ð 
ˆ×	Ñ	˜HÓ	%€ñ ÐAÔBØô*1�=ó *1ó ó Cð*1ôZAÐ2ô Að< Ø
ô	5Ð&Dó 	5ó ó ð	5ô	�Nô 	ô	Ð&ô 	ô7Ð(Jô 7ô&�r—y‘yô ô8%�R—Y‘Yô %ôP]�2—9‘9ô ]ô@
Ð*ô 
ñ* ðôô
Ð :ó 
óð
ò& t�r:   