+
    œ°³jË� ã                   ó¦  € ^ RI t ^ RIHt ^ RIHt ^ RIt^ RIHt ^ RIHu H	t
 ^ RIHt ^RIHt ^RIHt ^RIHt ^RIHtHt ^R	IHt ^R
IHt ^RIHtHt ^RIHt ^RIH t  ^RI!H"t"H#t#H$t$H%t% ^RI&H't'H(t( ^RI)H*t*H+t+ ^RI,H-t- ]#! RR7      ] ! R R]4      4       4       t.]#! RR7      ] ! R R]4      4       4       t/]#! RR7      ] ! R R]4      4       4       t0]! R4       ! R R]Pb                  4      4       t2 ! R R ]Pb                  4      t3 ! R! R"]Pb                  4      t4 ! R# R$]Pb                  4      t5RjR% R& llt6 ! R' R(]Pb                  4      t7 ! R) R*]Pb                  4      t8 ! R+ R,]Pb                  4      t9 ! R- R.]Pb                  4      t: ! R/ R0]Pb                  4      t; ! R1 R2]Pb                  4      t<RkR3 R4 llt= ! R5 R6]Pb                  4      t> ! R7 R8]Pb                  4      t?R9R:R;R]P€                  3R< R= lltA ! R> R?]Pb                  4      tB ! R@ RA]Pb                  4      tC ! RB RC]Pb                  4      tD ! RD RE]Pb                  4      tE ! RF RG]Pb                  4      tF ! RH RI]Pb                  4      tG]# ! RJ RK]4      4       tH ! RL RM]Pb                  4      tIRN tJ ! RO RP]H4      tK ! RQ RR]H4      tL ! RS RT]H4      tMRlRU RV lltN ! RW RX]H4      tORmRY ltPRZ R[ ltQR\ R] ltR ! R^ R_]H4      tSRnR` ltT]#! RaR7       ! Rb Rc]H4      4       tU]#! RdR7      ] ! Re Rf]4      4       4       tV]#! RgR7       ! Rh Ri]H4      4       tW. RoOtXR# )pé    N)ÚCallable)Ú	dataclass)ÚTensor)Úinitialization)ÚACT2CLS)Úload_backbone)Úcenter_to_corners_formatÚcorners_to_center_format)Úuse_kernel_forward_from_hub)ÚModelOutput)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)Ú#compile_compatible_method_lru_cache)ÚTransformersKwargsÚauto_docstringÚtorch_compilable_checkÚ	torch_int)Úcan_return_tupleÚmerge_with_config_defaults)ÚOutputRecorderÚcapture_outputs©ÚDeimv2Configa&  
    Base class for outputs of the Deimv2Decoder. This class adds two attributes to
    BaseModelOutputWithCrossAttentions, namely:
    - a stacked tensor of intermediate decoder hidden states (i.e. the output of each decoder layer)
    - a stacked tensor of intermediate reference points.
    )Úcustom_introc                   óT   a € ] tR t^-t o RtRtRtRtRtRt	Rt
RtRtRtV 3R ltRtV tR# )ÚDeimv2DecoderOutputaå  
intermediate_hidden_states (`torch.FloatTensor` of shape `(batch_size, config.decoder_layers, num_queries, hidden_size)`):
    Stacked intermediate hidden states (output of each layer of the decoder).
intermediate_logits (`torch.FloatTensor` of shape `(batch_size, config.decoder_layers, sequence_length, config.num_labels)`):
    Stacked intermediate logits (logits of each layer of the decoder).
intermediate_reference_points (`torch.FloatTensor` of shape `(batch_size, config.decoder_layers, sequence_length, hidden_size)`):
    Stacked intermediate reference points (reference points of each layer of the decoder).
intermediate_predicted_corners (`torch.FloatTensor` of shape `(batch_size, config.decoder_layers, num_queries, 4)`):
    Stacked intermediate predicted corners (predicted corners of each layer of the decoder).
initial_reference_points (`torch.FloatTensor` of shape `(batch_size, config.decoder_layers, num_queries, 4)`):
    Stacked initial reference points (initial reference points of each layer of the decoder).
cross_attentions (`tuple(torch.FloatTensor)`, *optional*, returned when `output_attentions=True` and `config.add_cross_attention=True` is passed or when `config.output_attentions=True`):
    Tuple of `torch.FloatTensor` (one for each layer) of shape `(batch_size, num_heads, sequence_length,
    sequence_length)`. Attentions weights of the decoder's cross-attention layer, after the attention softmax,
    used to compute the weighted average in the cross-attention heads.
Nc                óè  <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R	&   S[S[ P                  ,          R,          ;R
&   # )é   NÚlast_hidden_stateÚintermediate_hidden_statesÚintermediate_logitsÚintermediate_reference_pointsÚintermediate_predicted_cornersÚinitial_reference_pointsÚhidden_statesÚ
attentionsÚcross_attentions)ÚtorchÚFloatTensorÚtuple)ÚformatÚ__classdict__s   "€Úk/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/deimv2/modeling_deimv2.pyÚ__annotate__Ú Deimv2DecoderOutput.__annotate__-   sô   ø‡ ‚ ñ6 ×(Ñ(¨4Õ/Ñ6ñ7 ñ8 !&× 1Ñ 1°DÕ 8Ñ?ñ9 ñ: ×*Ñ*¨TÕ1Ñ8ñ; ñ< $)×#4Ñ#4°tÕ#;ÑBñ= ñ> %*×$5Ñ$5¸Õ$<ÑCñ? ñ@ $×/Ñ/°$Õ6Ñ=ñA ñB ™×*Ñ*Õ+¨dÕ2Ñ9ñC ñD ‘e×'Ñ'Õ(¨4Õ/Ñ6ñE ñF ™E×-Ñ-Õ.°Õ5Ñ<òG ó    © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r    r!   r"   r#   r$   r%   r&   r'   r(   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r-   s   @r.   r   r   -   sH   ø‡ € ñð" 37ÐØ;?ÐØ48ÐØ>BÐ!Ø?CÐ"Ø9=ÐØ59€MØ26€JØ8<Ð÷G ƒ r1   r   zF
    Base class for outputs of the RT-DETR encoder-decoder model.
    c                   óx   a € ] tR t^St o RtRtRtRtRtRt	Rt
RtRtRtRtRtRtRtRtRtRtRtRtV 3R ltRtV tR# )ÚDeimv2ModelOutputa
  
last_hidden_state (`torch.FloatTensor` of shape `(batch_size, num_queries, hidden_size)`):
    Sequence of hidden-states at the output of the last layer of the decoder of the model.
intermediate_hidden_states (`torch.FloatTensor` of shape `(batch_size, config.decoder_layers, num_queries, hidden_size)`):
    Stacked intermediate hidden states (output of each layer of the decoder).
intermediate_logits (`torch.FloatTensor` of shape `(batch_size, config.decoder_layers, sequence_length, config.num_labels)`):
    Stacked intermediate logits (logits of each layer of the decoder).
intermediate_reference_points (`torch.FloatTensor` of shape `(batch_size, config.decoder_layers, num_queries, 4)`):
    Stacked intermediate reference points (reference points of each layer of the decoder).
intermediate_predicted_corners (`torch.FloatTensor` of shape `(batch_size, config.decoder_layers, num_queries, 4)`):
    Stacked intermediate predicted corners (predicted corners of each layer of the decoder).
initial_reference_points (`torch.FloatTensor` of shape `(batch_size, num_queries, 4)`):
    Initial reference points used for the first decoder layer.
init_reference_points (`torch.FloatTensor` of shape `(batch_size, num_queries, 4)`):
    Initial reference points sent through the Transformer decoder.
enc_topk_logits (`torch.FloatTensor` of shape `(batch_size, sequence_length, config.num_labels)`):
    Predicted bounding boxes scores where the top `config.two_stage_num_proposals` scoring bounding boxes are
    picked as region proposals in the encoder stage. Output of bounding box binary classification (i.e.
    foreground and background).
enc_topk_bboxes (`torch.FloatTensor` of shape `(batch_size, sequence_length, 4)`):
    Logits of predicted bounding boxes coordinates in the encoder stage.
enc_outputs_class (`torch.FloatTensor` of shape `(batch_size, sequence_length, config.num_labels)`, *optional*, returned when `config.with_box_refine=True` and `config.two_stage=True`):
    Predicted bounding boxes scores where the top `config.two_stage_num_proposals` scoring bounding boxes are
    picked as region proposals in the first stage. Output of bounding box binary classification (i.e.
    foreground and background).
enc_outputs_coord_logits (`torch.FloatTensor` of shape `(batch_size, sequence_length, 4)`, *optional*, returned when `config.with_box_refine=True` and `config.two_stage=True`):
    Logits of predicted bounding boxes coordinates in the first stage.
denoising_meta_values (`dict`):
    Extra dictionary for the denoising related values.
Nc                ó’  <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R	&   S[S[ P                  ,          R,          ;R
&   S[ P                  R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[R,          ;R&   # )r   Nr    r!   r"   r#   r$   r%   Údecoder_hidden_statesÚdecoder_attentionsr(   Úencoder_last_hidden_stateÚencoder_hidden_statesÚencoder_attentionsÚinit_reference_pointsÚenc_topk_logitsÚenc_topk_bboxesÚenc_outputs_classÚenc_outputs_coord_logitsÚdenoising_meta_values)r)   r*   r+   Údict)r,   r-   s   "€r.   r/   ÚDeimv2ModelOutput.__annotate__S   së  ø‡ ‚ ñL ×(Ñ(¨4Õ/Ñ6ñM ñN !&× 1Ñ 1°DÕ 8Ñ?ñO ñP ×*Ñ*¨TÕ1Ñ8ñQ ñR $)×#4Ñ#4°tÕ#;ÑBñS ñT %*×$5Ñ$5¸Õ$<ÑCñU ñV $×/Ñ/°$Õ6Ñ=ñW ñX !¡×!2Ñ!2Õ3°dÕ:ÑAñY ñZ ™e×/Ñ/Õ0°4Õ7Ñ>ñ[ ñ\ ™E×-Ñ-Õ.°Õ5Ñ<ñ] ñ^  %×0Ñ0°4Õ7Ñ>ñ_ ñ` !¡×!2Ñ!2Õ3°dÕ:ÑAña ñb ™e×/Ñ/Õ0°4Õ7Ñ>ñc ñd !×,Ñ,¨tÕ3Ñ:ñe ñf ×&Ñ&¨Õ-Ñ4ñg ñh ×&Ñ&¨Õ-Ñ4ñi ñj ×(Ñ(¨4Õ/Ñ6ñk ñl $×/Ñ/°$Õ6Ñ=ñm ñn   $�;Ñ-òo r1   r2   )r3   r4   r5   r6   r7   r    r!   r"   r#   r$   r%   r?   r@   r(   rA   rB   rC   rD   rE   rF   rG   rH   rI   r8   r9   r:   r;   s   @r.   r=   r=   S   s~   ø‡ € ñð> 37ÐØ;?ÐØ48ÐØ>BÐ!Ø?CÐ"Ø9=ÐØ=AÐØ:>ÐØ8<ÐØ:>ÐØ=AÐØ:>ÐØ6:ÐØ04€OØ04€OØ26ÐØ9=ÐØ)-Ð÷o ƒ r1   r=   z 
    Output type for DEIMv2 encoder modules (HybridEncoder and LiteEncoder).
    Attentions are only available for HybridEncoder variants with AIFI layers.
    c                   ó<   a € ] tR t^�t o RtRtRtRtV 3R ltRt	V t
R# )ÚDeimv2EncoderOutputzy
feature_maps (`list[torch.FloatTensor]`):
    List of multi-scale feature maps from the encoder, one per feature level.
Nc                óÎ   <€ V ^8„  d   Qh/ S[ S[P                  ,          ;R&   S[S[P                  R3,          R,          ;R&   S[S[P                  R3,          R,          ;R&   # )r   Úfeature_maps.Nr&   r'   )Úlistr)   r*   r+   )r,   r-   s   "€r.   r/   Ú Deimv2EncoderOutput.__annotate__�   sa   ø‡ ‚ ñ ‘u×(Ñ(Õ)Ñ0ñ ñ ™×*Ñ*¨CÐ/Õ0°4Õ7Ñ>ñ ñ ‘e×'Ñ'¨Ð,Õ-°Õ4Ñ;ò r1   r2   )r3   r4   r5   r6   r7   rO   r&   r'   r8   r9   r:   r;   s   @r.   rM   rM   �   s"   ø‡ € ñð
 -1€LØ:>€MØ7;€J÷ ƒ r1   rM   ÚRMSNormc                   óZ   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RtVtV ;t	# )ÚDeimv2RMSNormc                ó$   <€ V ^8„  d   QhRS[ RR/# )r   ÚepsÚreturnN)Úfloat)r,   r-   s   "€r.   r/   ÚDeimv2RMSNorm.__annotate__¡   s   ø€ ÷ $ñ $©ð $¸$ñ $r1   c                óŽ   <€ \         SV `  4        \        P                  ! \        P
                  ! V4      4      V n        W n        R# )z,
Deimv2RMSNorm is equivalent to T5LayerNorm
N)ÚsuperÚ__init__ÚnnÚ	Parameterr)   ÚonesÚweightÚvariance_epsilon)ÚselfÚhidden_sizerV   Ú	__class__s   &&&€r.   r\   ÚDeimv2RMSNorm.__init__¡   s/   ø€ ô 	‰ÑÔÜ—l’l¤5§:¢:¨kÓ#:Ó;ˆŒØ #Ör1   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r   r&   rW   ©r)   r   )r,   r-   s   "€r.   r/   rY   ©   s#   ø€ ÷ ;ñ ;¡U§\¡\ð ;±e·l±lñ ;r1   c                ó:  € VP                   pVP                  \        P                  4      pVP	                  ^4      P                  RRR7      pV\        P                  ! W0P                  ,           4      ,          pV P                  VP                  V4      ,          # )r   T©Úkeepdiméÿÿÿÿ)	ÚdtypeÚtor)   Úfloat32ÚpowÚmeanÚrsqrtra   r`   )rb   r&   Úinput_dtypeÚvariances   &&  r.   ÚforwardÚDeimv2RMSNorm.forward©   sw   € Ø#×)Ñ)ˆØ%×(Ñ(¬¯©Ó7ˆØ ×$Ñ$ QÓ'×,Ñ,¨R¸Ð,Ó>ˆØ%¬¯ª°H×?TÑ?TÕ4TÓ(UÕUˆØ�{‰{˜]×-Ñ-¨kÓ:Õ:Ð:r1   c                ó^   € \        V P                  P                  4       R V P                   2# )z, eps=)r+   r`   Úshapera   )rb   s   &r.   Ú
extra_reprÚDeimv2RMSNorm.extra_repr°   s*   € Ü˜Ÿ™×)Ñ)Ó*Ð+¨6°$×2GÑ2GÐ1HÐIÐIr1   )ra   r`   )g�íµ ÷Æ°>)
r3   r4   r5   r6   r\   ru   ry   r9   r:   Ú__classcell__©rd   r-   s   @@r.   rT   rT   Ÿ   s%   ù‡ € ÷$õ $÷;ð ;÷Jò Jr1   rT   c                   óD   a a€ ] tR t^´t oV3R lV 3R lltR tRtVtV ;t# )ÚDeimv2SwiGLUFFNc                ó    <€ V ^8„  d   QhRS[ /# ©r   Úconfigr   )r,   r-   s   "€r.   r/   ÚDeimv2SwiGLUFFN.__annotate__µ   s   ø€ ÷  ñ  ™|ñ  r1   c                ól  <€ \         SV `  4        VP                  ^,          p\        P                  ! VP
                  VRR7      V n        \        P                  ! VP
                  VRR7      V n        \        P                  ! W!P
                  RR7      V n        \        P                  ! 4       V n
        R# )r   T©ÚbiasN)r[   r\   Údecoder_ffn_dimr]   ÚLinearÚd_modelÚ	gate_projÚup_projÚ	down_projÚSiLUÚact_fn)rb   r�   Úhidden_featuresrd   s   && €r.   r\   ÚDeimv2SwiGLUFFN.__init__µ   sq   ø€ Ü‰ÑÔØ ×0Ñ0°AÕ5ˆÜŸš 6§>¡>°?ÈÔNˆŒÜ—y’y §¡°ÀtÔLˆŒÜŸš ?·N±NÈÔNˆŒÜ—g’g“iˆŽr1   c                ó�   € V P                  V P                  V P                  V4      4      V P                  V4      ,          4      pV# ©N)r‹   r�   r‰   rŠ   )rb   Úxr‹   s   && r.   ru   ÚDeimv2SwiGLUFFN.forward½   s6   € Ø—N‘N 4§;¡;¨t¯~©~¸aÓ/@Ó#AÀDÇLÁLÐQRÃOÕ#SÓTˆ	ØÐr1   )r�   r‹   r‰   rŠ   ©	r3   r4   r5   r6   r\   ru   r9   r:   r{   r|   s   @@r.   r~   r~   ´   s   ù‡ € ÷ ó  ÷ò r1   r~   c                   óP   a a€ ] tR t^Ât oV3R lV 3R lltV3R lR ltRtVtV ;t# )Ú
Deimv2Gatec                ó    <€ V ^8„  d   QhRS[ /# )r   rˆ   ©Úint)r,   r-   s   "€r.   r/   ÚDeimv2Gate.__annotate__Ã   s   ø€ ÷ +ñ +¡ñ +r1   c                ó˜   <€ \         SV `  4        \        P                  ! ^V,          ^V,          4      V n        \        V4      V n        R# ©r   N)r[   r\   r]   r‡   ÚgaterT   Únorm)rb   rˆ   rd   s   &&€r.   r\   ÚDeimv2Gate.__init__Ã   s4   ø€ Ü‰ÑÔÜ—I’I˜a '�k¨1¨w­;Ó7ˆŒ	Ü! 'Ó*ˆŽ	r1   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# )r   Úsecond_residualr&   rW   rh   )r,   r-   s   "€r.   r/   rš   È   s1   ø€ ÷ ñ ¡u§|¡|ð ÁEÇLÁLð ÑUZ×UaÑUañ r1   c                óô   € \         P                  ! W.RR7      p\         P                  ! V P                  V4      4      pVP	                  ^RR7      w  rVV P                  WQ,          Wb,          ,           4      pV# ©é   ©Údimrl   )r)   ÚcatÚsigmoidr�   Úchunkrž   )rb   r¡   r&   Ú
gate_inputÚgatesÚgate1Úgate2s   &&&    r.   ru   ÚDeimv2Gate.forwardÈ   s_   € Ü—Y’Y Ð?ÀRÔHˆ
Ü—’˜dŸi™i¨
Ó3Ó4ˆØ—{‘{ 1¨"�{Ó-‰ˆØŸ	™	 %Õ"9¸EÕ<QÕ"QÓRˆØÐr1   )r�   rž   r”   r|   s   @@r.   r–   r–   Â   s   ù‡ € ÷+ó +÷
÷ ð r1   r–   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# )Ú	Deimv2MLPc          
      ó8   <€ V ^8„  d   QhRS[ RS[ RS[ RS[ RS[/# )r   Ú	input_dimÚ
hidden_dimÚ
output_dimÚ
num_layersÚact)r™   Ústr)r,   r-   s   "€r.   r/   ÚDeimv2MLP.__annotate__Ñ   s2   ø€ ÷ "ñ "¡#ð "±3ð "ÁCð "ÑUXð "Ñ_bñ "r1   c                óü   <€ \         S	V `  4        W@n        V.V^,
          ,          pV.V,           pWc.,           p\        P                  ! R \        Wx4       4       4      V n        \        V,          ! 4       V n        R# )r¤   c              3   óR   "  € T F  w  r\         P                  ! W4      x € K  	  R # 5ir‘   )r]   r‡   )Ú.0Úin_dimÚout_dims   &  r.   Ú	<genexpr>Ú%Deimv2MLP.__init__.<locals>.<genexpr>×   s    é € Ð#sÑVrÁ?À6¤B§I¢I¨f×$>Ð$>ÓVrùs   ‚%'N)	r[   r\   rµ   r]   Ú
ModuleListÚzipÚlayersr   r¶   )
rb   r²   r³   r´   rµ   r¶   Úhidden_dimsÚ
input_dimsÚoutput_dimsrd   s
   &&&&&&   €r.   r\   ÚDeimv2MLP.__init__Ñ   sc   ø€ Ü‰ÑÔØ$ŒØ!�l j°1¥nÕ5ˆØ�[ ;Õ.ˆ
Ø! LÕ0ˆÜ—m’mÑ#sÔVYÐZdÔVrÓ#sÓsˆŒÜ˜3–<“>ˆŽr1   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   Ústat_featuresrW   rh   )r,   r-   s   "€r.   r/   r¸   Ú   s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r1   c                ó®   € \        V P                  4       F;  w  r#W P                  ^,
          8  d   V P                  V! V4      4      MV! V4      pK=  	  V# ©r¤   )Ú	enumeraterÂ   rµ   r¶   )rb   rÈ   ÚiÚlayers   &&  r.   ru   ÚDeimv2MLP.forwardÚ   sH   € Ü! $§+¡+Ö.‰HˆAØ>?Ç/Á/ÐTUÕBUÔ>U˜DŸH™H¡U¨=Ó%9Ô:Ñ[`ÐanÓ[oŠMñ /àÐr1   )r¶   rÂ   rµ   )Úrelur”   r|   s   @@r.   r°   r°   Ð   s   ù‡ € ÷"õ "÷÷ ð r1   r°   c                óv   € V ^8„  d   QhR\         R\         R\         R\         R\        \        ,          R\         /# )r   ÚvalueÚvalue_spatial_shapesÚsampling_locationsÚattention_weightsÚnum_points_listrW   )r   rP   r™   )r,   s   "r.   r/   r/   à   sP   € ÷ G/ñ G/ÜðG/ä ðG/ô ðG/ô ð	G/ô
 œ#•YðG/ô ñG/r1   c           	      óÞ  € V P                   w  rgr‰VP                   w  rzr‹pV P                  ^ ^^^4      P                  ^ ^4      P                  V UUu. uF  w  rÞWÞ,          NK  	  uppRR7      pVR8X  d   ^V,          ^,
          pM	VR8X  d   TpXP                  ^ ^^^^4      P                  ^ ^4      pVP                  VRR7      p. p\	        V4       EFõ  w  pw  rÞVV,          P                  Wh,          W�V4      pVV,          pVR8X  d'   \        P                  P                  VVRRRR7      pEM…VR8X  Ed~   V\        P                  ! Wí..V P                  R7      ,          R	,           P                  \        P                  4      pVR,          P                  ^ V^,
          4      pVR,          P                  ^ V^,
          4      p\        P                  ! VV.RR7      pVP                  Wh,          W¤V,          ,          ^4      p\        P                   ! VP                   ^ ,          V P                  R7      P#                  R4      P%                  ^VP                   ^,          4      pVVR
VR,          VR,          3,          pVP'                  ^^4      P                  Wh,          WšVV,          4      pVP)                  X4       EKø  	  VP                  ^ ^^^4      P                  Wh,          ^V
\+        V4      4      p\        P,                  ! VRR7      V,          P+                  R4      P/                  WhV	,          V
4      pVP'                  ^^4      P1                  4       # u uppi )r   r¥   ÚdefaultÚdiscreteÚbilinearÚzerosF)ÚmodeÚpadding_modeÚalign_corners©Údeviceç      à?ºNNNrl   éþÿÿÿ©.r   ©.r¤   )rx   ÚpermuteÚflattenÚsplitrË   Úreshaper]   Ú
functionalÚgrid_sampler)   Útensorrß   rn   Úint64ÚclampÚstackÚarangeÚ	unsqueezeÚrepeatÚ	transposeÚappendÚsumÚconcatÚviewÚ
contiguous)rÑ   rÒ   rÓ   rÔ   rÕ   ÚmethodÚ
batch_sizeÚ_Ú	num_headsr³   Únum_queriesÚ
num_levelsÚ
num_pointsÚheightÚwidthÚ
value_listÚsampling_gridsÚsampling_value_listÚlevel_idÚvalue_l_Úsampling_grid_l_Úsampling_value_l_Úsampling_coordÚsampling_coord_xÚsampling_coord_yÚsampling_idxÚoutputs   &&&&&&                     r.   Ú#multi_scale_deformable_attention_v2r  à   s3  € ð ,1¯;©;Ñ(€J�9Ø8J×8PÑ8PÑ5€A�I¨:à�‰�a˜˜A˜qÓ!ß	‰��A‹ß	‰Ñ4HÔIÑ4H¡= 6�—�Ñ4HÒIÈrˆÓ	Rð ð �ÔØÐ/Õ/°!Õ3‰Ø	�:Ô	Ø+ˆØ#×+Ñ+¨A¨q°!°Q¸Ó:×BÑBÀ1ÀaÓH€NØ#×)Ñ)¨/¸rÐ)ÓB€NØÐÜ%.Ð/C×%DÑ!ˆ‘/�6ð
 ˜hÕ'×/Ñ/°
Õ0FÈ
Ð\aÓbˆð *¨(Õ3Ðà�YÔÜ "§¡× 9Ñ 9ØÐ*°È'Ðafð !:ó !Òð �zÕ!Ø.´·²À¸Ð>OÐX]×XdÑXdÔ1eÕeÐhkÕk×oÑoÜ—‘óˆNð
  .¨fÕ5×;Ñ;¸A¸uÀq½yÓIÐØ-¨fÕ5×;Ñ;¸A¸vÈ½zÓJÐô #Ÿ[š[Ð*:Ð<LÐ)MÐSUÔVˆNØ+×3Ñ3°JÕ4JÈKÐjrÕZsÕLsÐuvÓwˆNä—’˜^×1Ñ1°!Õ4¸U¿\¹\ÔJß‘˜2“ß‘˜˜>×/Ñ/°Õ2Ó3ð ð
 !)¨°q¸.ÈÕ:PÐR`ÐagÕRhÐ)hÕ iÐØ 1× ;Ñ ;¸A¸qÓ A× IÑ IØÕ&¨
ÀÐQYÕAZó!Ðð 	×"Ñ"Ð#4×5ñI &EðP *×1Ñ1°!°Q¸¸1Ó=×EÑEØÕ  ;´°OÓ0DóÐô 
�ŠÐ)¨rÔ	2Ð5FÕ	Fß	‰ˆR‹ß	‰ˆj jÕ0°+Ó	>ð ð
 ×Ñ˜A˜qÓ!×,Ñ,Ó.Ð.ùóu Js   ÁM)
c                   óT   a a€ ] tR tRt o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# )Ú#Deimv2MultiscaleDeformableAttentioni*  c                ó    <€ V ^8„  d   QhRS[ /# r€   r   )r,   r-   s   "€r.   r/   Ú0Deimv2MultiscaleDeformableAttention.__annotate__+  s   ø€ ÷ Kñ K™|ñ Kr1   c                óê  <€ \         SV `  4        VP                  V n        VP                  V n        VP
                  V n        VP                  V n        VP                  V n	        VP                  V n        \        V P                  \        4      '       d   V P                  pM-\        V P                  4       Uu. uF  q0P                  NK  	  ppW n        V P                   UUu. uF  p\        V4       F  p^V,          NK  	  K   	  ppp\         P"                  ! \$        P&                  ! V\$        P(                  R7      4      V n        V P                  \-        V P                  4      ,          V n        \         P0                  ! V P                  V P.                  ^,          4      V n        \         P0                  ! V P                  V P.                  4      V n        \6        V n        R# u upi u uppi )z3
D-Fine version of multiscale deformable attention
©rm   N)r[   r\   rˆ   Údecoder_attention_headsÚn_headsÚnum_feature_levelsÚn_levelsÚdecoder_offset_scaleÚoffset_scaleÚdecoder_methodÚdecoder_n_pointsÚn_pointsÚ
isinstancerP   ÚrangerÕ   r]   ÚBufferr)   rë   ro   Únum_points_scalerô   Útotal_pointsr‡   Úsampling_offsetsrÔ   r  Úms_deformable_attn_core)rb   r�   rÕ   rú   Únr   rd   s   &&    €r.   r\   Ú,Deimv2MultiscaleDeformableAttention.__init__+  s^  ø€ ô 	‰ÑÔØ—~‘~ˆŒØ×5Ñ5ˆŒØ×1Ñ1ˆŒØ"×7Ñ7ˆÔØ$×3Ñ3ˆÔØ×/Ñ/ˆŒä�d—m‘m¤T×*Ò*Ø"Ÿm™m‰Oä6;¸D¿M¹MÔ6JÓKÑ6J°Ÿ}œ}Ñ6JˆOÐKà.ÔØ+/×+?Ò+?ÔRÑ+? aÌÈqÎÀA˜A ŸE˜EÉ™EÑ+?ÐÑRÜ "§	¢	¬%¯,ª,Ð7GÌuÏ}É}Ô*]Ó ^ˆÔà ŸL™L¬3¨t×/CÑ/CÓ+DÕDˆÔä "§	¢	¨$¯,©,¸×8IÑ8IÈAÕ8MÓ NˆÔÜ!#§¢¨4¯<©<¸×9JÑ9JÓ!KˆÔä'JˆÖ$ùò Lùó Ss   Â:G*Ã%$G/c          
      ó¶   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          RS[S[ P                  S[ P                  3,          /# )r   r&   Úattention_maskNÚkwargsrW   ©r)   r   r   r   r+   )r,   r-   s   "€r.   r/   r  G  sX   ø€ ÷ <)ñ <)á—|‘|ð<)ñ Ÿ™ tÕ+ð<)ñ Ñ+Õ,ð<)ñ 
‰u�|‰|™UŸ\™\Ð)Õ	*ñ<)r1   c                óP  € VP                   w  r‰p
VP                   w  r‹p
\        VR,          VR,          ,          P                  4       V8H  R4       VP                  W‹V P                  V P
                  V P                  ,          4      pVe$   VP                  VR,          ( \        ^ 4      4      pV P                  V4      pVP                  W‰V P                  \        V P                  4      ^4      pV P                  V4      P                  W‰V P                  \        V P                  4      4      p\        P                  ! VR	R7      pVP                   R	,          ^8X  dt   \        P                  ! V4      pVP                  ^.4      P                  ^^^V P                   ^^4      pVP                  W‹^V P                   ^^4      Wß,          ,           pM¦VP                   R	,          ^8X  do   V P"                  P%                  VP&                  R7      P)                  R	4      pVV,          VR
,          ,          V P*                  ,          pVR,          V,           pM \-        RVP                   R	,           R24      hV P/                  VVVVV P                  V P0                  4      pVV3# )rá   z[Make sure to align the spatial shapes with the sequence length of the encoder hidden statesr¥   r  z5Last dim of reference_points must be 2 or 4, but get z	 instead.)rá   r   ©rá   r¤   ).Nrl   )rá   rá   Nrá   ºr   NN)rá   rá   Nrá   :Nr   N)rx   r   rô   rè   r  rˆ   Úmasked_fillrX   r"  rÕ   rÔ   ÚFÚsoftmaxr)   rë   Úflipr  r   rn   rm   rð   r  Ú
ValueErrorr#  r  )rb   r&   r'  Úreference_pointsrB   Úspatial_shapesÚspatial_shapes_listr(  rù   rü   rú   Úsequence_lengthrÑ   r"  rÔ   Úoffset_normalizerrÓ   r   Úoffsetr  s   &&&&&&&,            r.   ru   Ú+Deimv2MultiscaleDeformableAttention.forwardG  s{  € ð &3×%8Ñ%8Ñ"ˆ
 Ø)>×)DÑ)DÑ&ˆ
 QäØ˜DÕ! N°4Õ$8Õ8×=Ñ=Ó?À?ÑRØiô	
ð &×-Ñ-¨jÈ4Ï<É<ÐY]×YeÑYeÐim×iuÑiuÕYuÓvˆØÒ%Ø×%Ñ% ~°iÕ'@Ð&@Ä%ÈÃ(ÓKˆEà)-×)>Ñ)>¸}Ó)MÐØ+×3Ñ3Ø T§\¡\´3°t×7KÑ7KÓ3LÈaó
Ðð !×2Ñ2°=ÓA×IÑIØ T§\¡\´3°t×7KÑ7KÓ3Ló
Ðô ŸIšIÐ&7¸RÔ@Ðà×!Ñ! "Õ%¨Ô*Ü %§¢¨^Ó <ÐØ 1× 6Ñ 6¸°sÓ ;× CÑ CÀAÀqÈ!ÈTÏ]É]Ð\]Ð_`Ó aÐà ×(Ñ(¨ÀaÈÏÉÐXYÐ[\Ó]Ø"Õ6õ7ñ ð ×#Ñ# BÕ'¨1Ô,ð  $×4Ñ4×7Ñ7¸m×>QÑ>QÐ7ÓR×\Ñ\Ð]_Ó`ÐØ%Ð(8Õ8Ð;KÐL]Õ;^Õ^Ðae×arÑarÕrˆFØ!1Ð2CÕ!DÀvÕ!MÑäØGÐHX×H^ÑH^Ð_aÕHbÐGcÐclÐmóð ð ×-Ñ-ØØØØØ× Ñ Ø×Ñó
ˆð Ð(Ð(Ð(r1   )rÔ   rˆ   r  r#  r  r  r  rÕ   r   r  r"  r!  ©NNNNNr”   r|   s   @@r.   r  r  *  s    ù‡ € ÷Kó K÷8<)÷ <)ò <)r1   r  c                   óH   a a€ ] tR tRt oRV3R lV 3R llltR tRtVtV ;t# )ÚDeimv2ConvNormLayeri†  c                óf   <€ V ^8„  d   QhRS[ RS[RS[RS[RS[RS[RS[R,          R	S[R,          /# )
r   r�   Úin_channelsÚout_channelsÚkernel_sizeÚstrideÚgroupsÚpaddingNÚ
activation)r   r™   r·   )r,   r-   s   "€r.   r/   Ú Deimv2ConvNormLayer.__annotate__‡  sm   ø€ ÷ Yñ YáðYñ ðYñ ð	Yñ
 ðYñ ðYñ ðYñ �t•ðYñ ˜$•JñYr1   c	           
     óH  <€ \         S	V `  4        \        P                  ! TTTTTVf   V^,
          ^,          MTRR7      V n        \        P
                  ! W1P                  4      V n        Vf   \        P                  ! 4       V n
        R # \        V,          ! 4       V n
        R # )NF)rA  rB  r…   )r[   r\   r]   ÚConv2dÚconvÚBatchNorm2dÚbatch_norm_epsrž   ÚIdentityr   rC  )
rb   r�   r=  r>  r?  r@  rA  rB  rC  rd   s
   &&&&&&&&&€r.   r\   ÚDeimv2ConvNormLayer.__init__‡  s|   ø€ ô 	‰ÑÔÜ—I’IØØØØØØ.5ªo�[ 1•_¨Ö*À7Øô
ˆŒ	ô —N’N <×1FÑ1FÓGˆŒ	Ø+5Ò+=œ"Ÿ+š+›-ˆŽÄ7È:ÖCVÓCXˆŽr1   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# r‘   )rG  rž   rC  )rb   Úhidden_states   &&r.   ru   ÚDeimv2ConvNormLayer.forwardŸ  s2   € Ø—y‘y Ó.ˆØ—y‘y Ó.ˆØ—‘ |Ó4ˆØÐr1   )rC  rG  rž   )r¤   NNr”   r|   s   @@r.   r;  r;  †  s   ù‡ € ÷Yõ Y÷0ò r1   r;  c                   óH   a a€ ] tR tRt oRtV3R lV 3R lltR tRtVtV ;t	# )ÚDeimv2RepVggBlocki¦  zc
RepVGG architecture block introduced by the work "RepVGG: Making VGG-style ConvNets Great Again".
c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# )r   r�   r=  r>  ©r   r™   )r,   r-   s   "€r.   r/   ÚDeimv2RepVggBlock.__annotate__«  s'   ø€ ÷ Yñ Y™|ð Y¹#ð YÉSñ Yr1   c           	     ó  <€ \         SV `  4        VP                  pTp\        WV^^^R7      V n        \        WV^^^ R7      V n        Vf   \        P                  ! 4       V n	        R# \        V,          ! 4       V n	        R# )é   )rB  N)
r[   r\   Úactivation_functionr;  Úconv1Úconv2r]   rJ  r   rC  )rb   r�   r=  r>  rC  Úhidden_channelsrd   s   &&&&  €r.   r\   ÚDeimv2RepVggBlock.__init__«  sl   ø€ Ü‰ÑÔà×/Ñ/ˆ
Ø%ˆÜ(¨À,ÐPQÐSTÐ^_Ô`ˆŒ
Ü(¨À,ÐPQÐSTÐ^_Ô`ˆŒ
Ø+5Ò+=œ"Ÿ+š+›-ˆŽÄ7È:ÖCVÓCXˆŽr1   c                ór   € V P                  V4      V P                  V4      ,           pV P                  V4      # r‘   )rW  rX  rC  )rb   r’   Úys   && r.   ru   ÚDeimv2RepVggBlock.forward´  s+   € Ø�J‰J�q‹M˜DŸJ™J q›MÕ)ˆØ�‰˜qÓ!Ð!r1   )rC  rW  rX  ©
r3   r4   r5   r6   r7   r\   ru   r9   r:   r{   r|   s   @@r.   rP  rP  ¦  s    ù‡ € ñ÷Yó Y÷"ò "r1   rP  c                   óX   a a€ ] tR tRt oRt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	# )	ÚDeimv2CSPRepLayeri¹  a	  
Cross Stage Partial (CSP) network layer with RepVGG blocks.
Differs from DFineCSPRepLayer: uses a single conv that splits into residual + processing path
(instead of two separate convs), and has an optional trailing conv controlled by `encoder_has_trailing_conv`.
c          
      ó8   <€ V ^8„  d   QhRS[ RS[RS[RS[RS[/# )r   r�   r=  r>  Ú
num_blocksÚ	expansion)r   r™   rX   )r,   r-   s   "€r.   r/   ÚDeimv2CSPRepLayer.__annotate__À  s5   ø€ ÷ 
ñ 
Ù"ð
Ù14ð
ÙDGð
ÙUXð
Ùejñ
r1   c           
     ó¢  <€ \         S	V `  4        VP                  p\        W5,          4      p\	        WV^,          ^^VR7      V n        \        P                  ! \        V4       Uu. uF  p\        WV4      NK  	  up4      V n
        VP                  '       d   \	        WV^^VR7      V n        R# \        P                  ! 4       V n        R# u upi )r   ©rC  N)r[   r\   rV  r™   r;  rW  r]   rÀ   r  rP  ÚbottlenecksÚencoder_has_trailing_convrJ  rX  )
rb   r�   r=  r>  rb  rc  rC  rY  rú   rd   s
   &&&&&&   €r.   r\   ÚDeimv2CSPRepLayer.__init__À  s¸   ø€ ô 	‰ÑÔØ×/Ñ/ˆ
Ü˜lÕ6Ó7ˆÜ(¨¸oÐPQÕ>QÐSTÐVWÐdnÔoˆŒ
ÜŸ=š=ÜRWÐXbÔRcÓdÑRcÈQÔ˜v¸ÖHÑRcÑdó
ˆÔð
 ×/×/Ð/ô   ¸ÀqÈ!ÐXbÔcð 	Ž
ô —’“ð 	Ž
ùò es   Á&Cc                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# rg   rh   )r,   r-   s   "€r.   r/   rd  Ð  s#   ø€ ÷ 4ñ 4¡U§\¡\ð 4±e·l±lñ 4r1   c                ó®   € V P                  V4      P                  ^^R7      w  r!V P                   F  pV! V4      pK  	  V P                  W!,           4      # ©r   r¥   )rW  r©   rg  rX  )rb   r&   ÚresidualÚ
bottlenecks   &&  r.   ru   ÚDeimv2CSPRepLayer.forwardÐ  sO   € Ø"&§*¡*¨]Ó";×"AÑ"AÀ!ÈÐ"AÓ"KÑˆØ×*Ô*ˆJÙ& }Ó5ŠMñ +à�z‰z˜(Õ2Ó3Ð3r1   )rg  rW  rX  )ç      ð?r^  r|   s   @@r.   r`  r`  ¹  s#   ù‡ € ñ÷
õ 
÷ 4÷ 4ð 4r1   r`  c                   óX   a a€ ] tR tRt oRt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	# )	ÚDeimv2RepNCSPELAN5i×  aI  
Rep(VGG) N(etwork) CSP (Cross Stage Partial) ELAN (Efficient Layer Aggregation Network) block.
Similar to DFineRepNCSPELAN4 but without intermediate convolutions between CSP branches,
resulting in a simpler 4-way concatenation (2 split halves + 2 CSP branches) instead of D-FINE's
4-branch design with interleaved convolutions.
c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   r�   Únumb_blocksrR  )r,   r-   s   "€r.   r/   ÚDeimv2RepNCSPELAN5.__annotate__ß  s   ø€ ÷ 
ñ 
™|ð 
¹#ñ 
r1   c           	     ó²  <€ \         SV `  4        VP                  pVP                  pVP                  pVP                  ^,          p\	        VP
                  VP                  ,          ^,          4      p\        WV^^VR7      V n        \        W^,          WrR7      V n	        \        WWrR7      V n
        \        W^V,          ,           V^^VR7      V n        R# )r   rf  )rb  N)r[   r\   rV  Úencoder_hidden_dimÚroundÚhidden_expansionr;  rW  r`  Úcsp_rep1Úcsp_rep2rX  )	rb   r�   rt  rC  r=  r>  Úsplit_channelsÚcsp_channelsrd   s	   &&&     €r.   r\   ÚDeimv2RepNCSPELAN5.__init__ß  s¹   ø€ Ü‰ÑÔØ×/Ñ/ˆ
Ø×/Ñ/ˆØ×0Ñ0ˆØ×2Ñ2°QÕ6ˆÜ˜V×4Ñ4°v×7PÑ7PÕPÐTUÕUÓVˆÜ(¨¸nÈaÐQRÐ_iÔjˆŒ
Ü)¨&ÀAÕ2EÀ|ÔlˆŒÜ)¨&ÀÔeˆŒÜ(Ø a¨,Õ&6Õ7¸ÀqÈ!ÐXbô
ˆŽ
r1   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# rg   rh   )r,   r-   s   "€r.   r/   ru  í  s#   ø€ ÷ 0ñ 0¡U§\¡\ð 0±e·l±lñ 0r1   c                óä   € V P                  V4      P                  ^^R7      w  r#V P                  V4      pV P                  V4      p\        P
                  ! W#WE.^R7      pV P                  V4      # rl  )rW  r©   rz  r{  r)   r§   rX  )rb   r&   Úhidden_states_1Úhidden_states_2Úhidden_states_3Úhidden_states_4Úmerged_hidden_statess   &&     r.   ru   ÚDeimv2RepNCSPELAN5.forwardí  sg   € Ø+/¯:©:°mÓ+D×+JÑ+JÈ1ÐRSÐ+JÓ+TÑ(ˆØŸ-™-¨Ó8ˆØŸ-™-¨Ó8ˆÜ$Ÿyšy¨/ÈOÐ)mÐstÔuÐØ�z‰zÐ.Ó/Ð/r1   )rW  rX  rz  r{  )rU  r^  r|   s   @@r.   rr  rr  ×  s#   ù‡ € ñ÷
õ 
÷0÷ 0ð 0r1   rr  c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚDeimv2SCDowniõ  c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# )r   r�   r?  r@  rR  )r,   r-   s   "€r.   r/   ÚDeimv2SCDown.__annotate__ö  s"   ø€ ÷ 

ñ 

™|ð 

¹#ð 

Ásñ 

r1   c                óØ   <€ \         SV `  4        \        WP                  VP                  ^^4      V n        \        VVP                  VP                  VVVP                  4      V n        R# )r¤   N)r[   r\   r;  rw  rW  rX  )rb   r�   r?  r@  rd   s   &&&&€r.   r\   ÚDeimv2SCDown.__init__ö  s^   ø€ Ü‰ÑÔÜ(¨×1JÑ1JÈF×LeÑLeÐghÐjkÓlˆŒ
Ü(ØØ×%Ñ%Ø×%Ñ%ØØØ×%Ñ%ó
ˆŽ
r1   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   Úinput_featuresrW   rh   )r,   r-   s   "€r.   r/   rŠ    s#   ø€ ÷ ñ ¡e§l¡lð ±u·|±|ñ r1   c                óJ   € V P                  V4      pV P                  V4      pV# r‘   ©rW  rX  )rb   rŽ  s   &&r.   ru   ÚDeimv2SCDown.forward  s$   € ØŸ™ NÓ3ˆØŸ™ NÓ3ˆØÐr1   r�  r”   r|   s   @@r.   rˆ  rˆ  õ  s   ù‡ € ÷

ó 

÷÷ ð r1   rˆ  c                ó  € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R\        P                  R\        P                  R,          R\        R,          R\        R	\
        \        ,          /# )
r   ÚmoduleÚqueryÚkeyrÑ   r'  NÚscalingÚdropoutr(  )r]   ÚModuler)   r   rX   r   r   )r,   s   "r.   r/   r/     s{   € ÷ %ñ %Ü�I‰Ið%ä�<‰<ð%ô 
�‰ð%ô �<‰<ð	%ô
 —L‘L 4Õ'ð%ô �T�\ð%ô ð%ô Ô'Õ(ñ%r1   c                 ó¶  € Vf   VP                  R4      R,          p\        P                  ! WP                  ^^4      4      V,          pVe	   W„,           p\        P
                  P                  VRR7      p\        P
                  P                  W†V P                  R7      p\        P                  ! Wƒ4      p	V	P                  ^^4      P                  4       p	W˜3# )Nr¥   ©ÚpÚtrainingrl   ç      à¿)
Úsizer)   Úmatmulrò   r]   ré   r/  r—  rœ  r÷   )
r“  r”  r•  rÑ   r'  r–  r—  r(  Úattn_weightsÚattn_outputs
   &&&&&&&,  r.   Úeager_attention_forwardr¢    s±   € ð ‚Ø—*‘*˜R“. DÕ(ˆô —<’< §}¡}°Q¸Ó':Ó;¸gÕE€LàÒ!Ø#Õ4ˆä—=‘=×(Ñ(¨¸2Ð(Ó>€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ó[€Lä—,’,˜|Ó3€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KàÐ$Ð$r1   c                   ó\   a a€ ] tR tR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	# )
ÚDeimv2SelfAttentioni$  z¬
Multi-headed self-attention from 'Attention Is All You Need' paper.

In DEIMV2, position embeddings are added to both queries and keys (but not values) in self-attention.
c          
      ó8   <€ V ^8„  d   QhRS[ RS[RS[RS[RS[/# )r   r�   rc   Únum_attention_headsr—  r…   )r   r™   rX   Úbool)r,   r-   s   "€r.   r/   Ú Deimv2SelfAttention.__annotate__+  sD   ø€ ÷ Eñ EáðEñ ðEñ !ð	Eñ
 ðEñ ñEr1   c                ó|  <€ \         SV `  4        Wn        W#,          V n        V P                  R,          V n        W@n        RV n        \        P                  ! W"VR7      V n	        \        P                  ! W"VR7      V n
        \        P                  ! W"VR7      V n        \        P                  ! W"VR7      V n        R# )rà   Fr„   Nr�  )r[   r\   r�   Úhead_dimr–  Úattention_dropoutÚ	is_causalr]   r‡   Úk_projÚv_projÚq_projÚo_proj)rb   r�   rc   r¦  r—  r…   rd   s   &&&&&&€r.   r\   ÚDeimv2SelfAttention.__init__+  s„   ø€ ô 	‰ÑÔØŒØ#Õ:ˆŒØ—}‘} dÕ*ˆŒØ!(ÔØˆŒä—i’i ¸tÔDˆŒÜ—i’i ¸tÔDˆŒÜ—i’i ¸tÔDˆŒÜ—i’i ¸tÔDˆŽr1   c                óÞ   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[S[,          RS[S[ P                  S[ P                  3,          /# )r   r&   r'  NÚposition_embeddingsr(  rW   r)  )r,   r-   s   "€r.   r/   r¨  ?  sk   ø€ ÷ $)ñ $)á—|‘|ð$)ñ Ÿ™ tÕ+ð$)ñ #Ÿ\™\¨DÕ0ð	$)ñ
 Ñ+Õ,ð$)ñ 
‰u�|‰|™UŸ\™\Ð)Õ	*ñ$)r1   c                óÄ  € VP                   RR p. VORNV P                  N5pVe	   W,           MTpV P                  V4      P                  V4      P	                  ^^4      pV P                  V4      P                  V4      P	                  ^^4      p	V P                  V4      P                  V4      P	                  ^^4      p
\        P                  ! V P                  P                  \        4      pT! V VV	V
V3RV P                  '       g   RMV P                  RV P                  /VB w  rÍVP                  ! . VORN5!  P!                  4       pV P#                  V4      pWÍ3# )zJ
Position embeddings are added to both queries and keys (but not values).
Nr—  ç        r–  rl   )rx   rª  r¯  rö   rò   r­  r®  r   Úget_interfacer�   Ú_attn_implementationr¢  rœ  r«  r–  rè   r÷   r°  )rb   r&   r'  r³  r(  Úinput_shapeÚhidden_shapeÚquery_key_inputÚquery_statesÚ
key_statesÚvalue_statesÚattention_interfacer¡  r   s   &&&&,         r.   ru   ÚDeimv2SelfAttention.forward?  s_  € ð $×)Ñ)¨#¨2Ð.ˆØ8˜Ð8 bÐ8¨$¯-©-Ñ8ˆàATÒA`˜-Ö=Ðfsˆà—{‘{ ?Ó3×8Ñ8¸ÓF×PÑPÐQRÐTUÓVˆØ—[‘[ Ó1×6Ñ6°|ÓD×NÑNÈqÐRSÓTˆ
Ø—{‘{ =Ó1×6Ñ6°|ÓD×NÑNÈqÐRSÓTˆä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØñ	%
ð  $Ÿ}Ÿ}˜}‘C°$×2HÑ2Hð	%
ð —L‘Lð	%
ð ñ	%
Ñ!ˆð "×)Ò)Ð;¨;Ð;¸Ó;×FÑFÓHˆØ—k‘k +Ó.ˆØÐ(Ð(r1   )	r«  r�   rª  r¬  r­  r°  r¯  r–  r®  )rµ  T)NNr^  r|   s   @@r.   r¤  r¤  $  s%   ù‡ € ñ÷Eõ E÷($)÷ $)ò $)r1   r¤  c                   óT   a a€ ] tR tRt o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# )ÚDeimv2EncoderLayerif  c                ó    <€ V ^8„  d   QhRS[ /# r€   r   )r,   r-   s   "€r.   r/   ÚDeimv2EncoderLayer.__annotate__g  s   ø€ ÷ Zñ Z™|ñ Zr1   c                ó*  <€ \         SV `  4        VP                  V n        VP                  V n        \        VV P                  VP                  VP                  R 7      V n        \        P                  ! V P                  VP                  R7      V n        VP                  V n        \        V P                  VP                  V P                  ^VP                  4      V n        \        P                  ! V P                  VP                  R7      V n        R# )©r�   rc   r¦  r—  ©rV   N)r[   r\   Únormalize_beforerw  rc   r¤  r¦  r—  Ú	self_attnr]   Ú	LayerNormÚlayer_norm_epsÚself_attn_layer_normr°   Úencoder_ffn_dimÚencoder_activation_functionÚmlpÚfinal_layer_norm©rb   r�   rd   s   &&€r.   r\   ÚDeimv2EncoderLayer.__init__g  sÐ   ø€ Ü‰ÑÔØ &× 7Ñ 7ˆÔØ!×4Ñ4ˆÔô -ØØ×(Ñ(Ø &× :Ñ :Ø—N‘Nô	
ˆŒô %'§L¢L°×1AÑ1AÀv×G\ÑG\Ô$]ˆÔ!Ø—~‘~ˆŒÜØ×Ñ˜f×4Ñ4°d×6FÑ6FÈÈ6×KmÑKmó
ˆŒô !#§¢¨T×-=Ñ-=À6×CXÑCXÔ YˆÖr1   c          
      ó¦   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  R,          RS[S[,          RS[ P                  /# )r   r&   r'  Úspatial_position_embeddingsNr(  rW   ©r)   r   r   r   )r,   r-   s   "€r.   r/   rÃ  z  sX   ø€ ÷ 0ñ 0á—|‘|ð0ñ Ÿ™ð0ñ &+§\¡\°DÕ%8ð	0ñ
 Ñ+Õ,ð0ñ 
�‰ñ0r1   c           	     ó  € TpV P                   '       d   V P                  V4      pV P                  ! RRVRVRV/VB w  r\        P                  P                  WP
                  V P                  R7      pWQ,           pV P                   '       g   V P                  V4      pV P                   '       d   V P                  V4      pTpV P                  V4      pWQ,           pV P                   '       g   V P                  V4      pV P                  '       du   \        P                  ! V4      P                  4       '       gK   \        P                  ! VP                  4      P                  R,
          p\        P                  ! W) VR7      pV# )a  
Args:
    hidden_states (`torch.FloatTensor`): input to the layer of shape `(batch, seq_len, hidden_size)`
    attention_mask (`torch.FloatTensor`): attention mask of size
        `(batch, 1, target_len, source_len)` where padding elements are indicated by very large negative
        values.
    spatial_position_embeddings (`torch.FloatTensor`, *optional*):
        Spatial position embeddings (2D positional encodings of image locations), to be added to both
        the queries and keys in self-attention (but not to values).
r&   r'  r³  rš  iè  ©ÚminÚmaxr2   )rÇ  rË  rÈ  r]   ré   r—  rœ  rÏ  rÎ  r)   ÚisfiniteÚallÚfinform   rØ  rí   )rb   r&   r'  rÓ  r(  rm  rú   Úclamp_values   &&&&,   r.   ru   ÚDeimv2EncoderLayer.forwardz  sP  € ð" !ˆØ× × Ð Ø ×5Ñ5°mÓDˆMàŸ>š>ñ 
Ø'ð
à)ð
ð !<ð
ð ñ	
Ñˆô Ÿ™×-Ñ-¨m¿|¹|ÐVZ×VcÑVcÐ-ÓdˆØ Õ0ˆØ×$×$Ð$Ø ×5Ñ5°mÓDˆMà× × Ð Ø ×1Ñ1°-Ó@ˆMØ ˆàŸ™ Ó/ˆà Õ0ˆØ×$×$Ð$Ø ×1Ñ1°-Ó@ˆMà�=�=ˆ=Ü—>’> -Ó0×4Ñ4×6Ò6Ü#Ÿkšk¨-×*=Ñ*=Ó>×BÑBÀTÕI�Ü %§¢¨M¸|ÐQ\Ô ]�àÐr1   )r—  rÏ  rc   rÎ  rÇ  rÈ  rË  r‘   r”   r|   s   @@r.   rÁ  rÁ  f  s    ù‡ € ÷Zó Z÷&0÷ 0ò 0r1   rÁ  é   g     ˆÃ@Fc                óÂ   € V ^8„  d   QhR\         R\         R\         R\        R\        R\        P                  R,          R\        P
                  R	\        P                  /# )
r   rÿ   r   Ú	embed_dimÚtemperatureÚ	cls_tokenrß   Nrm   rW   )r™   rX   r§  r)   rß   rm   r   )r,   s   "r.   r/   r/   ­  si   € ÷ /ñ /Üð/äð/ô ð/ô ð	/ô
 ð/ô �L‰L˜4Õð/ô �;‰;ð/ô ‡\�\ñ/r1   c           	     ó^  € V^,          ^ 8w  d   \        RV 24      hV^,          pVe   VP                  R8w  d   \        P                  M\        P                  p\        P
                  ! WxVR7      V,          p	RW9,          ,          p	\        P
                  ! WVR7      p
\        P
                  ! WVR7      p\        P                  ! W«RR7      w  r«V
P                  4       P                  V	4      pVP                  4       P                  V	4      p\        P                  ! VP                  4       VP                  4       VP                  4       VP                  4       .^R7      pV'       d2   \        P                  ! \        P                  ! ^W(VR7      V.^ R7      pVP                  V4      # )a‡  2D sinusoidal position embeddings for an image patch grid.

Each (h, w) position gets an ``embed_dim``-dimensional vector laid out as
``[sin_h | cos_h | sin_w | cos_w]``, with row-major (H-outer) patch ordering.

Args:
    height: Grid height in patches.
    width: Grid width in patches.
    embed_dim: Total embedding dimension; must be divisible by 4.
    temperature: Base for the frequency decay.
    cls_token: If `True`, prepend a zero row for a CLS token.
    device: Target device; defaults to CPU.
    dtype: Output dtype; frequency arithmetic uses float64 internally.

Returns:
    Tensor of shape ``(height * width [+1], embed_dim)``.
z(`embed_dim` must be divisible by 4, got Úmps©rm   rß   rp  Úij©Úindexingr¥   )r1  Útyper)   Úfloat64ro   rï   Úmeshgridræ   Úouterr§   ÚsinÚcosrÚ   rn   )rÿ   r   rà  rá  râ  rß   rm   Úpos_dimÚcompute_dtypeÚomegaÚgrid_hÚgrid_wÚemb_hÚemb_wÚ	pos_embeds   &&&&&&&        r.   Ú&build_2d_sinusoidal_position_embeddingr÷  ­  s8  € ð4 �1…}˜ÔÜÐCÀIÀ;ÐOÓPÐPà˜1�n€Gà%+¢^°v·{±{ÀeÔ7K”E—M’MÔQV×Q^ÑQ^€MÜ�LŠL˜¸fÔEÈÕO€EØ�+Õ$Õ$€Eä�\Š\˜&¸fÔE€FÜ�\Š\˜%¸VÔD€FÜ—^’^ F¸TÔB�N€Fà�N‰NÓ×"Ñ" 5Ó)€EØ�N‰NÓ×"Ñ" 5Ó)€Eä—	’	˜5Ÿ9™9›;¨¯	©	«°U·Y±Y³[À%Ç)Á)Ã+ÐNÐTUÔV€IçÜ—I’IœuŸ{š{¨1¨iÐU[Ô\Ð^gÐhÐnoÔpˆ	à�<‰<˜ÓÐr1   c                   óŒ   a a€ ] tR tRt oRtRV3R lV 3R lllt]]! ^ R7      V3R lR l4       4       tV3R lR	 lt	R
t
VtV ;t# )ÚDeimv2SinePositionEmbeddingiß  zB
2D sinusoidal position embedding used in RT-DETR hybrid encoder.
c                ó&   <€ V ^8„  d   QhRS[ RS[ /# )r   rà  rá  r˜   )r,   r-   s   "€r.   r/   Ú(Deimv2SinePositionEmbedding.__annotate__ä  s   ø€ ÷ 'ñ '¡#ð '¹#ñ 'r1   c                ó<   <€ \         SV `  4        Wn        W n        R # r‘   )r[   r\   rà  rá  )rb   rà  rá  rd   s   &&&€r.   r\   Ú$Deimv2SinePositionEmbedding.__init__ä  s   ø€ Ü‰ÑÔØ"ŒØ&Ör1   ©Úmaxsizec                ó4   <€ V ^8„  d   QhRS[ P                  /# )r   rW   rh   )r,   r-   s   "€r.   r/   rû  ë  s   ø€ ÷ Gñ GÉ5Ï<É<ñ Gr1   c                 ó   € \        V / VB # r‘   )r÷  )Úargsr(  s   *,r.   Ú._cached_build_2d_sinusoidal_position_embeddingÚJDeimv2SinePositionEmbedding._cached_build_2d_sinusoidal_position_embeddingé  s   € ô 6°tÐF¸vÑFÐFr1   c          
      ó„   <€ V ^8„  d   QhRS[ RS[ RS[P                  S[,          RS[P                  RS[P
                  /# )r   r   rÿ   rß   rm   rW   )r™   r)   rß   r·   rm   r   )r,   r-   s   "€r.   r/   rû  î  sN   ø€ ÷ ñ áðñ ðñ —‘™sÕ"ð	ñ
 �{‰{ðñ 
�‰ñr1   c           	     óš   € V P                  \        V4      \        V4      V P                  V P                  VVR7      P	                  ^ 4      # )zu
Generate 2D sinusoidal position embeddings.

Returns:
    Position embeddings of shape (1, height*width, embed_dim)
)rÿ   r   rà  rá  rß   rm   )r  r   rà  rá  rð   )rb   r   rÿ   rß   rm   s   &&&&&r.   ru   Ú#Deimv2SinePositionEmbedding.forwardî  sN   € ð ×BÑBÜ˜VÓ$Ü˜EÓ"Ø—n‘nØ×(Ñ(ØØð Có 
÷ ‰)�A‹,ð	r1   ©rà  rá  )rÞ  i'  )r3   r4   r5   r6   r7   r\   Ústaticmethodr   r  ru   r9   r:   r{   r|   s   @@r.   rù  rù  ß  sF   ù‡ € ñ÷'õ 'ð
 Ù(°Ô4÷Gó 5ó ðG÷÷ ð r1   rù  c                   óT   a a€ ] tR tR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	# )ÚDeimv2AIFILayeri  z^
AIFI (Attention-based Intra-scale Feature Interaction) layer used in RT-DETR hybrid encoder.
c                ó    <€ V ^8„  d   QhRS[ /# r€   r   )r,   r-   s   "€r.   r/   ÚDeimv2AIFILayer.__annotate__
  s   ø€ ÷ 
hñ 
h™|ñ 
hr1   c                óX  <€ \         SV `  4        Wn        VP                  V n        VP                  V n        \        V P                  VP                  R 7      V n        \        P                  ! \        VP                  4       Uu. uF  p\        V4      NK  	  up4      V n        R# u upi )r  N)r[   r\   r�   rw  Ú	eval_sizerù  Úpositional_encoding_temperatureÚposition_embeddingr]   rÀ   r  Úencoder_layersrÁ  rÂ   ©rb   r�   rú   rd   s   && €r.   r\   ÚDeimv2AIFILayer.__init__
  s„   ø€ Ü‰ÑÔØŒØ"(×";Ñ";ˆÔØ×)Ñ)ˆŒä"=Ø×-Ñ-Ø×>Ñ>ô#
ˆÔô —m’mÌÈv×OdÑOdÔIeÓ$fÑIeÀAÔ%7¸Ö%?ÑIeÑ$fÓgˆŽùÒ$fs   ÂB'c                ód   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[ P                  /# )r   r&   r(  rW   rÔ  )r,   r-   s   "€r.   r/   r    s7   ø€ ÷ %ñ %á—|‘|ð%ñ Ñ+Õ,ð%ñ 
�‰ñ	%r1   c                óä  € VP                   ^ ,          pVP                   R,          w  rEVP                  ^4      P                  ^^4      pV P                  '       g   V P                  f+   V P                  VVVP                  VP                  R7      pMRpV P                   F  pV! V3RRRV/VB pK  	  VP                  ^^4      P                  W0P                  WE4      P                  4       pV# )z�
Args:
    hidden_states (`torch.FloatTensor` of shape `(batch_size, channels, height, width)`):
        Feature map to process.
r,  N)r   rÿ   rß   rm   r'  rÓ  )rx   ræ   rò   rœ  r  r  rß   rm   rÂ   rè   rw  r÷   )rb   r&   r(  rù   rÿ   r   rö  rÍ   s   &&,     r.   ru   ÚDeimv2AIFILayer.forward  sü   € ð #×(Ñ(¨Õ+ˆ
Ø%×+Ñ+¨BÕ/‰ˆà%×-Ñ-¨aÓ0×:Ñ:¸1¸aÓ@ˆà�=�=ˆ=˜DŸN™NÒ2Ø×/Ñ/ØØØ$×+Ñ+Ø#×)Ñ)ð	 0ó ‰Ið ˆIà—[”[ˆEÙ!Øñà#ðð -6ðð ñ	ŠMñ !ð ×#Ñ# A qÓ)×1Ñ1°*×>UÑ>UÐW]Óe×pÑpÓrð 	ð Ðr1   )r�   rw  r  rÂ   r  r^  r|   s   @@r.   r  r    s%   ù‡ € ñ÷
hó 
h÷%÷ %ð %r1   r  c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚDeimv2SpatialTuningAdapteri>  c                ó    <€ V ^8„  d   QhRS[ /# r€   r   )r,   r-   s   "€r.   r/   Ú'Deimv2SpatialTuningAdapter.__annotate__?  s   ø€ ÷  ñ  ™|ñ  r1   c           	     ó”  <€ \         SV `  4        VP                  p\        V^V^^RR7      V n        \
        P                  ! ^^^R7      V n        \        W^V,          ^^4      V n        \        V^V,          ^V,          ^^4      V n	        \        V^V,          ^V,          ^^4      V n
        \
        P                  ! 4       V n        R# )rU  Úgelurf  ©r?  r@  rB  N)r[   r\   Úspatial_tuning_adapter_inplanesr;  Ú	stem_convr]   Ú	MaxPool2dÚ	stem_poolrX  Úconv3Úconv4ÚGELUr�   )rb   r�   Úinplanesrd   s   && €r.   r\   Ú#Deimv2SpatialTuningAdapter.__init__?  s¡   ø€ Ü‰ÑÔØ×9Ñ9ˆÜ,¨V°Q¸À!ÀQÐSYÔZˆŒÜŸš°!¸AÀqÔIˆŒÜ(¨¸1¸x½<ÈÈAÓNˆŒ
Ü(¨°°Xµ¸qÀ8½|ÈQÐPQÓRˆŒ
Ü(¨°°Xµ¸qÀ8½|ÈQÐPQÓRˆŒ
Ü—g’g“iˆŽr1   c                ó�   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  S[ P                  S[ P                  3,          /# )r   Úpixel_valuesrW   )r)   r   r+   )r,   r-   s   "€r.   r/   r  I  s>   ø€ ÷ Añ A¡E§L¡Lð A±U¹5¿<¹<ÉÏÉÑW\×WcÑWcÐ;cÕ5dñ Ar1   c                óì   € V P                  V P                  V4      4      pV P                  V4      pV P                  V P	                  V4      4      pV P                  V P	                  V4      4      pW4V3# r‘   )r"  r   rX  r#  r�   r$  )rb   r)  r�  r‚  rƒ  r„  s   &&    r.   ru   Ú"Deimv2SpatialTuningAdapter.forwardI  s`   € ØŸ.™.¨¯©¸Ó)EÓFˆØŸ*™* _Ó5ˆØŸ*™* T§[¡[°Ó%AÓBˆØŸ*™* T§[¡[°Ó%AÓBˆØ°Ð@Ð@r1   )r�   rX  r#  r$  r   r"  r”   r|   s   @@r.   r  r  >  s!   ù‡ € ÷ ó  ÷A÷ Að Ar1   r  c                   óT   a a€ ] tR tR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	# )ÚDeimv2IntegraliQ  a½  
A static layer that calculates integral results from a distribution.

This layer computes the target location using the formula: `sum{Pr(n) * W(n)}`,
where Pr(n) is the softmax probability vector representing the discrete
distribution, and W(n) is the non-uniform Weighting Function.

Args:
    max_num_bins (int): Max number of the discrete bins. Default is 32.
                   It can be adjusted based on the dataset or task requirements.
c                ó    <€ V ^8„  d   QhRS[ /# r€   r   )r,   r-   s   "€r.   r/   ÚDeimv2Integral.__annotate__^  s   ø€ ÷ 0ñ 0™|ñ 0r1   c                óF   <€ \         SV `  4        VP                  V n        R # r‘   )r[   r\   Úmax_num_binsrÐ  s   &&€r.   r\   ÚDeimv2Integral.__init__^  s   ø€ Ü‰ÑÔØ"×/Ñ/ˆÖr1   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# )r   Úpred_cornersÚprojectrW   rh   )r,   r-   s   "€r.   r/   r/  b  s.   ø€ ÷ ñ ¡E§L¡Lð ¹5¿<¹<ð ÉEÏLÉLñ r1   c                ó8  € VP                   w  r4p\        P                  ! VP                  RV P                  ^,           4      ^R7      p\        P
                  ! WP                  VP                  4      4      P                  R^4      pVP                  W4R4      pV# r£   )rx   r.  r/  rè   r1  Úlinearrn   rß   )rb   r4  r5  rù   rü   rú   s   &&&   r.   ru   ÚDeimv2Integral.forwardb  s   € Ø%1×%7Ñ%7Ñ"ˆ
 Ü—y’y ×!5Ñ!5°b¸$×:KÑ:KÈaÕ:OÓ!PÐVWÔXˆÜ—x’x ¯j©j¸×9LÑ9LÓ.MÓN×VÑVÐWYÐ[\Ó]ˆØ#×+Ñ+¨JÀRÓHˆØÐr1   )r1  r^  r|   s   @@r.   r-  r-  Q  s#   ù‡ € ñ
÷0ó 0÷÷ ð r1   r-  c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )Ú	Deimv2LQEij  c                ó    <€ V ^8„  d   QhRS[ /# r€   r   )r,   r-   s   "€r.   r/   ÚDeimv2LQE.__annotate__k  s   ø€ ÷ oñ o™|ñ or1   c                óæ   <€ \         SV `  4        VP                  V n        VP                  V n        \	        ^V P                  ^,           ,          VP
                  ^VP                  4      V n        R# )é   N)r[   r\   Útop_prob_valuesr1  r°   Úlqe_hidden_dimÚ
lqe_layersÚreg_confrÐ  s   &&€r.   r\   ÚDeimv2LQE.__init__k  sZ   ø€ Ü‰ÑÔØ%×5Ñ5ˆÔØ"×/Ñ/ˆÔÜ! ! t×';Ñ';¸aÕ'?Õ"@À&×BWÑBWÐYZÐ\b×\mÑ\mÓnˆŽr1   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# )r   Úscoresr4  rW   rh   )r,   r-   s   "€r.   r/   r<  q  s.   ø€ ÷ ñ ™eŸl™lð ¹%¿,¹,ð É5Ï<É<ñ r1   c           	     ó„  € VP                  4       w  r4p\        P                  ! VP                  W4^V P                  ^,           4      RR7      pVP                  V P                  RR7      w  ru\        P                  ! WwP                  RRR7      .RR7      pV P                  VP                  W4R4      4      p	W,           pV# )r>  r¥   T)r¦   rk   rl   )rž  r.  r/  rè   r1  Útopkr?  r)   r§   rq   rB  )
rb   rE  r4  rù   Úlengthrú   ÚprobÚ	prob_topkÚstatÚquality_scores
   &&&       r.   ru   ÚDeimv2LQE.forwardq  s¢   € Ø ,× 1Ñ 1Ó 3Ñˆ
˜AÜ�yŠy˜×-Ñ-¨jÀ!ÀT×EVÑEVÐYZÕEZÓ[ÐacÔdˆØ—y‘y ×!5Ñ!5¸2�yÓ>‰ˆ	Ü�yŠy˜)§^¡^¸ÀD ^Ó%IÐJÐPRÔSˆØŸ™ d§l¡l°:ÀrÓ&JÓKˆØÕ'ˆØˆr1   )r1  rB  r?  r”   r|   s   @@r.   r:  r:  j  s    ù‡ € ÷oó o÷÷ ð r1   r:  c                   óT   a a€ ] tR tRt o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# )ÚDeimv2DecoderLayeri{  c                ó    <€ V ^8„  d   QhRS[ /# r€   r   )r,   r-   s   "€r.   r/   ÚDeimv2DecoderLayer.__annotate__|  s   ø€ ÷ eñ e™|ñ er1   c                ó^  <€ \         SV `  4        VP                  V n        \	        VV P                  VP
                  VP                  R 7      V n        VP                  V n        \        VP                  4      V n
        \        VR7      V n        \        V4      V n        \        VP                  4      V n        VP                   '       d   \#        VP                  4      MRV n        VP                   V n        VP                   '       d
   RV n        R# \        VP                  4      V n        R# )rÅ  ©r�   N)r[   r\   rˆ   rc   r¤  r  r«  rÈ  r—  rT   rË  r  Úencoder_attnr~   rÎ  rÏ  Úuse_gatewayr–   ÚgatewayÚencoder_attn_layer_normrÐ  s   &&€r.   r\   ÚDeimv2DecoderLayer.__init__|  sß   ø€ Ü‰ÑÔØ!Ÿ>™>ˆÔô -ØØ×(Ñ(Ø &× >Ñ >Ø×,Ñ,ô	
ˆŒð —~‘~ˆŒÜ$1°&·.±.Ó$AˆÔ!Ü?ÀvÔNˆÔÜ" 6Ó*ˆŒÜ -¨f¯n©nÓ =ˆÔØ5;×5G×5GÐ5G”z &§.¡.Ô1ÈTˆŒØ!×-Ñ-ˆÔØ/5×/A×/AÐ/A tˆÖ$Ä}ÐU[×UcÑUcÓGdˆÖ$r1   c                óf  <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[S[S[S[3,          ,          R,          RS[ P                  R,          RS[ P                  R,          R	S[S[,          R
S[ P                  /	# )r   r&   r³  Nr2  r3  r4  rB   Úencoder_attention_maskr(  rW   )r)   r   rP   r+   r™   r   r   )r,   r-   s   "€r.   r/   rQ  �  s½   ø€ ÷ Eñ Eá—|‘|ðEñ #Ÿ\™\¨DÕ0ðEñ  Ÿ,™,¨Õ-ð	Eñ
 Ÿ™ tÕ+ðEñ "¡%©©S¨¥/Õ2°TÕ9ðEñ  %Ÿ|™|¨dÕ2ðEñ !&§¡¨tÕ 3ðEñ Ñ+Õ,ðEñ 
�‰ñEr1   c           	     ó^  € Tp	V P                   ! RRVRVRV/VB w  r\        P                  P                  WP                  V P                  R7      pW‘,           pV P                  V4      pTp	Vf   TMW,           pV P                  VVVVVR7      w  r\        P                  P                  WP                  V P                  R7      pV P                  e   V P                  W‘4      pMW‘,           pV P                  V4      pTp	V P                  V4      pW‘,           pV P                  V4      pV# )a“  
Args:
    hidden_states (`torch.FloatTensor`):
        Input to the layer of shape `(batch, seq_len, hidden_size)`.
    object_queries_position_embeddings (`torch.FloatTensor`, *optional*):
        Position embeddings for the object query slots. These are added to both queries and keys
        in the self-attention layer (not values).
    reference_points (`torch.FloatTensor`, *optional*):
        Reference points.
    spatial_shapes (`torch.LongTensor`, *optional*):
        Spatial shapes.
    level_start_index (`torch.LongTensor`, *optional*):
        Level start index.
    encoder_hidden_states (`torch.FloatTensor`):
        cross attention input to the layer of shape `(batch, seq_len, hidden_size)`
    encoder_attention_mask (`torch.FloatTensor`): encoder attention mask of size
        `(batch, 1, target_len, source_len)` where padding elements are indicated by very large negative
        values.
r&   r'  r³  rš  )r&   rB   r2  r3  r4  r2   )rÈ  r]   ré   r—  rœ  rË  rT  rV  rW  rÎ  rÏ  )rb   r&   r³  r2  r3  r4  rB   rZ  r(  rm  rú   s   &&&&&&&&,  r.   ru   ÚDeimv2DecoderLayer.forward�  sD  € ð< !ˆð  Ÿ>š>ñ 
Ø'ð
à1ð
ð !4ð
ð ñ	
Ñˆô Ÿ™×-Ñ-¨m¿|¹|ÐVZ×VcÑVcÐ-ÓdˆØ Õ0ˆØ×1Ñ1°-Ó@ˆà ˆð *=Ò)D™È-ÕJmˆØ×,Ñ,Ø'Ø"7Ø-Ø)Ø 3ð -ó 
Ñˆô Ÿ™×-Ñ-¨m¿|¹|ÐVZ×VcÑVcÐ-Ódˆà�<‰<Ò#Ø ŸL™L¨ÓA‰Mà$Õ4ˆMØ ×8Ñ8¸ÓGˆMð !ˆØŸ™ Ó/ˆØ Õ0ˆØ×-Ñ-¨mÓ<ˆàÐr1   )
r—  rT  rW  rÏ  rV  rc   rÎ  rÈ  rË  rU  )NNNNNNr”   r|   s   @@r.   rO  rO  {  s#   ù‡ € ÷eó e÷(E÷ Eò Er1   rO  c                   óŠ   a a€ ] tR tRt oRtRtRt. R	OtRtRt	Rt
Rt]P                  ! 4       V 3R l4       tV3R ltRtVtV ;t# )
ÚDeimv2PreTrainedModeliØ  Údeimv2r)  Tc           
     ól  <€ \         SV `  V4       \        V\        \        34      '       Edæ   VP
                  eÅ   VP
                   F´  pV P                  P                  ;'       g%    ^V P                  P                  ^,           ,          p\        \        P                  ! ^V,
          V,          4      ) 4      p\        P                  ! VP                  4       \        P                  ! VP                   V4       K¶  	  VP"                  ex   VP"                   Fg  p\        P                  ! VP$                  R,          P                  ^ 4       \        P                  ! VP$                  R,          P                   ^ 4       Ki  	  \'        VR4      '       d6   \        P                  ! VP(                  V P                  P(                  4       \'        VR4      '       d6   \        P                  ! VP*                  V P                  P*                  4       \        V\,        4      '       EdÄ   \        P                  ! VP.                  P                  R4       \0        P2                  ! 4       p\0        P4                  ! VP6                  \0        P8                  R7      P;                  V4      R\        P<                  ,          VP6                  ,          ,          p\0        P>                  ! VPA                  4       VPC                  4       .R4      pWwPE                  4       PG                  RRR7      PH                  ,          pVPK                  VP6                  ^^4      PM                  ^\O        VPP                  4      ^.4      p\0        PR                  ! VPP                   Uu. uF!  p\0        P4                  ! ^V^,           4      NK#  	  up4      PK                  ^R^4      p	Wy,          p\        PT                  ! VP.                  P                   VPW                  4       4       \        P                  ! VPX                  P                  R4       \        P                  ! VPX                  P                   R4       VPP                   UU
u. uF  p\[        V4       F  p
^V,          NK  	  K   	  ppp
\        PT                  ! VP\                  \0        P^                  ! V\0        P`                  R7      4       \        V\b        4      '       dÆ   V P                  P                  ;'       g%    ^V P                  P                  ^,           ,          p\        \        P                  ! ^V,
          V,          4      ) 4      p\        P                  ! VPd                  P                  4       \        P                  ! VPd                  P                   V4       \        V\f        4      '       dw   \        \        P                  ! R4      ) 4      p\        P                  ! VPh                  P                   V4       \        P                  ! VPh                  P                  ^ 4       \        V\j        4      '       dy   \        P                  ! VPl                  P$                  R,          P                   ^ 4       \        P                  ! VPl                  P$                  R,          P                  ^ 4       \'        VR	4      '       dG   V P                  Pn                  '       d+   \        P                  ! VPp                  P                  4       \'        VR
4      '       dF   V P                  Pr                  ^ 8”  d+   \        P                  ! VPt                  P                  4       \        V\v        4      '       Ed   \        P                  ! VPx                  P                  4       \        P                  ! VPx                  P                   ^ 4       \        P                  ! VPz                  P                  4       \        P                  ! VPz                  P                   ^ 4       \        P                  ! VP|                  P                  4       \        P                  ! VP|                  P                   ^ 4       R# R# u upi u up
pi )zInitialize the weightsNÚ	reg_scaleÚuprµ  r  ç       @Trj   Úweight_embeddingÚdenoising_class_embedrl   rp  )?r[   Ú_init_weightsr  ÚDeimv2ForObjectDetectionÚDeimv2DecoderÚclass_embedr�   Úinitializer_bias_prior_probÚ
num_labelsrX   ÚmathÚlogÚinitÚxavier_uniform_r`   Ú	constant_r…   Ú
bbox_embedrÂ   Úhasattrra  rb  r  r"  r)   Úget_default_dtyperï   r  rì   rn   Úpirî   rî  rí  ÚabsrØ  Úvaluesrè   Útilerô   rÕ   rõ   Úcopy_ræ   rÔ   r  r   rë   ro   ÚDeimv2ModelÚenc_score_headr–   r�   r:  rB  Úlearn_initial_queryrd  Únum_denoisingre  r~   r‰   rŠ   r‹   )rb   r“  rÍ   Ú
prior_probr…   Údefault_dtypeÚthetasÚ	grid_initr$  r–  rú   r   rd   s   &&          €r.   rf  Ú#Deimv2PreTrainedModel._init_weightsä  s£  ø€ ô 	‰Ñ˜fÔ%ä�fÔ7¼ÐG×HÓHØ×!Ñ!Ò-Ø#×/Ô/�EØ!%§¡×!HÑ!H×!lÐ!lÈAÐQU×Q\ÑQ\×QgÑQgÐjkÕQkÕLl�JÜ ¤$§(¢(¨A°
­N¸jÕ+HÓ"IÐ!IÓJ�DÜ×(Ò(¨¯©Ô6Ü—N’N 5§:¡:¨tÖ4ñ	 0ð × Ñ Ò,Ø#×.Ô.�EÜ—N’N 5§<¡<°Õ#3×#:Ñ#:¸AÔ>Ü—N’N 5§<¡<°Õ#3×#8Ñ#8¸!Ö<ñ /ô �v˜{×+Ò+Ü—’˜v×/Ñ/°·±×1FÑ1FÔGä�v˜t×$Ò$Ü—’˜vŸy™y¨$¯+©+¯.©.Ô9ä�fÔA×BÓBÜ�NŠN˜6×2Ñ2×9Ñ9¸3Ô?Ü!×3Ò3Ó5ˆMÜ—\’\ &§.¡.¼¿¹ÔD×GÑGÈÓVØ”d—g‘g• §¡Õ.õˆFô Ÿš V§Z¡Z£\°6·:±:³<Ð$@À"ÓEˆIØ!§M¡M£O×$7Ñ$7¸ÀDÐ$7Ó$I×$PÑ$PÕPˆIØ!×)Ñ)¨&¯.©.¸!¸QÓ?×DÑDÀaÌÈV×McÑMcÓIdÐfgÐEhÓiˆIÜ—l’lÀF×DZÒDZÓ#[ÑDZ¸q¤E§L¢L°°A¸µEÖ$:ÑDZÑ#[Ó\×dÑdÐefÐhjÐlmÓnˆGØÕ ˆIÜ�JŠJ�v×.Ñ.×3Ñ3°Y×5FÑ5FÓ5HÔIä�NŠN˜6×3Ñ3×:Ñ:¸CÔ@Ü�NŠN˜6×3Ñ3×8Ñ8¸#Ô>à/5×/EÒ/EÔXÑ/E¨!ÌuÐUVÎxÈ!  A§ Éx¡Ñ/EÐÑXÜ�JŠJ�v×.Ñ.´·²Ð=MÔUZ×UbÑUbÔ0cÔdä�fœk×*Ò*ØŸ™×@Ñ@×dÐdÀAÈÏÉ×I_ÑI_ÐbcÕIcÕDdˆJÜœ$Ÿ(š( A¨
¥N°jÕ#@ÓAÐAÓBˆDÜ× Ò  ×!6Ñ!6×!=Ñ!=Ô>Ü�NŠN˜6×0Ñ0×5Ñ5°tÔ<ä�fœj×)Ò)Üœ$Ÿ(š( ?Ó3Ð3Ó4ˆDÜ�NŠN˜6Ÿ;™;×+Ñ+¨TÔ2Ü�NŠN˜6Ÿ;™;×-Ñ-¨qÔ1ä�fœi×(Ò(Ü�NŠN˜6Ÿ?™?×1Ñ1°"Õ5×:Ñ:¸AÔ>Ü�NŠN˜6Ÿ?™?×1Ñ1°"Õ5×<Ñ<¸aÔ@ä�6Ð-×.Ò.°4·;±;×3R×3RÐ3RÜ× Ò  ×!8Ñ!8×!?Ñ!?Ô@Ü�6Ð2×3Ò3¸¿¹×8QÑ8QÐTUÔ8UÜ× Ò  ×!=Ñ!=×!DÑ!DÔEä�fœo×.Ó.Ü× Ò  ×!1Ñ!1×!8Ñ!8Ô9Ü�NŠN˜6×+Ñ+×0Ñ0°!Ô4Ü× Ò  §¡×!6Ñ!6Ô7Ü�NŠN˜6Ÿ>™>×.Ñ.°Ô2Ü× Ò  ×!1Ñ!1×!8Ñ!8Ô9Ü�NŠN˜6×+Ñ+×0Ñ0°!Ö4ñ /ùò= $\ùó  Ys   Î'b+Ò$b0c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r€   r   )r,   r-   s   "€r.   r/   Ú"Deimv2PreTrainedModel.__annotate__Ø  s   ø‡ ‚ áÑò r1   r2   )Úimage)ÚDeimv2HybridEncoderÚDeimv2LiteEncoderrO  )r3   r4   r5   r6   Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚ_no_split_modulesÚ_supports_sdpaÚ_supports_flash_attnÚ_supports_attention_backendÚ_supports_flex_attnr)   Úno_gradrf  r8   r9   r:   r{   r|   s   @@r.   r^  r^  Ø  sV   ù‡ € ð !ÐØ$€OØ!ÐÚ]ÐØ€NØÐØ"&ÐØÐà
‡]‚]ƒ_ôD5ó ðD5÷ … r1   r^  c                   óH   a a€ ] tR tRt oRtV 3R ltV 3R ltR tRtVt	V ;t
# )ÚDeimv2FrozenBatchNorm2di,  zê
BatchNorm2d where the batch statistics and the affine parameters are fixed.

Copy-paste from torchvision.misc.ops with added eps before rsqrt, without which any other models than
torchvision.models.resnet[18,34,50,101] produce nans.
c                óœ  <€ \         SV `  4        \        P                  ! \        P
                  ! V4      4      V n        \        P                  ! \        P                  ! V4      4      V n        \        P                  ! \        P                  ! V4      4      V n	        \        P                  ! \        P
                  ! V4      4      V n
        R # r‘   )r[   r\   r]   r  r)   r_   r`   rÚ   r…   Úrunning_meanÚrunning_var)rb   r$  rd   s   &&€r.   r\   Ú Deimv2FrozenBatchNorm2d.__init__4  sp   ø€ Ü‰ÑÔÜ—i’i¤§
¢
¨1£Ó.ˆŒÜ—I’IœeŸkšk¨!›nÓ-ˆŒ	ÜŸIšI¤e§k¢k°!£nÓ5ˆÔÜŸ9š9¤U§Z¢Z°£]Ó3ˆÖr1   c           	     óN   <€ VR ,           pW�9   d   W \         S	V `  WW4WVV4       R# )Únum_batches_trackedN)r[   Ú_load_from_state_dict)
rb   Ú
state_dictÚprefixÚlocal_metadataÚstrictÚmissing_keysÚunexpected_keysÚ
error_msgsÚnum_batches_tracked_keyrd   s
   &&&&&&&& €r.   r˜  Ú-Deimv2FrozenBatchNorm2d._load_from_state_dict;  s4   ø€ ð #)Ð+@Õ"@ÐØ"Ô0ØÐ3ä‰Ñ%Ø ¸ÐWaö	
r1   c                ól  € V P                   P                  ^R^^4      pV P                  P                  ^R^^4      pV P                  P                  ^R^^4      pV P                  P                  ^R^^4      pRpW$V,           P                  4       ,          pW5V,          ,
          pW,          V,           # )r¤   çñhãˆµøä>rl   )r`   rè   r…   r”  r“  rr   )rb   r’   r`   r…   r”  r“  ÚepsilonÚscales   &&      r.   ru   ÚDeimv2FrozenBatchNorm2d.forwardF  s¥   € ð —‘×$Ñ$ Q¨¨A¨qÓ1ˆØ�y‰y× Ñ   B¨¨1Ó-ˆØ×&Ñ&×.Ñ.¨q°"°a¸Ó;ˆØ×(Ñ(×0Ñ0°°B¸¸1Ó=ˆØˆØ¨Õ/×6Ñ6Ó8Õ8ˆØ UÕ*Õ*ˆØ�y˜4ÕÐr1   )r…   r“  r”  r`   )r3   r4   r5   r6   r7   r\   r˜  ru   r9   r:   r{   r|   s   @@r.   r‘  r‘  ,  s   ù‡ € ñõ4õ	
÷
 ò 
 r1   r‘  c                ó²  € V P                  4        EFA  w  r\        V\        P                  4      '       dç   \	        VP
                  4      pVP                  P                  \        P                  ! R4      8w  d•   VP                  P                  VP                  4       VP                  P                  VP                  4       VP                  P                  VP                  4       VP                  P                  VP                  4       W0P                  V&   \        \        VP!                  4       4      4      ^ 8”  g   EK6  \#        V4       EKD  	  R# )zˆ
Recursively replace all `torch.nn.BatchNorm2d` with `Deimv2FrozenBatchNorm2d`.

Args:
    model (torch.nn.Module):
        input model
ÚmetaN)Únamed_childrenr  r]   rH  r‘  Únum_featuresr`   rß   r)   rx  r…   r“  r”  Ú_modulesÚlenrP   ÚchildrenÚreplace_batch_norm)ÚmodelÚnamer“  Ú
new_modules   &   r.   r®  r®  S  sä   € ð ×,Ñ,×.‰ˆÜ�fœbŸn™n×-Ò-Ü0°×1DÑ1DÓEˆJà�}‰}×#Ñ#¤u§|¢|°FÓ';Ô;Ø×!Ñ!×'Ñ'¨¯©Ô6Ø—‘×%Ñ% f§k¡kÔ2Ø×'Ñ'×-Ñ-¨f×.AÑ.AÔBØ×&Ñ&×,Ñ,¨V×-?Ñ-?Ô@à#-�N‰N˜4Ñ äŒt�F—O‘OÓ%Ó&Ó'¨!×+Ü˜v×&ó /r1   c                   óD   a a€ ] tR tRt oV 3R ltV3R lR ltRtVtV ;t# )ÚDeimv2ConvEncoderil  c                ó6  <€ \         SV `  V4       \        V4      pVP                  '       d2   \        P
                  ! 4       ;_uu_ 4        \        V4       R R R 4       W n        V P                  P                  V n	        \        P                  ! V P                   Uu. uFA  pVP                  R8w  d   \        WVP                  ^^4      M\        P                  ! 4       NKC  	  up4      V n        V P#                  4        R #   + '       g   i     L´; iu upi )NÚlite)r[   r\   r   Úfreeze_backbone_batch_normsr)   r�  r®  r¯  ÚchannelsÚintermediate_channel_sizesr]   rÀ   Úencoder_typer;  rw  rJ  Úencoder_input_projÚ	post_init)rb   r�   ÚbackboneÚ
in_channelrd   s   &&  €r.   r\   ÚDeimv2ConvEncoder.__init__m  sØ   ø€ Ü‰Ñ˜Ô ä  Ó(ˆà×-×-Ð-ä—’—•Ü" 8Ô,÷ !àŒ
Ø*.¯*©*×*=Ñ*=ˆÔ'Ü"$§-¢-ð
 #'×"AÒ"Aó	ñ #B�Jð ×&Ñ&¨&Ô0ô $ F¸×8QÑ8QÐSTÐVWÔXä—[’[“]ò#ñ #Bñ	ó#
ˆÔð 	�‰Ö÷ !—üò
s   ÁDÂADÄD	c                ót   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[S[ P                  ,          /# ©r   r)  r(  rW   ©r)   r   r   r   rP   )r,   r-   s   "€r.   r/   ÚDeimv2ConvEncoder.__annotate__ƒ  s>   ø€ ÷ Uñ U¡E§L¡Lð U¹FÑCUÕ<Vð UÑ[_Ñ`e×`lÑ`lÕ[mñ Ur1   c                ó¨   € V P                   ! V3/ VB P                  p\        V P                  V4       UUu. uF  w  rEV! V4      NK  	  upp# u uppi r‘   )r¯  rO   rÁ   rº  )rb   r)  r(  ÚfeaturesÚprojÚfeats   &&,   r.   ru   ÚDeimv2ConvEncoder.forwardƒ  sH   € Ø—:’:˜lÑ5¨fÑ5×BÑBˆÜ-0°×1HÑ1HÈ(Ô-SÔTÑ-S™z˜t‘�T–
Ñ-SÒTÐTùÓTs   ·A)rº  r¸  r¯  r”   r|   s   @@r.   r³  r³  l  s   ù‡ € õ÷,U÷ Uð Ur1   r³  c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚDeimv2DINOv3ConvEncoderiˆ  c                ó    <€ V ^8„  d   QhRS[ /# r€   r   )r,   r-   s   "€r.   r/   Ú$Deimv2DINOv3ConvEncoder.__annotate__‰  s   ø€ ÷ ñ ™|ñ r1   c                óº  <€ \         SV `  V4       \        V4      V n        \	        V4      V n        VP                  P                  pVP                  pVP                  p\        P                  ! \        WV^,          ,           V^^4      \        WV^,          ,           V^^4      \        WV^,          ,           V^^4      .4      V n        V P                  4        R# rœ   )r[   r\   r   r¼  r  Úspatial_tuning_adapterÚbackbone_configrc   rw  r  r]   rÀ   r;  Úfusion_projr»  )rb   r�   rà  r³   Úspatial_tuning_adapter_channelsrd   s   &&   €r.   r\   Ú Deimv2DINOv3ConvEncoder.__init__‰  sÊ   ø€ Ü‰Ñ˜Ô Ü% fÓ-ˆŒä&@ÀÓ&HˆÔ#à×*Ñ*×6Ñ6ˆ	Ø×.Ñ.ˆ
Ø*0×*PÑ*PÐ'ÜŸ=š=ä# FÐ8WÐZ[Õ8[Õ,[Ð]gÐijÐlmÓnÜ# FÐ8WÐZ[Õ8[Õ,[Ð]gÐijÐlmÓnÜ# FÐ8WÐZ[Õ8[Õ,[Ð]gÐijÐlmÓnðó
ˆÔð 	�‰Ör1   c                ót   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[S[ P                  ,          /# rÀ  rÁ  )r,   r-   s   "€r.   r/   rË  œ  s9   ø€ ÷ ñ ¡E§L¡Lð ¹FÑCUÕ<Vð Ñ[_Ñ`e×`lÑ`lÕ[mñ r1   c                ó@  € V P                   ! V3/ VB pVP                  pV P                   P                  P                  pVP                  ^,          V,          pVP                  ^,          V,          p. p\        V4      p	\        V4       F  w  r«\        V^V	^,
          V
,
          ,          ,          4      p\        V^V	^,
          V
,
          ,          ,          4      p\        P                  ! W¼V.RRR7      pVP                  V4       K�  	  V P                  V4      p. p\        \        W�4      4       Fd  w  p
w  pp\        P                  ! VP                  VP                   4      V.^R7      pVP                  V P"                  V
,          ! V4      4       Kf  	  V# )r   rÙ   F)rž  rÛ   rÝ   r¥   )r¼  rO   r�   Ú
patch_sizerx   r¬  rË   r™   r.  Úinterpolateró   rÍ  rÁ   r)   r§   rn   rß   rÏ  )rb   r)  r(  Úbackbone_outputrO   rÔ  Úheight_patchesÚwidth_patchesÚsemantic_featuresÚ
num_scalesrÌ   rÆ  Úresize_heightÚresize_widthÚspatialÚdetail_featuresÚoutputsÚsemantic_featureÚdetail_featureÚfuseds   &&,                 r.   ru   ÚDeimv2DINOv3ConvEncoder.forwardœ  sd  € ØŸ-š-¨Ñ?¸Ñ?ˆØ&×3Ñ3ˆà—]‘]×)Ñ)×4Ñ4ˆ
Ø%×+Ñ+¨AÕ.°*Õ<ˆØ$×*Ñ*¨1Õ-°Õ;ˆàÐÜ˜Ó&ˆ
Ü  Ö.‰GˆAÜ °°zÀAµ~ÈÕ7IÕ1JÕ JÓKˆMÜ˜}¨q°ZÀ!µ^ÀaÕ5GÕ/HÕHÓIˆLÜ—m’m D¸|Ð/LÐS]ÐmrÔsˆGØ×$Ñ$ WÖ-ñ	 /ð ×5Ñ5°lÓCˆàˆÜ5>¼sÐCTÓ?fÖ5gÑ1ˆAÑ1Ð  .Ü—I’IÐ/×2Ñ2°>×3HÑ3HÓIÈ>ÐZÐ`aÔbˆEØ�N‰N˜4×+Ñ+¨AÖ.¨uÓ5Ö6ñ 6hð ˆr1   )r¼  rÏ  rÍ  r”   r|   s   @@r.   rÉ  rÉ  ˆ  s   ù‡ € ÷ó ÷&÷ ð r1   rÉ  c                   ó�   a a€ ] tR tRt oR]! ]RR7      ]! ]RR7      ./tV3R lV 3R llt]]	V3R lR	 l4       4       t
R
tVtV ;t# )r†  i¶  r&   Ú
input_proj)Ú
layer_nameÚbi_fusion_convc                ó    <€ V ^8„  d   QhRS[ /# r€   r   )r,   r-   s   "€r.   r/   ÚDeimv2LiteEncoder.__annotate__¿  s   ø€ ÷ ñ ™|ñ r1   c                ót  <€ \         SV `  V4       VP                  pVP                  p\        P
                  ! VP                   Uu. uF  p\        WV^^4      NK  	  up4      V n        \        P                  ! ^^^R7      V n
        \        WV^^VR7      V n        \        P                  ! ^^^R7      V n        \        WV^^VR7      V n        \        WV^^VR7      V n        \        ^VP                   ,          4      p\#        WR7      V n        \#        WR7      V n        V P)                  4        R# u upi )r¤   r  rf  ©rt  N)r[   r\   rw  rV  r]   rÀ   Úencoder_in_channelsr;  rå  Ú	AvgPool2dÚ
down_pool1Ú
down_conv1Ú
down_pool2Ú
down_conv2rç  rx  Ú
depth_multrr  Ú	fpn_blockÚ	pan_blockr»  )rb   r�   r³   rC  r½  rb  rd   s   &&    €r.   r\   ÚDeimv2LiteEncoder.__init__¿  s  ø€ Ü‰Ñ˜Ô Ø×.Ñ.ˆ
Ø×/Ñ/ˆ
äŸ-š-ØY_×YsÒYsÓtÑYsÈ:Ô  °ZÀÀAÖFÑYsÑtó
ˆŒô Ÿ,š,°1¸QÈÔJˆŒÜ-¨fÀ*ÈaÐQRÐ_iÔjˆŒÜŸ,š,°1¸QÈÔJˆŒÜ-¨fÀ*ÈaÐQRÐ_iÔjˆŒä1°&ÀjÐRSÐUVÐcmÔnˆÔä˜1˜v×0Ñ0Õ0Ó1ˆ
Ü+¨FÔKˆŒÜ+¨FÔKˆŒà�‰Öùò us   ÁD5c                ó`   <€ V ^8„  d   QhRS[ S[P                  ,          RS[S[,          RS[/# )r   Úinputs_embedsr(  rW   ©rP   r)   r   r   r   rM   )r,   r-   s   "€r.   r/   ré  ×  s2   ø€ ÷ 9ñ 9¡T©%¯,©,Õ%7ð 9Á6ÑJ\ÕC]ð 9Ñbuñ 9r1   c                óÂ  € \        V4       UUu. uF  w  r4V P                  V,          ! V4      NK   	  pppVP                  V P                  V P	                  VR,          4      4      4       V P                  VR,          \        P                  ! VR,          ^4      ,           4      VR&   . pV^ ,          \        P                  ! V^,          RRR7      ,           pVP                  V P                  V4      4       V^,          V P                  V P                  VR,          4      4      ,           pVP                  V P                  V4      4       \        VR7      # u uppi )r¤   rc  Únearest©Úscale_factorrÛ   ©rO   rl   )rË   rå  ró   rï  rî  rç  r.  Úadaptive_avg_pool2drÕ  ró  rñ  rð  rô  rM   )rb   r÷  r(  rÌ   ÚfeatureÚprojected_featuresrß  Úfused_features   &&,     r.   ru   ÚDeimv2LiteEncoder.forwardÕ  s   € ô MVÐVcÔLdÔeÑLd¹j¸a˜dŸo™o¨aÖ0°Ö9ÑLdÐÑeØ×!Ñ! $§/¡/°$·/±/ÐBTÐUWÕBXÓ2YÓ"ZÔ[à!%×!4Ñ!4Ø˜rÕ"¤Q×%:Ò%:Ð;MÈbÕ;QÐSTÓ%UÕUó"
Ð˜2Ñð ˆØ*¨1Õ-´·²Ð>PÐQRÕ>SÐbeÐluÔ0vÕvˆØ�‰�t—~‘~ mÓ4Ô5à*¨1Õ-°·±ÀÇÁÐPWÐXZÕP[Ó@\Ó0]Õ]ˆØ�‰�t—~‘~ mÓ4Ô5ä"°Ô8Ð8ùó fs   �$E)rç  rï  rñ  rî  rð  ró  rå  rô  )r3   r4   r5   r6   r   r;  Ú_can_record_outputsr\   r   r   ru   r9   r:   r{   r|   s   @@r.   r†  r†  ¶  sY   ù‡ € ð 	ÙÐ.¸<ÔHÙÐ.Ð;KÔLð
ðÐ÷ó ð,  Ø÷9ó ó  ÷9ð 9r1   r†  c                ó„   € V ^8„  d   QhR\         P                  R\         P                  R\        R\         P                  /# )r   Úfeature_map_1Úfeature_map_2Úfuse_oprW   )r)   r   r·   )r,   s   "r.   r/   r/   é  s8   € ÷ <ñ <¤U§\¡\ð <Ä%Ç,Á,ð <ÔY\ð <Ôin×iuÑiuñ <r1   c                óR   € VR8X  d	   W,           # \         P                  ! W.^R7      # )zJFuses two feature maps via element-wise sum or channel-wise concatenation.rô   r¥   )r)   r§   )r  r  r  s   &&&r.   Úfuse_feature_mapsr	  é  s'   € à�%ÔØÕ,Ð,Ü�9Š9�mÐ3¸Ô;Ð;r1   c                   ó†   a a€ ] tR tRt oRtR]R]/tV3R lV 3R llt]	]
! RR7      RV3R	 lR
 ll4       4       tRtVtV ;t# )r…  ið  a5  
DEIMv2 variant of DFineHybridEncoder. Uses element-wise sum fusion (`fuse_feature_maps`) instead of
D-FINE's channel concatenation, Deimv2RepNCSPELAN5 (simplified 4-way concat) instead of DFineRepNCSPELAN4,
and returns Deimv2EncoderOutput with feature_maps instead of BaseModelOutput with last_hidden_state.
r&   r'   c                ó    <€ V ^8„  d   QhRS[ /# r€   r   )r,   r-   s   "€r.   r/   Ú Deimv2HybridEncoder.__annotate__ü  s   ø€ ÷  ñ  ™|ñ  r1   c           
     óö  <€ \         SV `  V4       Wn        VP                  V n        \        V P                  4      ^,
          V n        VP                  V n        VP                  V n        VP                  V n	        VP                  V n
        VP                  V n        V P                   Uu. uF  q P                  NK  	  upV n        V P                  V n        VP                  V n        \         P"                  ! \%        \        V P                  4      4       Uu. uF  p\'        V4      NK  	  up4      V n        \         P"                  ! 4       V n        \         P"                  ! 4       V n        \%        \        V P                  4      ^,
          ^ R4       F  pV P*                  P/                  \1        WP                  V P                  ^^4      4       \3        ^VP4                  ,          4      pV P,                  P/                  \7        WR7      4       K�  	  \         P"                  ! 4       V n        \         P"                  ! 4       V n        \%        \        V P                  4      ^,
          4       Fj  pV P8                  P/                  \=        V^^4      4       \3        ^VP4                  ,          4      pV P:                  P/                  \7        WR7      4       Kl  	  V P?                  4        R# u upi u upi )r¤   rë  Nrl   ) r[   r\   r�   rì  r=  r¬  Únum_fpn_stagesÚfeat_stridesrw  Úencode_proj_layersr  r  r>  Úout_stridesÚencoder_fuse_opr  r]   rÀ   r  r  ÚaifiÚlateral_convsÚ
fpn_blocksró   r;  rx  rò  rr  Údownsample_convsÚ
pan_blocksrˆ  r»  )rb   r�   rú   rb  rd   s   &&  €r.   r\   ÚDeimv2HybridEncoder.__init__ü  s/  ø€ Ü‰Ñ˜Ô ØŒØ!×5Ñ5ˆÔÜ! $×"2Ñ"2Ó3°aÕ7ˆÔØ"×/Ñ/ˆÔØ"(×";Ñ";ˆÔØ"(×";Ñ";ˆÔØ/5×/UÑ/UˆÔ,Ø×)Ñ)ˆŒØ>B×>NÒ>NÓOÑ>N¸×4Ô4Ñ>NÑOˆÔØ×,Ñ,ˆÔØ×-Ñ-ˆŒä—M’MÄEÌ#Èd×NeÑNeÓJfÔDgÓ"hÑDg¸q¤?°6Ö#:ÑDgÑ"hÓiˆŒ	äŸ]š]›_ˆÔÜŸ-š-›/ˆŒÜ”s˜4×+Ñ+Ó,¨qÕ0°!°RÖ8ˆAØ×Ñ×%Ñ%Ü# F×,CÑ,CÀT×E\ÑE\Ð^_ÐabÓcôô ˜q 6×#4Ñ#4Õ4Ó5ˆJØ�O‰O×"Ñ"Ô#5°fÔ#UÖVñ 9ô !#§¢£ˆÔÜŸ-š-›/ˆŒÜ”s˜4×+Ñ+Ó,¨qÕ0Ö1ˆAØ×!Ñ!×(Ñ(¬°f¸aÀÓ)CÔDÜ˜q 6×#4Ñ#4Õ4Ó5ˆJØ�O‰O×"Ñ"Ô#5°fÔ#UÖVñ 2ð
 	�‰Öùò- Pùò #is   Â,K1ÄK6F)Útie_last_hidden_statesc                ón   <€ V ^8„  d   QhRS[ S[P                  ,          R,          RS[S[,          RS[/# )r   r÷  Nr(  rW   rø  )r,   r-   s   "€r.   r/   r     sB   ø€ ÷ (Bñ (Bá™EŸL™LÕ)¨DÕ0ð(Bñ Ñ+Õ,ð(Bñ 
ñ	(Br1   c                óŒ  € TpV P                   P                  ^ 8”  dA   \        V P                  4       F'  w  rEV P                  V,          ! W5,          3/ VB W5&   K)  	  VR,          .p\        \        V P                  V P                  4      4       F…  w  pw  r‰W0P                  V,
          ^,
          ,          p
VR,          pV! V4      pW¶R&   \        P                  ! VRRR7      p\        WºV P                  4      pV	! V4      pVP                  V4       K‡  	  VP                  4        V^ ,          .p\        \        V P                  V P                   4      4       FY  w  pw  ppVR,          pWg^,           ,          pV! V4      p\        VVV P                  4      pV! V4      pVP                  V4       K[  	  \#        VR7      # )zŸ
Args:
    inputs_embeds (`list[torch.FloatTensor]`):
        Multi-scale feature maps from the backbone (one tensor per feature level) passed to the encoder.
rc  rú  rû  rý  rl   )r�   r  rË   r  r  rÁ   r  r  r  r.  rÕ  r	  r  ró   Úreverser  r  rM   )rb   r÷  r(  rO   rÌ   Úenc_indÚfpn_feature_mapsÚidxÚlateral_convró  Úbackbone_feature_mapÚtop_fpn_feature_mapÚfused_feature_mapÚnew_fpn_feature_mapÚpan_feature_mapsÚdownsample_convrô  Útop_pan_feature_mapÚfpn_feature_mapÚdownsampled_feature_mapÚnew_pan_feature_maps   &&,                  r.   ru   ÚDeimv2HybridEncoder.forward  s¹  € ð %ˆà�;‰;×%Ñ%¨Ô)Ü'¨×(?Ñ(?Ö@‘
�Ø(,¯	©	°!®°\Õ5JÑ(UÈfÑ(U�Ó%ñ Að )¨Õ,Ð-ÐÜ.7¼¸D×<NÑ<NÐPT×P_ÑP_Ó8`Ö.aÑ*ˆCÑ*�,Ø#/×0CÑ0CÀcÕ0IÈAÕ0MÕ#NÐ Ø"2°2Õ"6ÐÙ".Ð/BÓ"CÐØ#6˜RÑ Ü"#§-¢-Ð0CÐRUÐ\eÔ"fÐÜ 1Ð2EÐ]a×]iÑ]iÓ jÐÙ"+Ð,=Ó">ÐØ×#Ñ#Ð$7Ö8ñ /bð 	× Ñ Ô"ð -¨QÕ/Ð0ÐÜ1:¼3¸t×?TÑ?TÐVZ×VeÑVeÓ;fÖ1gÑ-ˆCÑ-�/ 9Ø"2°2Õ"6ÐØ.°Q­wÕ7ˆOÙ&5Ð6IÓ&JÐ#Ü 1Ð2IÈ?Ð\`×\hÑ\hÓ iÐÙ"+Ð,=Ó">ÐØ×#Ñ#Ð$7Ö8ñ 2hô #Ð0@ÔAÐAr1   )r  r�   r  r  rw  r  r  r  r  r=  r  r  r>  r  r  r  r‘   )r3   r4   r5   r6   r7   r  r¤  r  r\   r   r   ru   r9   r:   r{   r|   s   @@r.   r…  r…  ð  sY   ù‡ € ñð 	˜ØÐ)ðÐ÷
 ó  ðD  Ù¨EÔ2÷(Bñ (Bó 3ó  ÷(Bð (Br1   r…  c                 ó¶   € V P                  ^ ^R7      p V P                  VR7      p^V ,
          P                  VR7      p\        P                  ! W#,          4      # )r   rÖ  )r×  )rí   r)   rm  )r’   rV   Úx1Úx2s   &&  r.   Úinverse_sigmoidr/  K  sI   € Ø	�‰�A˜1ˆÓ€AØ	
�‰�SˆÓ	€BØ
ˆa�%�‰˜3ˆÓ	€BÜ�9Š9�R•WÓÐr1   c                óp   € V ^8„  d   QhR\         R\        P                  R\         R\        P                  /# )r   r1  rb  ra  rW   )r™   r)   r   )r,   s   "r.   r/   r/   R  s0   € ÷ ñ ¤Sð ¬e¯l©lð Äsð ÌuÏ|É|ñ r1   c                óp  € \        V^ ,          4      \        V4      ,          p\        V^ ,          4      \        V4      ,          ^,          pV^,           ^V ^,
          ,          ,          p\        V ^,          ^,
          ^ R4       Uu. uF  qeV,          ) ^,           NK  	  pp\        ^V ^,          4       Uu. uF  qeV,          ^,
          NK  	  ppV) .V,           \        P                  ! V^ ,          R,          4      .,           V,           V.,           p	\        P                  ! V	^ 4      p	V	# u upi u upi )u  
Generates the non-uniform Weighting Function W(n) for bounding box regression.

Args:
    max_num_bins (int): Max number of the discrete bins.
    up (Tensor): Controls upper bounds of the sequence,
                 where maximum offset is Â±up * H / W.
    reg_scale (float): Controls the curvature of the Weighting Function.
                       Larger values result in flatter weights near the central axis W(max_num_bins/2)=0
                       and steeper weights at both ends.
Returns:
    Tensor: Sequence of Weighting Function.
Nrl   )ru  r  r)   Ú
zeros_liker§   )
r1  rb  ra  Úupper_bound1Úupper_bound2ÚsteprÌ   Úleft_valuesÚright_valuesrv  s
   &&&       r.   Úweighting_functionr8  R  s  € ô �r˜!•u“:¤ I£Õ.€LÜ�r˜!•u“:¤ I£Õ.°Õ2€LØ˜1Õ ! |°aÕ'7Õ"8Õ9€DÜ/4°\ÀQÕ5FÈÕ5JÈAÈrÔ/RÓSÑ/R¨!˜q•[�> A×%Ð%Ñ/R€KÐSÜ-2°1°lÀaÕ6GÔ-HÓIÑ-H¨˜a•K !—O�OÑ-H€LÐIØˆmˆ_˜{Õ*¬e×.>Ò.>¸rÀ!½uÀT½{Ó.KÐ-LÕLÈ|Õ[Ð_kÐ^lÕl€FÜ�YŠY�v˜qÓ!€FØ€Mùò	 TùÚIs   ÂD.Â7D3c                ód   € V ^8„  d   QhR\         P                  R\        R\         P                  /# )r   Údistancera  rW   )r)   r   rX   )r,   s   "r.   r/   r/   j  s)   € ÷ ,ñ ,¤E§L¡Lð ,¼Uð ,ÄuÇ|Á|ñ ,r1   c                ó0  € \        V4      pV R,          RV,          VR,          ,           V R,          V,          ,          ,
          pV R,          RV,          VR,          ,           V R,          V,          ,          ,
          pV R,          RV,          VR,          ,           V R,          V,          ,          ,           pV R,          RV,          VR,          ,           V R,          V,          ,          ,           p\        P                  ! W4WV.R4      p\        V4      # )a\  
Decodes edge-distances into bounding box coordinates.

Args:
    points (`torch.Tensor`):
        (batch_size, num_boxes, 4) or (num_boxes, 4) format, representing [x_center, y_center, width, height]
    distance (`torch.Tensor`):
        (batch_size, num_boxes, 4) or (num_boxes, 4), representing distances from the point to the left, top, right, and bottom boundaries.
    reg_scale (`float`):
        Controls the curvature of the Weighting Function.
Returns:
    `torch.Tensor`: Bounding boxes in (batch_size, num_boxes, 4) or (num_boxes, 4) format, representing [x_center, y_center, width, height]
rà   rã   ).r   rä   ).rU  rl   )ru  r)   rî   r
   )Úpointsr:  ra  Ú
top_left_xÚ
top_left_yÚbottom_right_xÚbottom_right_yÚbboxess   &&&     r.   Údistance2bboxrB  j  sÞ   € ô �I“€IØ˜• 3¨¥?°X¸fÕ5EÕ#EÈ&ÐQWÍ.Ð[dÕJdÕ"eÕe€JØ˜• 3¨¥?°X¸fÕ5EÕ#EÈ&ÐQWÍ.Ð[dÕJdÕ"eÕe€JØ˜F•^ s¨Y¥¸À&Õ9IÕ'IÈfÐU[ÍnÐ_hÕNhÕ&iÕi€NØ˜F•^ s¨Y¥¸À&Õ9IÕ'IÈfÐU[ÍnÐ_hÕNhÕ&iÕi€Nä�[Š[˜*°.ÐQÐSUÓV€Fä# FÓ+Ð+r1   c                   ó|   a a€ ] tR tRt oRtR]R]R]/tV3R lV 3R llt	]
]RV3R lR	 ll4       4       tR
tVtV ;t# )rh  iƒ  aC  
D-FINE Decoder implementing Fine-grained Distribution Refinement (FDR).

This decoder refines object detection predictions through iterative updates across multiple layers,
utilizing attention mechanisms, location quality estimators, and distribution refinement techniques
to improve bounding box accuracy and robustness.
r&   r'   r(   c                ó    <€ V ^8„  d   QhRS[ /# r€   r   )r,   r-   s   "€r.   r/   ÚDeimv2Decoder.__annotate__’  ó   ø€ ÷ ñ ™|ñ r1   c           	     ó  <€ \         SV `  V4       VP                  ^ 8¼  d   VP                  MVP                  VP                  ,           V n        VP                  V n        \
        P                  ! \        VP                  4       Uu. uF  p\        V4      NK  	  up\        VP                  V P                  ,
          ^,
          4       Uu. uF  p\        V4      NK  	  up,           4      V n	        \        ^VP                  VP                  ^VP                  4      V n        RV n        RV n        \
        P                   ! \"        P$                  ! VP&                  .4      RR7      V n        VP(                  V n        VP                  V n        VP*                  V n        \        VP,                  VP,                  ^^4      V n        \1        V4      V n        VP4                  V n        \
        P                   ! \"        P$                  ! VP8                  .4      RR7      V n        \
        P                  ! \        VP                  4       Uu. uF  p\;        V4      NK  	  up4      V n        V P?                  4        R# u upi u upi u upi )r   NF)Úrequires_grad) r[   r\   Úeval_idxÚdecoder_layersr—  r]   rÀ   r  rO  rÂ   r°   rˆ   Údecoder_activation_functionÚquery_pos_headrq  ri  r^   r)   rë   ra  r1  Úlayer_scalerc   Úpre_bbox_headr-  Úintegralr  Únum_headrb  r:  rA  r»  r  s   && €r.   r\   ÚDeimv2Decoder.__init__’  sß  ø€ Ü‰Ñ˜Ô Ø+1¯?©?¸aÔ+?˜ŸšÀV×EZÑEZÐ]c×]lÑ]lÕElˆŒà—~‘~ˆŒÜ—m’mÜ16°v×7LÑ7LÔ1MÓNÑ1M¨AÔ Ö'Ñ1MÑNÜ38¸×9NÑ9NÐQU×Q^ÑQ^Õ9^ÐabÕ9bÔ3cÓdÑ3c¨aÔ! &Ö)Ñ3cÑdõeó
ˆŒô (¨¨6¯>©>¸6¿>¹>È1Èf×NpÑNpÓqˆÔð ˆŒØˆÔÜŸš¤e§l¢l°F×4DÑ4DÐ3EÓ&FÐV[Ô\ˆŒØ"×/Ñ/ˆÔØ—~‘~ˆŒØ!×-Ñ-ˆÔÜ& v×'9Ñ'9¸6×;MÑ;MÈqÐRSÓTˆÔÜ& vÓ.ˆŒØ×6Ñ6ˆŒÜ—,’,œuŸ|š|¨V¯Y©Y¨KÓ8ÈÔNˆŒÜŸ-š-ÄEÈ&×J_ÑJ_ÔD`Ó(aÑD`¸q¬°6Ö):ÑD`Ñ(aÓbˆŒð 	�‰Öùò' OùÚdùò )bs   ÂI?ÃJ
ÉJ	c          
      ó„   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  RS[S[,          RS[/# )r   rB   r2  r÷  r(  rW   )r)   r   r   r   r   )r,   r-   s   "€r.   r/   rE  ¯  sV   ø€ ÷ m
ñ m
á$Ÿ|™|ðm
ñ  Ÿ,™,ðm
ñ —|‘|ð	m
ñ Ñ+Õ,ðm
ñ 
ñm
r1   c	                óÄ  € Ve   Tp
R
pR
pR
pR
pR
p^ ;pp\        V P                  V P                  V P                  4      p\        P
                  ! V4      p\        V P                  4       EFÏ  w  ppVP                  ^4      pV P                  V4      P                  R^
R7      pV! X
3RVRVRVRVRVRV/V	B p
V^ 8X  dF   \        P
                  ! V P                  V
4      \        V4      ,           4      pVP                  4       pV P                  ea   V P                  V,          ! V
V,           4      V,           p\        XV P!                  VV4      V P                  4      pTpVP                  4       pV
P                  4       pWº3,          pV P"                  f   EK3  V P$                  '       g   VV P&                  8X  g   EKY  V P"                  V,          ! V
4      pV^ 8X  d   VV3,          pVX3,          pV P(                  V,          ! VX4      pVV3,          pVX3,          pVX3,          pVV3,          pEKÒ  	  \*        P,                  ! V4      pV P"                  eo   V P                  ea   \*        P,                  ! V^R7      p\*        P,                  ! V^R7      p\*        P,                  ! V^R7      p\*        P,                  ! V^R7      p\/        X
VVVVVR	7      # )a#  
Args:
    inputs_embeds (`torch.FloatTensor` of shape `(batch_size, num_queries, hidden_size)`):
        The query embeddings that are passed into the decoder.
    encoder_hidden_states (`torch.FloatTensor` of shape `(batch_size, sequence_length, hidden_size)`, *optional*):
        Sequence of hidden-states at the output of the last layer of the encoder. Used in the cross-attention
        of the decoder.
    encoder_attention_mask (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
        Mask to avoid performing cross-attention on padding pixel_values of the encoder. Mask values selected
        in `[0, 1]`:
        - 1 for pixels that are real (i.e. **not masked**),
        - 0 for pixels that are padding (i.e. **masked**).
    reference_points (`torch.FloatTensor` of shape `(batch_size, num_queries, 4)` is `as_two_stage` else `(batch_size, num_queries, 2)` or , *optional*):
        Reference point in range `[0, 1]`, top-left (0,0), bottom-right (1, 1), including padding area.
    spatial_shapes (`torch.FloatTensor` of shape `(num_feature_levels, 2)`):
        Spatial shapes of the feature maps.
    level_start_index (`torch.LongTensor` of shape `(num_feature_levels)`, *optional*):
        Indexes for the start of each feature level. In range `[0, sequence_length]`.
rÖ  r³  r2  r3  r4  rB   rZ  r¥   )r    r!   r"   r#   r$   r%   r2   iöÿÿÿ)r8  r1  rb  ra  r.  r¨   rË   rÂ   rð   rL  rí   rN  r/  Údetachrq  rB  rO  ri  rœ  rI  rA  r)   rî   r   )rb   rB   r2  r÷  r3  Úlevel_start_indexr4  rZ  Úmemory_maskr(  r&   Úintermediater#   r"   r$   r%   Úoutput_detachÚpred_corners_undetachr5  Úref_points_detachrÌ   Údecoder_layerÚref_points_inputÚquery_pos_embedÚnew_reference_pointsÚref_points_initialr4  Úinter_ref_bboxrE  s   &&&&&&&&&,                   r.   ru   ÚDeimv2Decoder.forward­  sò  € ðB Ò$Ø)ˆMð ˆØ(*Ð%Ø ÐØ)+Ð&Ø#%Ð à01Ð1ˆÐ-ä$ T×%6Ñ%6¸¿¹ÀÇÁÓPˆÜŸIšIÐ&6Ó7Ðä )¨$¯+©+× 6ÑˆAˆ}Ø0×:Ñ:¸1Ó=ÐØ"×1Ñ1Ð2CÓD×JÑJÈsÐXZÐJÓ[ˆOá)Øñ	à$3ð	ð "2ð	ð  .ð		ð
 %8ð	ð '<ð	ð (>ð	ð ñ	ˆMð �AŒvä'(§y¢yØ×&Ñ& }Ó5¼ÐHYÓ8ZÕZó(Ð$ð &:×%@Ñ%@Ó%BÐ"ð �‰Ò*Ø#Ÿ™¨qÖ1°-À-Õ2OÓPÐShÕh�Ü!.Ø&¨¯©°lÀGÓ(LÈdÏnÉnó"�ð )5Ð%Ø$2×$9Ñ$9Ó$;Ð!à)×0Ñ0Ó2ˆMàÐ,Õ,ˆLà×ÑÕ+°··°À!ÀtÇ}Á}×BTØ×)Ñ)¨!Ö,¨]Ó;�à˜”6Ø'¨F¨9Õ4Ð'Ø1Ð6JÐ5LÕLÐ1àŸ™¨Ö+¨F°LÓA�Ø#¨ yÕ0Ð#Ø-°.Ð1BÕBÐ-Ø(Ð-?Ð,AÕAÐ(Ø.°<°/ÕAÓ.ñ] !7ôb —{’{ <Ó0ˆØ×ÑÒ'¨D¯O©OÒ,GÜ"'§+¢+Ð.AÀqÔ"IÐÜ-2¯[ª[Ð9WÐ]^Ô-_Ð*Ü',§{¢{Ð3KÐQRÔ'SÐ$Ü,1¯KªKÐ8UÐ[\Ô,]Ð)ä"Ø+Ø'3Ø 3Ø*GØ+IØ%=ô
ð 	
r1   )rq  ri  rˆ   r—  rI  rO  rM  rÂ   rA  r1  rP  rN  rL  ra  rb  ©NNNN)r3   r4   r5   r6   r7   rO  r¤  r  r  r\   r   r   ru   r9   r:   r{   r|   s   @@r.   rh  rh  ƒ  sZ   ù‡ € ñð 	Ð+ØÐ)ØÐ?ðÐ÷ó ð6  Ø÷m
ñ m
ó ó  ÷m
ð m
r1   rh  c                ó	  € V^ 8:  d   R# V  Uu. uF  p\        VR,          4      NK  	  ppV ^ ,          R,          P                  p	\        V4      p
V
^ 8X  d   R# WJ,          pV^ 8X  d   ^MTp\        V4      p\        P                  ! WÊ.V\        P
                  V	R7      p\        P                  ! WÊ^.V	R7      p\        P                  ! WÊ.\        P                  V	R7      p\        V4       FL  pVV,          pV^ 8”  g   K  V V,          R,          VVRV13&   V V,          R,          VVRV13&   ^VVRV13&   KN  	  VP                  ^^V,          .4      pVP                  ^^V,          ^.4      pVP                  ^^V,          .4      p\        P                  ! WÊ^,          ^.V	R7      p^VRV
R13&   VP                  ^V^.4      p^V,
          pVP                  R4      V,          p\        P                  ! V4      R,          p\        P                  ! TV Uu. uF  pVV,          NK  	  up4      p\        V
^,          V,          4      pV^ 8”  ds   \        P                  ! V\        P                  R7      VR,          8  p\        P                   ! V^ WP"                  R7      p\        P$                  ! VV,          VV4      pV^ 8”  dÝ   \'        V4      p\        P                  ! VR,          R,          . RO4      V,          p\        P                   ! V^ ^4      R	,          R
,
          p\        P                  ! V4      pVR
,           V,          V^V,
          ,          ,           pVV,          pVVV,          ,          pVP)                  RR
R7       \+        V4      p\-        V4      pV! V4      pWB,           p\        P                  ! VV.^ \        P                  V	R7      p\        P.                  ) VVR1RV13&   \        V4       F^  pV
^,          V,          pV
^,          V^,           ,          p\        P.                  ) VVV1RV13&   \        P.                  ) VVV1VV13&   K`  	  RVRVRWB./p WÞVV 3# u upi u upi )a  
Creates a contrastive denoising training group using ground-truth samples. It adds noise to labels and boxes.

Args:
    targets (`list[dict]`):
        The target objects, each containing 'class_labels' and 'boxes' for objects in an image.
    num_classes (`int`):
        Total number of classes in the dataset.
    num_queries (`int`):
        Number of query slots in the transformer.
    class_embed (`callable`):
        A function or a model layer to embed class labels.
    num_denoising_queries (`int`, *optional*, defaults to 100):
        Number of denoising queries.
    label_noise_ratio (`float`, *optional*, defaults to 0.5):
        Ratio of noise applied to labels.
    box_noise_scale (`float`, *optional*, defaults to 1.0):
        Scale of noise applied to bounding boxes.
Returns:
    `tuple` comprising various elements:
    - **input_query_class** (`torch.FloatTensor`) --
      Class queries with applied label noise.
    - **input_query_bbox** (`torch.FloatTensor`) --
      Bounding box queries with applied box noise.
    - **attn_mask** (`torch.FloatTensor`) --
       Attention mask for separating denoising and reconstruction queries.
    - **denoising_meta_values** (`dict`) --
      Metadata including denoising positive indices, number of groups, and split sizes.
NÚclass_labelsrå  rÞ   Úboxesrá   r  rà   rc  rp  rµ  rÖ  Údn_positive_idxÚdn_num_groupÚdn_num_splitrb  rl   r+  ).r,  )r¤   r¤   r   )r¬  rß   rØ  r)   ÚfullÚint32rÚ   r§  r  rw  ÚsqueezeÚnonzerorç   r   Ú	rand_likerX   Úrandint_likerm   Úwherer	   Úclip_r
   r/  Úinf)!ÚtargetsÚnum_classesrü   ri  Únum_denoising_queriesÚlabel_noise_ratioÚbox_noise_scaleÚtÚnum_ground_truthsrß   Ú
max_gt_numÚnum_groups_denoising_queriesrù   Úinput_query_classÚinput_query_bboxÚpad_gt_maskrÌ   Únum_gtÚnegative_gt_maskÚpositive_gt_maskÚdenoise_positive_idxr$  ÚmaskÚ	new_labelÚ
known_bboxÚdiffÚ	rand_signÚ	rand_partÚtarget_sizeÚ	attn_maskÚidx_block_startÚidx_block_endrI   s!   &&&&&&&                          r.   Ú(get_contrastive_denoising_training_grouprŒ    sx  € ðN  Ô!Ø%Ð%á9@ÓA¹°Aœ˜Q˜~Õ.Ö/¹ÐÐAØ�Q�Z˜Õ'×.Ñ.€FäÐ&Ó'€JØ�Q„Ø%Ð%à#8Õ#FÐ Ø(DÈÔ(I¡1ÐOkÐ äÐ&Ó'€JäŸ
š
 JÐ#;¸[ÔPU×P[ÑP[ÐdjÔkÐÜ—{’{ J¸AÐ#>ÀvÔNÐÜ—+’+˜zÐ6¼e¿j¹jÐQWÔX€Kä�:ÖˆØ" 1Õ%ˆØ�AŽ:Ø,3°A­J°~Õ,FÐ˜a  & ˜jÑ)Ø+2°1­:°gÕ+>Ð˜Q   ˜ZÑ(Ø&'ˆK˜˜7˜F˜7˜
Ó#ñ ð *×.Ñ.°°1Ð7SÕ3SÐ/TÓUÐØ'×,Ñ,¨a°Ð5QÕ1QÐSTÐ-UÓVÐØ×"Ñ" A qÐ+GÕ'GÐ#HÓI€Kä—{’{ J¸QµÀÐ#BÈ6ÔRÐØ'(Ð�Q˜
™�^Ñ$Ø'×,Ñ,¨aÐ1MÈqÐ-QÓRÐØÐ+Õ+Ðà'×/Ñ/°Ó3°kÕAÐÜ Ÿ=š=Ð)9Ó:¸4Õ@ÐÜ Ÿ;š;ØÑIZÓ[ÑIZÀA˜qÐ#?×?Ð?ÑIZÑ[óÐô & j°1¥nÐ7SÕ&SÓTÐà˜1ÔÜ�ŠÐ0¼¿¹ÔDÐHYÐ\_ÕH_Ñ`ˆä×&Ò& t¨Q°×CZÑCZÔ[ˆ	Ü!ŸKšK¨¨{Õ(:¸IÐGXÓYÐà˜ÔÜ-Ð.>Ó?ˆ
Ü�zŠzÐ*¨7Õ3°cÕ9º9ÓEÈÕWˆÜ×&Ò&Ð'7¸¸AÓ>ÀÕDÀsÕJˆ	Ü—O’OÐ$4Ó5ˆ	Ø •_Ð(8Õ8¸9ÈÐL\ÕH\Õ;]Õ]ˆ	Ø�YÕˆ	Ø�i $Õ&Õ&ˆ
Ø×Ñ˜S cÐÔ*Ü3°JÓ?ÐÜ*Ð+;Ó<Ðá#Ð$5Ó6Ðà'Õ5€KÜ—
’
˜K¨Ð5°qÄÇÁÐTZÔ[€IäAFÇÁÀ
€IÐ#Ñ$Ð&<Ð'<Ð&<Ð<Ñ=ô Ð/Ö0ˆØ$ q�.¨1Õ,ˆØ" Q�¨!¨a­%Õ0ˆÜFKÇiÁiÀZˆ	�/ -Ð/Ð1A°/Ð1AÐAÑBÜY^×YbÑYbÐXbˆ	�/ -Ð/°Ð?TÐ1TÐTÓUñ	 1ð 	Ð/ØÐ4ØÐ.Ð<ðÐð °	Ð;PÐPÐPùò] BùòF \s   ŽQ:ÈQ?
z|
    RT-DETR Model (consisting of a backbone and encoder-decoder) outputting raw hidden states without any head on top.
    c                   óê   a a€ ] tR tRt oV3R lV 3R lltR tR t]]! ^ R7      R]	P                  3V3R lR	 ll4       4       tR
RR]	P                  3R lt]]RV3R lR ll4       4       tRtVtV ;t# )ry  iš  c                ó    <€ V ^8„  d   QhRS[ /# r€   r   )r,   r-   s   "€r.   r/   ÚDeimv2Model.__annotate__   s   ø€ ÷ -ñ -™|ñ -r1   c           
     óÔ  <€ \         SV `  V4       \        VP                  R R4      R8H  pV'       d   \	        V4      M
\        V4      V n        VP                  R8X  d   \        V4      M\        VR7      V n
        VP                  ^ 8”  dD   \        P                  ! VP                  ^,           VP                  VP                  R7      V n        VP"                  '       d1   \        P                  ! VP$                  VP                  4      V n        \        P(                  ! \        P*                  ! VP                  VP                  4      \        P,                  ! VP                  VP.                  R7      4      V n        \        P*                  ! VP                  VP                  4      V n        \5        VP                  VP                  ^^4      V n        VP8                  '       d*   V P;                  V P<                  R7      w  V n        V n         \C        VPD                  4      p. pVPD                  R,          p\G        V4       Fa  pTPI                  VPJ                  VPD                  R,          8X  d   \        PL                  ! 4       M\O        WVP                  ^^4      4       Kc  	  \G        VPP                  V,
          4       Fa  pTPI                  VPJ                  VPD                  R,          8X  d   \        PL                  ! 4       M\O        WVP                  ^^4      4       Kc  	  \        PR                  ! V4      V n*        \W        V4      V n,        V P[                  4        R# )	Ú
model_typeNÚ
dinov3_vitrµ  rS  )Úpadding_idxrÆ  r  rl   ).r[   r\   ÚgetattrrÎ  rÉ  r³  Úconv_encoderr¹  r†  r…  Úencoderr|  r]   Ú	Embeddingrk  rˆ   re  r{  rü   rd  Ú
Sequentialr‡   rÉ  rÊ  Ú
enc_outputrz  r°   Úenc_bbox_headÚanchor_image_sizeÚgenerate_anchorsrm   ÚanchorsÚ
valid_maskr¬  Údecoder_in_channelsr  ró   rc   rJ  r;  r  rÀ   Údecoder_input_projrh  Údecoderr»  )rb   r�   Ú	is_dinov3Únum_backbone_outsr   r=  rú   rd   s   &&     €r.   r\   ÚDeimv2Model.__init__   s}  ø€ Ü‰Ñ˜Ô ä˜F×2Ñ2°LÀ$ÓGÈ<ÑWˆ	ß?HÔ3°FÔ;ÔN_Ð`fÓNgˆÔà)/×)<Ñ)<ÀÔ)FÔ˜fÔ%ÔL_ÐgmÔLnð 	Œð ×Ñ !Ô#Ü)+¯ªØ×!Ñ! AÕ% v§~¡~À6×CTÑCTô*ˆDÔ&ð ×%×%Ð%Ü$&§L¢L°×1CÑ1CÀVÇ^Á^Ó$TˆDÔ!äŸ-š-Ü�IŠI�f—n‘n f§n¡nÓ5Ü�LŠL˜Ÿ™¨V×-BÑ-BÔCó
ˆŒô !Ÿiši¨¯©¸×8IÑ8IÓJˆÔÜ& v§~¡~°v·~±~ÀqÈ!ÓLˆÔà×#×#Ð#Ø,0×,AÑ,AÈÏ
É
Ð,AÓ,SÑ)ˆDŒL˜$œ/ä × :Ñ :Ó;ÐØÐØ×0Ñ0°Õ4ˆÜÐ(Ö)ˆAØ×%Ñ%à×%Ñ%¨×)CÑ)CÀBÕ)GÔGô —’”ä(¨¸f¿n¹nÈaÐQRÓSöñ *ô �v×0Ñ0Ð3DÕDÖEˆAØ×%Ñ%à×%Ñ%¨×)CÑ)CÀBÕ)GÔGô —’”ä(¨¸f¿n¹nÈaÐQRÓSöñ Fô #%§-¢-Ð0BÓ"CˆÔÜ$ VÓ,ˆŒà�‰Ör1   c                ój   € V P                   P                  4        F  pVP                  R 4       K  	  R# )FN©r¼  Ú
parametersÚrequires_grad_©rb   Úparams   & r.   Úfreeze_backboneÚDeimv2Model.freeze_backboneÏ  s'   € Ø—]‘]×-Ñ-Ö/ˆEØ× Ñ  Ö'ó 0r1   c                ój   € V P                   P                  4        F  pVP                  R 4       K  	  R# )TNr¦  r©  s   & r.   Úunfreeze_backboneÚDeimv2Model.unfreeze_backboneÓ  s'   € Ø—]‘]×-Ñ-Ö/ˆEØ× Ñ  Ö&ó 0r1   rþ  Úcpuc                óØ   <€ V ^8„  d   QhRS[ S[ S[S[3,          R3,          RS[RS[P                  S[,          RS[P                  RS[ S[P                  S[P                  3,          /# )r   r3  .Ú	grid_sizerß   rm   rW   )r+   r™   rX   r)   rß   r·   rm   r   )r,   r-   s   "€r.   r/   r�  Ù  sl   ø€ ÷ #ñ #Ù™e¡C© H�o¨sÐ2Õ3ð#áð#ñ —‘™sÕ"ð#ñ �{‰{ð	#ñ
 
‰u�|‰|™UŸ\™\Ð)Õ	*ñ#r1   c                óè  € . p\        V 4       EF/  w  pw  rg\        P                  ! \        P                  ! WbR 7      P	                  V4      \        P                  ! WrR 7      P	                  V4      RR7      w  r‰\        P
                  ! W˜.R	4      p
V
P                  ^ 4      R,           p
V
R
;;,          V,          uu&   V
R;;,          V,          uu&   \        P                  ! V
4      V,          RV,          ,          pVP                  \        P                  ! W«.R	4      P                  R	Wg,          ^4      4       EK2  	  Rp\        P                  ! V^4      pWL8„  V^V,
          8  ,          P                  R	RR7      p\        P                  ! V^V,
          ,          4      p\        P                  ! WÔ\        P                  ! R\        P                  ! V4      P                   W2R7      4      pWM3# ))Úendrß   ræ  rç  rà   rc  g{®Gáz„?Trj   rå  rl   rã   rä   r2   )rË   r)   rë  rï   rn   rî   rð   Ú	ones_likeró   rõ   rè   rÚ  rm  ro  ri  rÛ  rØ  )r3  r²  rß   rm   r�  Úlevelrÿ   r   Úgrid_yÚgrid_xÚgrid_xyÚwhrV   rž  s   &&&&          r.   Ú_cached_generate_anchorsÚ$Deimv2Model._cached_generate_anchors×  sw  € ð ˆÜ&/°×&?Ñ"ˆE‘?�FÜ"Ÿ^š^Ü—’ Ô7×:Ñ:¸5ÓAÜ—’ Ô6×9Ñ9¸%Ó@Øô‰NˆFô
 —k’k 6Ð"2°BÓ7ˆGØ×'Ñ'¨Ó*¨SÕ0ˆGØ�F�O˜uÕ$‹OØ�F�O˜vÕ%‹OÜ—’ Ó)¨IÕ5¸¸e½ÕDˆBØ�N‰Nœ5Ÿ<š<¨¨°rÓ:×BÑBÀ2ÀvÅ~ÐWXÓY×Zñ '@ð ˆÜ—,’,˜w¨Ó*ˆØ‘}¨°1°sµ7Ñ):Õ;×@Ñ@ÀÈTÐ@ÓRˆ
Ü—)’)˜G q¨7¥{Õ3Ó4ˆÜ—+’+˜j´5·:²:¸bÄ%Ç+Â+ÈeÓBT×BXÑBXÐ`eÔ3uÓvˆàÐ"Ð"r1   Ngš™™™™™©?c                óp   a € Vf!   V 3R lS P                   P                   4       pS P                  WW44      # )Nc              3   óØ   <"  € T F_  p\        SP                  P                  ^ ,          V,          4      \        SP                  P                  ^,          V,          4      3x € Ka  	  R# 5i©r   N)r™   r�   r›  )r»   Úsrb   s   & €r.   r¾   Ú/Deimv2Model.generate_anchors.<locals>.<genexpr>÷  sQ   øé € ð á1�Aô �T—[‘[×2Ñ2°1Õ5¸Õ9Ó:¼CÀÇÁ×@]Ñ@]Ð^_Õ@`ÐcdÕ@dÓ<eÕfÛ1ùs   ƒA'A*)r�   r  r»  )rb   r3  r²  rß   rm   s   f&&&&r.   rœ  ÚDeimv2Model.generate_anchorsõ  s7   ø€ ØÒ!ôàŸ™×1Ò1óˆNð ×,Ñ,¨^ÈÓVÐVr1   c                ó   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[S[,          R,          RS[S[,          RS[S[ P                  ,          S[,          /# ©	r   r)  Ú
pixel_maskNÚencoder_outputsr÷  Úlabelsr(  rW   )	r)   r*   Ú
LongTensorrP   rJ   r   r   r+   r=   )r,   r-   s   "€r.   r/   r�  ÿ  s¡   ø€ ÷ ~
ñ ~
á×'Ñ'ð~
ñ ×$Ñ$ tÕ+ð~
ñ ×*Ñ*¨TÕ1ð	~
ñ
 ×(Ñ(¨4Õ/ð~
ñ ‘T•
˜TÕ!ð~
ñ Ñ+Õ,ð~
ñ 
‰u× Ñ Õ	!Ñ$5Õ	5ñ~
r1   c                ó.  € Vf   Vf   \        R4      hVfL   VP                  w  rxršVP                  pVf   \        P                  ! WyV
3VR7      pV P                  V4      pM!VP                  ^ ,          pVP                  pTpV P                  ! V3/ VB p. p\        VP                  4       F-  w  rïVP                  V P                  V,          ! V4      4       K/  	  V P                  P                  \        V4      8”  d¬   VP                  V P                  \        V4      ,          ! VP                  R ,          4      4       \        \        V4      V P                  P                  4       F<  pVP                  V P                  V,          ! VP                  R ,          4      4       K>  	  . p. p\        P                  ! \        V4      ^3V\        P                   R7      p\        V4       Fh  w  rïVP                  R!R w  ršV	VV^ 3&   V
VV^3&   VP                  Wš34       VP#                  ^4      P%                  ^^4      pVP                  V4       Kj  	  \        P&                  ! V^4      p\        P&                  ! VP)                  R"4      VP+                  ^4      P-                  ^ 4      RR  34      pV P.                  '       d¦   V P                  P0                  ^ 8”  d‹   Ve‡   \3        VV P                  P4                  V P                  P6                  V P8                  V P                  P0                  V P                  P:                  V P                  P<                  R7      w  ppppMR#w  pppp\        V4      pVP                  pVP>                  pV P.                  '       g   V P                  P@                  f$   \C        V4      pV PE                  VVVR7      w  ppM<V PF                  V PH                  ppVPK                  VV4      VPK                  VV4      ppVPK                  VP>                  4      V,          pV PM                  V4      pV PO                  V4      pV PQ                  V4      V,           p \        PR                  ! VPU                  R 4      PV                  V P                  P6                  ^R7      w  p!p"V PY                  ^V"P[                  R 4      P]                  ^^V P                  R ,          4      R7      p#\^        P`                  ! V#4      p$Ve   \        Pb                  ! VV#.^4      p#VPY                  ^V"P[                  R 4      P]                  ^^VP                  R ,          4      R7      p%V P                  Pd                  '       d    V Pf                  Pi                  V^^.4      p&MTVPY                  ^V"P[                  R 4      P]                  ^^VP                  R ,          4      R7      p&V&Pk                  4       p&Ve   \        Pb                  ! VV&.^4      p&V#Pk                  4       p'V Pl                  ! R$RV&R	VR
VRV'RVRVRV/VB p(\o        R$/ RV(Pp                  bRV(Pr                  bRV(Pt                  bRV(Pv                  bRV(Px                  bRV(Pz                  bRV(P|                  bRV(P~                  bRV(P€                  bRVP                  bR	VP|                  bRVP~                  bRV'bRV%bRV$bRVbRV bRVb # )%a®  
inputs_embeds (`torch.FloatTensor` of shape `(batch_size, sequence_length, hidden_size)`, *optional*):
    Optionally, instead of passing the flattened feature map (output of the backbone + projection layer), you
    can choose to directly pass a flattened representation of an image.
labels (`list[Dict]` of len `(batch_size,)`, *optional*):
    Labels for computing the bipartite matching loss. List of dicts, each dictionary containing at least the
    following 2 keys: 'class_labels' and 'boxes' (the class labels and bounding boxes of an image in the batch
    respectively). The class labels themselves should be a `torch.LongTensor` of len `(number of bounding boxes
    in the image,)` and the boxes a `torch.FloatTensor` of shape `(number of bounding boxes in the image, 4)`.

Examples:

```python
>>> from transformers import AutoImageProcessor, Deimv2Model
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> image_processor = AutoImageProcessor.from_pretrained("PekingU/Deimv2_r50vd")
>>> model = Deimv2Model.from_pretrained("PekingU/Deimv2_r50vd")

>>> inputs = image_processor(images=image, return_tensors="pt")

>>> outputs = model(**inputs)

>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 300, 256]
```Nz8You have to specify either pixel_values or inputs_embedsrÞ   )rß   rm   )rr  rs  rü   ri  rt  ru  rv  r¥   )r¦   Úindexr÷  rB   rZ  r2  r3  r4  rU  r    r!   r"   r#   r$   r%   r?   r@   r(   rA   rC   rD   rE   rF   rG   rH   rI   rl   râ   rÊ   rb  r2   )Ar1  rx   rß   r)   r_   r•  r–  rË   rO   ró   r   r�   r  r¬  r  ÚemptyÚlongræ   rò   r§   Ú	new_zerosÚprodÚcumsumrœ  r|  rŒ  rk  rü   re  ru  rv  rm   r›  r+   rœ  r�  rž  rn   r™  rz  rš  rG  rØ  rv  Úgatherrð   rñ   r.  r¨   rõ   r{  rd  rw  rT  r¡  r=   r    r!   r"   r#   r$   r%   r&   r'   r(   ))rb   r)  rÅ  rÆ  r÷  rÇ  r(  rù   Únum_channelsrÿ   r   rß   Ú
proj_featsÚsourcesr¶  ÚsourcerÌ   Úsource_flattenr4  r3  rU  Údenoising_classÚdenoising_bbox_unactr'  rI   rm   Úspatial_shapes_tupler�  rž  ÚmemoryÚoutput_memoryrG   rH   rú   Útopk_indÚreference_points_unactrF   rE   ÚtargetrD   Údecoder_outputss)   &&&&&&,                                  r.   ru   ÚDeimv2Model.forwardý  sÓ  € ð\ Ò MÒ$9ÜÐWÓXÐXð Ò Ø6B×6HÑ6HÑ3ˆJ fØ!×(Ñ(ˆFØÒ!Ü"ŸZšZ¨*¸eÐ)DÈfÔU�
ð ×*Ñ*¨<Ó8‰Jà&×,Ñ,¨QÕ/ˆJØ"×)Ñ)ˆFØ&ˆJàŸ,š,Øñ
àñ
ˆð ˆÜ& ×'CÑ'CÖD‰MˆEØ�N‰N˜4×2Ñ2°5Ö9¸&ÓAÖBñ Eð �;‰;×)Ñ)¬C°«LÔ8Ø�N‰N˜4×2Ñ2´3°w³<Ö@À×A]ÑA]Ð^`ÕAaÓbÔcÜœ3˜w›<¨¯©×)GÑ)GÖH�Ø—‘˜t×6Ñ6°qÖ9¸/×:VÑ:VÐWYÕ:ZÓ[Ö\ñ Ið ˆØ ÐÜŸš¤c¨'£l°AÐ%6¸vÌUÏZÉZÔXˆÜ& wÖ/‰MˆEØ"ŸL™L¨¨Ð-‰MˆFØ'-ˆN˜5 !˜8Ñ$Ø',ˆN˜5 !˜8Ñ$Ø×&Ñ&¨ Ô7Ø—^‘^ AÓ&×0Ñ0°°AÓ6ˆFØ×!Ñ! &Ö)ñ 0ô Ÿš >°1Ó5ˆÜ!ŸIšI ~×'?Ñ'?ÀÓ'EÀ~×GZÑGZÐ[\ÓG]×GdÑGdÐefÓGgÐhkÐikÐGlÐ&mÓnÐð �=�=ˆ=˜TŸ[™[×6Ñ6¸Ô:¸vÒ?Qô 9ØØ ŸK™K×2Ñ2Ø ŸK™K×3Ñ3Ø ×6Ñ6Ø&*§k¡k×&?Ñ&?Ø"&§+¡+×"?Ñ"?Ø $§¡× ;Ñ ;ôñØØ$ØÙ%ð \rÑXˆOÐ1°>ÐCXä˜Ó(ˆ
Ø×&Ñ&ˆØ×$Ñ$ˆð �=�=ˆ=˜DŸK™K×9Ñ9ÒAô $)Ð)<Ó#=Ð Ø"&×"7Ñ"7Ð8LÐU[ÐchÐ"7Ó"iÑˆG‘Zà"&§,¡,°·±�ZˆGØ")§*¡*¨V°UÓ";¸Z¿]¹]È6ÐSXÓ=Y�ZˆGð —‘˜~×3Ñ3Ó4°~ÕEˆàŸ™¨Ó/ˆà ×/Ñ/°Ó>ÐØ#'×#5Ñ#5°mÓ#DÀwÕ#NÐ ä—j’jÐ!2×!6Ñ!6°rÓ!:×!AÑ!AÀ4Ç;Á;×CZÑCZÐ`aÔb‰ˆˆ8à!9×!@Ñ!@Ø˜×+Ñ+¨BÓ/×6Ñ6°q¸!Ð=U×=[Ñ=[Ð\^Õ=_Ó`ð "Aó "
Ðô Ÿ)š)Ð$:Ó;ˆØÒ+Ü%*§\¢\Ð3GÐI_Ð2`ÐbcÓ%dÐ"à+×2Ñ2Ø˜×+Ñ+¨BÓ/×6Ñ6°q¸!Ð=N×=TÑ=TÐUWÕ=XÓYð 3ó 
ˆð
 �;‰;×*×*Ð*Ø×*Ñ*×/Ñ/°¸QÀÐ0BÓC‰Fà"×)Ñ)¨a°x×7IÑ7IÈ"Ó7M×7TÑ7TÐUVÐXYÐ[h×[nÑ[nÐoqÕ[rÓ7sÐ)ÓtˆFØ—]‘]“_ˆFàÒ&Ü—\’\ ?°FÐ";¸QÓ?ˆFà 6× =Ñ =Ó ?Ðð Ÿ,š,ñ 	
Ø ð	
à"0ð	
ð $2ð	
ð 3ð		
ð
 *ð	
ð !4ð	
ð 0ð	
ð ñ	
ˆô !ò 
Ø-×?Ò?ð
à'6×'QÒ'Qð
ð !0× CÒ Cð
ð +:×*WÒ*Wð	
ð
 ,;×+YÒ+Yð
ð &5×%MÒ%Mð
ð #2×"?Ò"?ð
ð  /×9Ò9ð
ð -×=Ò=ð
ð '6×&BÒ&Bð
ð #2×"?Ò"?ð
ð  /×9Ò9ð
ñ #8ð
ñ ,ð
ñ ,ð
ñ  0ð!
ñ" &>ð#
ñ$ #8ð%
ð 	
r1   )r�  r•  r¡  r   re  rš  r™  rz  r–  rž  rd  rb  )r3   r4   r5   r6   r\   r«  r®  r	  r   r)   ro   r»  rœ  r   r   ru   r9   r:   r{   r|   s   @@r.   ry  ry  š  sŽ   ù‡ € ÷-ó -ò^(ò'ð Ù(°Ô4ð &+Ø"Ÿ]™]÷	#ñ #ó 5ó ð#ð8 /3¸dÈ5ÐX]×XeÑXeô Wð Ø÷~
ñ ~
ó ó ÷~
ð ~
r1   ry  z6
    Output type of [`Deimv2ForObjectDetection`].
    c                   óŒ   a € ] tR tRt o RtRtRtRtRtRt	Rt
RtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtV 3R ltRtV tR# )ÚDeimv2ObjectDetectionOutputiÀ  ab  
loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `labels` are provided)):
    Total loss as a linear combination of a negative log-likelihood (cross-entropy) for class prediction and a
    bounding box loss. The latter is defined as a linear combination of the L1 loss and the generalized
    scale-invariant IoU loss.
loss_dict (`Dict`, *optional*):
    A dictionary containing the individual losses. Useful for logging.
logits (`torch.FloatTensor` of shape `(batch_size, num_queries, num_classes + 1)`):
    Classification logits (including no-object) for all queries.
pred_boxes (`torch.FloatTensor` of shape `(batch_size, num_queries, 4)`):
    Normalized boxes coordinates for all queries, represented as (center_x, center_y, width, height). These
    values are normalized in [0, 1], relative to the size of each individual image in the batch (disregarding
    possible padding). You can use [`~Deimv2ImageProcessor.post_process_object_detection`] to retrieve the
    unnormalized (absolute) bounding boxes.
auxiliary_outputs (`list[Dict]`, *optional*):
    Optional, only returned when auxiliary losses are activated (i.e. `config.auxiliary_loss` is set to `True`)
    and labels are provided. It is a list of dictionaries containing the two above keys (`logits` and
    `pred_boxes`) for each decoder layer.
last_hidden_state (`torch.FloatTensor` of shape `(batch_size, num_queries, hidden_size)`):
    Sequence of hidden-states at the output of the last layer of the decoder of the model.
intermediate_hidden_states (`torch.FloatTensor` of shape `(batch_size, config.decoder_layers, num_queries, hidden_size)`):
    Stacked intermediate hidden states (output of each layer of the decoder).
intermediate_logits (`torch.FloatTensor` of shape `(batch_size, config.decoder_layers, num_queries, config.num_labels)`):
    Stacked intermediate logits (logits of each layer of the decoder).
intermediate_reference_points (`torch.FloatTensor` of shape `(batch_size, config.decoder_layers, num_queries, 4)`):
    Stacked intermediate reference points (reference points of each layer of the decoder).
intermediate_predicted_corners (`torch.FloatTensor` of shape `(batch_size, config.decoder_layers, num_queries, 4)`):
    Stacked intermediate predicted corners (predicted corners of each layer of the decoder).
initial_reference_points (`torch.FloatTensor` of shape `(batch_size, config.decoder_layers, num_queries, 4)`):
    Stacked initial reference points (initial reference points of each layer of the decoder).
init_reference_points (`torch.FloatTensor` of shape  `(batch_size, num_queries, 4)`):
    Initial reference points sent through the Transformer decoder.
enc_topk_logits (`torch.FloatTensor` of shape `(batch_size, sequence_length, config.num_labels)`, *optional*, returned when `config.with_box_refine=True` and `config.two_stage=True`):
    Logits of predicted bounding boxes coordinates in the encoder.
enc_topk_bboxes (`torch.FloatTensor` of shape `(batch_size, sequence_length, 4)`, *optional*, returned when `config.with_box_refine=True` and `config.two_stage=True`):
    Logits of predicted bounding boxes coordinates in the encoder.
enc_outputs_class (`torch.FloatTensor` of shape `(batch_size, sequence_length, config.num_labels)`, *optional*, returned when `config.with_box_refine=True` and `config.two_stage=True`):
    Predicted bounding boxes scores where the top `config.two_stage_num_proposals` scoring bounding boxes are
    picked as region proposals in the first stage. Output of bounding box binary classification (i.e.
    foreground and background).
enc_outputs_coord_logits (`torch.FloatTensor` of shape `(batch_size, sequence_length, 4)`, *optional*, returned when `config.with_box_refine=True` and `config.two_stage=True`):
    Logits of predicted bounding boxes coordinates in the first stage.
denoising_meta_values (`dict`):
    Extra dictionary for the denoising related values
Nc                óp  <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[S[,          R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R	&   S[ P                  R,          ;R
&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   S[ P                  R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[R,          ;R&   # )r   NÚlossÚ	loss_dictÚlogitsÚ
pred_boxesÚauxiliary_outputsr    r!   r"   r#   r$   r%   r?   r@   r(   rA   rB   rC   rD   rE   rF   rG   rH   rI   )r)   r*   rJ   rP   r+   )r,   r-   s   "€r.   r/   Ú(Deimv2ObjectDetectionOutput.__annotate__À  si  ø‡ ‚ ñj ×
Ñ
˜dÕ
"Ñ)ñk ñl �d�{Ñ!ñm ñn ×Ñ Õ$Ñ+ño ñp ×!Ñ! DÕ(Ñ/ñq ñr ™D•z DÕ(Ñ/ñs ñt ×(Ñ(¨4Õ/Ñ6ñu ñv !&× 1Ñ 1°DÕ 8Ñ?ñw ñx ×*Ñ*¨TÕ1Ñ8ñy ñz $)×#4Ñ#4°tÕ#;ÑBñ{ ñ| %*×$5Ñ$5¸Õ$<ÑCñ} ñ~ $×/Ñ/°$Õ6Ñ=ñ ñ@ !¡×!2Ñ!2Õ3°dÕ:ÑAñA ñB ™e×/Ñ/Õ0°4Õ7Ñ>ñC ñD ™E×-Ñ-Õ.°Õ5Ñ<ñE ñF  %×0Ñ0°4Õ7Ñ>ñG ñH !¡×!2Ñ!2Õ3°dÕ:ÑAñI ñJ ™e×/Ñ/Õ0°4Õ7Ñ>ñK ñL !¡×!2Ñ!2Õ3°dÕ:ÑAñM ñN ×&Ñ&¨Õ-Ñ4ñO ñP ×&Ñ&¨Õ-Ñ4ñQ ñR ×(Ñ(¨4Õ/Ñ6ñS ñT $×/Ñ/°$Õ6Ñ=ñU ñV   $�;Ñ-òW r1   r2   )r3   r4   r5   r6   r7   rã  rä  rå  ræ  rç  r    r!   r"   r#   r$   r%   r?   r@   r(   rA   rB   rC   rD   rE   rF   rG   rH   rI   r8   r9   r:   r;   s   @r.   rá  rá  À  s™   ø‡ € ñ,ð\ &*€DØ!€IØ'+€FØ+/€JØ+/ÐØ26ÐØ;?ÐØ48ÐØ>BÐ!Ø?CÐ"Ø9=ÐØ=AÐØ:>ÐØ8<ÐØ:>ÐØ=AÐØ:>ÐØ=AÐØ04€OØ04€OØ26ÐØ9=ÐØ)-Ð÷W ƒ r1   rá  zž
    RT-DETR Model (consisting of a backbone and encoder-decoder) outputting bounding boxes and logits to be further
    decoded into scores and classes.
    c                   ó–   a a€ ] tR tRt oRtRRRRRRR	R
/tV3R lV 3R lltR t]]	RV3R lR ll4       4       t
]R 4       tRtVtV ;t# )rg  i  Núbbox_embed.(?![0])\d+úbbox_embed.0úclass_embed.(?![0])\d+ú^class_embed.0ri  úmodel.decoder.class_embedrq  úmodel.decoder.bbox_embedc                ó    <€ V ^8„  d   QhRS[ /# r€   r   )r,   r-   s   "€r.   r/   Ú%Deimv2ForObjectDetection.__annotate__  rF  r1   c                óX  <€ \         SV `  V4       VP                  ^ 8¼  d   VP                  MVP                  VP                  ,           V n        \	        V4      V n        \        VP                  VP                  ,          4      pVP                  p\        P                  ! \        V4       Uu. uF.  p\        P                  ! VP                  VP                  4      NK0  	  up4      V n        VP                   '       d_   \#        VP                  VP                  ^VP$                  ^,           ,          ^4      p\        P                  ! V.V,          4      V n        Mâ\        P                  ! \        V P                  ^,           4       Uu. uF=  p\#        VP                  VP                  ^VP$                  ^,           ,          ^4      NK?  	  up\        VP                  V P                  ,
          ^,
          4       Uu. uF(  p\#        W"^VP$                  ^,           ,          ^4      NK*  	  up,           4      V n        V P                  V P
                  P(                  n        V P&                  V P
                  P(                  n        V P+                  4        R# u upi u upi u upi r¿  )r[   r\   rI  rJ  ry  r¯  rx  rM  rc   r]   rÀ   r  r‡   rˆ   rk  ri  Úshare_bbox_headr°   r1  rq  r¡  r»  )rb   r�   Ú
scaled_dimÚnum_predrú   Úshared_bboxrd   s   &&    €r.   r\   Ú!Deimv2ForObjectDetection.__init__  s  ø€ Ü‰Ñ˜Ô à+1¯?©?¸aÔ+?˜ŸšÀV×EZÑEZÐ]c×]lÑ]lÕElˆŒÜ  Ó(ˆŒ
Ü˜6×-Ñ-°×0BÑ0BÕBÓCˆ
Ø×(Ñ(ˆÜŸ=š=Ô`eÐfnÔ`oÓ)pÑ`oÐ[\¬"¯)ª)°F·N±NÀF×DUÑDUÖ*VÑ`oÑ)pÓqˆÔØ×!×!Ð!Ü# F×$6Ñ$6¸×8JÑ8JÈAÐQW×QdÑQdÐghÕQhÕLiÐklÓmˆKÜ Ÿmšm¨[¨M¸HÕ,DÓEˆD�Oä Ÿmšmô # 4§=¡=°1Õ#4Ô5óá5˜ô ˜f×0Ñ0°&×2DÑ2DÀaÈ6×K^ÑK^ÐabÕKbÕFcÐefÖgÙ5ñô # 6×#8Ñ#8¸4¿=¹=Õ#HÈ1Õ#LÔMóáM˜ô ˜j°a¸6×;NÑ;NÐQRÕ;RÕ6SÐUVÖWÙMñõ	ó	ˆDŒOð *.×)9Ñ)9ˆ�
‰
×ÑÔ&Ø(,¯©ˆ�
‰
×ÑÔ%Ø�‰Öùò% *qùòùòs   Â/4JÆAJ"È.J'
c                óT   € \        W4       UUu. uF  w  r4R VRV/NK  	  upp# u uppi )rå  ræ  )rÁ   )rb   Úoutputs_classÚoutputs_coordÚaÚbs   &&&  r.   Ú_set_aux_lossÚ&Deimv2ForObjectDetection._set_aux_loss8  s,   € Ü;>¸}Ô;\Ô]Ñ;\±4°1�˜1˜l¨AÓ.Ñ;\Ò]Ð]ùÓ]s   �$c                ó   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[S[,          R,          RS[S[,          RS[S[ P                  ,          S[,          /# rÄ  )	r)   r*   rÈ  rP   rJ   r   r   r+   rá  )r,   r-   s   "€r.   r/   rñ  =  s¡   ø€ ÷ q
ñ q
á×'Ñ'ðq
ñ ×$Ñ$ tÕ+ðq
ñ ×*Ñ*¨TÕ1ð	q
ñ
 ×(Ñ(¨4Õ/ðq
ñ ‘T•
˜TÕ!ðq
ñ Ñ+Õ,ðq
ñ 
‰u× Ñ Õ	!Ñ$?Õ	?ñq
r1   c                ó¾  € V P                   ! V3RVRVRVRV/VB pV P                  '       d   VP                  MRpVP                  p	VP                  p
VP
                  pVP                  pV	R,          pV
R,          pRw  pppppVeT   VP                  pVP                  pV P                  ! VVV P                  VV P                  V	V
3RVRVRVR	VR
V/VB w  ppp\        R / RVbRVbRVbRVbRVbRVP                  bRVP                  bRVP                  bRVP                  bRVP
                  bR
VP                  bRVP                  bRVP                   bRVP"                  bRVP$                  bRVP&                  bRVP(                  bRVP*                  bRVP                  bRVP                  bRVP,                  bRVP.                  bRVP                  b # )!a_  
Example:

```python
>>> import torch
>>> from transformers.image_utils import load_image
>>> from transformers import AutoImageProcessor, Deimv2ForObjectDetection

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = load_image(url)

>>> image_processor = AutoImageProcessor.from_pretrained("harshaljanjani/DEIMv2_HGNetv2_N_COCO_Transformers")
>>> model = Deimv2ForObjectDetection.from_pretrained("harshaljanjani/DEIMv2_HGNetv2_N_COCO_Transformers")

>>> # prepare image for the model
>>> inputs = image_processor(images=image, return_tensors="pt")

>>> # forward pass
>>> outputs = model(**inputs)

>>> logits = outputs.logits
>>> list(logits.shape)
[1, 300, 80]

>>> boxes = outputs.pred_boxes
>>> list(boxes.shape)
[1, 300, 4]

>>> # convert outputs (bounding boxes and class logits) to Pascal VOC format (xmin, ymin, xmax, ymax)
>>> target_sizes = torch.tensor([image.size[::-1]])
>>> results = image_processor.post_process_object_detection(outputs, threshold=0.9, target_sizes=target_sizes)
>>> result = results[0]  # first image in batch

>>> for score, label, box in zip(result["scores"], result["labels"], result["boxes"]):
...     box = [round(i, 2) for i in box.tolist()]
...     print(
...         f"Detected {model.config.id2label[label.item()]} with confidence "
...         f"{round(score.item(), 3)} at location {box}"
...     )
```
rÅ  rÆ  r÷  rÇ  NrE   rF   rI   Úpredicted_cornersr%   rã  rä  rå  ræ  rç  r    r!   r"   r#   r$   r?   r@   r(   rA   rB   rC   rD   rG   rH   )rá   rl   r9  r2   )r¯  rœ  rI   r"   r#   r$   r%   rE   rF   Úloss_functionrß   r�   rá  r    r!   r?   r@   r(   rA   rB   rC   rD   rG   rH   )rb   r)  rÅ  rÆ  r÷  rÇ  r(  rß  rI   rù  rú  r  r%   rå  ræ  rã  rä  rç  rE   rF   s   &&&&&&,             r.   ru   Ú Deimv2ForObjectDetection.forward;  sŸ  € ðh —*’*Øñ
à!ð
ð ,ð
ð (ð	
ð
 ð
ð ñ
ˆð BFÇÇÀ × =Ò =ÐTXÐà×3Ñ3ˆØ×=Ñ=ˆØ#×BÑBÐØ#*×#CÑ#CÐ à˜uÕ%ˆØ" 5Õ)ˆ
àOkÑLˆˆiÐ*¨O¸_ØÒØ%×5Ñ5ˆOØ%×5Ñ5ˆOØ15×1CÒ1CØØØ—‘ØØ—‘ØØñ2ð !0ð2ð !0ð2ð '<ð2ð #4ð2ð *Bð2ð ñ2Ñ.ˆD�)Ð.ô  +ò 
Ùð
áð
ñ ð
ñ "ð	
ñ
 0ð
ð &×7Ò7ð
ð (/×'IÒ'Ið
ð !(× ;Ò ;ð
ð +2×*OÒ*Oð
ð ,3×+QÒ+Qð
ð &-×%EÒ%Eð
ð #*×"?Ò"?ð
ð  '×9Ò9ð
ð %×5Ò5ð
ð '.×&GÒ&Gð
ð  #*×"?Ò"?ð!
ð"  '×9Ò9ð#
ð$ #*×"?Ò"?ð%
ð& $×3Ò3ð'
ð( $×3Ò3ð)
ð* &×7Ò7ð+
ð, &-×%EÒ%Eð-
ð. #*×"?Ò"?ð/
ð 	
r1   c                ób   € R RRRRR/pV P                   P                  '       d   RVR&   RVR	&   V# )
rì  rí  ri  rî  rq  rï  zmodel.decoder.bbox_embed.0z&model\.decoder\.bbox_embed\.(?![0])\d+rë  rê  )r�   ró  )rb   Úkeyss   & r.   Ú_tied_weights_keysÚ+Deimv2ForObjectDetection._tied_weights_keys°  sJ   € ð &Ð'8ØÐ6ØÐ4ð
ˆð
 �;‰;×&×&Ð&Ø>[ˆDÐ:Ñ;Ø-<ˆDÐ)Ñ*Øˆr1   )rq  ri  rI  r¯  rb  )r3   r4   r5   r6   rŠ  r  r\   rý  r   r   ru   Úpropertyr9   r:   r{   r|   s   @@r.   rg  rg    sz   ù‡ € ð Ðà  /Ø!Ð#4ØÐ2ØÐ0ð	Ð÷ó ò6^ð Ø÷q
ñ q
ó ó ðq
ðf ñ	ó ÷	ð 	r1   rg  )r×   )Nrµ  )rô   )r£  )éd   rà   rp  )ry  r^  rg  )Yrl  Úcollections.abcr   Údataclassesr   r)   Útorch.nnr]   Útorch.nn.functionalré   r.  r   Ú r   rn  Úactivationsr   Úbackbone_utilsr   Úimage_transformsr	   r
   Úintegrationsr   Úmodeling_outputsr   Úmodeling_utilsr   r   Úprocessing_utilsr   Úpytorch_utilsr   Úutilsr   r   r   r   Úutils.genericr   r   Úutils.output_capturingr   r   Úconfiguration_deimv2r   r   r=   rM   r˜  rT   r~   r–   r°   r  r  r;  rP  r`  rr  rˆ  r¢  r¤  rÁ  ro   r÷  rù  r  r  r-  r:  rO  r^  r‘  r®  r³  rÉ  r†  r	  r…  r/  r8  rB  rh  rŒ  ry  rá  rg  Ú__all__r2   r1   r.   Ú<module>r     sq  ðó* Ý $Ý !ã Ý ß Ð Ý å &Ý "Ý +ß RÝ 7Ý +ß FÝ &Ý @ß ZÓ Zß Iß EÝ .ñ ðôð ô=˜+ó =ó óð=ñ: ðôð
 ô1.˜ó 1.ó óð1.ñh ðôð ô<˜+ó <ó óð<ñ ˜YÓ'ôJ�B—I‘Ió Jó (ðJô(�b—i‘iô ô�—‘ô ô�—	‘	ô ÷ G/ôTY)¨"¯)©)ô Y)ôx˜"Ÿ)™)ô ô@"˜Ÿ	™	ô "ô&4˜Ÿ	™	ô 4ô<0˜Ÿ™ô 0ô<�2—9‘9ô ÷&%ô8?)˜"Ÿ)™)ô ?)ôDD˜Ÿ™ô DðT Ø ØØ"&ØŸ™÷/ôd# "§)¡)ô #ôL6�b—i‘iô 6ôrA §¡ô Aô&�R—Y‘Yô ô2�—	‘	ô ô"Z˜Ÿ™ô Zðz ôP5˜Oó P5ó ðP5ôf$ ˜bŸi™iô $ òN'ô2UÐ-ô Uô8+Ð3ô +ô\09Ð-ô 09÷f<ôXBÐ/ô XBôvõõ0,ô2Y
Ð)ô Y
ôxxQñv ðôô
^
Ð'ó ^
óð
^
ñB	 ðôð
 ôE. +ó E.ó óðE.ñP ðôôfÐ4ó fóðfòR O‚r1   