§
    ‚Štj1H  ã                   óÊ  — 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j%        ¦  «        Z& G d„ dej%        ¦  «        Z'	 	 d1dej%        dej(        dej(        dej(        dej(        dz  de)dz  de)dee         fd„Z* G d „ d!ej%        ¦  «        Z+ G d"„ d#ej%        ¦  «        Z, G d$„ d%ej%        ¦  «        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 d0¢Z2dS )2é    )Ú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                   óL   ‡ — 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
        ||¬¦  «        | _        d S )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       €úf/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/pixio/modeling_pixio.pyr"   zPixioPatchEmbeddings.__init__/   sÎ   ø€ Ý‰Œ×ÒÑÔÐØÔ&ˆ
ØÔ&ˆ
Ý#-¨j½(Ñ#CÔ#CÐa�Z�ZÈ*ÐV`ÐIaˆ
Ý#-¨j½(Ñ#CÔ#CÐa�Z�ZÈ*ÐV`ÐIaˆ
à& qœM¨Z¸¬]Ñ:¸zÈ!¼}ÐPZÐ[\ÔP]Ñ?]Ñ^ˆÔØ$ˆŒØ$ˆŒØ"Ô/ˆÔÝœ) FÔ$7¸Ô9KÐYcÐlvÐwÑwÔwˆŒˆˆó    Úpixel_valuesÚreturnc                 óà   — |j         d         }|| j        k    rt          d| j        › d|› d�¦  «        ‚|                      |¦  «                             d¦  «                             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<   sŽ   € Ø#Ô)¨!Ô,ˆØ˜4Ô,Ò,Ð,ÝðIØ!Ô.ðIð IØ9EðIð Ið Iñô ð ð �Š˜|Ñ,Ô,×4Ò4°QÑ7Ô7×AÒAÀ!ÀQÑGÔGÐGr.   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r"   ÚtorchÚTensorr8   Ú__classcell__©r,   s   @r-   r   r   (   s…   ø€ € € € € ðð ðx˜{ð xð xð xð xð xð xðH E¤Lð H°U´\ð Hð Hð Hð Hð Hð Hð Hð 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        | _        || _        d S )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°!°VÔ5HÈ&ÔJ\Ñ&]Ô&]Ñ^Ô^ˆŒØˆŒÝ 4°VÑ <Ô <ˆÔØÔ+Ô7ˆÝ#%¤<µ´¸A¸{ÈVÔM`Ñ?`ÐbhÔbtÑ0uÔ0uÑ#vÔ#vˆÔ Ý”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  ¦  «        }|                     d|||¦  «        }|                     dddd¦  «        }|j        }t          j
                             |                     t          j        ¦  «        |	|
fdd	¬
¦  «                             |¬¦  «        }|                     dddd¦  «                             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Ô6°qÔ9¸DÔ<MÑMˆå‰|Œ|ð 	, ¨}Ò <Ð <ÀÈ5ÂÀØÔ+Ð+àÔ2°1°1°1Ð6I¸Ô8IÐ6IÐ3IÔJˆØÔ2°1°1°1°dÔ6GÐ6IÐ6IÐ3IÔJˆàÔ˜rÔ"ˆà˜tœÑ.ˆ
Ø˜Tœ_Ñ,ˆ	å  °Ñ!3Ñ4Ô4ÐØ)×1Ò1°!Ð5GÐI[Ð]`ÑaÔaˆØ)×1Ò1°!°Q¸¸1Ñ=Ô=ˆØ&Ô,ˆÝœ-×3Ò3Ø×Ò�uœ}Ñ-Ô-Ø˜iÐ(ØØð	 4ñ 
ô 
÷
 Š"�<ˆ"Ñ
 Ô
 ð 	ð *×1Ò1°!°Q¸¸1Ñ=Ô=×BÒBÀ1ÀbÈ#ÑNÔNˆåŒy˜/¨?Ð;ÀÐCÑCÔCÐCr.   r/   c                 ób  — |j         \  }}}}| j        j        j        j        }|                      |                     |¬¦  «        ¦  «        }| j                             |dd¦  «        }t          j	        ||fd¬¦  «        }||  
                    |||¦  «        z   }|                      |¦  «        }|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Ñ$ˆ
�A�v˜uØÔ,Ô7Ô>ÔDˆØ×*Ò*¨<¯?ª?À¨?Ñ+NÔ+NÑOÔOˆ
à”^×*Ò*¨:°r¸2Ñ>Ô>ˆ
Ý”Y 
¨JÐ7¸QÐ?Ñ?Ô?ˆ
à $×"?Ò"?À
ÈFÐTYÑ"ZÔ"ZÑZˆ
à—\’\ *Ñ-Ô-ˆ
àÐr.   )r9   r:   r;   r<   r   r"   r=   r>   r[   rk   r8   r?   r@   s   @r-   rB   rB   F   s»   ø€ € € € € ðð ð˜{ð ¨tð ð ð ð ð ð ð$D°5´<ð $DÈð $DÐUXð $DÐ]bÔ]ið $Dð $Dð $Dð $DðL E¤Lð °U´\ð ð ð ð ð ð ð ð r.   rB   ç        ÚmoduleÚqueryÚkeyÚvalueÚattention_maskÚscalingrM   Úkwargsc                 óô  — |€|                      d¦  «        dz  }t          j        ||                     dd¦  «        ¦  «        |z  }|�||z   }t          j                             |dt          j        ¬¦  «                             |j	        ¦  «        }t          j         
                    ||| j        ¬¦  «        }t          j        ||¦  «        }	|	                     dd¦  «                             ¦   «         }	|	|fS )NrR   ç      à¿r3   r   )rZ   rX   )ÚpÚtrainingr   )rT   r=   Úmatmulr7   r   r^   Úsoftmaxra   r`   rX   rM   r}   Ú
contiguous)
rs   rt   ru   rv   rw   rx   rM   ry   Úattn_weightsÚattn_outputs
             r-   Úeager_attention_forwardrƒ   �   sÞ   € ð €Ø—*’*˜R‘.”. DÑ(ˆõ ”<  s§}¢}°Q¸Ñ':Ô':Ñ;Ô;¸gÑE€LàÐ!Ø# nÑ4ˆå”=×(Ò(¨¸2ÅUÄ]Ð(ÑSÔS×VÒVÐW\ÔWbÑcÔc€LÝ”=×(Ò(¨¸È6Ì?Ð(Ñ[Ô[€Lå”,˜|¨UÑ3Ô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¬¦  «        | _        d S )NÚhead_dimr{   F©ÚbiasT)r!   r"   r   Únum_attention_headsÚgetattrr)   r‡   Úattention_probs_dropout_probÚattention_dropoutrx   Ú	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È&ÔJdÑ4dÑeÔeˆŒØ!'Ô!DˆÔØ”} dÑ*ˆŒØˆŒå”i Ô 2°FÔ4NÐQUÔQ^Ñ4^ÐekÔetÐuÑuÔuˆŒÝ”i Ô 2°FÔ4NÐQUÔQ^Ñ4^ÐekÔetÐuÑuÔuˆŒÝ”i Ô 2°FÔ4NÐQUÔQ^Ñ4^ÐekÔetÐuÑuÔuˆŒÝ”i Ô :¸T¼]Ñ JÈFÔL^ÐeiÐjÑjÔjˆŒˆˆr.   NÚhidden_statesrw   ry   r0   c                 ó¬  — |j         d d…         }g |¢d‘| j        ‘R }|                      |¦  «                             |¦  «                             dd¦  «        }|                      |¦  «                             |¦  «                             dd¦  «        }|                      |¦  «                             |¦  «                             dd¦  «        }t          j        | j	        j
        t          ¦  «        }	 |	| ||||f| j        sdn| j        | j        dœ|¤Ž\  }
} |
j        g |¢d‘R Ž                      ¦   «         }
|                      |
¦  «        }
|
|fS )NrR   r   r3   rr   )rM   rx   )r4   r‡   r‘   rb   r7   r’   r“   r   Úget_interfacer   Ú_attn_implementationrƒ   r}   r�   rx   r\   r€   r”   )r+   r–   rw   ry   Úinput_shapeÚhidden_shapeÚquery_statesÚ
key_statesÚvalue_statesÚattention_interfacer‚   r�   s               r-   r8   zPixioAttention.forward¸   sw  € ð $Ô)¨#¨2¨#Ô.ˆØ8˜Ð8 bÐ8¨$¬-Ð8Ð8ˆà—{’{ =Ñ1Ô1×6Ò6°|ÑDÔD×NÒNÈqÐRSÑTÔTˆØ—[’[ Ñ/Ô/×4Ò4°\ÑBÔB×LÒLÈQÐPQÑRÔRˆ
Ø—{’{ =Ñ1Ô1×6Ò6°|ÑDÔD×NÒNÈqÐRSÑTÔTˆå(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð %8Ð$7ØØØØØð	%
ð  $œ}ÐH�C�C°$Ô2HØ”Lð	%
ð 	%
ð ð	%
ð 	%
Ñ!ˆ�\ð *�kÔ)Ð;¨;Ð;¸Ð;Ð;Ð;×FÒFÑHÔHˆØ—k’k +Ñ.Ô.ˆà˜LÐ(Ð(r.   ©N)r9   r:   r;   r   r"   r=   r>   r   r   Útupler8   r?   r@   s   @r-   r…   r…   ©   s¬   ø€ € € € € ðk˜{ð kð kð kð kð kð kð" /3ð)ð )à”|ð)ð œ tÑ+ð)ð Ð+Ô,ð	)ð
 
ˆuŒ|˜Uœ\Ð)Ô	*ð)ð )ð )ð )ð )ð )ð )ð )r.   r…   c                   óD   ‡ — e Zd Zdˆ fd„Zdej        dej        fd„Zˆ xZS )ÚPixioMLPr0   Nc                 ó~  •— t          ¦   «                              ¦   «          |j        x}}t          |j        |j        z  ¦  «        }t          j        ||d¬¦  «        | _        t          |j	        t          ¦  «        rt          |j	                 | _        n|j	        | _        t          j        ||d¬¦  «        | _        d S )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ˆ�lÝ˜fÔ0°6Ô3CÑCÑDÔDˆÝ”9˜[¨/ÀÐEÑEÔEˆŒÝ�fÔ'­Ñ-Ô-ð 	0Ý$ VÔ%6Ô7ˆDŒOˆOà$Ô/ˆDŒOÝ”9˜_¨lÀÐFÑFÔFˆŒˆˆr.   Úhidden_statec                 ó„   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|S r    )r¦   r©   rª   )r+   r®   s     r-   r8   zPixioMLP.forwardæ   s;   € Ø—x’x Ñ-Ô-ˆØ—’ |Ñ4Ô4ˆØ—x’x Ñ-Ô-ˆØÐr.   )r0   N)r9   r:   r;   r"   r=   r>   r8   r?   r@   s   @r-   r£   r£   Ú   si   ø€ € € € € ð	Gð 	Gð 	Gð 	Gð 	Gð 	Gð E¤Lð °U´\ð ð ð ð ð ð ð ð r.   r£   c                   ó^   ‡ — 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>`_.
    rr   Ú	drop_probr0   Nc                 óV   •— t          ¦   «                              ¦   «          || _        d S r    )r!   r"   r²   )r+   r²   r,   s     €r-   r"   zPixioDropPath.__init__ô   s$   ø€ Ý‰Œ×ÒÑÔÐØ"ˆŒˆˆr.   r–   c                 ó  — | 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   ¦  «        }| 	                    |¦  «        |z  S )Nrr   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ÈÑ4JÑ,KÑKˆÝœ
 5°Ô0CÈMÔL`ÐaÑaÔaˆÝœ M°IÑ$=Ñ>Ô>ˆØ× Ò  Ñ+Ô+¨mÑ;Ð;r.   c                 ó   — d| j         › �S )Nzp=)r²   )r+   s    r-   Ú
extra_reprzPixioDropPath.extra_repr  s   € Ø$�D”NÐ$Ð$Ð$r.   )rr   )r9   r:   r;   r<   Úfloatr"   r=   r>   r8   r¨   r½   r?   r@   s   @r-   r±   r±   í   s›   ø€ € € € € ðð ð#ð # %ð #°$ð #ð #ð #ð #ð #ð #ð< U¤\ð <°e´lð <ð <ð <ð <ð%˜Cð %ð %ð %ð %ð %ð %ð %ð %r.   r±   c            	       óp   ‡ — 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k    rt!          |j        ¦  «        nt	          j        ¦   «         | _        d S )N©Úepsrr   )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Ð [Ñ [Ô [ˆÔÝ!œ|¨FÔ,>ÀFÔDYÐZÑZÔZˆÔÝ˜FÑ#Ô#ˆŒÝ”z &Ô"<Ñ=Ô=ˆŒØAGÔAVÐY\ÒA\ÐA\� vÔ'<Ñ=Ô=Ð=ÕbdÔbmÑboÔboˆŒˆˆr.   Nr–   rw   ry   r0   c                 ód  — |}|                       |¦  «        } | j        ||fi |¤Ž\  }}|                      |¦  «        }|                      |¦  «        |z   }|}|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        |z   }|S r    )rÇ   rÄ   rM   rÌ   rÈ   rÉ   )r+   r–   rw   ry   Úresidualrp   s         r-   r8   zPixioLayer.forward  s¹   € ð !ˆØ×-Ò-¨mÑ<Ô<ˆØ)˜4œ>¨-¸ÐRÐRÈ6ÐRÐRÑˆ�qØŸš ]Ñ3Ô3ˆØŸš }Ñ5Ô5¸Ñ@ˆà ˆØ×,Ò,¨]Ñ;Ô;ˆØŸš Ñ/Ô/ˆØŸš ]Ñ3Ô3ˆØŸš }Ñ5Ô5¸Ñ@ˆàÐr.   r    )r9   r:   r;   r   r"   r=   r>   r   r   r8   r?   r@   s   @r-   rÀ   rÀ     s    ø€ € € € € ðp˜{ð pð pð pð pð 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                 ób  •— t          ¦   «                              |¦  «         t          |t          ¦  «        ru|j        �&t          j        |j        d| j        j        ¬¦  «         t          j        |j	        d| j        j        ¬¦  «         |j
        �t          j        |j
        ¦  «         dS dS dS )zInitialize the weightsNrr   )ÚmeanÚstd)r!   Ú_init_weightsr%   rB   rJ   ÚinitÚtrunc_normal_r   Úinitializer_rangerG   rH   Úzeros_)r+   rs   r,   s     €r-   r×   z"PixioPreTrainedModel._init_weights7  s¬   ø€ õ 	‰Œ×Ò˜fÑ%Ô%Ð%Ý�f�oÑ.Ô.ð 	/ØÔ)Ð5ÝÔ" 6Ô#=ÀCÈTÌ[ÔMjÐkÑkÔkÐ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Ð   $  s²   ø€ € € € € € àÐÐÑØÐØ$€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                 ób  •‡— t          ¦   «                              ‰¦  «         ‰| _        t          ‰¦  «        | _        t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _	        t          j
        ‰j        ‰j        ¬¦  «        | _        |                      ¦   «          d S )Nc                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS © )rÀ   ©Ú.0rp   r   s     €r-   ú
<listcomp>z'PixioModel.__init__.<locals>.<listcomp>J  s!   ø€ Ð$aÐ$aÐ$a¸A¥Z°Ñ%7Ô%7Ð$aÐ$aÐ$ar.   rÂ   )r!   r"   r   rB   rN   r   Ú
ModuleListÚrangeÚnum_hidden_layersÚlayersrÅ   r)   rÆ   Ú	layernormÚ	post_initr•   s    `€r-   r"   zPixioModel.__init__E  s•   øø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒå)¨&Ñ1Ô1ˆŒÝ”mÐ$aÐ$aÐ$aÐ$aÅÀvÔG_ÑA`ÔA`Ð$aÑ$aÔ$aÑbÔbˆŒåœ fÔ&8¸fÔ>SÐTÑTÔTˆŒà�ŠÑÔÐÐÐr.   F)Útie_last_hidden_statesNr/   rw   ry   r0   c                 óR  — |€t          d¦  «        ‚|                      |¦  «        }t          | j        ||¬¦  «        }|}| j        D ]} |||fi |¤Ž}Œ|                      |¦  «        }|d d …d | j        j        …d d …f                              d¬¦  «        }t          ||¬¦  «        S )Nz You have to specify pixel_values)r   Úinputs_embedsrw   r   rY   )Úlast_hidden_stateÚpooler_output)	r5   rN   r   r   rõ   rö   rF   rÕ   r   )r+   r/   rw   ry   Úembedding_outputr–   ÚlayerÚpooled_outputs           r-   r8   zPixioModel.forwardP  sã   € ð ÐÝÐ?Ñ@Ô@Ð@àŸ?š?¨<Ñ8Ô8ÐÝ2Ø”;Ø*Ø)ð
ñ 
ô 
ˆð
 )ˆØ”[ð 	Kð 	KˆEØ!˜E -°ÐJÐJÀ6ÐJÐJˆMˆMØŸš }Ñ5Ô5ˆØ% a a aÐ)G¨4¬?Ô+GÐ)GÈÈÈÐ&JÔK×PÒPÐUVÐPÑWÔ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Ñ2Ô2Øð -1Ø.2ð
ð 
à”l TÑ)ð
ð œ tÑ+ð
ð Ð+Ô,ð	
ð
 
$ð
ð 
ð 
ñ „^ñ 3Ô2ñ  Ôð
ð 
ð 
ð 
ð 
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                 ó6  •‡— t          ¦   «                              ‰¦  «         ˆfd„t          ‰j        dz   ¦  «        D ¦   «         | _        t          ‰¦  «        | _        t          j        ‰j	        ‰j
        ¬¦  «        | _        |                      ¦   «          d S )Nc                 ó   •— g | ]	}‰j         ‘Œ
S rî   )r)   rï   s     €r-   rñ   z*PixioBackbone.__init__.<locals>.<listcomp>w  s   ø€ Ð]Ð]Ð]°A˜VÔ/Ð]Ð]Ð]r.   r   rÂ   )r!   r"   ró   rô   Únum_featuresrë   rÑ   r   rÅ   r)   rÆ   rö   r÷   r•   s    `€r-   r"   zPixioBackbone.__init__t  sŠ   øø€ Ý‰Œ×Ò˜Ñ Ô Ð à]Ð]Ð]Ð]½¸vÔ?WÐZ[Ñ?[Ñ9\Ô9\Ð]Ñ]Ô]ˆÔÝ Ñ'Ô'ˆŒ
Ýœ fÔ&8¸fÔ>SÐTÑTÔTˆŒà�ŠÑÔÐÐÐr.   Nr/   rw   ry   r0   c                 óT  — d|d<    | j         ||fi |¤Ž}|j        }g }t          | j        |¦  «        D ]Í\  }}|| j        v r¿| j        j        r|                      |¦  «        }| j        j        r}|dd…| j         j	        j
        d…f         }|j        \  }	}
}}| j        j        }|                     |	||z  ||z  d¦  «        }|                     dddd¦  «                             ¦   «         }|                     |¦  «         ŒÎ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/   rw   ry   Úoutputr–   r  Ústager®   ro   rp   rO   rP   r$   s                 r-   r8   zPixioBackbone.forward}  s^  € ðF *.ˆÐ%Ñ&à", $¤*¨\¸>Ð"TÐ"TÈVÐ"TÐ"TˆØÔ,ˆàˆÝ#& tÔ'7¸Ñ#GÔ#Gð 
	2ð 
	2ÑˆE�<Ø˜Ô)Ð)Ð)Ø”;Ô.ð @Ø#'§>¢>°,Ñ#?Ô#?�LØ”;Ô4ð QØ#/°°°°4´:Ô3HÔ3UÐ3WÐ3WÐ0WÔ#X�LØ3?Ô3EÑ0�J  6¨5Ø!%¤Ô!7�JØ#/×#7Ò#7¸
ÀFÈjÑDXÐZ_ÐcmÑZmÐoqÑ#rÔ#r�LØ#/×#7Ò#7¸¸1¸aÀÑ#CÔ#C×#NÒ#NÑ#PÔ#P�LØ×#Ò# LÑ1Ô1Ð1øåÝ˜|Ñ,Ô,Ø Ô.ØÔ(ð
ñ 
ô 
ð 	
r.   r    )r9   r:   r;   r   r"   r   r
   r   r=   r>   r   r   r   r8   r?   r@   s   @r-   r  r  n  s¹   ø€ € € € € ð˜{ð ð ð ð ð ð ð Ø Øð /3ð6
ð 6
à”lð6
ð œ tÑ+ð6
ð Ð+Ô,ð	6
ð
 
ð6
ð 6
ð 6
ñ „^ñ !Ô ñ Ôð6
ð 6
ð 6
ð 6
ð 6
r.   r  )rë   rÐ   r  )Nrr   )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.   r-   ú<module>r     s¶  ðð* /Ð .Ð .Ð .Ð .Ð .Ð .Ð .à €€€Ø Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ &Ð &Ð &Ð &Ð &Ð &Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ðHð Hð Hð Hð H˜2œ9ñ Hô Hð Hð<Dð Dð Dð Dð D�b”iñ Dô Dð DðZ !Øð%ð %ØŒIð%àŒ<ð%ð 
Œð%ð Œ<ð	%ð
 ”L 4Ñ'ð%ð �T‰\ð%ð ð%ð Ð'Ô(ð%ð %ð %ð %ð8.)ð .)ð .)ð .)ð .)�R”Yñ .)ô .)ð .)ðbð ð ð ð ˆrŒyñ ô ð ð&%ð %ð %ð %ð %�B”Iñ %ô %ð %ð0ð ð ð ð Ð+ñ ô ð ð> ð/ð /ð /ð /ð /˜?ñ /ô /ñ „ð/ð< ð'
ð '
ð '
ð '
ð '
Ð%ñ '
ô '
ñ „ð'
ðT €ððñ ô ð
C
ð C
ð C
ð C
ð C
�MÐ#7ñ C
ô C
ñô ð
C
ðL BÐ
AÐ
A€€€r.   