+
    œ°³j«¨  ã                   óH  € ^ 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 ^RIHtHt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$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t,H-t-H.t.H/t/H0t0H1t1H2t2H3t3H4t4 ^RI5H6t6H7t7 ]Pp                  ! ]94      t:]! RR7      ]	 ! R R]4      4       4       t; ! R R]%4      t< ! R R].4      t=]! RR7      ] ! R R]4      4       4       t> ! R R]74      t? ! R R]64      t@ ! R R ](4      tA ! R! R"],4      tB ! R# R$]/4      tC ! R% R&]"4      tD ! R' R(]14      tE ! R) R*]PŒ                  4      tG ! R+ R,]PŒ                  4      tH ! R- R.]24      tI ! R/ R0]&4      tJ ! R1 R2]!4      tK ! R3 R4]PŒ                  4      tLRMR5 R6 lltM ! R7 R8]*4      tN ! R9 R:]+4      tO ! R; R<]$4      tP ! R= R>]04      tQ ! R? R@]Q4      tR ! RA RB]Q4      tS ! RC RD]Q4      tT ! RE RF])4      tU ! RG RH]#4      tV ! RI RJ]-4      tW ! RK RL]'4      tX. RNOtYR# )Oé    )Ú	dataclassN)Ústrict)Úinitialization)Úload_backbone)ÚModelOutput)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚlogging)Úmerge_with_config_defaults)ÚOutputRecorderÚcapture_outputs)Ú
AutoConfig)ÚDFineConfig)ÚDFineAIFILayerÚDFineConvNormLayerÚDFineDecoderÚDFineDecoderLayerÚDFineDecoderOutputÚDFineEncoderLayerÚDFineForObjectDetectionÚ	DFineGateÚDFineHybridEncoderÚDFineIntegralÚDFineLQEÚDFineMLPÚ
DFineModelÚDFineModelOutputÚ"DFineMultiscaleDeformableAttentionÚDFinePreTrainedModelÚDFineRepVggBlockÚDFineSCDownÚ(get_contrastive_denoising_training_groupÚreplace_batch_norm)ÚLlamaMLPÚLlamaRMSNormz"Intellindust/DEIMv2_HGNetv2_N_COCO)Ú
checkpointc                   ód   a € ] tR t^;t o RtRtR]/tRtRt	Rt
RtRt^tRtRtR	tRtV 3R
 ltRtV tR# )ÚDeimv2ConfigaP  
initializer_bias_prior_prob (`float`, *optional*):
    The prior probability used by the bias initializer to initialize biases for `enc_score_head` and `class_embed`.
    If `None`, `prior_prob` computed as `prior_prob = 1 / (num_labels + 1)` while initializing model weights.
freeze_backbone_batch_norms (`bool`, *optional*, defaults to `True`):
    Whether to freeze the batch normalization layers in the backbone.
encoder_in_channels (`list`, *optional*, defaults to `[512, 1024, 2048]`):
    Multi level features input for encoder.
feat_strides (`list[int]`, *optional*, defaults to `[8, 16, 32]`):
    Strides used in each feature map.
encode_proj_layers (`list[int]`, *optional*, defaults to `[2]`):
    Indexes of the projected layers to be used in the encoder.
positional_encoding_temperature (`int`, *optional*, defaults to 10000):
    The temperature parameter used to create the positional encodings.
encoder_activation_function (`str`, *optional*, defaults to `"gelu"`):
    The non-linear activation function (function or string) in the encoder and pooler.
eval_size (`list[int]` or `tuple[int, int]`, *optional*):
    Height and width used to computes the effective height and width of the position embeddings after taking
    into account the stride.
normalize_before (`bool`, *optional*, defaults to `False`):
    Determine whether to apply layer normalization in the transformer encoder layer before self-attention and
    feed-forward modules.
hidden_expansion (`float`, *optional*, defaults to 1.0):
    Expansion ratio to enlarge the dimension size of RepVGGBlock and CSPRepLayer.
num_queries (`int`, *optional*, defaults to 300):
    Number of object queries.
decoder_in_channels (`list`, *optional*, defaults to `[256, 256, 256]`):
    Multi level features dimension for decoder.
num_feature_levels (`int`, *optional*, defaults to 3):
    The number of input feature levels.
decoder_n_points (`int`, *optional*, defaults to 4):
    The number of sampled keys in each feature level for each attention head in the decoder.
decoder_activation_function (`str`, *optional*, defaults to `"relu"`):
    The non-linear activation function (function or string) in the decoder.
num_denoising (`int`, *optional*, defaults to 100):
    The total number of denoising tasks or queries to be used for contrastive denoising.
label_noise_ratio (`float`, *optional*, defaults to 0.5):
    The fraction of denoising labels to which random noise should be added.
box_noise_scale (`float`, *optional*, defaults to 1.0):
    Scale or magnitude of noise to be added to the bounding boxes.
learn_initial_query (`bool`, *optional*, defaults to `False`):
    Indicates whether the initial query embeddings for the decoder should be learned during training.
anchor_image_size (`tuple[int, int]`, *optional*):
    Height and width of the input image used during evaluation to generate the bounding box anchors.
with_box_refine (`bool`, *optional*, defaults to `True`):
    Whether to apply iterative bounding box refinement.
matcher_alpha (`float`, *optional*, defaults to 0.25):
    Parameter alpha used by the Hungarian Matcher.
matcher_gamma (`float`, *optional*, defaults to 2.0):
    Parameter gamma used by the Hungarian Matcher.
matcher_class_cost (`float`, *optional*, defaults to 2.0):
    The relative weight of the class loss used by the Hungarian Matcher.
matcher_bbox_cost (`float`, *optional*, defaults to 5.0):
    The relative weight of the bounding box loss used by the Hungarian Matcher.
matcher_giou_cost (`float`, *optional*, defaults to 2.0):
    The relative weight of the giou loss used by the Hungarian Matcher.
use_focal_loss (`bool`, *optional*, defaults to `True`):
    Parameter informing if focal loss should be used.
focal_loss_alpha (`float`, *optional*, defaults to 0.75):
    Parameter alpha used to compute the focal loss.
focal_loss_gamma (`float`, *optional*, defaults to 2.0):
    Parameter gamma used to compute the focal loss.
weight_loss_vfl (`float`, *optional*, defaults to 1.0):
    Relative weight of the varifocal loss in the object detection loss.
weight_loss_bbox (`float`, *optional*, defaults to 5.0):
    Relative weight of the L1 bounding box loss in the object detection loss.
weight_loss_giou (`float`, *optional*, defaults to 2.0):
    Relative weight of the generalized IoU loss in the object detection loss.
weight_loss_fgl (`float`, *optional*, defaults to 0.15):
    Relative weight of the fine-grained localization loss in the object detection loss.
weight_loss_ddf (`float`, *optional*, defaults to 1.5):
    Relative weight of the decoupled distillation focal loss in the object detection loss.
eval_idx (`int`, *optional*, defaults to -1):
    Index of the decoder layer to use for evaluation.
layer_scale (`float`, *optional*, defaults to `1.0`):
    Scaling factor for the hidden dimension in later decoder layers.
max_num_bins (`int`, *optional*, defaults to 32):
    Maximum number of bins for the distribution-guided bounding box refinement.
reg_scale (`float`, *optional*, defaults to 4.0):
    Scale factor for the regression distribution.
depth_mult (`float`, *optional*, defaults to 1.0):
    Multiplier for the number of blocks in RepNCSPELAN5 layers.
top_prob_values (`int`, *optional*, defaults to 4):
    Number of top probability values to consider from each corner's distribution.
lqe_hidden_dim (`int`, *optional*, defaults to 64):
    Hidden dimension size for the Location Quality Estimator (LQE) network.
lqe_layers (`int`, *optional*, defaults to 2):
    Number of layers in the Location Quality Estimator MLP.
decoder_offset_scale (`float`, *optional*, defaults to 0.5):
    Offset scale used in deformable attention.
decoder_method (`str`, *optional*, defaults to `"default"`):
    The method to use for the decoder: `"default"` or `"discrete"`.
up (`float`, *optional*, defaults to 0.5):
    Controls the upper bounds of the Weighting Function.
weight_loss_mal (`float`, *optional*, defaults to 1.0):
    Relative weight of the matching auxiliary loss in the object detection loss.
use_dense_one_to_one (`bool`, *optional*, defaults to `True`):
    Whether to use dense one-to-one matching across decoder layers.
mal_alpha (`float`, *optional*):
    Alpha parameter for the Matching Auxiliary Loss (MAL). If `None`, uses `focal_loss_alpha`.
encoder_fuse_op (`str`, *optional*, defaults to `"sum"`):
    Fusion operation used in the encoder FPN. DEIMv2 uses `"sum"` instead of D-FINE's `"cat"`.
spatial_tuning_adapter_inplanes (`int`, *optional*, defaults to 16):
    Number of input planes for the STA convolutional stem.
encoder_type (`str`, *optional*, defaults to `"hybrid"`):
    Type of encoder to use. `"hybrid"` uses the full HybridEncoder with AIFI, FPN, and PAN.
    `"lite"` uses the lightweight LiteEncoder with GAP fusion for smaller variants (Atto, Femto, Pico).
use_gateway (`bool`, *optional*, defaults to `True`):
    Whether to use the gateway mechanism (cross-attention gating) in decoder layers. When `False`,
    uses RMSNorm on the encoder attention output instead.
share_bbox_head (`bool`, *optional*, defaults to `False`):
    Whether to share the bounding box prediction head across all decoder layers.
encoder_has_trailing_conv (`bool`, *optional*, defaults to `True`):
    Whether the encoder's CSP blocks include a trailing 3x3 convolution after the bottleneck path.
    `True` for RepNCSPELAN4 (used by HGNetV2 N and LiteEncoder variants).
    `False` for RepNCSPELAN5 (used by DINOv3 variants).
Údeimv2Úbackbone_configNç      ð?TÚsumÚhybridFc                óä   <€ V ^8„  d   Qh/ S[ S[,          S[S[S[3,          ,          R,          ;R&   S[;R&   S[;R&   S[R,          ;R&   S[;R&   S[;R&   S[;R&   S[;R	&   S[;R
&   S[;R&   # )é   NÚ	eval_sizeÚweight_loss_malÚuse_dense_one_to_oneÚ	mal_alphaÚencoder_fuse_opÚspatial_tuning_adapter_inplanesÚencoder_typeÚuse_gatewayÚshare_bbox_headÚencoder_has_trailing_conv)ÚlistÚintÚtupleÚfloatÚboolÚstr)ÚformatÚ__classdict__s   "€Új/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/deimv2/modular_deimv2.pyÚ__annotate__ÚDeimv2Config.__annotate__;   sµ   ø‡ ‚ ñx ‘C�y™5¡¡c �?Õ*¨TÕ1Ñ8ñy ñz Ñ ñ{ ñ| Ñ%ñ} ñ~ �t�|Ñ"ñ ñ@ Ñ ñA ñB &)Ñ-ñC ñD Ñ ñE ñF ÑñG ñH Ñ!ñI ñJ  $Ñ*òK ó    © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú
model_typer   Úsub_configsr1   r2   r3   r4   r5   r6   r7   r8   r9   r:   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©rB   s   @rC   r)   r)   ;   sZ   ø‡ € ñtðl €JØ$ jÐ1€Kà48€IØ €OØ!%ÐØ"€IØ €OØ+-Ð#Ø €LØ€KØ!€OØ&*Ð÷K ƒ rF   r)   c                   ó   € ] tR t^ÃtRtR# )ÚDeimv2DecoderOutputrG   N©rH   rI   rJ   rK   rP   rG   rF   rC   rT   rT   Ã   ó   † ÛrF   rT   c                   ó   € ] tR t^ÇtRtR# )ÚDeimv2ModelOutputrG   NrU   rG   rF   rC   rX   rX   Ç   rV   rF   rX   z 
    Output type for DEIMv2 encoder modules (HybridEncoder and LiteEncoder).
    Attentions are only available for HybridEncoder variants with AIFI layers.
    )Úcustom_introc                   ó<   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&   # )r0   Úfeature_maps.NÚhidden_statesÚ
attentions)r;   ÚtorchÚFloatTensorr=   )rA   rB   s   "€rC   rD   Ú Deimv2EncoderOutput.__annotate__Ë   sa   ø‡ ‚ ñ ‘u×(Ñ(Õ)Ñ0ñ ñ ™×*Ñ*¨CÐ/Õ0°4Õ7Ñ>ñ ñ ‘e×'Ñ'¨Ð,Õ-°Õ4Ñ;ò rF   rG   )rH   rI   rJ   rK   rL   r]   r^   r_   rO   rP   rQ   rR   s   @rC   r[   r[   Ë   s"   ø‡ € ñð
 -1€LØ:>€MØ7;€J÷ ƒ rF   r[   c                   ó   € ] tR t^ÝtRtR# )ÚDeimv2RMSNormrG   NrU   rG   rF   rC   rd   rd   Ý   rV   rF   rd   c                   ó2   a € ] tR t^át o V 3R lR ltRtV tR# )ÚDeimv2SwiGLUFFNc                ó    <€ V ^8„  d   QhRS[ /# ©r0   Úconfig©r)   )rA   rB   s   "€rC   rD   ÚDeimv2SwiGLUFFN.__annotate__â   s   ø€ ÷  ñ  ™|ñ  rF   c                óŒ  € \         P                  P                  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# )r0   T)ÚbiasN)ÚnnÚModuleÚ__init__Údecoder_ffn_dimÚLinearÚd_modelÚ	gate_projÚup_projÚ	down_projÚSiLUÚact_fn)Úselfri   Úhidden_featuress   && rC   rp   ÚDeimv2SwiGLUFFN.__init__â   sw   € Ü
�	‰	×Ñ˜4Ô Ø ×0Ñ0°AÕ5ˆÜŸš 6§>¡>°?ÈÔNˆŒÜ—y’y §¡°ÀtÔLˆŒÜŸš ?·N±NÈÔNˆŒÜ—g’g“iˆŽrF   )rx   rv   rt   ru   N)rH   rI   rJ   rK   rp   rP   rQ   rR   s   @rC   rf   rf   á   s   ø‡ € ÷ ö  rF   rf   c                   ó>   a a€ ] tR t^ët oV3R lV 3R lltRtVtV ;t# )Ú
Deimv2Gatec                ó    <€ V ^8„  d   QhRS[ /# )r0   rs   )r<   )rA   rB   s   "€rC   rD   ÚDeimv2Gate.__annotate__ì   s   ø€ ÷ +ñ +¡ñ +rF   c                óF   <€ \         SV `  V4       \        V4      V n        R # ©N)Úsuperrp   rd   Únorm)ry   rs   Ú	__class__s   &&€rC   rp   ÚDeimv2Gate.__init__ì   s   ø€ Ü‰Ñ˜Ô!Ü! 'Ó*ˆŽ	rF   )rƒ   ©rH   rI   rJ   rK   rp   rP   rQ   Ú__classcell__©r„   rB   s   @@rC   r}   r}   ë   s   ù‡ € ÷+÷ +ó +rF   r}   c                   ó   € ] tR t^ñtRtR# )Ú	Deimv2MLPrG   NrU   rG   rF   rC   rŠ   rŠ   ñ   rV   rF   rŠ   c                   ó   € ] tR t^õtRtR# )Ú#Deimv2MultiscaleDeformableAttentionrG   NrU   rG   rF   rC   rŒ   rŒ   õ   rV   rF   rŒ   c                   ó   € ] tR t^ùtRtR# )ÚDeimv2ConvNormLayerrG   NrU   rG   rF   rC   rŽ   rŽ   ù   rV   rF   rŽ   c                   ó   € ] tR t^ýtRtR# )ÚDeimv2RepVggBlockrG   NrU   rG   rF   rC   r�   r�   ý   rV   rF   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	# )	Ú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[/# )r0   ri   Úin_channelsÚout_channelsÚ
num_blocksÚ	expansion)r)   r<   r>   )rA   rB   s   "€rC   rD   ÚDeimv2CSPRepLayer.__annotate__  s5   ø€ ÷ 
ñ 
Ù"ð
Ù14ð
ÙDGð
ÙUXð
Ùejñ
rF   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 )r0   ©Ú
activationN)r‚   rp   Úactivation_functionr<   rŽ   Úconv1rn   Ú
ModuleListÚranger�   Úbottlenecksr:   ÚIdentityÚconv2)
ry   ri   r”   r•   r–   r—   r›   Úhidden_channelsÚ_r„   s
   &&&&&&   €rC   rp   Ú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                  /# ©r0   r^   Úreturn©r`   ÚTensor)rA   rB   s   "€rC   rD   r˜     s#   ø€ ÷ 4ñ 4¡U§\¡\ð 4±e·l±lñ 4rF   c                ó®   € V P                  V4      P                  ^^R7      w  r!V P                   F  pV! V4      pK  	  V P                  W!,           4      # ©r0   ©Údim)r�   Úchunkr    r¢   )ry   r^   ÚresidualÚ
bottlenecks   &&  rC   ÚforwardÚDeimv2CSPRepLayer.forward  sO   € Ø"&§*¡*¨]Ó";×"AÑ"AÀ!ÈÐ"AÓ"KÑˆØ×*Ô*ˆJÙ& }Ó5ŠMñ +à�z‰z˜(Õ2Ó3Ð3rF   )r    r�   r¢   )r,   ©
rH   rI   rJ   rK   rL   rp   r²   rP   rQ   r‡   rˆ   s   @@rC   r’   r’     s#   ù‡ € ñ÷
õ 
÷ 4÷ 4ð 4rF   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[/# )r0   ri   Únumb_blocks)r)   r<   )rA   rB   s   "€rC   rD   ÚDeimv2RepNCSPELAN5.__annotate__'  s   ø€ ÷ 
ñ 
™|ð 
¹#ñ 
rF   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# )r0   rš   )r–   N)r‚   rp   rœ   Úencoder_hidden_dimÚroundÚhidden_expansionrŽ   r�   r’   Úcsp_rep1Úcsp_rep2r¢   )	ry   ri   r¸   r›   r”   r•   Úsplit_channelsÚcsp_channelsr„   s	   &&&     €rC   rp   Ú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ô
ˆŽ
rF   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r§   r©   )rA   rB   s   "€rC   rD   r¹   5  s#   ø€ ÷ 0ñ 0¡U§\¡\ð 0±e·l±lñ 0rF   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      # r¬   )r�   r¯   r¾   r¿   r`   Úcatr¢   )ry   r^   Úhidden_states_1Úhidden_states_2Úhidden_states_3Úhidden_states_4Úmerged_hidden_statess   &&     rC   r²   ÚDeimv2RepNCSPELAN5.forward5  sg   € Ø+/¯:©:°mÓ+D×+JÑ+JÈ1ÐRSÐ+JÓ+TÑ(ˆØŸ-™-¨Ó8ˆØŸ-™-¨Ó8ˆÜ$Ÿyšy¨/ÈOÐ)mÐstÔuÐØ�z‰zÐ.Ó/Ð/rF   )r�   r¢   r¾   r¿   )é   r´   rˆ   s   @@rC   r¶   r¶     s#   ù‡ € ñ÷
õ 
÷0÷ 0ð 0rF   r¶   c                   ó   € ] tR tRtRtR# )ÚDeimv2SCDowni=  rG   NrU   rG   rF   rC   rÎ   rÎ   =  rV   rF   rÎ   c                   ó   € ] tR tRtRtR# )ÚDeimv2EncoderLayeriA  rG   NrU   rG   rF   rC   rÐ   rÐ   A  rV   rF   rÐ   c                   ó   € ] tR tRtRtR# )ÚDeimv2AIFILayeriE  rG   NrU   rG   rF   rC   rÒ   rÒ   E  rV   rF   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# )ÚDeimv2SpatialTuningAdapteriI  c                ó    <€ V ^8„  d   QhRS[ /# rh   rj   )rA   rB   s   "€rC   rD   Ú'Deimv2SpatialTuningAdapter.__annotate__J  s   ø€ ÷  ñ  ™|ñ  rF   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# )rÌ   Úgelurš   ©Úkernel_sizeÚstrideÚpaddingN)r‚   rp   r6   rŽ   Ú	stem_convrn   Ú	MaxPool2dÚ	stem_poolr¢   Úconv3Úconv4ÚGELUrx   )ry   ri   Úinplanesr„   s   && €rC   rp   Ú#Deimv2SpatialTuningAdapter.__init__J  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ˆŽrF   c                ó�   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  S[ P                  S[ P                  3,          /# )r0   Úpixel_valuesr¨   )r`   rª   r=   )rA   rB   s   "€rC   rD   rÖ   T  s>   ø€ ÷ Añ A¡E§L¡Lð A±U¹5¿<¹<ÉÏÉÑW\×WcÑWcÐ;cÕ5dñ ArF   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Ý   r¢   rà   rx   rá   )ry   ræ   rÆ   rÇ   rÈ   rÉ   s   &&    rC   r²   Ú"Deimv2SpatialTuningAdapter.forwardT  s`   € ØŸ.™.¨¯©¸Ó)EÓFˆØŸ*™* _Ó5ˆØŸ*™* T§[¡[°Ó%AÓBˆØŸ*™* T§[¡[°Ó%AÓBˆØ°Ð@Ð@rF   )rx   r¢   rà   rá   rÝ   rß   ©	rH   rI   rJ   rK   rp   r²   rP   rQ   r‡   rˆ   s   @@rC   rÔ   rÔ   I  s!   ù‡ € ÷ ó  ÷A÷ Að ArF   rÔ   c                ó„   € V ^8„  d   QhR\         P                  R\         P                  R\        R\         P                  /# )r0   Úfeature_map_1Úfeature_map_2Úfuse_opr¨   )r`   rª   r@   )rA   s   "rC   rD   rD   \  s8   € ÷ <ñ <¤U§\¡\ð <Ä%Ç,Á,ð <ÔY\ð <Ôin×iuÑiuñ <rF   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   &&&rC   Úfuse_feature_mapsrï   \  s'   € à�%ÔØÕ,Ð,Ü�9Š9�mÐ3¸Ô;Ð;rF   c                   ó   € ] tR tRtRtR# )ÚDeimv2Integralic  rG   NrU   rG   rF   rC   rñ   rñ   c  rV   rF   rñ   c                   ó   € ] tR tRtRtR# )Ú	Deimv2LQEig  rG   NrU   rG   rF   rC   ró   ró   g  rV   rF   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# )ÚDeimv2DecoderLayerik  c                ó    <€ V ^8„  d   QhRS[ /# rh   rj   )rA   rB   s   "€rC   rD   ÚDeimv2DecoderLayer.__annotate__l  s   ø€ ÷ eñ e™|ñ erF   c                ó¸  <€ \         SV `  V4       \        VR 7      V n        \	        VP
                  4      V n        \	        VP
                  4      V n        \        V4      V n	        VP                  V n
        VP                  '       d   \        VP
                  4      MRV n        VP                  '       d
   RV n        R# \	        VP
                  4      V n        R# ©©ri   N)r‚   rp   rŒ   Úencoder_attnrd   rs   Úself_attn_layer_normÚfinal_layer_normrf   Úmlpr8   r}   ÚgatewayÚencoder_attn_layer_norm©ry   ri   r„   s   &&€rC   rp   ÚDeimv2DecoderLayer.__init__l  sœ   ø€ Ü‰Ñ˜Ô Ü?ÀvÔNˆÔÜ$1°&·.±.Ó$AˆÔ!Ü -¨f¯n©nÓ =ˆÔÜ" 6Ó*ˆŒØ!×-Ñ-ˆÔØ5;×5G×5GÐ5G”z &§.¡.Ô1ÈTˆŒØ/5×/A×/AÐ/A tˆÖ$Ä}ÐU[×UcÑUcÓGdˆÖ$rF   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                  /	# )r0   r^   Úposition_embeddingsNÚreference_pointsÚspatial_shapesÚspatial_shapes_listÚencoder_hidden_statesÚencoder_attention_maskÚkwargsr¨   )r`   rª   r;   r=   r<   r   r	   )rA   rB   s   "€rC   rD   r÷   v  s²   ø€ ÷ 2ñ 2á—|‘|ð2ñ #Ÿ\™\¨DÕ0ð2ñ  Ÿ,™,¨Õ-ð	2ñ
 Ÿ™ tÕ+ð2ñ "¡%©©S¨¥/Õ2°TÕ9ð2ñ  %Ÿ|™|¨dÕ2ð2ñ !&§¡¨tÕ 3ð2ñ Ñ+Õ,ð2ñ 
�‰ñ2rF   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# )r^   Úattention_maskr  )ÚpÚtraining)r^   r  r  r  r  rG   )Ú	self_attnrn   Ú
functionalÚdropoutr  rü   rû   rÿ   r   rþ   rý   )ry   r^   r  r  r  r  r  r	  r
  r°   r¤   s   &&&&&&&&,  rC   r²   ÚDeimv2DecoderLayer.forwardv  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Ó<ˆàÐrF   )rû   r   rý   rÿ   rþ   rü   r8   )NNNNNNré   rˆ   s   @@rC   rõ   rõ   k  s    ù‡ € ÷eó e÷2÷ 2ò 2rF   rõ   c                   ób   a a€ ] tR tRt o. ROt]P                  ! 4       V 3R l4       tRtVt	V ;t
# )ÚDeimv2PreTrainedModeli«  c                óV  <€ \         SV `  V4       \        V\        4      '       Ed   \        P
                  ! VP                  P                  4       \        P                  ! VP                  P                  ^ 4       \        P
                  ! VP                  P                  4       \        P                  ! VP                  P                  ^ 4       \        P
                  ! VP                  P                  4       \        P                  ! VP                  P                  ^ 4       R# R# ©r   N)r‚   Ú_init_weightsÚ
isinstancerf   ÚinitÚxavier_uniform_rt   ÚweightÚ	constant_rm   ru   rv   )ry   Úmoduler„   s   &&€rC   r  Ú#Deimv2PreTrainedModel._init_weights®  sº   ø€ ä‰Ñ˜fÔ%ä�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ñ /rF   rG   )ÚDeimv2HybridEncoderÚDeimv2LiteEncoderrõ   )rH   rI   rJ   rK   Ú_no_split_modulesr`   Úno_gradr  rP   rQ   r‡   rˆ   s   @@rC   r  r  «  s(   ù‡ € Ú]Ðà
‡]‚]ƒ_ô	5ó ÷	5ð 	5rF   r  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# )ÚDeimv2ConvEncoderi¼  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‚   rp   r   Úfreeze_backbone_batch_normsr`   r"  r$   ÚmodelÚchannelsÚintermediate_channel_sizesrn   rž   r7   rŽ   r»   r¡   Úencoder_input_projÚ	post_init)ry   ri   ÚbackboneÚ
in_channelr„   s   &&  €rC   rp   ÚDeimv2ConvEncoder.__init__½  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                  ,          /# ©r0   ræ   r
  r¨   ©r`   rª   r   r	   r;   )rA   rB   s   "€rC   rD   ÚDeimv2ConvEncoder.__annotate__Ó  s>   ø€ ÷ Uñ U¡E§L¡Lð U¹FÑCUÕ<Vð UÑ[_Ñ`e×`lÑ`lÕ[mñ UrF   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(  r]   Úzipr+  )ry   ræ   r
  ÚfeaturesÚprojÚfeats   &&,   rC   r²   Ú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   @@rC   r$  r$  ¼  s   ù‡ € õ÷,U÷ Uð UrF   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[ /# rh   rj   )rA   rB   s   "€rC   rD   Ú$Deimv2DINOv3ConvEncoder.__annotate__Ù  s   ø€ ÷ ñ ™|ñ rF   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# )r0   N)r‚   rp   r   r-  rÔ   Úspatial_tuning_adapterr+   Úhidden_sizer»   r6   rn   rž   rŽ   Úfusion_projr,  )ry   ri   Ú	embed_dimÚ
hidden_dimÚspatial_tuning_adapter_channelsr„   s   &&   €rC   rp   Ú 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ðó
ˆÔð 	�‰ÖrF   c                ót   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[S[ P                  ,          /# r1  r2  )rA   rB   s   "€rC   rD   r=  ì  s9   ø€ ÷ ñ ¡E§L¡Lð ¹FÑCUÕ<Vð Ñ[_Ñ`e×`lÑ`lÕ[mñ rF   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# )r0   ÚbilinearF)ÚsizeÚmodeÚalign_cornersr­   )r-  r]   ri   Ú
patch_sizeÚshapeÚlenÚ	enumerater<   ÚFÚinterpolateÚappendr?  r5  r`   rÅ   ÚtoÚdevicerA  )ry   ræ   r
  Úbackbone_outputr]   rL  Úheight_patchesÚwidth_patchesÚsemantic_featuresÚ
num_scalesÚir8  Úresize_heightÚresize_widthÚspatialÚdetail_featuresÚoutputsÚsemantic_featureÚdetail_featureÚfuseds   &&,                 rC   r²   Ú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ð ˆrF   )r-  rA  r?  ré   rˆ   s   @@rC   r;  r;  Ø  s   ù‡ € ÷ó ÷&÷ ð rF   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[ /# rh   rj   )rA   rB   s   "€rC   rD   ÚDeimv2LiteEncoder.__annotate__  s   ø€ ÷ ñ ™|ñ rF   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š   ©r¸   N)r‚   rp   r»   rœ   rn   rž   Úencoder_in_channelsrŽ   re  Ú	AvgPool2dÚ
down_pool1Ú
down_conv1Ú
down_pool2Ú
down_conv2rg  r¼   Ú
depth_multr¶   Ú	fpn_blockÚ	pan_blockr,  )ry   ri   rC  r›   r.  r–   r„   s   &&    €rC   rp   Ú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[/# )r0   Úinputs_embedsr
  r¨   ©r;   r`   rª   r   r	   r[   )rA   rB   s   "€rC   rD   ri  '  s2   ø€ ÷ 9ñ 9¡T©%¯,©,Õ%7ð 9Á6ÑJ\ÕC]ð 9Ñbuñ 9rF   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 )rk  ç       @Únearest©Úscale_factorrJ  ©r]   éÿÿÿÿ)rO  re  rR  rp  ro  rg  rP  Úadaptive_avg_pool2drQ  rt  rr  rq  ru  r[   )ry   rx  r
  rZ  ÚfeatureÚprojected_featuresr_  Úfused_features   &&,     rC   r²   Ú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)rg  rp  rr  ro  rq  rt  re  ru  )rH   rI   rJ   rK   r   rŽ   Ú_can_record_outputsrp   r   r   r²   rP   rQ   r‡   rˆ   s   @@rC   r   r     sY   ù‡ € ð 	ÙÐ.¸<ÔHÙÐ.Ð;KÔLð
ðÐ÷ó ð,  Ø÷9ó ó  ÷9ð 9rF   r   c                   óL   a € ] tR tRt o RtV 3R lR ltR	V 3R lR lltRtV tR# )
r  i9  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.
c                ó    <€ V ^8„  d   QhRS[ /# rh   rj   )rA   rB   s   "€rC   rD   Ú Deimv2HybridEncoder.__annotate__@  s   ø€ ÷  ñ  ™|ñ  rF   c           
     ó   € \         P                  W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 )rk  rl  Nr€  ) r  rp   ri   rm  r”   rN  Únum_fpn_stagesÚfeat_stridesr»   Úencode_proj_layersÚpositional_encoding_temperaturer1   r•   Úout_stridesr5   rí   rn   rž   rŸ   rÒ   ÚaifiÚlateral_convsÚ
fpn_blocksrR  rŽ   r¼   rs  r¶   Údownsample_convsÚ
pan_blocksrÎ   r,  )ry   ri   r¤   r–   s   &&  rC   rp   ÚDeimv2HybridEncoder.__init__@  s/  € Ü×&Ñ& tÔ4ØŒØ!×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   Â1K6ÄK;Nc                ón   <€ V ^8„  d   QhRS[ S[P                  ,          R,          RS[S[,          RS[/# )r0   rx  Nr
  r¨   ry  )rA   rB   s   "€rC   rD   r‰  b  sB   ø€ ÷ (Bñ (Bá™EŸL™LÕ)¨DÕ0ð(Bñ Ñ+Õ,ð(Bñ 
ñ	(BrF   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.
r{  r|  r}  r  r€  )ri   Úencoder_layersrO  r�  r�  r5  r‘  r’  r‹  rP  rQ  rï   rí   rR  Úreverser“  r”  r[   )ry   rx  r
  r]   rZ  Úenc_indÚfpn_feature_mapsÚidxÚlateral_convrt  Úbackbone_feature_mapÚtop_fpn_feature_mapÚfused_feature_mapÚnew_fpn_feature_mapÚpan_feature_mapsÚdownsample_convru  Útop_pan_feature_mapÚfpn_feature_mapÚdownsampled_feature_mapÚnew_pan_feature_maps   &&,                  rC   r²   ÚDeimv2HybridEncoder.forwardb  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ÐArF   )r�  ri   r“  r�  r»   r1   rŒ  r’  rí   r”   r‘  r‹  r•   r�  r”  rŽ  r�   )	rH   rI   rJ   rK   rL   rp   r²   rP   rQ   rR   s   @rC   r  r  9  s'   ø‡ € ñ÷ ð  ÷D(B÷ (Bð (BrF   r  c                   ó>   a a€ ] tR tRt oV3R lV 3R lltRtVtV ;t# )ÚDeimv2Decoderi�  c                ó    <€ V ^8„  d   QhRS[ /# rh   rj   )rA   rB   s   "€rC   rD   ÚDeimv2Decoder.__annotate__Ž  s   ø€ ÷ rñ r™|ñ rrF   c                óŒ   <€ \         SV `  VR 7       \        ^VP                  VP                  ^VP                  4      V n        R# rù   )r‚   rp   rŠ   rs   Údecoder_activation_functionÚquery_pos_headr  s   &&€rC   rp   ÚDeimv2Decoder.__init__Ž  s6   ø€ Ü‰Ñ ÐÔ'Ü'¨¨6¯>©>¸6¿>¹>È1Èf×NpÑNpÓqˆÖrF   )r¯  r†   rˆ   s   @@rC   rª  rª  �  s   ù‡ € ÷r÷ ró rrF   rª  c                   óH   a € ] tR tRt o V 3R lR ltRV 3R lR lltRtV tR# )	ÚDeimv2Modeli“  c                ó    <€ V ^8„  d   QhRS[ /# rh   rj   )rA   rB   s   "€rC   rD   ÚDeimv2Model.__annotate__”  s   ø€ ÷ -ñ -™|ñ -rF   c           
     óÞ  € \         P                  W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# )	rM   NÚ
dinov3_vitr&  rú   )Úpadding_idx)Úeps)Údtyper€  ).r  rp   Úgetattrr+   r;  r$  Úconv_encoderr7   r   r  ÚencoderÚnum_denoisingrn   Ú	EmbeddingÚ
num_labelsrs   Údenoising_class_embedÚlearn_initial_queryÚnum_queriesÚweight_embeddingÚ
Sequentialrr   Ú	LayerNormÚlayer_norm_epsÚ
enc_outputÚenc_score_headrŠ   Úenc_bbox_headÚanchor_image_sizeÚgenerate_anchorsr¹  ÚanchorsÚ
valid_maskrN  Údecoder_in_channelsrŸ   rR  r@  r¡   rŽ   Únum_feature_levelsrž   Údecoder_input_projrª  Údecoderr,  )ry   ri   Ú	is_dinov3Únum_backbone_outsrÐ  r”   r¤   s   &&     rC   rp   ÚDeimv2Model.__init__”  s}  € Ü×&Ñ& tÔ4ä˜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Ó,ˆŒà�‰ÖrF   Nc                óæ   <€ 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[,          /# )r0   ræ   Ú
pixel_maskNÚencoder_outputsrx  Úlabelsr
  )r`   ra   Ú
LongTensorr;   Údictr   r	   )rA   rB   s   "€rC   rD   r´  Ã  s…   ø€ ÷ ]
ñ ]
á×'Ñ'ð]
ñ ×$Ñ$ tÕ+ð]
ñ ×*Ñ*¨TÕ1ð	]
ñ
 ×(Ñ(¨4Õ/ð]
ñ ‘T•
˜TÕ!ð]
ñ Ñ+Õ,ñ]
rF   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 # )$Nz8You have to specify either pixel_values or inputs_embeds)rT  )rT  r¹  )ÚtargetsÚnum_classesrÂ  Úclass_embedÚnum_denoising_queriesÚlabel_noise_ratioÚbox_noise_scaler­   )r®   Úindexrx  r  r	  r  r  r  Úlevel_start_indexÚlast_hidden_stateÚintermediate_hidden_statesÚintermediate_logitsÚintermediate_reference_pointsÚintermediate_predicted_cornersÚinitial_reference_pointsÚdecoder_hidden_statesÚdecoder_attentionsÚcross_attentionsÚencoder_last_hidden_stateÚencoder_attentionsÚinit_reference_pointsÚenc_topk_logitsÚenc_topk_bboxesÚenc_outputs_classÚenc_outputs_coord_logitsÚdenoising_meta_valuesr€  éþÿÿÿ)rk  ©NNNNrG   )AÚ
ValueErrorrM  rT  r`   Úonesr»  r¼  rO  r]   rR  rÐ  ri   rÏ  rN  rŸ   ÚemptyÚlongÚflattenÚ	transposerÅ   Ú	new_zerosÚprodÚcumsumr  r½  r#   r¿  rÂ  rÀ  rà  rá  r¹  rÊ  r=   rË  rÌ  rÍ  rS  rÇ  rÈ  rÉ  ÚtopkÚmaxÚvaluesÚgatherÚ	unsqueezeÚrepeatrP  ÚsigmoidÚconcatrÁ  rÃ  ÚtileÚdetachrÑ  rX   rä  rå  ræ  rç  rè  ré  r^   r_   rì  ))ry   ræ   rÖ  r×  rx  rØ  r
  Ú
batch_sizeÚnum_channelsÚheightÚwidthrT  Ú
proj_featsÚsourcesÚlevelÚsourcerZ  Úsource_flattenr  r  rã  Údenoising_classÚdenoising_bbox_unactr  rô  r¹  Úspatial_shapes_tuplerÌ  rÍ  ÚmemoryÚoutput_memoryrò  ró  r¤   Útopk_indÚreference_points_unactrñ  rð  Útargetrï  Údecoder_outputss)   &&&&&&,                                  rC   r²   Ú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ð%
ð 	
rF   )rÌ  r»  rÑ  rÐ  rÀ  rÉ  rÇ  rÈ  r¼  rÍ  rÃ  rö  )rH   rI   rJ   rK   rp   r²   rP   rQ   rR   s   @rC   r²  r²  “  s"   ø‡ € ÷-ð -÷^]
÷ ]
ð ]
rF   r²  c                   óX   a a€ ] tR tRt oRt]R 4       tV3R lR ltV 3R ltRt	Vt
V ;t# )ÚDeimv2ForObjectDetectionic  Nc                ób   € R RRRRR/pV P                   P                  '       d   RVR&   RVR	&   V# )
zclass_embed.(?![0])\d+z^class_embed.0rÞ  zmodel.decoder.class_embedÚ
bbox_embedzmodel.decoder.bbox_embedzmodel.decoder.bbox_embed.0z&model\.decoder\.bbox_embed\.(?![0])\d+zbbox_embed.0zbbox_embed.(?![0])\d+)ri   r9   )ry   Úkeyss   & rC   Ú_tied_weights_keysÚ+Deimv2ForObjectDetection._tied_weights_keysf  sJ   € ð &Ð'8ØÐ6ØÐ4ð
ˆð
 �;‰;×&×&Ð&Ø>[ˆDÐ:Ñ;Ø-<ˆDÐ)Ñ*ØˆrF   c                ó    <€ V ^8„  d   QhRS[ /# rh   rj   )rA   rB   s   "€rC   rD   Ú%Deimv2ForObjectDetection.__annotate__r  s   ø€ ÷ ñ ™|ñ rF   c                ób  € \         P                  W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  rp   Úeval_idxÚdecoder_layersr²  r(  r¼   Úlayer_scaler@  rn   rž   rŸ   rr   rs   r¿  rÞ  r9   rŠ   Úmax_num_binsr   rÑ  r,  )ry   ri   Ú
scaled_dimÚnum_predr¤   Úshared_bboxs   &&    rC   rp   Ú!Deimv2ForObjectDetection.__init__r  s  € Ü×&Ñ& tÔ4à+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   Â44J"ÆAJ'È.J,
c                 ó<   <€ \        4       P                  ! R/ V B  R# )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}"
...     )
```
NrG   )r‚   r²   )Úsuper_kwargsr„   s   ,€rC   r²   Ú Deimv2ForObjectDetection.forward�  s   ø€ ôT 	‹�ŠÑ'˜,Ô'rF   )r   rÞ  r'  r(  )rH   rI   rJ   rK   r!  Úpropertyr"  rp   r²   rP   rQ   r‡   rˆ   s   @@rC   r  r  c  s1   ù‡ € ØÐàñ	ó ð	÷ð ÷6*(õ *(rF   r  )r-   )r)   r²  r  r  )ZÚdataclassesr   r`   Útorch.nnrn   Útorch.nn.functionalr  rP  Úhuggingface_hub.dataclassesr   Ú r   r  Úbackbone_utilsr   Úmodeling_outputsr   Úprocessing_utilsr   Úutilsr	   r
   r   Úutils.genericr   Úutils.output_capturingr   r   Úautor   Úd_fine.configuration_d_finer   Úd_fine.modeling_d_finer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   Úllama.modeling_llamar%   r&   Ú
get_loggerrH   Úloggerr)   rT   rX   r[   rd   rf   r}   rŠ   rŒ   rŽ   r�   ro   r’   r¶   rÎ   rÐ   rÒ   rÔ   rï   rñ   ró   rõ   r  r$  r;  r   r  rª  r²  r  Ú__all__rG   rF   rC   Ú<module>rE     s:  ðõ "ã Ý ß Ð Ý .å &Ý +Ý +Ý &ß @Ñ @Ý 7ß EÝ Ý 5÷÷ ÷ ÷ ÷ ó ÷, :ð 
×	Ò	˜HÓ	%€ñ Ð?Ô@ØôC+�;ó C+ó ó AðC+ôL	Ð,ô 	ô	Ð(ô 	ñ ðôð ô<˜+ó <ó óð<ô	�Lô 	ô �hô  ô+�ô +ô	�ô 	ô	Ð*Lô 	ô	Ð,ô 	ô	Ð(ô 	ô4˜Ÿ	™	ô 4ô<0˜Ÿ™ô 0ô<	�;ô 	ô	Ð*ô 	ô	�nô 	ôA §¡ô A÷&<ô	�]ô 	ô	�ô 	ô=Ð*ô =ô@5Ð0ô 5ô"UÐ-ô Uô8+Ð3ô +ô\09Ð-ô 09ôfQBÐ,ô QBôhr�Lô rôM
�*ô M
ô`T(Ð6ô T(òn‚rF   