+
    UV-jÿ  ã                   óâ   € R t ^ RIHt ^ RIHt ^ RIHt ^RIH	t	  ! R R]P                  4      t ! R R]P                  4      t ! R R	]P                  4      t ! R
 R]P                  4      tR# )zsSAM3 DETR Transformer Encoder with text cross-attention fusion.

Weight keys: detector_model.detr_encoder.layers.*
)ÚOptionalN©ÚDETREncoderConfigc                   ó\   a a€ ] tR t^t oRtRV3R lV 3R llltRV3R lR lltRtVtV ;t	# )	ÚMultiheadAttentionz@Standard multi-head attention with separate q/k/v/o projections.c          	      óB   <€ V ^8„  d   QhRS[ RS[ RS[RS[S[ ,          /# )é   Úhidden_sizeÚ	num_headsÚdropoutÚkv_dim)ÚintÚfloatr   )ÚformatÚ__classdict__s   "€Úl/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/models/sam3/encoder.pyÚ__annotate__ÚMultiheadAttention.__annotate__   s7   ø€ ÷ :ñ :áð:ñ ð:ñ ð	:ñ
 ™•ñ:ó    c                ób  <€ \         SV `  4        W n        W,          V n        V P                  R,          V n        Ve   TMTp\
        P                  ! W4      V n        \
        P                  ! WA4      V n        \
        P                  ! WA4      V n	        \
        P                  ! W4      V n
        R# )g      à?Ng      à¿)ÚsuperÚ__init__r
   Úhead_dimÚscaleÚnnÚLinearÚq_projÚk_projÚv_projÚo_proj)Úselfr	   r
   r   r   Ú	__class__s   &&&&&€r   r   ÚMultiheadAttention.__init__   s{   ø€ ô 	‰ÑÔØ"ŒØ#Õ0ˆŒØ—]‘] DÕ(ˆŒ
Ø!Ò-‘°;ˆä—i’i Ó9ˆŒÜ—i’i Ó4ˆŒÜ—i’i Ó4ˆŒÜ—i’i Ó9ˆŽr   c          
      ó¬   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  RS[S[ P                  ,          RS[ P                  /# )r   ÚqueryÚkeyÚvalueÚmaskÚreturn©ÚmxÚarrayr   )r   r   s   "€r   r   r   #   sV   ø€ ÷  ñ  á�x‰xð ñ �X‰Xð ñ �x‰xð	 ñ
 ‘r—x‘xÕ ð ñ 
�‰ñ r   c                ó¸  € VP                   w  rVpVP                   ^,          pV P                  V4      P                  WVV P                  V P                  4      P                  ^ ^^^4      p	V P                  V4      P                  WXV P                  V P                  4      P                  ^ ^^^4      p
V P                  V4      P                  WXV P                  V P                  4      P                  ^ ^^^4      p\        P                  P                  WšW°P                  VR7      pVP                  ^ ^^^4      P                  WVR4      pV P                  V4      # )é   )r   r'   éÿÿÿÿ)Úshaper   Úreshaper
   r   Ú	transposer   r   r*   ÚfastÚscaled_dot_product_attentionr   r   )r    r$   r%   r&   r'   ÚBÚN_qÚ_ÚN_kÚqÚkÚvÚouts   &&&&&        r   Ú__call__ÚMultiheadAttention.__call__#   s  € ð —K‘K‰	ˆ�Ø�i‰i˜�lˆð �K‰K˜Óß‰W�Q˜TŸ^™^¨T¯]©]Ó;ß‰Y�q˜!˜Q Ó"ð 	
ð �K‰K˜Óß‰W�Q˜TŸ^™^¨T¯]©]Ó;ß‰Y�q˜!˜Q Ó"ð 	
ð �K‰K˜Óß‰W�Q˜TŸ^™^¨T¯]©]Ó;ß‰Y�q˜!˜Q Ó"ð 	
ô �g‰g×2Ñ2°1¸Ç*Á*ÐSWÐ2ÓXˆØ�m‰m˜A˜q ! QÓ'×/Ñ/°¸Ó;ˆØ�{‰{˜3ÓÐr   )r   r   r
   r   r   r   r   )g        N©N©
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r<   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r!   r   s   @@r   r   r      s!   ù‡ € ÙJ÷:õ :÷$ ÷  ò  r   r   c                   óX   a a€ ] tR t^Bt oRtV3R lV 3R lltRV3R lR lltRtVtV ;t	# )ÚDETREncoderLayera]  Single DETR encoder layer: self-attn + text cross-attn + FFN.

Weight keys per layer:
    self_attn.{q,k,v,o}_proj.{weight,bias}
    cross_attn.{q,k,v,o}_proj.{weight,bias}
    layer_norm1.{weight,bias}  (self-attn)
    layer_norm2.{weight,bias}  (cross-attn)
    layer_norm3.{weight,bias}  (FFN)
    mlp.fc1.{weight,bias}
    mlp.fc2.{weight,bias}
c                ó    <€ V ^8„  d   QhRS[ /# ©r   Úconfigr   )r   r   s   "€r   r   ÚDETREncoderLayer.__annotate__O   s   ø€ ÷ Gñ GÑ0ñ Gr   c                óþ  <€ \         SV `  4        VP                  p\        W!P                  VP
                  4      V n        \        W!P                  VP
                  4      V n        \        P                  ! W!P                  R 7      V n        \        P                  ! W!P                  R 7      V n        \        P                  ! W!P                  R 7      V n        \        W!P                  VP                   4      V n        R# ))ÚepsN)r   r   r	   r   Únum_attention_headsr   Ú	self_attnÚ
cross_attnr   Ú	LayerNormÚlayer_norm_epsÚlayer_norm1Úlayer_norm2Úlayer_norm3ÚMLPÚintermediate_sizeÚ
hidden_actÚmlp)r    rM   Údr!   s   && €r   r   ÚDETREncoderLayer.__init__O   s²   ø€ Ü‰ÑÔØ×Ñˆä+Ø×)Ñ)¨6¯>©>ó
ˆŒô -Ø×)Ñ)¨6¯>©>ó
ˆŒô Ÿ<š<¨×/DÑ/DÔEˆÔÜŸ<š<¨×/DÑ/DÔEˆÔÜŸ<š<¨×/DÑ/DÔEˆÔä�q×2Ñ2°F×4EÑ4EÓFˆŽr   c          
      ó¬   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  RS[S[ P                  ,          RS[ P                  /# ©r   ÚsrcÚposÚtext_memoryÚ	text_maskr(   r)   )r   r   s   "€r   r   rN   `   sV   ø€ ÷ (ñ (á�X‰Xð(ñ �X‰Xð(ñ —X‘Xð	(ñ
 ™BŸH™HÕ%ð(ñ 
�‰ñ(r   c                ó�  € TpV P                  V4      pWb,           pV P                  WwV4      pWX,           pRp	Ve1   ^VR,          P                  VP                  4      ,
          R,          p	TpV P	                  V4      pV P                  WcW9R7      pWX,           pTpV P                  V4      pV P                  V4      pWX,           pV# )a  Pre-norm encoder layer matching HF Sam3DetrEncoderLayer.

Args:
    src: (B, HW, D) image features
    pos: (B, HW, D) positional encoding
    text_memory: (B, T, D) text features
    text_mask: (B, T) text padding mask (True=valid, False=pad)
Returns:
    (B, HW, D) updated features
N)r'   )ºNNNNNrf   g    eÍÍÁ)rV   rR   ÚastypeÚdtyperW   rS   rX   r\   )
r    ra   rb   rc   rd   ÚresidualÚhiddenÚhidden_with_posÚsrc2Ú
cross_masks
   &&&&&     r   r<   ÚDETREncoderLayer.__call__`   sÇ   € ð$ ˆØ×!Ñ! #Ó&ˆØ �,ˆØ�~‰~˜oÀÓGˆØ�oˆð ˆ
ØÒ Ø˜iÐ(8Õ9×@Ñ@ÀÇÁÓKÕKÈtÕSˆJàˆØ×!Ñ! #Ó&ˆØ�‰˜v°KˆÓQˆØ�oˆð ˆØ×!Ñ! #Ó&ˆØ�x‰x˜ÓˆØ�oˆàˆ
r   )rS   rV   rW   rX   r\   rR   r>   r?   rH   s   @@r   rJ   rJ   B   s%   ù‡ € ñ
÷Gó G÷"(÷ (ò (r   rJ   c                   óT   a a€ ] tR t^‹t oRV3R lV 3R llltV3R lR ltRtVtV ;t# )rY   c                ó,   <€ V ^8„  d   QhRS[ RS[ RS[/# )r   r	   rZ   Úact)r   Ústr)r   r   s   "€r   r   ÚMLP.__annotate__Œ   s"   ø€ ÷ ñ ¡Cð ¹Cð Ácñ r   c                óœ   <€ \         SV `  4        \        P                  ! W4      V n        \        P                  ! W!4      V n        W0n        R # r>   )r   r   r   r   Úfc1Úfc2rq   )r    r	   rZ   rq   r!   s   &&&&€r   r   ÚMLP.__init__Œ   s4   ø€ Ü‰ÑÔÜ—9’9˜[Ó<ˆŒÜ—9’9Ð.Ó<ˆŒØŽr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   Úxr(   )r*   r+   )r   r   s   "€r   r   rs   ’   s#   ø€ ÷ ñ ™"Ÿ(™(ð ¡r§x¡xñ r   c                óÂ   € V P                  V4      pV P                  R 8X  d   \        P                  ! V4      pM\        P                  ! V4      pV P                  V4      # ©Úrelu)ru   rq   r   r|   Úgelurv   )r    ry   s   &&r   r<   ÚMLP.__call__’   sC   € Ø�H‰H�Q‹KˆØ�8‰8�vÔÜ—’˜“
‰Aä—’˜“
ˆAØ�x‰x˜‹{Ðr   )rq   ru   rv   r{   )	r@   rA   rB   rC   r   r<   rE   rF   rG   rH   s   @@r   rY   rY   ‹   s   ù‡ € ÷õ ÷÷ ð r   rY   c                   óX   a a€ ] tR t^›t oRtV3R lV 3R lltRV3R lR lltRtVtV ;t	# )ÚDETREncoderzWDETR Transformer Encoder with text fusion.

Weight keys: detector_model.detr_encoder.*
c                ó    <€ V ^8„  d   QhRS[ /# rL   r   )r   r   s   "€r   r   ÚDETREncoder.__annotate__¡   s   ø€ ÷ Sñ SÑ0ñ Sr   c                ó”   <€ \         SV `  4        \        VP                  4       Uu. uF  p\	        V4      NK  	  upV n        R # u upi r>   )r   r   ÚrangeÚ
num_layersrJ   Úlayers)r    rM   r6   r!   s   && €r   r   ÚDETREncoder.__init__¡   s:   ø€ Ü‰ÑÔÜ9>¸v×?PÑ?PÔ9QÓRÑ9Q°AÔ'¨Ö/Ñ9QÑRˆŽùÒRs   §Ac          
      ó¬   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  RS[S[ P                  ,          RS[ P                  /# r`   r)   )r   r   s   "€r   r   r‚   ¥   sV   ø€ ÷ ñ á�X‰Xðñ �X‰Xðñ —X‘Xð	ñ
 ™BŸH™HÕ%ðñ 
�‰ñr   c                ón   € TpV P                    F"  pV! WRW44      p\        P                  ! V4       K$  	  V# )zÜ
Args:
    src: (B, HW, D) flattened multi-scale features
    pos: (B, HW, D) positional encoding
    text_memory: (B, T, D) text features
    text_mask: (B, T) text padding mask
Returns:
    (B, HW, D) encoded features
)r†   r*   Úeval)r    ra   rb   rc   rd   ÚoutputÚlayers   &&&&&  r   r<   ÚDETREncoder.__call__¥   s5   € ð  ˆØ—[”[ˆEÙ˜6¨Ó?ˆFÜ�GŠG�FŽOñ !ð ˆr   )r†   r>   r?   rH   s   @@r   r€   r€   ›   s%   ù‡ € ñ÷
Só S÷÷ ò r   r€   )rD   Útypingr   Úmlx.coreÚcorer*   Úmlx.nnr   rM   r   ÚModuler   rJ   rY   r€   © r   r   Ú<module>r”      s\   ðñõ
 å Ý å %ô1 ˜Ÿ™ô 1 ôhF�r—y‘yô FôRˆ"�)‰)ô ô �"—)‘)ö r   