+
    UV-j8  ã                   óv  € R t ^ RIt^ RIHtHt ^ RIHt ^ RIH	t	 ^RI
Ht ^RIHtHt  ! R R]	P                  4      t ! R R]	P                  4      t ! R	 R
]	P                  4      t ! R R]	P                  4      t ! R R]	P                  4      t ! R R4      t ! R R]	P                  4      tRR R lltR# )zgSAM3 DETR Transformer Decoder matching HF Sam3DetrDecoder.

Weight keys: detector_model.detr_decoder.*
N)ÚOptionalÚTuple©ÚDETRDecoderConfig)ÚMLPÚMultiheadAttentionc                   ó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	# )ÚDETRDecoderLayeru  Single DETR decoder layer: post-norm with 3 attention stages + MLP.

Order (matching HF Sam3DetrDecoderLayer):
1. Self-attn(q=hidden+pos, k=hidden+pos, v=hidden) â†’ residual â†’ LayerNorm
2. Text cross-attn(q=hidden+pos, k=text, v=text) â†’ residual â†’ LayerNorm
3. Vision cross-attn(q=hidden+pos, k=vis+vis_pos, v=vis) â†’ residual â†’ LayerNorm
4. MLP â†’ residual â†’ LayerNorm
c                ó    <€ V ^8„  d   QhRS[ /# ©é   Úconfigr   )ÚformatÚ__classdict__s   "€Úl/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/models/sam3/decoder.pyÚ__annotate__ÚDETRDecoderLayer.__annotate__   s   ø€ ÷ Iñ IÑ0ñ Ió    c                óR  <€ \         SV `  4        VP                  p\        W!P                  4      V n        \        P                  ! W!P                  R 7      V n	        \        W!P                  4      V n
        \        P                  ! W!P                  R 7      V n        \        W!P                  4      V n        \        P                  ! W!P                  R 7      V n        \        W!P                  VP                   4      V n        \        P                  ! W!P                  R 7      V n        R# )©ÚepsN)ÚsuperÚ__init__Úhidden_sizer   Únum_attention_headsÚ	self_attnÚnnÚ	LayerNormÚlayer_norm_epsÚself_attn_layer_normÚtext_cross_attnÚtext_cross_attn_layer_normÚvision_cross_attnÚvision_cross_attn_layer_normr   Úintermediate_sizeÚ
hidden_actÚmlpÚmlp_layer_norm)Úselfr   ÚdÚ	__class__s   && €r   r   ÚDETRDecoderLayer.__init__   sÇ   ø€ Ü‰ÑÔØ×Ñˆä+¨A×/IÑ/IÓJˆŒÜ$&§L¢L°×8MÑ8MÔ$NˆÔ!ä1°!×5OÑ5OÓPˆÔÜ*,¯,ª,°q×>SÑ>SÔ*TˆÔ'ä!3°A×7QÑ7QÓ!RˆÔÜ,.¯LªL¸×@UÑ@UÔ,VˆÔ)ä�q×2Ñ2°F×4EÑ4EÓFˆŒÜ Ÿlšl¨1×2GÑ2GÔHˆÖr   c                ó
  <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  RS[ P                  RS[ P                  RS[S[ P                  ,          RS[S[ P                  ,          RS[ P                  /# )	r   Úhidden_statesÚ	query_posÚinputs_embedsÚvision_featuresÚvision_pos_encodingÚtext_cross_attn_maskÚvision_cross_attn_maskÚreturn)ÚmxÚarrayr   )r   r   s   "€r   r   r   *   s…   ø€ ÷ 0ñ 0á—x‘xð0ñ —8‘8ð0ñ —x‘xð	0ñ
 Ÿ™ð0ñ  ŸX™Xð0ñ '¡r§x¡xÕ0ð0ñ !)©¯©Õ 2ð0ñ 
�‰ñ0r   c                ó   € TpW,           p	V P                  W™V4      p
V P                  WŠ,           4      pTpW,           pV P                  W³W6R7      p
V P                  WŠ,           4      pTpW,           pWE,           pV P	                  W¼WGR7      p
V P                  WŠ,           4      pTpV P                  V4      pV P                  W�,           4      pV# )ad  
Args:
    hidden_states: (B, Q+1, D) queries + presence token at index 0
    query_pos: (B, Q+1, D) position embeddings (0 for presence token)
    inputs_embeds: (B, T, D)
    vision_features: (B, HW, D)
    vision_pos_encoding: (B, HW, D)
    text_cross_attn_mask: (B, 1, Q+1, T) cross-attention mask
    vision_cross_attn_mask: (B, H, Q+1, HW) RPB bias
)Úmask)r   r   r    r!   r"   r#   r&   r'   )r(   r-   r.   r/   r0   r1   r2   r3   ÚresidualÚqkÚattn_outÚ
q_with_posÚ
k_with_posÚmlp_outs   &&&&&&&&      r   Ú__call__ÚDETRDecoderLayer.__call__*   sæ   € ð* !ˆØÕ&ˆØ—>‘> "¨-Ó8ˆØ×1Ñ1°(Õ2EÓFˆð !ˆØ"Õ.ˆ
Ø×'Ñ'Ø }ð (ó 
ˆð ×7Ñ7¸Õ8KÓLˆð !ˆØ"Õ.ˆ
Ø$Õ:ˆ
Ø×)Ñ)Ø Oð *ó 
ˆð ×9Ñ9¸(Õ:MÓNˆð !ˆØ—(‘(˜=Ó)ˆØ×+Ñ+¨HÕ,>Ó?ˆàÐr   )r&   r'   r   r   r    r!   r"   r#   ©NN©
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r?   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r*   r   s   @@r   r	   r	      s%   ù‡ € ñ÷Ió I÷ 0÷ 0ò 0r   r	   c                   óT   a a€ ] tR t^]t oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚBoxHeadz3-layer MLP for box regression.c                ó    <€ V ^8„  d   QhRS[ /# ©r   r   ©Úint)r   r   s   "€r   r   ÚBoxHead.__annotate__`   ó   ø€ ÷ 0ñ 0¡Cñ 0r   c                óÈ   <€ \         SV `  4        \        P                  ! W4      V n        \        P                  ! W4      V n        \        P                  ! V^4      V n        R# )é   N©r   r   r   ÚLinearÚlayer1Úlayer2Úlayer3©r(   r   r*   s   &&€r   r   ÚBoxHead.__init__`   ó@   ø€ Ü‰ÑÔÜ—i’i Ó9ˆŒÜ—i’i Ó9ˆŒÜ—i’i ¨QÓ/ˆŽr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r   Úxr4   ©r5   r6   )r   r   s   "€r   r   rR   f   ó#   ø€ ÷ ñ ™"Ÿ(™(ð ¡r§x¡xñ r   c                ó¸   € \         P                  ! V P                  V4      4      p\         P                  ! V P                  V4      4      pV P	                  V4      # ©N©r   ÚrelurX   rY   rZ   ©r(   r`   s   &&r   r?   ÚBoxHead.__call__f   ó<   € Ü�GŠG�D—K‘K “NÓ#ˆÜ�GŠG�D—K‘K “NÓ#ˆØ�{‰{˜1‹~Ðr   ©rX   rY   rZ   rB   rK   s   @@r   rM   rM   ]   ó!   ù‡ € Ù)÷0ó 0÷÷ ð r   rM   c                   óT   a a€ ] tR t^lt oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚPresenceHeadz3-layer MLP for presence score.c                ó    <€ V ^8„  d   QhRS[ /# rO   rP   )r   r   s   "€r   r   ÚPresenceHead.__annotate__o   rS   r   c                óÈ   <€ \         SV `  4        \        P                  ! W4      V n        \        P                  ! W4      V n        \        P                  ! V^4      V n        R# )é   NrV   r[   s   &&€r   r   ÚPresenceHead.__init__o   r]   r   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r_   ra   )r   r   s   "€r   r   ro   u   rb   r   c                ó¸   € \         P                  ! V P                  V4      4      p\         P                  ! V P                  V4      4      pV P	                  V4      # rd   re   rg   s   &&r   r?   ÚPresenceHead.__call__u   ri   r   rj   rB   rK   s   @@r   rm   rm   l   rk   r   rm   c                   óT   a a€ ] tR t^{t oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚRefPointHeadz>Maps sine-encoded reference points to query position encoding.c                ó    <€ V ^8„  d   QhRS[ /# rO   rP   )r   r   s   "€r   r   ÚRefPointHead.__annotate__~   s   ø€ ÷ :ñ :¡Cñ :r   c                ó    <€ \         SV `  4        \        P                  ! V^,          V4      V n        \        P                  ! W4      V n        R# ©r   N©r   r   r   rW   rX   rY   r[   s   &&€r   r   ÚRefPointHead.__init__~   s4   ø€ Ü‰ÑÔä—i’i ¨a¥°Ó=ˆŒÜ—i’i Ó9ˆŽr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r_   ra   )r   r   s   "€r   r   ry   „   s#   ø€ ÷ =ñ =™"Ÿ(™(ð =¡r§x¡xñ =r   c           	     ó’   € \         P                  ! V P                  \         P                  ! V P                  V4      4      4      4      # rd   )r   rf   rY   rX   rg   s   &&r   r?   ÚRefPointHead.__call__„   s+   € Ü�wŠw�t—{‘{¤2§7¢7¨4¯;©;°q«>Ó#:Ó;Ó<Ð<r   ©rX   rY   rB   rK   s   @@r   rw   rw   {   s!   ù‡ € ÙH÷:ó :÷=÷ =ð =r   rw   c                   óT   a a€ ] tR t^ˆt oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚBoxRPBEmbedz%Box Relative Position Bias embedding.c                ó&   <€ V ^8„  d   QhRS[ RS[ /# )r   Ú	num_headsr   rP   )r   r   s   "€r   r   ÚBoxRPBEmbed.__annotate__‹   s   ø€ ÷ 8ñ 8¡#ð 8±Cñ 8r   c                ó’   <€ \         SV `  4        \        P                  ! ^V4      V n        \        P                  ! W!4      V n        R# r{   r|   )r(   r…   r   r*   s   &&&€r   r   ÚBoxRPBEmbed.__init__‹   s0   ø€ Ü‰ÑÔÜ—i’i  ;Ó/ˆŒÜ—i’i Ó7ˆŽr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   Údeltasr4   ra   )r   r   s   "€r   r   r†   �   s#   ø€ ÷ 9ñ 9™rŸx™xð 9©B¯H©Hñ 9r   c                ój   € V P                  \        P                  ! V P                  V4      4      4      # rd   )rY   r   rf   rX   )r(   rŠ   s   &&r   r?   ÚBoxRPBEmbed.__call__�   s#   € Ø�{‰{œ2Ÿ7š7 4§;¡;¨vÓ#6Ó7Ó8Ð8r   r�   rB   rK   s   @@r   rƒ   rƒ   ˆ   s!   ù‡ € Ù/÷8ó 8÷
9÷ 9ð 9r   rƒ   c                   ót   a € ] tR t^”t o Rt^€R^]P                  ,          3V 3R lR lltV 3R lR ltRt	V t
R# )	ÚSinePositionEmbeddingForBoxeszJSine position encoding for box coordinates (used in decoder conditioning).g     ˆÃ@c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# )r   Únum_pos_featsÚtemperatureÚscale)rQ   Úfloat)r   r   s   "€r   r   Ú*SinePositionEmbeddingForBoxes.__annotate__—   s)   ø€ ÷ ñ áðñ ðñ ñ	r   c                ó*   € Wn         W n        W0n        R # rd   )r�   r‘   r’   )r(   r�   r‘   r’   s   &&&&r   r   Ú&SinePositionEmbeddingForBoxes.__init__—   s   € ð +ÔØ&ÔØŽ
r   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   Úboxesr4   ra   )r   r   s   "€r   r   r”   ¡   s#   ø€ ÷ 2ñ 2¡"§(¡(ð 2©r¯x©xñ 2r   c                ó  € \         P                  ! V P                  4      P                  \         P                  4      pV P
                  ^V^,          ,          V P                  ,          ,          pVR,          V P                  ,          pVR,          V P                  ,          pVR,          V P                  ,          pVR,          V P                  ,          p. pWCWV3 F‘  pW‚,          p	\         P                  ! V	R,          4      p
\         P                  ! V	R,          4      p\         P                  ! W«.R	R7      pVP                  ! . VP                  RR
 OR	N5!  pVP                  V4       K“  	  \         P                  ! VR	R7      # )z¦Encode 4D box coords (cx, cy, w, h) into sine/cos embeddings.

Args:
    boxes: (B, Q, 4) box coordinates
Returns:
    (B, Q, num_pos_feats*4) sine/cosine embeddings
©ÚaxisN).:é    rq   N).:rq   r   N).:r   é   N).:r�   rU   N©.:rœ   Nr   ©.:rq   Nr   éÿÿÿÿéþÿÿÿ)r5   Úaranger�   ÚastypeÚfloat32r‘   r’   ÚsinÚcosÚstackÚreshapeÚshapeÚappendÚconcatenate)r(   r˜   Údim_tr`   ÚyÚwÚhÚ	encodingsÚcoordÚposÚsin_encÚcos_encÚencs   &&           r   Úencode_boxesÚ*SinePositionEmbeddingForBoxes.encode_boxes¡   s'  € ô —	’	˜$×,Ñ,Ó-×4Ñ4´R·Z±ZÓ@ˆØ× Ñ  Q¨%°1­*Õ%5¸×8JÑ8JÕ%JÕKˆð �(�O˜dŸj™jÕ(ˆØ�(�O˜dŸj™jÕ(ˆØ�(�O˜dŸj™jÕ(ˆØ�(�O˜dŸj™jÕ(ˆàˆ	Ø˜A“\ˆEØ•-ˆCÜ—f’f˜S �^Ó,ˆGÜ—f’f˜S �^Ó,ˆGÜ—(’(˜GÐ-°BÔ7ˆCØ—+’+Ð2˜sŸy™y¨¨"˜~Ð2¨rÓ2ˆCØ×Ñ˜SÖ!ñ "ô �~Š~˜i¨bÔ1Ð1r   )r�   r’   r‘   N)rC   rD   rE   rF   rG   ÚmathÚpir   r¶   rH   rI   )r   s   @r   rŽ   rŽ   ”   s/   ø‡ € ÙTð !Ø$Ø˜4Ÿ7™7•{÷	ò ÷2ö 2r   rŽ   c                   ój   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V3R lR ltRtVt	V ;t
# )
ÚDETRDecoderz5DETR Transformer Decoder matching HF Sam3DetrDecoder.c                ó    <€ V ^8„  d   QhRS[ /# r   r   )r   r   s   "€r   r   ÚDETRDecoder.__annotate__Á   s   ø€ ÷ Lñ LÑ0ñ Lr   c                ó  <€ \         SV `  4        Wn        VP                  pVP                  pVP
                  p\        VP                  4       Uu. uF  p\        V4      NK  	  upV n	        \        P                  ! W!P                  R 7      V n        \        P                  ! W24      V n        \        P                  ! V^4      V n        \        P                  ! ^V4      V n        \%        V4      V n        \        P                  ! W!P                  R 7      V n        RV n        \-        V4      V n        \1        V4      V n        \5        WB4      V n        \5        WB4      V n        \;        V^,          R7      V n        R# u upi )r   g      $@)r�   N)r   r   r   r   Únum_queriesr   ÚrangeÚ
num_layersr	   Úlayersr   r   r   Úoutput_layer_normÚ	EmbeddingÚquery_embedÚreference_pointsÚpresence_tokenrm   Úpresence_headÚpresence_layer_normÚclamp_presence_logit_max_valrM   Úbox_headrw   Úref_point_headrƒ   Úbox_rpb_embed_xÚbox_rpb_embed_yrŽ   Ú_pos_enc)r(   r   r)   Únum_qr…   Ú_r*   s   &&    €r   r   ÚDETRDecoder.__init__Á   s'  ø€ Ü‰ÑÔØŒØ×ÑˆØ×"Ñ"ˆØ×.Ñ.ˆ	ä9>¸v×?PÑ?PÔ9QÓRÑ9Q°AÔ'¨Ö/Ñ9QÑRˆŒÜ!#§¢¨a×5JÑ5JÔ!KˆÔô Ÿ<š<¨Ó1ˆÔÜ "§¢¨U°AÓ 6ˆÔô !Ÿlšl¨1¨aÓ0ˆÔÜ)¨!›_ˆÔÜ#%§<¢<°×7LÑ7LÔ#MˆÔ Ø,0ˆÔ)ô   ›
ˆŒÜ*¨1›oˆÔô  +¨9Ó8ˆÔÜ*¨9Ó8ˆÔô 6ÀAÈÅFÔKˆŽùò- Ss   ÁE=c                óB  <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  RS[S[ P                  ,          RS[S[S[S[3,          ,          RS[S[ P                  S[ P                  S[ P                  S[S[ P                  ,          3,          /# )r   r0   r/   r1   Ú	text_maskÚspatial_shaper4   )r5   r6   r   r   rQ   )r   r   s   "€r   r   r½   à   s”   ø€ ÷ f
ñ f
áŸ™ðf
ñ —x‘xðf
ñ  ŸX™Xð	f
ñ
 ™BŸH™HÕ%ðf
ñ  ¡¡c©3 h¥Õ0ðf
ñ 
‰r�x‰x™Ÿ™¡2§8¡8©X±b·h±hÕ-?Ð?Õ	@ñf
r   c                ó  € VP                   ^ ,          pV P                  P                  pV P                  P                  p\        P
                  ! V P                  P                  R,          WgV34      p	\        P                  ! \        P
                  ! V P                  P                  R,          Wg^34      4      p
\        P
                  ! V P                  P                  R,          V^V34      p\        P                  ! W¹.^R7      pRpVe5   ^VR,          P                  \        P                  4      ,
          R,          p. p. p. pV P                   EFò  pV P                  P!                  V
4      pV P#                  V4      p\        P                  ! \        P$                  ! V^V34      V.^R7      pRpVeh   V P'                  W¥4      p\        P                  ! \        P$                  ! VVP                   ^,          ^VP                   ^,          34      V.^R7      pTpV! VVVVVVVR7      pVR,          pV P)                  V4      pV P+                  V4      p\        P                  ! \-        V
4      V,           4      p\        P.                  ! V4      p
VP1                  V4       VP1                  V4       VR,          pV P3                  V P5                  V4      4      P7                  R4      p\        P8                  ! VV P:                  ) V P:                  4      pVP1                  V4       \        P<                  ! WÊ4       EKõ  	  \        P>                  ! V4      \        P>                  ! V4      \        P>                  ! V4      3# )	z¢
Returns:
    intermediate_hs: (L, B, Q, D) hidden states per layer
    intermediate_boxes: (L, B, Q, 4) reference boxes per layer
    presence_logits: (L, B, 1)
Nrš   )r.   r/   r0   r1   r2   r3   )ºNNNNNr×   g    eÍÍÁ)r×   :rq   NN)r×   :Nrq   Nr    ) r©   r   r¿   r   r5   Úbroadcast_torÅ   ÚweightÚsigmoidrÆ   rÇ   r«   r£   r¤   rÂ   rÏ   r¶   rÌ   ÚzerosÚ_compute_rpbrÃ   rË   Úinverse_sigmoidÚstop_gradientrª   rÈ   rÉ   ÚsqueezeÚcliprÊ   Úevalr§   )r(   r0   r/   r1   rÔ   rÕ   ÚBrÐ   r)   Úquery_embedsÚreference_boxesrÇ   r-   Útext_cross_maskÚintermediate_hsÚintermediate_boxesÚintermediate_presenceÚlayerÚquery_sine_embedr.   Úquery_pos_paddedÚvision_cross_maskÚrpbÚ
rpb_paddedÚquery_hsÚquery_hs_normedÚdeltaÚnew_refÚpres_hiddenÚ
pres_logits   &&&&&&                        r   r?   ÚDETRDecoder.__call__à   s  € ð ×!Ñ! !Õ$ˆØ—‘×'Ñ'ˆØ�K‰K×#Ñ#ˆä—’ t×'7Ñ'7×'>Ñ'>¸tÕ'DÀqÐQRÀmÓTˆÜŸ*š*Ü�OŠO˜D×1Ñ1×8Ñ8¸Õ>ÀÈ1ÀÓNó
ˆô Ÿš¨×)<Ñ)<×)CÑ)CÀDÕ)IÈAÈqÐRSÈ9ÓUˆô ŸšØÐ*°ô
ˆð
 ˆØÒ à�IÐ.Õ/×6Ñ6´r·z±zÓBÕBØõˆOð ˆØÐØ "Ðà—[•[ˆEà#Ÿ}™}×9Ñ9Øó Ðð ×+Ñ+Ð,<Ó=ˆIô  "Ÿ~š~Ü—’˜1˜a ˜)Ó$ iÐ0°qô Ðð
 !%ÐØÒ(Ø×'Ñ'¨ÓG�äŸ^š^Ü—X’X˜q #§)¡)¨A¥,°°3·9±9¸Qµ<Ð@ÓAÀ3ÐGÈaô�
ð %/Ð!á!ØØ*Ø+Ø /Ø$7Ø%4Ø'8ôˆMð % UÕ+ˆHØ"×4Ñ4°XÓ>ˆOð —M‘M /Ó2ˆEÜ—j’j¤°Ó!AÀEÕ!IÓJˆGÜ ×.Ò.¨wÓ7ˆOà×"Ñ" ?Ô3Ø×%Ñ% gÔ.ð (¨Õ.ˆKØ×+Ñ+Ø×(Ñ(¨Ó5óç‰g�b‹kð ô ŸšØØ×2Ñ2Ð2Ø×1Ñ1óˆJð
 "×(Ñ(¨Ô4ä�GŠG�M×3ñq !ôv �HŠH�_Ó%Ü�HŠHÐ'Ó(Ü�HŠHÐ*Ó+ð
ð 	
r   c                ój   <€ V ^8„  d   QhRS[ P                  RS[S[S[3,          RS[ P                  /# )r   rä   rÕ   r4   )r5   r6   r   rQ   )r   r   s   "€r   r   r½   H  s>   ø€ ÷ @ñ @áŸ™ð@ñ ™S¡#˜X•ð@ñ 
�‰ñ	@r   c                óæ  € Vw  r4VP                   w  rVpVR,          VR,          VR,          VR,          3w  r‰r«WŠ^,          ,
          pW›^,          ,
          pWŠ^,          ,           pW›^,          ,           p\        P                  ! WÍWï.RR7      p\        P                  ! V4      P	                  \        P
                  4      R,           V,          p\        P                  ! V4      P	                  \        P
                  4      R,           V,          pVR	,          P                  WV,          ^^4      pVP                  ^R^4      V,
          pVP                  WVV^4      pVR
,          P                  WV,          ^^4      pVP                  ^R^4      V,
          pVP                  WVV^4      pV^,          p\        P                  ! V4      \        P                  ! \        P                  ! V4      R,           4      ,          \        P                  ! ^4      ,          pV^,          p\        P                  ! V4      \        P                  ! \        P                  ! V4      R,           4      ,          \        P                  ! ^4      ,          pV P                  V4      pV P                  V4      pVR,          VR,          ,           pVP                  WVW4,          R4      pVP                  ^ ^^^4      pV# )zµCompute Box Relative Position Bias (RPB) matrix.

Args:
    reference_boxes: (B, Q, 4) in cxcywh sigmoid space
    spatial_shape: (height, width)
Returns:
    (B, num_heads, Q, HW)
rš   g      à?g      ð?).rœ   ).rq   ).r   ).r�   r    rŸ   rž   )r×   r×   r×   Nr×   )r×   r×   Nr×   r×   )r©   r5   r§   r¢   r£   r¤   r¨   ÚsignÚlog2Úabsr¸   rÍ   rÎ   Ú	transpose)r(   rä   rÕ   ÚheightÚwidthrâ   ÚQrÑ   ÚcxÚcyr®   r¯   Úx1Úy1Úx2Úy2Ú
boxes_xyxyÚcoords_hÚcoords_wÚy_boundsÚdeltas_yÚx_boundsÚdeltas_xÚdeltas_x_logÚdeltas_y_logÚrpb_xÚrpb_yrí   s   &&&                         r   rÜ   ÚDETRDecoder._compute_rpbH  s_  € ð &‰ˆØ!×'Ñ'‰ˆˆað ˜FÕ#Ø˜FÕ#Ø˜FÕ#Ø˜FÕ#ð	
‰ˆ�ð �a•%�ZˆØ�a•%�ZˆØ�a•%�ZˆØ�a•%�ZˆÜ—X’X˜r rÐ.°RÔ8ˆ
ô —I’I˜fÓ%×,Ñ,¬R¯Z©ZÓ8¸3Õ>À&ÕHˆÜ—I’I˜eÓ$×+Ñ+¬B¯J©JÓ7¸#Õ=ÀÕFˆð ˜iÕ(×0Ñ0°µ¸¸1Ó=ˆØ×#Ñ# A r¨1Ó-°Õ8ˆØ×#Ñ# A¨&°!Ó4ˆà˜iÕ(×0Ñ0°µ¸¸1Ó=ˆØ×#Ñ# A r¨1Ó-°Õ8ˆØ×#Ñ# A¨%°Ó3ˆð   !•|ˆä�GŠG�LÓ!¤B§G¢G¬B¯FªF°<Ó,@À3Õ,FÓ$GÕGÌ$Ï)Ê)ÐTUË,ÕVð 	ð   !•|ˆä�GŠG�LÓ!¤B§G¢G¬B¯FªF°<Ó,@À3Õ,FÓ$GÕGÌ$Ï)Ê)ÐTUË,ÕVð 	ð
 ×$Ñ$ \Ó2ˆØ×$Ñ$ \Ó2ˆð Ð$Õ%¨Ð.>Õ(?Õ?ˆà�k‰k˜! ¥°Ó3ˆà�m‰m˜A˜q ! QÓ'ˆàˆ
r   )rÏ   rË   rÍ   rÎ   rÊ   r   rÂ   rÃ   rÈ   rÉ   rÇ   rÅ   rÌ   rÆ   rA   )rC   rD   rE   rF   rG   r   r?   rÜ   rH   rI   rJ   rK   s   @@r   r»   r»   ¾   s3   ù‡ € Ù?÷Ló L÷>f
ò f
÷P@÷ @ð @r   r»   c                ód   € V ^8„  d   QhR\         P                  R\        R\         P                  /# )r   r`   r   r4   )r5   r6   r“   )r   s   "r   r   r   ‹  s)   € ÷ ñ ”r—x‘xð ¤eð ´r·x±xñ r   c                 ó†   € \         P                  ! W^V,
          4      p \         P                  ! V ^V ,
          ,          4      # )rq   )r5   rà   Úlog)r`   r   s   &&r   rÝ   rÝ   ‹  s-   € Ü
�Š�˜˜C�Ó €AÜ�6Š6�!�q˜1•u•+ÓÐr   )gñhãˆµøä>)rG   r¸   Útypingr   r   Úmlx.coreÚcorer5   Úmlx.nnr   r   r   Úencoderr   r   ÚModuler	   rM   rm   rw   rƒ   rŽ   r»   rÝ   © r   r   Ú<module>r     s™   ðñó
 ß "å Ý å %ß ,ôJ�r—y‘yô JôZˆb�i‰iô ô�2—9‘9ô ô
=�2—9‘9ô 
=ô	9�"—)‘)ô 	9÷'2ñ '2ôTJ�"—)‘)ô J÷Zñ r   