+
    œ°³jÆ  ã                   ó´   € ^ RI t ^ RIHt ^RIHt ^RIHt ^RIHtH	t	H
t
HtHt ]! 4       '       d   ^ RIHt  ! R R]4      t ! R R	]	4      tRR
 ltRR ltR# )é    N)Úcenter_to_corners_format)Úis_scipy_available)ÚHungarianMatcherÚ	ImageLossÚ_set_aux_lossÚgeneralized_box_iouÚsigmoid_focal_loss)Úlinear_sum_assignmentc                   óN   a € ] tR t^t o ]P
                  ! 4       R 4       tRtV tR# )ÚDeformableDetrHungarianMatcherc           
     óp  € VR,          P                   R,          w  r4VR,          P                  ^ ^4      P                  4       pVR,          P                  ^ ^4      p\        P                  ! V Uu. uF  qwR,          NK  	  up4      p\        P                  ! V Uu. uF  qwR,          NK  	  up4      p	Rp
Rp^V
,
          W[,          ,          ^V,
          R,           P                  4       ) ,          pV
^V,
          V,          ,          VR,           P                  4       ) ,          pVR	V3,          VR	V3,          ,
          p\        P                  ! Wi^R
7      p\        \        V4      \        V	4      4      ) pV P                  V,          V P                  V,          ,           V P                  V,          ,           pVP                  W4R4      P                  4       pV Uu. uF  p\        VR,          4      NK  	  pp\        VP!                  VR4      4       UUu. uF  w  pp\#        VV,          4      NK  	  pppV UUu. uFR  w  pp\        P$                  ! V\        P&                  R7      \        P$                  ! V\        P&                  R7      3NKT  	  upp# u upi u upi u upi u uppi u uppi )zz
Differences:
- out_prob = outputs["logits"].flatten(0, 1).sigmoid() instead of softmax
- class_cost uses alpha and gamma
ÚlogitsºNé   NÚ
pred_boxesÚclass_labelsÚboxesg      Ð?g       @g:Œ0âŽyE>ºNNN)Úp)Údtypeéÿÿÿÿ)ÚshapeÚflattenÚsigmoidÚtorchÚcatÚlogÚcdistr   r   Ú	bbox_costÚ
class_costÚ	giou_costÚviewÚcpuÚlenÚ	enumerateÚsplitr
   Ú	as_tensorÚint64)ÚselfÚoutputsÚtargetsÚ
batch_sizeÚnum_queriesÚout_probÚout_bboxÚvÚ
target_idsÚtarget_bboxÚalphaÚgammaÚneg_cost_classÚpos_cost_classr    r   r!   Úcost_matrixÚsizesÚiÚcÚindicesÚjs   &&&                    Úg/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/loss/loss_deformable_detr.pyÚforwardÚ&DeformableDetrHungarianMatcher.forward   s<  € ð #*¨(Õ"3×"9Ñ"9¸"Õ"=Ñˆ
ð ˜8Õ$×,Ñ,¨Q°Ó2×:Ñ:Ó<ˆØ˜<Õ(×0Ñ0°°AÓ6ˆô —Y’Y¹7ÓC¹7°a .× 1Ð 1¹7ÑCÓDˆ
Ü—i’i±WÓ =±W° 7§ ±WÑ =Ó>ˆð ˆØˆØ˜e�)¨­Õ8¸aÀ(½lÈTÕ>Q×=VÑ=VÓ=XÐ<XÕYˆØ 1 x¥<°EÕ"9Õ:ÀÈ4Å×?TÑ?TÓ?VÐ>VÕWˆØ# A z MÕ2°^ÀAÀzÀMÕ5RÕRˆ
ô —K’K ¸Ô;ˆ	ô )Ô)AÀ(Ó)KÔMeÐfqÓMrÓsÐsˆ	ð —n‘n yÕ0°4·?±?ÀZÕ3OÕOÐRV×R`ÑR`ÐclÕRlÕlˆØ!×&Ñ& zÀÓC×GÑGÓIˆá*1Ó2©' Q”�Q�w•Z–©'ˆÐ2Ü;DÀ[×EVÑEVÐW\Ð^`ÓEaÔ;bÔcÑ;b±4°1°aÔ(¨¨1­Ö.Ñ;bˆÑcÙkrÔsÑkrÑcgÐcdÐfg”—’ ¬%¯+©+Ô6¼¿ºÈÔQV×Q\ÑQ\Ô8]Ó^ÑkrÒsÐsùò-  DùÚ =ùò& 3ùÛcùÛss   Á1JÂJ"Ç J'ÈJ,ÉAJ2© N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Úno_gradr>   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r=   r   r      s   ø‡ € Ø
‡]‚]ƒ_ñ#tó ö#tó    r   c                   óZ   a € ] tR t^;t o R t]P                  ! 4       R 4       tR tRt	V t
R# )ÚDeformableDetrImageLossc                ót   € \         P                  P                  V 4       Wn        W n        W0n        W@n        R # ©N)ÚnnÚModuleÚ__init__ÚmatcherÚnum_classesÚfocal_alphaÚlosses)r)   rR   rS   rT   rU   s   &&&&&r=   rQ   Ú DeformableDetrImageLoss.__init__<   s*   € Ü
�	‰	×Ñ˜4Ô ØŒØ&ÔØ&ÔØŽrJ   c           	     ó   € VR,          pVP                   p\        P                  ! V Uu. uF  p\        VR,          4      NK  	  upVR7      pVP	                  4       P                  R4      P                  R8„  P                  ^4      p	\        P                  P                  V	P                  4       VP                  4       4      p
RV
/pV# u upi )zÊ
Compute the cardinality error, i.e. the absolute error in the number of predicted non-empty boxes.

This is not really a loss, it is intended for logging purposes only. It doesn't propagate gradients.
r   r   )Údeviceg      à?Úcardinality_errorr   )rX   r   r'   r$   r   ÚmaxÚvaluesÚsumrO   Ú
functionalÚl1_lossÚfloat)r)   r*   r+   r;   Ú	num_boxesr   rX   r0   Útarget_lengthsÚ	card_predÚcard_errrU   s   &&&&&       r=   Úloss_cardinalityÚ(DeformableDetrImageLoss.loss_cardinalityC   s©   € ð ˜Õ"ˆØ—‘ˆÜŸšÉ'Ó)RÉ'ÀQ¬#¨a°Õ.?Ö*@É'Ñ)RÐ[aÔbˆà—^‘^Ó%×)Ñ)¨"Ó-×4Ñ4°sÑ:×?Ñ?ÀÓBˆ	Ü—=‘=×(Ñ(¨¯©Ó):¸N×<PÑ<PÓ<RÓSˆØ% xÐ0ˆØˆùò *Ss   ªCc           	     óL  € RV9  d   \        R4      hVR,          pV P                  V4      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                  ! VP                  ^ ,          VP                  ^,          VP                  ^,          ^,           .VP                  VP                  VP                  R7      pVP                  ^VP                  R4      ^4       VRRRR13,          p\        W\W@P                   ^R	7      VP                  ^,          ,          pR
V/pV# u up	ppi )zˆ
Classification loss (Binary focal loss) targets dicts must contain the key "class_labels" containing a tensor
of dim [nb_target_boxes]
r   z#No logits were found in the outputsr   r   )r   rX   )r   ÚlayoutrX   r   N)r3   r4   Úloss_cer   )ÚKeyErrorÚ_get_source_permutation_idxr   r   ÚzipÚfullr   rS   r(   rX   Úzerosr   rg   Úscatter_Ú	unsqueezer	   rT   )r)   r*   r+   r;   r`   Úsource_logitsÚidxÚtÚ_ÚJÚtarget_classes_oÚtarget_classesÚtarget_classes_onehotrh   rU   s   &&&&&          r=   Úloss_labelsÚ#DeformableDetrImageLoss.loss_labelsT   sz  € ð
 ˜7Ô"ÜÐ@ÓAÐAØ Õ)ˆà×.Ñ.¨wÓ7ˆÜ Ÿ9š9ÌCÐPWÔLaÕ%bÑLa¹y¸qÁ&À1 a¨Õ&7¸×&:Ð&:ÑLaÓ%bÓcÐÜŸšØ×Ñ Õ# T×%5Ñ%5¼U¿[¹[ÐQ^×QeÑQeô
ˆð /�sÑä %§¢Ø× Ñ  Õ# ]×%8Ñ%8¸Õ%;¸]×=PÑ=PÐQRÕ=SÐVWÕ=WÐXØ×%Ñ%Ø ×'Ñ'Ø ×'Ñ'ô	!
Ðð 	×&Ñ& q¨.×*BÑ*BÀ2Ó*FÈÔJà 5°a¸¸C¸R¸C°iÕ @Ðä˜}ÀY×VfÑVfÐnoÔpØ×!Ñ! !Õ$õ%ð 	ð ˜WÐ%ˆàˆùô+ &cs   ÁF)rT   rU   rR   rS   N)rA   rB   rC   rD   rQ   r   rE   rd   rx   rF   rG   rH   s   @r=   rL   rL   ;   s.   ø‡ € òð ‡]‚]ƒ_ñó ð÷ ð rJ   rL   c           
      ó
  aa€ \        VP                  VP                  VP                  R 7      p	. ROp
\	        V	VP
                  VP                  V
R7      pVP                  V4       / pWR&   W<R&   WLR&   RpVP                  '       d   \        Wg4      pWÜR&   V! WÁ4      oR^RVP                  /oVP                  SR	&   VP                  SR
&   VP                  SR&   VP                  '       dv   / p\        VP                  ^,
          4       FB  pTP!                  SP#                  4        UUu/ uF  w  ppVRV 2,           VbK  	  upp4       KD  	  SP!                  V4       \%        VV3R lS 4       4      pVSV3# u uppi )©r    r   r!   ©rR   rS   rT   rU   r   r   Ú
pred_masksNÚauxiliary_outputsrh   Ú	loss_bboxÚ	loss_giouÚ	loss_maskÚ	loss_dicers   c              3   ób   <"  € T F$  qS9   g   K  SV,          SV,          ,          x € K&  	  R # 5irN   r@   ©Ú.0ÚkÚ	loss_dictÚweight_dicts   & €€r=   Ú	<genexpr>Ú4DeformableDetrForSegmentationLoss.<locals>.<genexpr>›   ó)   øé € ÐT±i°ÈÑCSÔ,ˆy˜�|˜k¨!�n×,Ò,³iùó   ƒ/�/)Úlabelsr   ÚcardinalityÚmasks)r   r    r   r!   rL   Ú
num_labelsrT   ÚtoÚauxiliary_lossr   Úbbox_loss_coefficientÚgiou_loss_coefficientÚmask_loss_coefficientÚdice_loss_coefficientÚrangeÚdecoder_layersÚupdateÚitemsr\   )r   r�   rX   r   r}   ÚconfigÚoutputs_classÚoutputs_coordÚkwargsrR   rU   Ú	criterionÚoutputs_lossr~   Úaux_weight_dictr9   r†   r0   Úlossr‡   rˆ   s   &&&&&&&&,          @@r=   Ú!DeformableDetrForSegmentationLossr£   v   sƒ  ù€ ô ¨&×*;Ñ*;Àv×GWÑGWÐci×csÑcsÔt€Gâ8€FÜ'ØØ×%Ñ%Ø×&Ñ&Øô	€Ið ‡L�L�Ôà€LØ#�ÑØ!+�ÑØ!+�ÑàÐØ××ÐÜ)¨-ÓGÐØ,=Ð(Ñ)á˜,Ó/€Ià˜a ¨f×.JÑ.JÐK€KØ%×;Ñ;€K�ÑØ%×;Ñ;€K�ÑØ%×;Ñ;€K�ÑØ××ÐØˆÜ�v×,Ñ,¨qÕ0Ö1ˆAØ×"Ñ"¸{×?PÑ?PÔ?RÔ#SÑ?R±t°q¸! A¨!¨A¨3¨¥K°¢NÑ?RÒ#SÖTñ 2à×Ñ˜?Ô+äÕT±iÓTÓT€DØ�Ð-Ð-Ð-ùó	 $Ts   Ä.E?c           
      óÆ  aa€ \        VP                  VP                  VP                  R 7      p. ROp	\	        VVP
                  VP                  V	R7      p
V
P                  V4       / pRpWR&   W;R&   VP                  '       d   \        WV4      pWËR&   V
! W±4      oR^RVP                  /oVP                  SR&   VP                  '       dv   / p\        VP                  ^,
          4       FB  pTP                  SP                  4        UUu/ uF  w  ppVR	V 2,           VbK  	  upp4       KD  	  SP                  V4       \!        VV3R
 lS 4       4      pVSV3# u uppi )r{   r|   Nr   r   r~   rh   r   r€   rs   c              3   ób   <"  € T F$  qS9   g   K  SV,          SV,          ,          x € K&  	  R # 5irN   r@   r„   s   & €€r=   r‰   Ú7DeformableDetrForObjectDetectionLoss.<locals>.<genexpr>Á   r‹   rŒ   )r�   r   rŽ   )r   r    r   r!   rL   r�   rT   r‘   r’   r   r“   r”   r—   r˜   r™   rš   r\   )r   r�   rX   r   r›   rœ   r�   rž   rR   rU   rŸ   r    r~   r¡   r9   r†   r0   r¢   r‡   rˆ   s   &&&&&&&,          @@r=   Ú$DeformableDetrForObjectDetectionLossr§   Ÿ   s_  ù€ ô -Ø×$Ñ$°×0@Ñ0@ÈF×L\ÑL\ô€Gò 0€FÜ'ØØ×%Ñ%Ø×&Ñ&Øô	€Ið ‡L�L�Ôà€LØÐØ#�ÑØ!+�ÑØ××ÐÜ)¨-ÓGÐØ,=Ð(Ñ)á˜,Ó/€Ià˜a ¨f×.JÑ.JÐK€KØ%×;Ñ;€K�ÑØ××ÐØˆÜ�v×,Ñ,¨qÕ0Ö1ˆAØ×"Ñ"¸{×?PÑ?PÔ?RÔ#SÑ?R±t°q¸! A¨!¨A¨3¨¥K°¢NÑ?RÒ#SÖTñ 2à×Ñ˜?Ô+ÜÕT±iÓTÓT€DØ�Ð-Ð-Ð-ùó $Ts   ÄE)NN)r   Útorch.nnrO   Úimage_transformsr   Úutilsr   Úloss_for_object_detectionr   r   r   r   r	   Úscipy.optimizer
   r   rL   r£   r§   r@   rJ   r=   Ú<module>r­      sQ   ðÛ Ý å 7Ý &÷õ ñ ×ÒÝ4ô%tÐ%5ô %tôP8˜iô 8ôv&.öR#.rJ   