Ë
    ÜÓ^j1H  ã                   óØ  — d dl 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 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 ddlmZm Z  ddl!m"Z" ddl#m$Z$  G d„ dejJ                  «      Z& G d„ dejJ                  «      Z'	 	 d0dejJ                  dejP                  dejP                  dejP                  dejP                  dz  de)dz  de)dee   fd„Z* G d„ d ejJ                  «      Z+ G d!„ d"ejJ                  «      Z, G d#„ d$ejJ                  «      Z- G d%„ d&e«      Z.e G d'„ d(e«      «       Z/e G d)„ d*e/«      «       Z0 ed+¬,«       G d-„ d.ee/«      «       Z1g d/¢Z2y)1é    )ÚCallableÚIterableN)Únné   )Úinitialization)ÚACT2FN)ÚBackboneMixinÚfilter_output_hidden_states)Úcreate_bidirectional_mask)ÚGradientCheckpointingLayer)ÚBackboneOutputÚBaseModelOutputÚBaseModelOutputWithPooling)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚ
is_tracing)Úcan_return_tupleÚmerge_with_config_defaults)Úcapture_outputsé   )ÚPixioConfigc                   ó`   ‡ — e Zd ZdZdefˆ fd„Zdej                  dej                  fd„Zˆ xZ	S )ÚPixioPatchEmbeddingszì
    This class turns `pixel_values` of shape `(batch_size, num_channels, height, width)` into the initial
    `hidden_states` (patch embeddings) of shape `(batch_size, seq_length, hidden_size)` to be consumed by a
    Transformer.
    Úconfigc                 ó„  •— t         ‰| �  «        |j                  }|j                  }t	        |t
        «      r|n||f}t	        |t
        «      r|n||f}|d   |d   z  |d   |d   z  z  | _        || _        || _        |j                  | _        t        j                  |j                  |j                  ||¬«      | _        y )Nr   r   )Úkernel_sizeÚstride)ÚsuperÚ__init__Ú
image_sizeÚ
patch_sizeÚ
isinstancer   Únum_patchesÚnum_channelsr   ÚConv2dÚhidden_sizeÚ
projection)Úselfr   r#   r$   Ú	__class__s       €ús/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/pixio/modeling_pixio.pyr"   zPixioPatchEmbeddings.__init__/   sº   ø€ Ü‰ÑÔØ×&Ñ&ˆ
Ø×&Ñ&ˆ
Ü#-¨j¼(Ô#C‘ZÈ*ÐV`ÐIaˆ
Ü#-¨j¼(Ô#C‘ZÈ*ÐV`ÐIaˆ
à& q™M¨Z¸©]Ñ:¸zÈ!¹}ÐPZÐ[\ÑP]Ñ?]Ñ^ˆÔØ$ˆŒØ$ˆŒØ"×/Ñ/ˆÔÜŸ)™) F×$7Ñ$7¸×9KÑ9KÐYcÐlvÔwˆ�ó    Úpixel_valuesÚreturnc                 óÖ   — |j                   d   }|| j                  k7  rt        d| j                  › d|› d�«      ‚| j                  |«      j	                  d«      j                  dd«      S )Nr   zoMake sure that the channel dimension of the pixel values match with the one set in the configuration. Expected z	 but got ú.é   )Úshaper'   Ú
ValueErrorr*   ÚflattenÚ	transpose)r+   r/   r'   s      r-   ÚforwardzPixioPatchEmbeddings.forward<   su   € Ø#×)Ñ)¨!Ñ,ˆØ˜4×,Ñ,Ò,ÜðØ!×.Ñ.Ð/¨y¸¸ÀaðIóð ð �‰˜|Ó,×4Ñ4°QÓ7×AÑAÀ!ÀQÓGÐGr.   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r"   ÚtorchÚTensorr8   Ú__classcell__©r,   s   @r-   r   r   (   s4   ø„ ñðx˜{õ xðH E§L¡Lð H°U·\±\÷ Hr.   r   c                   ó¤   ‡ — e Zd ZdZdeddfˆ fd„Zdej                  dededej                  fd	„Z	d
ej                  dej                  fd„Z
ˆ xZS )ÚPixioEmbeddingszB
    Construct the CLS tokens, position and patch embeddings.
    r   r0   Nc                 ó(  •— t         ‰| �  «        t        j                  t	        j
                  d|j                  |j                  «      «      | _        d | _	        t        |«      | _        | j                  j                  }t        j                  t	        j
                  d||j                  z   |j                  «      «      | _        t        j                  |j                  «      | _        |j                  | _        |j"                  | _        || _        y )Nr   )r!   r"   r   Ú	Parameterr=   ÚrandnÚn_cls_tokensr)   Ú	cls_tokenÚ
mask_tokenr   Úpatch_embeddingsr&   Úposition_embeddingsÚDropoutÚhidden_dropout_probÚdropoutr$   r   )r+   r   r&   r,   s      €r-   r"   zPixioEmbeddings.__init__K   sÄ   ø€ Ü‰ÑÔäŸ™¤e§k¡k°!°V×5HÑ5HÈ&×J\ÑJ\Ó&]Ó^ˆŒØˆŒÜ 4°VÓ <ˆÔØ×+Ñ+×7Ñ7ˆÜ#%§<¡<´·±¸A¸{ÈV×M`ÑM`Ñ?`Ðbh×btÑbtÓ0uÓ#vˆÔ Ü—z‘z &×"<Ñ"<Ó=ˆŒØ"×/Ñ/ˆÔØ ×+Ñ+ˆŒØˆ�r.   Ú
embeddingsÚheightÚwidthc                 ó@  — |j                   d   | j                  z
  }| j                  j                   d   | j                  z
  }t        «       s||k(  r||k(  r| j                  S | j                  dd…d| j                  …f   }| j                  dd…| j                  d…f   }|j                   d   }|| j                  z  }	|| j                  z  }
t        |dz  «      }|j                  d|||«      }|j                  dddd«      }|j                  }t        j                  j                  |j                  t        j                  «      |	|
fdd	¬
«      j                  |¬«      }|j                  dddd«      j                  dd|«      }t        j                   ||fd¬«      S )a#  
        This method allows to interpolate the pre-trained position encodings, to be able to use the model on higher
        resolution images. This method is also adapted to support tracing and interpolation at torch.float32 precision.

        Adapted from:
        - https://github.com/facebookresearch/dino/blob/de9ee3df6cf39fac952ab558447af1fa1365362a/vision_transformer.py#L174-L194, and
        - https://github.com/facebookresearch/dinov2/blob/e1277af2ba9496fbadf7aec6eba56e8d882d1e35/dinov2/models/vision_transformer.py#L179-L211
        r   Néÿÿÿÿg      à?r   r   r3   ÚbicubicF)ÚsizeÚmodeÚalign_corners©Údtype©Údim)r4   rF   rJ   r   r$   ÚintÚreshapeÚpermuterX   r   Ú
functionalÚinterpolateÚtor=   Úfloat32ÚviewÚcat)r+   rN   rO   rP   r&   Únum_positionsÚclass_pos_embedÚpatch_pos_embedrZ   Ú
new_heightÚ	new_widthÚsqrt_num_positionsÚtarget_dtypes                r-   Úinterpolate_pos_encodingz(PixioEmbeddings.interpolate_pos_encodingX   sš  € ð !×&Ñ& qÑ)¨D×,=Ñ,=Ñ=ˆØ×0Ñ0×6Ñ6°qÑ9¸D×<MÑ<MÑMˆäŒ| ¨}Ò <ÀÈ5ÂØ×+Ñ+Ð+à×2Ñ2²1Ð6I¸×8IÑ8IÐ6IÐ3IÑJˆØ×2Ñ2²1°d×6GÑ6GÑ6IÐ3IÑJˆà×Ñ˜rÑ"ˆà˜tŸ™Ñ.ˆ
Ø˜TŸ_™_Ñ,ˆ	ä  °Ñ!3Ó4ÐØ)×1Ñ1°!Ð5GÐI[Ð]`ÓaˆØ)×1Ñ1°!°Q¸¸1Ó=ˆØ&×,Ñ,ˆÜŸ-™-×3Ñ3Ø×ÑœuŸ}™}Ó-Ø˜iÐ(ØØð	 4ó 
÷
 ‰"�<ˆ"Ó
 ð 	ð *×1Ñ1°!°Q¸¸1Ó=×BÑBÀ1ÀbÈ#ÓNˆä�y‰y˜/¨?Ð;ÀÔCÐCr.   r/   c                 óx  — |j                   \  }}}}| j                  j                  j                  j                  }| j                  |j                  |¬«      «      }| j                  j                  |dd«      }t        j                  ||fd¬«      }|| j                  |||«      z   }| j                  |«      }|S )NrW   rR   r   rY   )r4   rI   r*   ÚweightrX   r`   rG   Úexpandr=   rc   rk   rM   )	r+   r/   Ú
batch_sizeÚ_rO   rP   rj   rN   Ú
cls_tokenss	            r-   r8   zPixioEmbeddings.forward~   s©   € Ø'3×'9Ñ'9Ñ$ˆ
�A�v˜uØ×,Ñ,×7Ñ7×>Ñ>×DÑDˆØ×*Ñ*¨<¯?©?À¨?Ó+NÓOˆ
à—^‘^×*Ñ*¨:°r¸2Ó>ˆ
Ü—Y‘Y 
¨JÐ7¸QÔ?ˆ
à $×"?Ñ"?À
ÈFÐTYÓ"ZÑZˆ
à—\‘\ *Ó-ˆ
àÐr.   )r9   r:   r;   r<   r   r"   r=   r>   r[   rk   r8   r?   r@   s   @r-   rB   rB   F   si   ø„ ñð˜{ð ¨tõ ð$D°5·<±<ð $DÈð $DÐUXð $DÐ]b×]iÑ]ió $DðL E§L¡Lð °U·\±\÷ r.   rB   ÚmoduleÚqueryÚkeyÚvalueÚattention_maskÚscalingrM   Úkwargsc                 óì  — |€|j                  d«      dz  }t        j                  ||j                  dd«      «      |z  }|�||z   }t        j
                  j                  |dt        j                  ¬«      j                  |j                  «      }t        j
                  j                  ||| j                  ¬«      }t        j                  ||«      }	|	j                  dd«      j                  «       }	|	|fS )NrR   ç      à¿r3   r   )rZ   rX   )ÚpÚtrainingr   )rT   r=   Úmatmulr7   r   r^   Úsoftmaxra   r`   rX   rM   r|   Ú
contiguous)
rr   rs   rt   ru   rv   rw   rM   rx   Úattn_weightsÚattn_outputs
             r-   Úeager_attention_forwardr‚   �   sÓ   € ð €Ø—*‘*˜R“. DÑ(ˆô —<‘<  s§}¡}°Q¸Ó':Ó;¸gÑE€LàÐ!Ø# nÑ4ˆä—=‘=×(Ñ(¨¸2ÄUÇ]Á]Ð(ÓS×VÑVÐW\×WbÑWbÓc€LÜ—=‘=×(Ñ(¨¸È6Ï?É?Ð(Ó[€Lä—,‘,˜|¨UÓ3€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€Kà˜Ð$Ð$r.   c                   ó¦   ‡ — e Zd Zdefˆ fd„Z	 d	dej                  dej                  dz  dee   de	ej                  ej                  f   fd„Z
ˆ xZS )
ÚPixioAttentionr   c                 ó(  •— t         ‰| �  «        || _        |j                  | _        t	        |d|j
                  |j                  z  «      | _        |j                  | _        | j                  dz  | _	        d| _
        t        j                  |j
                  |j                  | j                  z  |j                  ¬«      | _        t        j                  |j
                  |j                  | j                  z  |j                  ¬«      | _        t        j                  |j
                  |j                  | j                  z  |j                  ¬«      | _        t        j                  |j                  | j                  z  |j
                  d¬«      | _        y )NÚhead_dimrz   F©ÚbiasT)r!   r"   r   Únum_attention_headsÚgetattrr)   r†   Úattention_probs_dropout_probÚattention_dropoutrw   Ú	is_causalr   ÚLinearÚqkv_biasÚq_projÚk_projÚv_projÚo_proj©r+   r   r,   s     €r-   r"   zPixioAttention.__init__ª   s,  ø€ Ü‰ÑÔØˆŒØ#)×#=Ñ#=ˆÔ Ü ¨
°F×4FÑ4FÈ&×JdÑJdÑ4dÓeˆŒØ!'×!DÑ!DˆÔØ—}‘} dÑ*ˆŒØˆŒä—i‘i × 2Ñ 2°F×4NÑ4NÐQU×Q^ÑQ^Ñ4^Ðek×etÑetÔuˆŒÜ—i‘i × 2Ñ 2°F×4NÑ4NÐQU×Q^ÑQ^Ñ4^Ðek×etÑetÔuˆŒÜ—i‘i × 2Ñ 2°F×4NÑ4NÐQU×Q^ÑQ^Ñ4^Ðek×etÑetÔuˆŒÜ—i‘i × :Ñ :¸T¿]¹]Ñ JÈF×L^ÑL^ÐeiÔjˆ�r.   NÚhidden_statesrv   rx   r0   c                 óš  — |j                   d d }g |¢d‘| j                  ‘­}| j                  |«      j                  |«      j	                  dd«      }| j                  |«      j                  |«      j	                  dd«      }| j                  |«      j                  |«      j	                  dd«      }t        j                  | j                  j                  t        «      }	 |	| ||||f| j                  sdn| j                  | j                  dœ|¤Ž\  }
} |
j                  g |¢d‘­Ž j!                  «       }
| j#                  |
«      }
|
|fS )NrR   r   r3   ç        )rM   rw   )r4   r†   r�   rb   r7   r‘   r’   r   Úget_interfacer   Ú_attn_implementationr‚   r|   rŒ   rw   r\   r   r“   )r+   r•   rv   rx   Úinput_shapeÚhidden_shapeÚquery_statesÚ
key_statesÚvalue_statesÚattention_interfacer�   r€   s               r-   r8   zPixioAttention.forward¸   sK  € ð $×)Ñ)¨#¨2Ð.ˆØ8˜Ð8 bÐ8¨$¯-©-Ñ8ˆà—{‘{ =Ó1×6Ñ6°|ÓD×NÑNÈqÐRSÓTˆØ—[‘[ Ó/×4Ñ4°\ÓB×LÑLÈQÐPQÓRˆ
Ø—{‘{ =Ó1×6Ñ6°|ÓD×NÑNÈqÐRSÓTˆä(?×(MÑ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØð	%
ð  $Ÿ}š}‘C°$×2HÑ2HØ—L‘Lñ	%
ð ñ	%
Ñ!ˆ�\ð *�k×)Ñ)Ð;¨;Ð;¸Ò;×FÑFÓHˆØ—k‘k +Ó.ˆà˜LÐ(Ð(r.   ©N)r9   r:   r;   r   r"   r=   r>   r   r   Útupler8   r?   r@   s   @r-   r„   r„   ©   sf   ø„ ðk˜{õ kð" /3ñ)à—|‘|ð)ð Ÿ™ tÑ+ð)ð Ð+Ñ,ð	)ð
 
ˆu�|‰|˜UŸ\™\Ð)Ñ	*÷)r.   r„   c                   óX   ‡ — e Zd Zdˆ fd„Zdej
                  dej
                  fd„Zˆ xZS )ÚPixioMLPr0   c                 ó~  •— t         ‰| �  «        |j                  x}}t        |j                  |j                  z  «      }t        j                  ||d¬«      | _        t        |j                  t        «      rt        |j                     | _        n|j                  | _        t        j                  ||d¬«      | _        y )NTr‡   )r!   r"   r)   r[   Ú	mlp_ratior   rŽ   Úfc1r%   Ú
hidden_actÚstrr   Ú
activationÚfc2)r+   r   Úin_featuresÚout_featuresÚhidden_featuresr,   s        €r-   r"   zPixioMLP.__init__Û   s�   ø€ Ü‰ÑÔØ%+×%7Ñ%7Ð7ˆ�lÜ˜f×0Ñ0°6×3CÑ3CÑCÓDˆÜ—9‘9˜[¨/ÀÔEˆŒÜ�f×'Ñ'¬Ô-Ü$ V×%6Ñ%6Ñ7ˆD�Oà$×/Ñ/ˆDŒOÜ—9‘9˜_¨lÀÔFˆ�r.   Úhidden_statec                 ól   — | j                  |«      }| j                  |«      }| j                  |«      }|S r    )r¦   r©   rª   )r+   r®   s     r-   r8   zPixioMLP.forwardæ   s2   € Ø—x‘x Ó-ˆØ—‘ |Ó4ˆØ—x‘x Ó-ˆØÐr.   )r0   N)r9   r:   r;   r"   r=   r>   r8   r?   r@   s   @r-   r£   r£   Ú   s$   ø„ õ	Gð E§L¡Lð °U·\±\÷ r.   r£   c                   ór   ‡ — e Zd ZdZd	deddfˆ fd„Zdej                  dej                  fd„Zde	fd„Z
ˆ xZS )
ÚPixioDropPathzÏStochastic depth (DropPath) per sample, for residual blocks.

    Identity when ``drop_prob`` is 0 or outside training. See `Deep Networks with Stochastic Depth
    <https://arxiv.org/abs/1603.09382>`_.
    Ú	drop_probr0   Nc                 ó0   •— t         ‰| �  «        || _        y r    )r!   r"   r²   )r+   r²   r,   s     €r-   r"   zPixioDropPath.__init__ô   s   ø€ Ü‰ÑÔØ"ˆ�r.   r•   c                 óP  — | j                   dk(  s| j                  s|S d| j                   z
  }|j                  d   fd|j                  dz
  z  z   }t	        j
                  ||j                  |j                  ¬«      }t	        j                  ||z   «      }|j                  |«      |z  S )Nr—   r   r   )r   )rX   Údevice)
r²   r|   r4   Úndimr=   ÚrandrX   rµ   ÚfloorÚdiv)r+   r•   Ú	keep_probr4   Úrandom_tensors        r-   r8   zPixioDropPath.forwardø   s—   € Ø�>‰>˜SÒ ¨¯ªØ Ð Ø˜Ÿ™Ñ&ˆ	Ø×$Ñ$ QÑ'Ð)¨D°M×4FÑ4FÈÑ4JÑ,KÑKˆÜŸ
™
 5°×0CÑ0CÈM×L`ÑL`ÔaˆÜŸ™ M°IÑ$=Ó>ˆØ× Ñ  Ó+¨mÑ;Ð;r.   c                 ó    — d| j                   › �S )Nzp=)r²   )r+   s    r-   Ú
extra_reprzPixioDropPath.extra_repr  s   € Ø�D—N‘NÐ#Ð$Ð$r.   )r—   )r9   r:   r;   r<   Úfloatr"   r=   r>   r8   r¨   r½   r?   r@   s   @r-   r±   r±   í   sB   ø„ ññ# %ð #°$õ #ð< U§\¡\ð <°e·l±ló <ð%˜C÷ %r.   r±   c            	       óˆ   ‡ — e Zd Zdefˆ fd„Z	 d	dej                  dej                  dz  dee   dej                  fd„Z	ˆ xZ
S )
Ú
PixioLayerr   c                 óð  •— t         ‰| �  «        t        |«      | _        t	        j
                  |j                  |j                  ¬«      | _        t	        j
                  |j                  |j                  ¬«      | _	        t        |«      | _        t	        j                  |j                  «      | _        |j                  dkD  rt!        |j                  «      | _        y t	        j"                  «       | _        y )N©Úepsr—   )r!   r"   r„   Ú	attentionr   Ú	LayerNormr)   Úlayer_norm_epsÚlayernorm_beforeÚlayernorm_afterr£   ÚmlprK   rL   rM   Údrop_path_rater±   ÚIdentityÚ	drop_pathr”   s     €r-   r"   zPixioLayer.__init__  sª   ø€ Ü‰ÑÔÜ'¨Ó/ˆŒÜ "§¡¨V×-?Ñ-?ÀV×EZÑEZÔ [ˆÔÜ!Ÿ|™|¨F×,>Ñ,>ÀF×DYÑDYÔZˆÔÜ˜FÓ#ˆŒÜ—z‘z &×"<Ñ"<Ó=ˆŒØAG×AVÑAVÐY\ÒA\œ v×'<Ñ'<Ó=ˆ�Ôbd×bmÑbmÓboˆ�r.   Nr•   rv   rx   r0   c                 ó6  — |}| j                  |«      } | j                  ||fi |¤Ž\  }}| j                  |«      }| j                  |«      |z   }|}| j	                  |«      }| j                  |«      }| j                  |«      }| j                  |«      |z   }|S r    )rÇ   rÄ   rM   rÌ   rÈ   rÉ   )r+   r•   rv   rx   Úresidualrp   s         r-   r8   zPixioLayer.forward  s    € ð !ˆØ×-Ñ-¨mÓ<ˆØ)˜4Ÿ>™>¨-¸ÑRÈ6ÑRÑˆ�qØŸ™ ]Ó3ˆØŸ™ }Ó5¸Ñ@ˆà ˆØ×,Ñ,¨]Ó;ˆØŸ™ Ó/ˆØŸ™ ]Ó3ˆØŸ™ }Ó5¸Ñ@ˆàÐr.   r    )r9   r:   r;   r   r"   r=   r>   r   r   r8   r?   r@   s   @r-   rÀ   rÀ     sX   ø„ ðp˜{õ pð /3ñà—|‘|ðð Ÿ™ tÑ+ðð Ð+Ñ,ð	ð
 
�‰÷r.   rÀ   c                   óŒ   ‡ — e Zd ZU eed<   dZdZdZdZddgZ	dZ
dZdZdZdZeedœZd	Z ej(                  «       ˆ fd
„«       Zˆ xZS )ÚPixioPreTrainedModelr   Úpixior/   )ÚimageTrB   rÀ   )r•   Ú
attentionsrI   c                 óŽ  •— t         ‰| �  |«       t        |t        «      r¥|j                  �6t        j                  |j                  d| j                  j                  ¬«       t        j                  |j                  d| j                  j                  ¬«       |j                  � t        j                  |j                  «       yyy)zInitialize the weightsNr—   )ÚmeanÚstd)r!   Ú_init_weightsr%   rB   rJ   ÚinitÚtrunc_normal_r   Úinitializer_rangerG   rH   Úzeros_)r+   rr   r,   s     €r-   r×   z"PixioPreTrainedModel._init_weights7  s”   ø€ ô 	‰Ñ˜fÔ%Ü�fœoÔ.Ø×)Ñ)Ð5Ü×"Ñ" 6×#=Ñ#=ÀCÈTÏ[É[×MjÑMjÕkÜ×Ñ˜v×/Ñ/°c¸t¿{¹{×?\Ñ?\Õ]Ø× Ñ Ð,Ü—‘˜F×-Ñ-Õ.ð -ð	 /r.   )r9   r:   r;   r   Ú__annotations__Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_supports_sdpaÚ_supports_flash_attnÚ_supports_flex_attnÚ_supports_attention_backendÚ_can_compile_fullgraphrÀ   r„   Ú_can_record_outputsÚ_input_embed_layerr=   Úno_gradr×   r?   r@   s   @r-   rÐ   rÐ   $  sx   ø… àÓØÐØ$€OØ!ÐØ&*Ð#Ø*¨LÐ9ÐØ€NØÐØÐØ"&ÐØ!Ðà#Ø$ñÐð ,Ðà€U‡]�]ƒ_ó/ó ô/r.   rÐ   c                   ó¨   ‡ — e Zd Zdefˆ fd„Ze ed¬«      e	 	 ddej                  dz  dej                  dz  de
e   d	efd
„«       «       «       Zˆ xZS )Ú
PixioModelr   c                 ód  •— t         ‰| �  |«       || _        t        |«      | _        t        j                  t        |j                  «      D �cg c]  }t        |«      ‘Œ c}«      | _
        t        j                  |j                  |j                  ¬«      | _        | j                  «        y c c}w )NrÂ   )r!   r"   r   rB   rN   r   Ú
ModuleListÚrangeÚnum_hidden_layersrÀ   ÚlayersrÅ   r)   rÆ   Ú	layernormÚ	post_init©r+   r   rp   r,   s      €r-   r"   zPixioModel.__init__E  s|   ø€ Ü‰Ñ˜Ô ØˆŒä)¨&Ó1ˆŒÜ—m‘mÄÀv×G_ÑG_ÓA`Ö$a¸A¤Z°Õ%7Ò$aÓbˆŒäŸ™ f×&8Ñ&8¸f×>SÑ>SÔTˆŒà�‰Õùò	 %bs   ÁB-F)Útie_last_hidden_statesNr/   rv   rx   r0   c                 óH  — |€t        d«      ‚| j                  |«      }t        | j                  ||¬«      }|}| j                  D ]  } |||fi |¤Ž}Œ | j                  |«      }|d d …d | j                  j                  …d d …f   j                  d¬«      }t        ||¬«      S )Nz You have to specify pixel_values)r   Úinputs_embedsrv   r   rY   )Úlast_hidden_stateÚpooler_output)	r5   rN   r   r   rð   rñ   rF   rÕ   r   )r+   r/   rv   rx   Úembedding_outputr•   ÚlayerÚpooled_outputs           r-   r8   zPixioModel.forwardP  sº   € ð ÐÜÐ?Ó@Ð@àŸ?™?¨<Ó8ÐÜ2Ø—;‘;Ø*Ø)ô
ˆð
 )ˆØ—[‘[ò 	KˆEÙ! -°ÑJÀ6ÑJ‰Mð	KàŸ™ }Ó5ˆØ%¢aÐ)G¨4¯?©?×+GÑ+GÐ)GÊÐ&JÑK×PÑPÐUVÐPÓWˆä)Ø+Ø'ô
ð 	
r.   )NN)r9   r:   r;   r   r"   r   r   r   r=   r>   r   r   r   r8   r?   r@   s   @r-   rë   rë   C  s~   ø„ ð	˜{õ 	ð  Ù¨EÔ2Øð -1Ø.2ñ
à—l‘l TÑ)ð
ð Ÿ™ tÑ+ð
ð Ð+Ñ,ð	
ð
 
$ò
ó ó 3ó  ô
r.   rë   zN
    Pixio backbone, to be used with frameworks like DETR and MaskFormer.
    )Úcustom_introc                   ó’   ‡ — e Zd Zdefˆ fd„Zeee	 d	dej                  dej                  dz  de
e   defd„«       «       «       Zˆ xZS )
ÚPixioBackboner   c                 ó8  •— t         ‰| �  |«       t        |j                  dz   «      D �cg c]  }|j                  ‘Œ c}| _        t        |«      | _        t        j                  |j                  |j                  ¬«      | _        | j                  «        y c c}w )Nr   rÂ   )r!   r"   rî   rï   r)   Únum_featuresrë   rÑ   r   rÅ   rÆ   rñ   rò   ró   s      €r-   r"   zPixioBackbone.__init__t  st   ø€ Ü‰Ñ˜Ô ä9>¸v×?WÑ?WÐZ[Ñ?[Ó9\Ö]°A˜V×/Ó/Ò]ˆÔÜ Ó'ˆŒ
ÜŸ™ f×&8Ñ&8¸f×>SÑ>SÔTˆŒà�‰Õùò	 ^s   «BNr/   rv   rx   r0   c                 ó´  — d|d<    | j                   ||fi |¤Ž}|j                  }g }t        | j                  |«      D ]î  \  }}|| j                  v sŒ| j
                  j                  r| j                  |«      }| j
                  j                  rŒ|dd…| j                   j                  j                  d…f   }|j                  \  }	}
}}| j
                  j                  }|j                  |	||z  ||z  d«      }|j                  dddd«      j                  «       }|j!                  |«       Œð t#        t%        |«      |j                  |j&                  ¬	«      S )
aw  
        Examples:

        ```python
        >>> from transformers import AutoImageProcessor, AutoBackbone
        >>> import torch
        >>> from PIL import Image
        >>> import httpx
        >>> from io import BytesIO

        >>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
        >>> with httpx.stream("GET", url) as response:
        ...     image = Image.open(BytesIO(response.read()))

        >>> processor = AutoImageProcessor.from_pretrained("facebook/pixio-huge")
        >>> model = AutoBackbone.from_pretrained(
        ...     "facebook/pixio-huge", out_features=["stage7", "stage15", "stage23", "stage31"]
        ... )

        >>> inputs = processor(image, return_tensors="pt")

        >>> outputs = model(**inputs)
        >>> feature_maps = outputs.feature_maps
        >>> list(feature_maps[-1].shape)
        [1, 1280, 16, 16]
        ```TÚoutput_hidden_statesNrR   r   r   r   r3   )Úfeature_mapsr•   rÓ   )rÑ   r•   ÚzipÚstage_namesr¬   r   Úapply_layernormrñ   Úreshape_hidden_statesrN   rF   r4   r$   r\   r]   r   Úappendr   r¡   rÓ   )r+   r/   rv   rx   Úoutputr•   r  Ústager®   ro   rp   rO   rP   r$   s                 r-   r8   zPixioBackbone.forward}  sL  € ðF *.ˆÐ%Ñ&à", $§*¡*¨\¸>Ñ"TÈVÑ"TˆØ×,Ñ,ˆàˆÜ#& t×'7Ñ'7¸Ó#Gò 
	2ÑˆE�<Ø˜×)Ñ)Ò)Ø—;‘;×.Ò.Ø#'§>¡>°,Ó#?�LØ—;‘;×4Ò4Ø#/²°4·:±:×3HÑ3H×3UÑ3UÑ3WÐ0WÑ#X�LØ3?×3EÑ3EÑ0�J  6¨5Ø!%§¡×!7Ñ!7�JØ#/×#7Ñ#7¸
ÀFÈjÑDXÐZ_ÐcmÑZmÐoqÓ#r�LØ#/×#7Ñ#7¸¸1¸aÀÓ#C×#NÑ#NÓ#P�LØ×#Ñ# LÕ1ð
	2ô Ü˜|Ó,Ø ×.Ñ.Ø×(Ñ(ô
ð 	
r.   r    )r9   r:   r;   r   r"   r   r
   r   r=   r>   r   r   r   r8   r?   r@   s   @r-   rþ   rþ   n  sq   ø„ ð˜{õ ð Ø Øð /3ñ6
à—l‘lð6
ð Ÿ™ tÑ+ð6
ð Ð+Ñ,ð	6
ð
 
ò6
ó ó !ó ô6
r.   rþ   )rë   rÐ   rþ   )Nr—   )3Úcollections.abcr   r   r=   r   Ú r   rØ   Úactivationsr   Úbackbone_utilsr	   r
   Úmasking_utilsr   Úmodeling_layersr   Úmodeling_outputsr   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   Úutils.genericr   r   Úutils.output_capturingr   Úconfiguration_pixior   ÚModuler   rB   r>   r¾   r‚   r„   r£   r±   rÀ   rÐ   rë   rþ   Ú__all__© r.   r-   ú<module>r     s…  ð÷* /ã Ý å &Ý !ß HÝ 6Ý 9ß [Ñ [ß FÝ &ß CÑ Cß IÝ 5Ý ,ôH˜2Ÿ9™9ô Hô<D�b—i‘iô DðZ !Øñ%Ø�I‰Ið%à�<‰<ð%ð 
�‰ð%ð �<‰<ð	%ð
 —L‘L 4Ñ'ð%ð �T‰\ð%ð ð%ð Ð'Ñ(ó%ô8.)�R—Y‘Yô .)ôbˆr�y‰yô ô&%�B—I‘Iô %ô0Ð+ô ð> ô/˜?ó /ó ð/ð< ô'
Ð%ó '
ó ð'
ñT ðôô
C
�MÐ#7ó C
óð
C
òL B�r.   