+
    UV-jP  ã                   ó”   € R t ^ RIHt ^ RIHt ^ RIHt ^RIH	t	 ^RI
Ht ^RIHtHtHt ^RIHtHt  ! R R]P&                  4      tR# )	z,RF-DETR main model with weight sanitization.)ÚDictN©ÚModelConfig)ÚSegmentationHead)ÚMLPÚTransformerÚinverse_sigmoid)ÚDINOv2BackboneÚMultiScaleProjectorc                   óˆ   a a€ ] tR t^t oV3R lV 3R lltV3R lR lt]V3R lR l4       t]V3R lR l4       tR	t	Vt
V ;t# )
ÚModelc                ó    <€ V ^8„  d   QhRS[ /# )é   Úconfigr   )ÚformatÚ__classdict__s   "€Úm/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/models/rfdetr/rfdetr.pyÚ__annotate__ÚModel.__annotate__   s   ø€ ÷ &*ñ &*™{ñ &*ó    c                ó²  <€ \         SV `  4        Wn        \        VP                  4      V n        VP                  V P
                  n        VP                  V P
                  P                  n        \        VP                  4      V n
        \        VP                  4      V n        VP                  P                  pVP                  P                  p\         P"                  ! W#4      V n        \'        W"^^R7      V n        VP                  P*                  VP                  P,                  ,          p\         P.                  ! WB4      V n        \         P.                  ! V^4      V n        VP4                  '       dY   VP6                  eK   VP6                  p\9        VP:                  VP<                  VP>                  VP@                  R7      V n!        R# RV n!        R# )é   )Ú
num_layersN)Úin_dimÚ
num_blocksÚbottleneck_ratioÚdownsample_ratio)"ÚsuperÚ__init__r   r	   Úbackbone_configÚbackboneÚnum_windowsÚ
embeddingsr
   Ú_projector_configÚ	projectorr   Útransformer_configÚtransformerÚ
hidden_dimÚnum_classesÚnnÚLinearÚclass_embedr   Ú
bbox_embedÚnum_queriesÚ
group_detrÚ	EmbeddingÚ
query_featÚrefpoint_embedÚsegmentationÚsegmentation_configr   r   r   r   r   Úsegmentation_head)Úselfr   Údr(   Útotal_queriesÚscÚ	__class__s   &&    €r   r   ÚModel.__init__   sf  ø€ Ü‰ÑÔØŒô ' v×'=Ñ'=Ó>ˆŒØ$*×$6Ñ$6ˆ�‰Ô!Ø/5×/AÑ/Aˆ�‰× Ñ Ô,ô -¨V×-EÑ-EÓFˆŒô ' v×'@Ñ'@ÓAˆÔð ×%Ñ%×0Ñ0ˆØ×/Ñ/×;Ñ;ˆÜŸ9š9 QÓ4ˆÔÜ˜a A°!Ô4ˆŒð ×%Ñ%×1Ñ1°F×4MÑ4M×4XÑ4XÕXð 	ô Ÿ,š, }Ó8ˆŒÜ Ÿlšl¨=¸!Ó<ˆÔð ××Ð 6×#=Ñ#=Ò#IØ×+Ñ+ˆBÜ%5Ø—y‘yØŸ=™=Ø!#×!4Ñ!4Ø!#×!4Ñ!4ô	&ˆDÖ"ð &*ˆDÖ"r   c                ód   <€ V ^8„  d   QhRS[ P                  RS[S[S[ P                  3,          /# )r   Úpixel_valuesÚreturn)ÚmxÚarrayr   Ústr)r   r   s   "€r   r   r   7   s,   ø€ ÷ 1ñ 1¡R§X¡Xð 1±$±s¹B¿H¹H°}Õ2Eñ 1r   c                ó¢  € VP                   w  r#rEV P                  V4      pV P                  V4      pVP                   ^,          VP                   ^,          r˜VP                  W(V	,          R4      p
V P	                  V
W‰3V P
                  P                  V P                  P                  V P                  R7      w  r¼V P                  V4      pV P                  P                  P                  '       d}   V P                  V4      pVR,          VR,          ,          VR,          ,           p\        P                  ! VR,          4      VR,          ,          p\        P                  ! VV.RR7      pM5\        P                   ! V P                  V4      \#        V4      ,           4      pRVRV/pV P$                  e   V P%                  W{W434      pVVR&   V# )	z‰
Args:
    pixel_values: (B, H, W, 3) channel-last image
Returns:
    dict with pred_logits (B, Q, num_classes) and pred_boxes (B, Q, 4)
)Úspatial_shaper0   r1   r,   )ÚaxisÚpred_logitsÚ
pred_boxesÚ
pred_maskséÿÿÿÿ).:Nr   N).:r   NN)Úshaper    r$   Úreshaper&   r0   Úweightr1   r,   r+   r   r%   Úbbox_reparamr>   ÚexpÚconcatenateÚsigmoidr   r4   )r5   r<   ÚBÚHÚWÚ_ÚfeaturesÚmemoryÚhÚwÚmemory_flatÚhsÚ
ref_pointsrD   ÚdeltaÚ	pred_cxcyÚpred_whrE   ÚresultrF   s   &&                  r   Ú__call__ÚModel.__call__7   s�  € ð "×'Ñ'‰
ˆˆað —=‘= Ó.ˆð —‘ Ó)ˆØ�|‰|˜A� §¡¨Q¥ˆ1Ø—n‘n Q¨A­¨rÓ2ˆð ×)Ñ)ØØ˜&Ø—‘×-Ñ-Ø×.Ñ.×5Ñ5Ø—‘ð *ó 
‰ˆð ×&Ñ& rÓ*ˆð �;‰;×)Ñ)×6×6Ð6Ø—O‘O BÓ'ˆEà˜g�¨°GÕ)<Õ<¸zÈ'Õ?RÕRˆIÜ—f’f˜U 7�^Ó,¨z¸'Õ/BÕBˆGÜŸš¨°GÐ(<À2ÔF‰JäŸš D§O¡O°BÓ$7¼/È*Ó:UÕ$UÓVˆJð ˜;Ø˜*ð
ˆð ×!Ñ!Ò-Ø×/Ñ/°¸Q¸FÓCˆJØ#-ˆF�<Ñ àˆr   c                óz   <€ V ^8„  d   QhRS[ S[S[P                  3,          RS[ S[S[P                  3,          /# )r   Úweightsr=   )r   r@   r>   r?   )r   r   s   "€r   r   r   k   s9   ø€ ÷ Dñ D™$™s¡B§H¡H˜}Õ-ð D±$±s¹B¿H¹H°}Õ2Eñ Dr   c                ó’  € / pV P                  4        EF/  w  r#TpVP                  R4      '       d   V\        R4      R pVP                  RR4      pVP                  RR4      pVP                  RR4      pVP                  R	R
4      pVP                  RR4      pVP                  RR4      pVP                  RR4      pVP                  RR4      pVP                  RR4      pVP                  RR4      pRV9   d   Kê  RV9   d`   VP                  ^,          pVP                  RR4      pVRV WR,           &   W5^V,           WR,           &   V^V,          R WR,           &   EKP  RV9   dg   VP                  ^ ,          ^,          pVP                  RR4      pVRV WR ,           &   W5^V,           WR!,           &   V^V,          R WR",           &   EK½  VP
                  ^8X  d2   R#VP                  4       9   g   R$V9   d   VP                  ^ ^^^4      pM,VP
                  ^8X  d   R%V9   d   VP                  ^ ^^^4      pW1V&   EK2  	  V# )&z2Convert HuggingFace PyTorch weights to MLX format.zmodel.Nz&backbone.0.encoder.encoder.embeddings.zbackbone.embeddings.z)backbone.0.encoder.encoder.encoder.layer.zbackbone.encoder.layers.z%backbone.0.encoder.encoder.layernorm.zbackbone.layernorm.zbackbone.0.projector.z
projector.z.attention.attention.query.z.attention.q_proj.z.attention.attention.key.z.attention.k_proj.z.attention.attention.value.z.attention.v_proj.z.attention.output.dense.z.attention.o_proj.z.layer_scale1.lambda1z.layer_scale1z.layer_scale2.lambda1z.layer_scale2Ú
mask_tokenzself_attn.in_proj_weightÚin_proj_weightÚ zq_proj.weightzk_proj.weightzv_proj.weightzself_attn.in_proj_biasÚin_proj_biaszq_proj.biaszk_proj.biaszv_proj.biasÚconvÚspatial_features_projzpatch_embeddings.projection)ÚitemsÚ
startswithÚlenÚreplacerH   ÚndimÚlowerÚ	transpose)ra   Ú	sanitizedÚkÚvÚnew_kr6   Úbases   &      r   ÚsanitizeÚModel.sanitizej   sX  € ð ˆ	à—M‘M—O‰DˆAØˆEð ×Ñ ×)Ò)Øœc (›m˜oÐ.�ð —M‘MØ8Ø&óˆEð —M‘MØ;Ø*óˆEð —M‘MØ7Ø%óˆEð —M‘MÐ"9¸<ÓHˆEð —M‘MÐ"?ÐAUÓVˆEØ—M‘MÐ"=Ð?SÓTˆEØ—M‘MÐ"?ÐAUÓVˆEØ—M‘MÐ"<Ð>RÓSˆEð —M‘MÐ"9¸?ÓKˆEØ—M‘MÐ"9¸?ÓKˆEð ˜uÔ$Ùð *¨UÔ2Ø—G‘G˜A•J�Ø—}‘}Ð%5°rÓ:�Ø45°b°q°E�	 Õ0Ñ1Ø45¸!¸a½%°L�	 Õ0Ñ1Ø45°a¸!µe°g°J�	 Õ0Ñ1ÚØ'¨5Ô0Ø—G‘G˜A•J !•O�Ø—}‘} ^°RÓ8�Ø23°B°Q°%�	 Õ.Ñ/Ø23¸¸A½°,�	 Õ.Ñ/Ø23°A¸µE°G°*�	 Õ.Ñ/Úð �v‰v˜Œ{Ø˜%Ÿ+™+›-Ô'Ð+BÀeÔ+Kà—K‘K  1 a¨Ó+‘Ø—‘˜1”Ð!>À%Ô!GØ—K‘K  1 a¨Ó+�à �eÔñ} $ð@ Ðr   c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   Úpathr=   )r@   Úbool)r   r   s   "€r   r   r   ²   s   ø€ ÷ -ñ -™cð -©dñ -r   c                ó¨  a € RS 9   d   R# RS 9   d   R# \         ;QJ d    V 3R lR 4       F  '       g   K   RM	  RM! V 3R lR 4       4      '       d   R# \        VR4      '       dS   VP                  P                  p\         ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   R# \	        V\
        P                  4      # )	z#Control which layers get quantized.z	backbone.Frg   c              3   ó,   <"  € T F	  qS9   x € K  	  R # 5i)N© )Ú.0rq   rx   s   & €r   Ú	<genexpr>Ú(Model.quant_predicate.<locals>.<genexpr>»   s   øé € ð 
ÙV˜!�ŽIÓVùs   ƒTrJ   c              3   ó8   "  € T F  q^@,          ^ 8g  x € K  	  R# 5i)é@   Nr|   )r}   r6   s   & r   r~   r   Â   s   é € Ð.© 1�r•6˜Q–;«ùs   ‚)r0   r1   Úposition_embeddings)ÚanyÚhasattrrJ   rH   Ú
isinstancer)   r*   )rx   ÚmodulerH   s   f& r   Úquant_predicateÚModel.quant_predicate±   sŸ   ø€ ð ˜$ÔÙà�TŒ>Ùç‹3ô 
ÙVó
�3�3Š3ô 
ÙVó
÷ 
ò 
ñ ä�6˜8×$Ò$Ø—M‘M×'Ñ'ˆEß‹sÑ.©Ó.�s�sŠsÑ.©Ó.×.Ò.ÙÜ˜&¤"§)¡)Ó,Ð,r   )	r    r,   r+   r   r$   r0   r1   r4   r&   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r^   Ústaticmethodru   r‡   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r9   r   s   @@r   r   r      sK   ù‡ € ÷&*ó &*÷P1ð 1ðf ÷Dó ðDðL ÷-ó ÷-ð -r   r   )Ú__doc__Útypingr   Úmlx.coreÚcorer>   Úmlx.nnr)   r   r   r2   r   r&   r   r   r   Úvisionr	   r
   ÚModuler   r|   r   r   Ú<module>r˜      s2   ðÙ 2å å Ý å Ý *ß :Ñ :ß 7ôv-ˆB�I‰Iö v-r   