+
    QV-j¬/  ã                   ó’   € ^ RI t ^ RIHu Ht ^RIHt ^RIHtH	t	H
t
 ^RIHt ]! 4       '       d   ^ RIHt  ! R R]4      tR	R ltR# )
é    N)Úis_vision_available)Ú	DFineLossÚ_set_aux_lossÚ_set_aux_loss2)Úbox_iou)Úcenter_to_corners_formatc                   óP   a a€ ] tR t^t oV 3R ltR tR tR tV 3R ltRt	Vt
V ;t# )Ú
Deimv2Lossc           
     ó  <€ \         SV `  V4       R VP                  RVP                  RVP                  RVP
                  RVP                  /V n        . ROV n        VP                  V n	        VP                  V n
        R# )Úloss_malÚ	loss_bboxÚ	loss_giouÚloss_fglÚloss_ddfN)ÚmalÚboxesÚlocal)ÚsuperÚ__init__Úweight_loss_malÚweight_loss_bboxÚweight_loss_giouÚweight_loss_fglÚweight_loss_ddfÚweight_dictÚlossesÚ	mal_alphaÚuse_dense_one_to_one)ÚselfÚconfigÚ	__class__s   &&€Ún/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/transformers/loss/loss_deimv2.pyr   ÚDeimv2Loss.__init__   su   ø€ Ü‰Ñ˜Ô à˜×.Ñ.Ø˜×0Ñ0Ø˜×0Ñ0Ø˜×.Ñ.Ø˜×.Ñ.ð
ˆÔò 0ˆŒØ×)Ñ)ˆŒØ$*×$?Ñ$?ˆÖ!ó    c           	     ó  € V P                  V4      pVR,          V,          p\        P                  ! \        W#4       UUU	u. uF  w  pw  r‰VR,          V	,          NK  	  up	pp^ R7      p
\	        \        V4      \        V
4      4      w  r¸\        P                  ! V4      P                  4       pVR,          p\        P                  ! \        W#4       UUU	u. uF  w  pw  r‰VR,          V	,          NK  	  up	pp4      p\        P                  ! VP                  R,          V P                  \        P                  VP                  R7      pWÞV&   \        P                  ! WàP                  ^,           R7      R	R
R13,          p\        P                  ! WìP                   R7      pVP#                  VP                   4      VV&   VP%                  R4      V,          p\        P&                  ! V4      P                  4       pVP)                  V P*                  4      pV P,                  eC   V P,                  VP)                  V P*                  4      ,          ^V,
          ,          V,           pM0VP)                  V P*                  4      ^V,
          ,          V,           p\        P.                  ! VVVRR7      pVP1                  ^4      P3                  4       VP                  ^,          ,          V,          pRV/# u up	ppi u up	ppi )z¢Compute the Matching Aware Loss (MAL), which uses IoU-weighted soft labels
instead of hard one-hot targets, with focal-style weighting controlled by `mal_alpha`.
Ú
pred_boxesr   ©ÚdimÚlogitsÚclass_labels:Né   N©ÚdtypeÚdevice)Únum_classes.N)r-   Únone)ÚweightÚ	reductionr   éÿÿÿÿ)Ú_get_source_permutation_idxÚtorchÚcatÚzipr   r   ÚdiagÚdetachÚfullÚshaper/   Úint64r.   ÚFÚone_hotÚ
zeros_liker-   ÚtoÚ	unsqueezeÚsigmoidÚpowÚgammar   Ú binary_cross_entropy_with_logitsÚmeanÚsum)r   ÚoutputsÚtargetsÚindicesÚ	num_boxesÚidxÚ	src_boxesÚtÚ_ÚiÚtarget_boxesÚiousÚ
src_logitsÚtarget_classes_originalÚtarget_classesÚtargetÚtarget_score_originalÚtarget_scoreÚ
pred_scorer1   Úlosss   &&&&&                r"   Úloss_labels_malÚDeimv2Loss.loss_labels_mal*   sU  € ð ×.Ñ.¨wÓ7ˆà˜LÕ)¨#Õ.ˆ	Ü—y’yÄÀWÔAVÕ!WÑAV±I°A±v¸ ! G¥*¨Q§- -ÑAVÓ!WÐ]^Ô_ˆÜÔ2°9Ó=Ô?WÐXdÓ?eÓf‰ˆÜ�zŠz˜$Ó×&Ñ&Ó(ˆà˜XÕ&ˆ
Ü"'§)¢)ÔSVÐW^ÔShÕ,iÑShÁiÀaÉÈ!¨Q¨~Õ->¸q×-AÐ-AÑShÓ,iÓ"jÐÜŸšØ×Ñ˜RÕ  $×"2Ñ"2¼%¿+¹+Èj×N_ÑN_ô
ˆð 6�sÑÜ—’˜>×7GÑ7GÈ!Õ7KÔLÈSÐRUÐSUÐRUÈXÕVˆä %× 0Ò 0°×GWÑGWÔ XÐØ%)§W¡WÐ-B×-HÑ-HÓ%IÐ˜cÑ"Ø,×6Ñ6°rÓ:¸VÕCˆä—Y’Y˜zÓ*×1Ñ1Ó3ˆ
Ø#×'Ñ'¨¯
©
Ó3ˆØ�>‰>Ò%Ø—^‘^ j§n¡n°T·Z±ZÓ&@Õ@ÀAÈÅJÕOÐRXÕX‰Fà—^‘^ D§J¡JÓ/°1°vµ:Õ>ÀÕGˆFä×1Ò1°*¸lÐSYÐekÔlˆØ�y‰y˜‹|×ÑÓ! J×$4Ñ$4°QÕ$7Õ7¸)ÕCˆØ˜DÐ!Ð!ùô3 "Xùô
 -js   ÁK3ÃK:c                ó  € . pV Fˆ  p\        VP                  4       VP                  4       4       UUu. uFQ  w  rV\        P                  ! V^ ,          V^ ,          .4      \        P                  ! V^,          V^,          .4      3NKS  	  pppKŠ  	  V Uu. uF8  p\        P                  ! V^ ,          R,          V^,          R,          .^4      NK:  	  up EF%  p\        P                  ! VR^ R7      w  rš\        P
                  ! V
RR7      pW›,          p/ pV F=  pV^ ,          P                  4       V^,          P                  4       ppWý9  g   K9  VWß&   K?  	  \        P                  ! \        VP                  4       4      VP                  R7      p\        P                  ! \        VP                  4       4      VP                  R7      pVP                  VP                  4       VP                  4       34       EK(  	  V# u uppi u upi )r   T)Úreturn_countsr(   )Ú
descending)r.   )ºNNNN)r7   Úcopyr5   r6   ÚuniqueÚargsortÚitemÚtensorÚlistÚkeysr.   ÚvaluesÚappendÚlong)r   rJ   Úindices_aux_listÚresultsÚindices_auxÚidx1Úidx2rL   Úindexrb   ÚcountsÚcount_sort_indicesÚunique_sortedÚcolumn_to_rowÚidx_pairÚrow_idxÚcol_idxÚ
final_rowsÚ
final_colss   &&&                r"   Ú_get_dense_o2o_indicesÚ!Deimv2Loss._get_dense_o2o_indicesL   s¢  € ØˆÛ+ˆKô #& g§l¡l£n°k×6FÑ6FÓ6HÔ"Iôá"I‘J�Dô —’˜D �G T¨!¥WÐ-Ó.´·	²	¸4À½7ÀDÈÅGÐ:LÓ0MÓNÙ"Ið ñ ‰Gñ ,ñ SZÓZÑRYÈ3”e—i’i  Q¥¨¥°#°aµ&¸µ/Ð BÀAÖFÑRYÕZˆEÜ"Ÿ\š\¨%¸tÈÔK‰NˆFÜ!&§¢¨vÀ$Ô!GÐØ"Õ6ˆMØˆMÛ)�Ø#+¨A¥;×#3Ñ#3Ó#5°xÀµ{×7GÑ7GÓ7I˜�ØÖ/Ø-4�MÓ*ñ *ô Ÿš¤d¨=×+=Ñ+=Ó+?Ó&@ÈÏÉÔVˆJÜŸš¤d¨=×+?Ñ+?Ó+AÓ&BÈ5Ï<É<ÔXˆJØ�N‰N˜JŸO™OÓ-¨z¯©Ó/@ÐA×Bñ [ð ˆùó#ùò
 [s   ³AHÂ>Hc                óÞ   € R V P                   RV P                  RV P                  RV P                  RV P                  RV P
                  /pW9  d   \        RV R24      hWa,          ! W#WE4      # )Úcardinalityr   r   ÚfocalÚvflr   zLoss z not supported)Úloss_cardinalityÚ
loss_localÚ
loss_boxesÚloss_labels_focalÚloss_labels_vflr[   Ú
ValueError)r   rZ   rH   rI   rJ   rK   Úloss_maps   &&&&&& r"   Úget_lossÚDeimv2Loss.get_lossb   sr   € à˜4×0Ñ0Ø�T—_‘_Ø�T—_‘_Ø�T×+Ñ+Ø�4×'Ñ'Ø�4×'Ñ'ð
ˆð ÔÜ˜u T F¨.Ð9Ó:Ð:ØŽ~˜g°ÓCÐCr$   c           
     ó	  <€ V P                   '       g   \        SV `	  W4      # VP                  4        UUu/ uF  w  r4RV9  g   K  W4bK  	  pppV P	                  WR4      p\        R V 4       4      p\        P                  ! V.\        P                  \        \        VP                  4       4      4      P                  R7      p\        P                  ! V^R7      P                  4       p. p. p	RV9   dD   VR,           F6  p
V P	                  W¢4      pVP                  V4       V	P                  V4       K8  	  V P!                  Wi4      p\        R V 4       4      p\        P                  ! V.\        P                  \        \        VP                  4       4      4      P                  R7      p\        P                  ! V^R7      P                  4       p/ pV P"                   Fˆ  pVR9   pV'       d   TMTpV'       d   TMTpV P%                  WñVVV4      pV Uu/ uF7  q3V P&                  9   g   K  VVV,          V P&                  V,          ,          bK9  	  ppVP)                  V4       KŠ  	  RV9   dê   \+        VR,          4       FÓ  w  pp
V P"                   F½  pVR9   pV'       d   TMVV,          pV'       d   TMTpV P%                  WúVVV4      pV Uu/ uF7  q3V P&                  9   g   K  VVV,          V P&                  V,          ,          bK9  	  ppVP                  4        UUu/ uF  w  r4VRV 2,           VbK  	  pppVP)                  V4       K¿  	  KÕ  	  RV9   Ed   RV9  d   \-        R	4      hV P/                  VR,          V4      pWqR,          R
,          ,          p\+        VR,          4       F¯  w  pp
V P"                   F™  pV P%                  WúVVV4      pV Uu/ uF7  q3V P&                  9   g   K  VVV,          V P&                  V,          ,          bK9  	  ppVP                  4        UUu/ uF  w  r4VRV 2,           VbK  	  pppVP)                  V4       K›  	  K±  	  V# u uppi u upi u upi u uppi u upi u uppi )aj  
This performs the loss computation.

Args:
     outputs (`dict`, *optional*):
        Dictionary of tensors, see the output specification of the model for the format.
     targets (`list[dict]`, *optional*):
        List of dicts, such that `len(targets) == batch_size`. The expected keys in each dict depends on the
        losses applied, see each loss' doc.
Úauxiliary_outputsc              3   óF   "  € T F  p\        VR ,          4      x € K  	  R# 5i)r*   N©Úlen)Ú.0rN   s   & r"   Ú	<genexpr>Ú%Deimv2Loss.forward.<locals>.<genexpr>‚   s   é € Ð@¹°1œ˜A˜nÕ-×.Ð.»ùó   ‚!r,   )Úminc              3   óF   "  € T F  p\        V^ ,          4      x € K  	  R# 5i)r   NrŒ   )rŽ   Úxs   & r"   r�   r�   ‘   s   é € Ð9©j¨œ3˜q �tŸ9˜9«jùr‘   Ú_aux_Údn_auxiliary_outputsÚdenoising_meta_valuesz}The output must have the 'denoising_meta_values` key. Please, ensure that 'outputs' includes a 'denoising_meta_values' entry.Údn_num_groupÚ_dn_)r   r   )r   r   ÚforwardÚitemsÚmatcherrG   r5   Ú	as_tensorÚfloatÚnextÚiterrh   r.   Úclamprd   ri   rz   r   r‡   r   ÚupdateÚ	enumerater…   Úget_cdn_matched_indices)r   rH   rI   ÚkÚvÚoutputs_without_auxrJ   rK   Úcached_indicesrk   rŠ   Úaux_indicesÚ
indices_goÚnum_boxes_gor   rZ   Ú	use_unionÚ
indices_inÚnum_boxes_inÚl_dictrP   Ú
dn_indicesÚdn_num_boxesr!   s   &&&                    €r"   rš   ÚDeimv2Loss.forwardo   s  ø€ ð ×(×(Ð(Ü‘7‘? 7Ó4Ð4ð 18·±´Ô`±©¨ÐCVÐ^_ÑC_œt˜qšt±ÐÑ`Ø—,‘,Ð2Ó<ˆô Ñ@¹Ó@Ó@ˆ	Ü—O’O Y K´u·{±{Ì4ÔPTÐU\×UcÑUcÓUeÓPfÓKg×KnÑKnÔoˆ	Ü—K’K 	¨qÔ1×6Ñ6Ó8ˆ	ð ˆØÐØ 'Ô)Ø%,Ð-@×%AÐ%AÐ!Ø"Ÿl™lÐ+<ÓF�Ø×%Ñ% kÔ2Ø ×'Ñ'¨Ö4ñ &Bð ×0Ñ0°ÓKˆ
ÜÑ9©jÓ9Ó9ˆÜ—’¨ ~¼U¿[¹[ÔQUÔVZÐ[b×[iÑ[iÓ[kÓVlÓQm×QtÑQtÔuˆÜ—{’{ <°QÔ7×<Ñ<Ó>ˆð ˆØ—K”KˆDØÐ 2Ñ2ˆIß'0™°gˆJß+4™<¸)ˆLØ—]‘] 4°'¸:À|ÓTˆFÙBHÓbÁ&¸QÐQU×QaÑQaÑLaÔ8�a˜ � T×%5Ñ%5°aÕ%8Õ8Ò8Á&ˆFÐbØ�M‰M˜&Ö!ñ  ð  'Ô)Ü(1°'Ð:MÕ2NÖ(OÑ$�Ð$Ø ŸKœK�DØ $Ð(:Ñ :�Iß/8¡¸nÈQÕ>O�Jß3<¡<À)�LØ!Ÿ]™]¨4ÀGÈZÐYeÓf�FÙJPÓjÉ&ÀQÐY]×YiÑYiÑTiÔ@˜a ¨¥¨T×-=Ñ-=¸aÕ-@Õ!@Ò@É&�FÐjØ=C¿\¹\¼^ÔL¹^±T°Q˜a E¨!¨ +�o¨qÒ0¹^�FÑLØ—M‘M &Ö)ó (ñ )Pð " WÕ,Ø&¨gÔ5Ü ð^óð ð ×5Ñ5°gÐ>UÕ6VÐX_Ó`ˆJØ$Ð/FÕ'GÈÕ'WÕWˆLÜ(1°'Ð:PÕ2QÖ(RÑ$�Ð$Ø ŸKœK�DØ!Ÿ]™]¨4ÀGÈZÐYeÓf�FÙJPÓjÉ&ÀQÐY]×YiÑYiÑTiÔ@˜a ¨¥¨T×-=Ñ-=¸aÕ-@Õ!@Ò@É&�FÐjØ<B¿L¹L¼NÔK¹N±D°A˜a D¨¨ *�n¨aÒ/¹N�FÑKØ—M‘M &Ö)ó	 (ñ )Sð ˆùó{ aùò< cùò kùÛLùò kùÛKs;   ¶Q-ÁQ-ÈQ3È0&Q3ËQ8Ë.&Q8Ì)Q=
Ï%RÏ<&RÐ7R
)r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r[   rz   r‡   rš   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r!   Ú__classdict__s   @@r"   r
   r
      s(   ù‡ € õ@ò "òDò,D÷Lõ Lr$   r
   c           
      óh  € \        V4      pVP                  V4       R V RVP                  ^ ^R7      /pRpVP                  '       EdF   V	eû   \        P
                  ! VP                  ^ ^R7      V	R,          ^R7      w  pp\        P
                  ! WYR,          ^R7      w  pp\        P
                  ! W	R,          ^R7      w  pp\        P
                  ! W9R,          ^R7      w  pp\        P
                  ! W©R,          ^R7      w  pp\        P
                  ! W¹R,          ^R7      w  ppVVR &   VP                  ^ ^R7      VR&   MVP                  ^ ^R7      pTpT
pTp\        VRRR
13,          P                  ^ ^4      VRRR
13,          P                  ^ ^4      VRRR
13,          P                  ^ ^4      VRRR
13,          P                  ^ ^4      VR,          VR,          4      pWþR&   VR,          P                  \        V.VP                  ^ ^R7      .4      4       V	eh   \        XP                  ^ ^4      XP                  ^ ^4      XP                  ^ ^4      XP                  ^ ^4      VR,          VR,          4      pVVR&   WžR	&   V! Wá4      p\        VP                  4       4      pVVV3# )r)   r&   )r’   ÚmaxNÚdn_num_splitr'   r`   rŠ   r–   r—   r3   )r`   r3   )r
   r@   r¡   Úauxiliary_lossr5   Úsplitr   Ú	transposeÚextendr   rG   rh   )r)   Úlabelsr.   r&   r    Úoutputs_classÚoutputs_coordÚenc_topk_logitsÚenc_topk_bboxesr—   Úpredicted_cornersÚinitial_reference_pointsÚkwargsÚ	criterionÚoutputs_lossrŠ   Údn_out_coordÚnormal_out_coordÚdn_out_classÚnormal_out_classrO   Únormal_logitsÚnormal_pred_boxesÚdn_out_cornersÚout_cornersÚdn_out_refsÚout_refsr–   Ú	loss_dictrZ   s   &&&&&&&&&&&&,                 r"   ÚDeimv2ForObjectDetectionLossr×   ¾   sÓ  € ô ˜6Ó"€IØ‡L�L�Ôà˜f l°J×4DÑ4DÈÐPQÐ4DÓ4RÐS€LØÐà××ÑØ Ò,Ü-2¯[ª[Ø×#Ñ#¨¨qÐ#Ó1Ð3HÈÕ3XÐ^_ô.Ñ*ˆLÐ*ô .3¯[ª[¸Ð^lÕHmÐstÔ-uÑ*ˆLÐ*ô  %Ÿ{š{¨6ÈÕ3XÐ^_Ô`ÑˆAˆ}Ü#(§;¢;¨zÐQ_Õ;`ÐfgÔ#hÑ ˆAÐ Ü*/¯+ª+Ð6GÐ_mÕInÐtuÔ*vÑ'ˆN˜KÜ$)§K¢KÐ0HÐ`nÕJoÐuvÔ$wÑ!ˆK˜à%2ˆL˜Ñ"Ø):×)@Ñ)@ÀQÈAÐ)@Ó)NˆL˜Ò&à,×2Ñ2°q¸aÐ2Ó@ÐØ,ÐØ+ˆKØ/ˆHä*Ø˜Q   ˜VÕ$×.Ñ.¨q°!Ó4Ø˜Q   ˜VÕ$×.Ñ.¨q°!Ó4Ø˜˜3˜B˜3˜Õ×)Ñ)¨!¨QÓ/Ø�Q˜˜˜�VÕ×&Ñ& q¨!Ó,Ø˜ÕØ˜UÕ#ó
Ðð ->Ð(Ñ)ØÐ(Õ)×0Ñ0Ü˜?Ð+¨o×.CÑ.CÈÈqÐ.CÓ.QÐ-RÓSô	
ð !Ò,Ü#1Ø×&Ñ& q¨!Ó,Ø×&Ñ& q¨!Ó,Ø×(Ñ(¨¨AÓ.Ø×%Ñ% a¨Ó+Ø˜uÕ%Ø˜UÕ#ó$Ð ð 4HˆLÐ/Ñ0Ø4IÐ0Ñ1á˜,Ó/€Iäˆy×ÑÓ!Ó"€DØ�Ð-Ð-Ð-r$   )NNNNNNN)r5   Útorch.nn.functionalÚnnÚ
functionalr=   Úutilsr   Úloss_d_finer   r   r   Úloss_for_object_detectionr   Útransformers.image_transformsr   r
   r×   © r$   r"   Ú<module>rà      s?   ðó  ß Ð å 'ß AÑ AÝ .ñ ×ÒÝFô_�ô _öDG.r$   