+
    œ°³jõ  ã                   ó  € R t ^ RIHt ^ RIHt ^ RIHt ^ RIt^ RIHt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Ht ^RIHt ^RIHtHtHtHtH t H!t! ^RI"H#t#H$t$ ^RI%H&t& ^RI'H(t(H)t)H*t* ]! 4       '       d   ^ RI+H,t, ] PZ                  ! ].4      t/R R lt0R R lt1]] ! R R]4      4       4       t2R R lt3R R lt4R t5R t6]! RR7      ] ! R  R!]4      4       4       t7]! R"R7      ] ! R# R$]4      4       4       t8 ! R% R&]	Pr                  4      t: ! R' R(]	Pr                  4      t;RER) R* llt< ! R+ R,]	Pr                  4      t= ! R- R.]	Pr                  4      t> ! R/ R0]4      t?] ! R1 R2]4      4       t@ ! R3 R4]	Pr                  4      tA ! R5 R6]@4      tB ! R7 R8]@4      tC ! R9 R:]@4      tD ! R; R<]@4      tE] ! R= R>]@4      4       tF ! R? R@]	Pr                  4      tG ! RA RB]	Pr                  4      tH ! RC RD]@4      tI. RFOtJR# )GzPyTorch OWL-ViT model.)ÚCallable)Ú	dataclass)ÚAnyN)ÚTensorÚnn)Úinitialization)ÚACT2FN)Úcreate_causal_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithPooling)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚModelOutputÚTransformersKwargsÚauto_docstringÚis_vision_availableÚloggingÚ	torch_int)Úcan_return_tupleÚmerge_with_config_defaults)Úcapture_outputs)ÚOwlViTConfigÚOwlViTTextConfigÚOwlViTVisionConfig)Úcenter_to_corners_formatc                óX   € V ^8„  d   QhR\         P                  R\         P                  /# )é   ÚlogitsÚreturn©Útorchr   )Úformats   "Úk/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/owlvit/modeling_owlvit.pyÚ__annotate__r%   6   s&   € ÷ `ñ `œUŸ\™\ð `¬e¯l©lñ `ó    c                 ó”   € \         P                  P                  V \        P                  ! \        V 4      V P                  R 7      4      # )©Údevice)r   Ú
functionalÚcross_entropyr"   ÚarangeÚlenr)   )r   s   &r$   Úcontrastive_lossr.   6   s/   € Ü�=‰=×&Ñ& v¬u¯|ª|¼CÀ»KÐPV×P]ÑP]Ô/^Ó_Ð_r&   c                óX   € V ^8„  d   QhR\         P                  R\         P                  /# )r   Ú
similarityr    r!   )r#   s   "r$   r%   r%   ;   s"   € ÷ -ñ -¬E¯L©Lð -¼U¿\¹\ñ -r&   c                 ó`   € \        V 4      p\        V P                  4      pW,           R ,          # )g       @)r.   ÚT)r0   Úcaption_lossÚ
image_losss   &  r$   Úimage_text_contrastive_lossr5   ;   s(   € Ü# JÓ/€LÜ! *§,¡,Ó/€JØÕ%¨Õ,Ð,r&   c                   ó^   a € ] tR t^At o RtRtRtRtRtRt	Rt
RtV 3R lR ltV 3R ltRtV tR# )ÚOwlViTOutputa�  
loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `return_loss` is `True`):
    Contrastive loss for image-text similarity.
logits_per_image (`torch.FloatTensor` of shape `(image_batch_size, text_batch_size)`):
    The scaled dot product scores between `image_embeds` and `text_embeds`. This represents the image-text
    similarity scores.
logits_per_text (`torch.FloatTensor` of shape `(text_batch_size, image_batch_size)`):
    The scaled dot product scores between `text_embeds` and `image_embeds`. This represents the text-image
    similarity scores.
text_embeds (`torch.FloatTensor` of shape `(batch_size * num_max_text_queries, output_dim`):
    The text embeddings obtained by applying the projection layer to the pooled output of [`OwlViTTextModel`].
image_embeds (`torch.FloatTensor` of shape `(batch_size, output_dim`):
    The image embeddings obtained by applying the projection layer to the pooled output of
    [`OwlViTVisionModel`].
text_model_output (tuple[`BaseModelOutputWithPooling`]):
    The output of the [`OwlViTTextModel`].
vision_model_output (`BaseModelOutputWithPooling`):
    The output of the [`OwlViTVisionModel`].
Nc                ó0   <€ V ^8„  d   QhRS[ S[,          /# ©r   r    ©Útupler   )r#   Ú__classdict__s   "€r$   r%   ÚOwlViTOutput.__annotate__`   ó   ø€ ÷ 
ñ 
™%¡�*ñ 
r&   c                ó    a € \         ;QJ d%    . V 3R  lS P                  4        4       F  NK  	  5# ! V 3R  lS P                  4        4       4      # )c              3   óx   <"  € T F/  pVR9  d
   SV,          M\        SV4      P                  4       x € K1  	  R# 5i©Útext_model_outputN)rB   Úvision_model_output©ÚgetattrÚto_tuple©Ú.0ÚkÚselfs   & €r$   Ú	<genexpr>Ú(OwlViTOutput.to_tuple.<locals>.<genexpr>a   ó<   øé € ð 
á �ð Ð LÔLˆD�ŽGÔRYÐZ^Ð`aÓRb×RkÑRkÓRmÔmÛ ùó   ƒ7:©r;   Úkeys©rJ   s   fr$   rF   ÚOwlViTOutput.to_tuple`   óA   ø€ ßŒuô 
à—Y‘Y”[ó
�uð 	
ˆuô 
à—Y‘Y”[ó
ó 
ð 	
r&   c                ó  <€ 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[;R&   S[;R&   # )	r   NÚlossÚlogits_per_imageÚlogits_per_textÚtext_embedsÚimage_embedsrB   rC   ©r"   ÚFloatTensorr   )r#   r<   s   "€r$   r%   r=   A   s—   ø‡ ‚ ñ. ×
Ñ
˜dÕ
"Ñ)ñ/ ñ0 ×'Ñ'¨$Õ.Ñ5ñ1 ñ2 ×&Ñ&¨Õ-Ñ4ñ3 ñ4 ×"Ñ" TÕ)Ñ0ñ5 ñ6 ×#Ñ# dÕ*Ñ1ñ7 ñ8 2Ñ8ñ9 ñ: 4Ñ:ò; r&   © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rU   rV   rW   rX   rY   rB   rC   rF   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r<   s   @r$   r7   r7   A   sC   ø‡ € ñð( &*€DØ15ÐØ04€OØ,0€KØ-1€LØ48ÐØ6:Ð÷
ð 
÷? ƒ r&   r7   c                ó0   € V ^8„  d   QhR\         R\         /# )r   Útr    ©r   )r#   s   "r$   r%   r%   h   s   € ÷ Gñ GŒvð Gœ&ñ Gr&   c                 ó2  € V P                  4       '       dB   V P                  \        P                  \        P                  39   d   V # V P                  4       # V P                  \        P                  \        P                  39   d   V # V P                  4       # ©N)	Úis_floating_pointÚdtyper"   Úfloat32Úfloat64ÚfloatÚint32Úint64Úint)rg   s   &r$   Ú_upcastrs   h   sc   € à×Ñ×ÒØ—G‘G¤§¡¬u¯}©}Ð=Ô=ˆqÐLÀ1Ç7Á7Ã9ÐLà—G‘G¤§¡¬U¯[©[Ð9Ô9ˆqÐF¸q¿u¹u»wÐFr&   c                ó0   € V ^8„  d   QhR\         R\         /# )r   Úboxesr    rh   )r#   s   "r$   r%   r%   q   s   € ÷ Eñ E”Fð Eœvñ Er&   c                ó~   € \        V 4      p V R,          V R,          ,
          V R,          V R,          ,
          ,          # )a”  
Computes the area of a set of bounding boxes, which are specified by its (x1, y1, x2, y2) coordinates.

Args:
    boxes (`torch.FloatTensor` of shape `(number_of_boxes, 4)`):
        Boxes for which the area will be computed. They are expected to be in (x1, y1, x2, y2) format with `0 <= x1
        < x2` and `0 <= y1 < y2`.

Returns:
    `torch.FloatTensor`: a tensor containing the area for each box.
)ºNNNr   )rw   é    )rw   é   )rw   é   )rs   )ru   s   &r$   Úbox_arear{   q   s2   € ô �E‹N€EØ�$�K˜% �+Õ%¨%°­+¸¸d½Õ*CÕDÐDr&   c                 ód  € \        V 4      p\        V4      p\        P                  ! V R,          VR,          4      p\        P                  ! V R,          VR,          4      pWT,
          P	                  ^ R7      pVR,          VR,          ,          pVR,          V,           V,
          pWx,          p	W˜3# )	rw   ©Úmin©rw   NºNr   N©rw   r€   ©rw   Nºr   NN©rw   rƒ   ©rw   rw   rx   ©rw   rw   rz   )rw   N)r{   r"   Úmaxr~   Úclamp)
Úboxes1Úboxes2Úarea1Úarea2Úleft_topÚright_bottomÚwidth_heightÚinterÚunionÚious
   &&        r$   Úbox_iour“   ‚   s”   € Ü�VÓ€EÜ�VÓ€Eä�yŠy˜ Õ,¨f°U­mÓ<€HÜ—9’9˜V KÕ0°&¸µ-Ó@€Là Õ+×2Ñ2°qÐ2Ó9€LØ˜Õ! L°Õ$9Õ9€Eà�'�N˜UÕ" UÕ*€Eà
�-€CØˆ:Ðr&   c                ó  € V R,          V R,          8¬  P                  4       '       g   \        RV  24      hVR,          VR,          8¬  P                  4       '       g   \        RV 24      h\        W4      w  r#\        P                  ! V R,          VR,          4      p\        P
                  ! V R,          VR,          4      pWT,
          P                  ^ R7      pVR,          VR	,          ,          pW'V,
          V,          ,
          # )
zÒ
Generalized IoU from https://giou.stanford.edu/. The boxes should be in [x0, y0, x1, y1] (corner) format.

Returns:
    `torch.FloatTensor`: a [N, M] pairwise matrix, where N = len(boxes1) and M = len(boxes2)
z<boxes1 must be in [x0, y0, x1, y1] (corner) format, but got z<boxes2 must be in [x0, y0, x1, y1] (corner) format, but got r}   r„   r�   r   r‚   r…   r†   )ÚallÚ
ValueErrorr“   r"   r~   r‡   rˆ   )r‰   rŠ   r’   r‘   Útop_leftÚbottom_rightr�   Úareas   &&      r$   Úgeneralized_box_iourš   “   sà   € ð �5�M˜V E�]Ñ*×/Ñ/×1Ò1ÜÐWÐX^ÐW_Ð`ÓaÐaØ�5�M˜V E�]Ñ*×/Ñ/×1Ò1ÜÐWÐX^ÐW_Ð`ÓaÐaÜ˜Ó(�J€Cä�yŠy˜ Õ,¨f°U­mÓ<€HÜ—9’9˜V KÕ0°&¸µ-Ó@€Là Õ+×2Ñ2°qÐ2Ó9€LØ˜Õ  <°Õ#8Õ8€Dà˜•, $Õ&Õ&Ð&r&   z6
    Output type of [`OwlViTForObjectDetection`].
    )Úcustom_introc                   óf   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R ltV 3R ltRtV tR# )ÚOwlViTObjectDetectionOutputay  
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_patches, num_queries)`):
    Classification logits (including no-object) for all queries.
pred_boxes (`torch.FloatTensor` of shape `(batch_size, num_patches, 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 [`~OwlViTImageProcessor.post_process_object_detection`] to retrieve the
    unnormalized bounding boxes.
text_embeds (`torch.FloatTensor` of shape `(batch_size, num_max_text_queries, output_dim`):
    The text embeddings obtained by applying the projection layer to the pooled output of [`OwlViTTextModel`].
image_embeds (`torch.FloatTensor` of shape `(batch_size, patch_size, patch_size, output_dim`):
    Pooled output of [`OwlViTVisionModel`]. OWL-ViT represents images as a set of image patches and computes
    image embeddings for each patch.
class_embeds (`torch.FloatTensor` of shape `(batch_size, num_patches, hidden_size)`):
    Class embeddings of all image patches. OWL-ViT represents images as a set of image patches where the total
    number of patches is (image_size / patch_size)**2.
text_model_output (tuple[`BaseModelOutputWithPooling`]):
    The output of the [`OwlViTTextModel`].
vision_model_output (`BaseModelOutputWithPooling`):
    The output of the [`OwlViTVisionModel`].
Nc                ó0   <€ V ^8„  d   QhRS[ S[,          /# r9   r:   )r#   r<   s   "€r$   r%   Ú(OwlViTObjectDetectionOutput.__annotate__Ø   r>   r&   c                ó    a € \         ;QJ d%    . V 3R  lS P                  4        4       F  NK  	  5# ! V 3R  lS P                  4        4       4      # )c              3   óx   <"  € T F/  pVR9  d
   SV,          M\        SV4      P                  4       x € K1  	  R# 5irA   rD   rG   s   & €r$   rK   Ú7OwlViTObjectDetectionOutput.to_tuple.<locals>.<genexpr>Ù   rM   rN   rO   rQ   s   fr$   rF   Ú$OwlViTObjectDetectionOutput.to_tupleØ   rS   r&   c                ó`  <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[;R	&   S[;R
&   # )r   NrU   Ú	loss_dictr   Ú
pred_boxesrX   rY   Úclass_embedsrB   rC   )r"   r[   Údictr   )r#   r<   s   "€r$   r%   rŸ   «   sÒ   ø‡ ‚ ñF ×
Ñ
˜dÕ
"Ñ)ñG ñH �d�{Ñ!ñI ñJ ×Ñ Õ$Ñ+ñK ñL ×!Ñ! DÕ(Ñ/ñM ñN ×"Ñ" TÕ)Ñ0ñO ñP ×#Ñ# dÕ*Ñ1ñQ ñR ×#Ñ# dÕ*Ñ1ñS ñT 2Ñ8ñU ñV 4Ñ:òW r&   r\   )r]   r^   r_   r`   ra   rU   r¥   r   r¦   rX   rY   r§   rB   rC   rF   rb   rc   rd   re   s   @r$   r�   r�   «   sM   ø‡ € ñð8 &*€DØ!€IØ'+€FØ+/€JØ,0€KØ-1€LØ-1€LØ48ÐØ6:Ð÷
ð 
÷[ ƒ r&   r�   zM
    Output type of [`OwlViTForObjectDetection.image_guided_detection`].
    c                   ób   a € ] tR t^ßt o RtRtRtRtRtRt	Rt
RtRtV 3R lR ltV 3R ltRtV tR# )Ú&OwlViTImageGuidedObjectDetectionOutputaµ  
logits (`torch.FloatTensor` of shape `(batch_size, num_patches, num_queries)`):
    Classification logits (including no-object) for all queries.
image_embeds (`torch.FloatTensor` of shape `(batch_size, patch_size, patch_size, output_dim`):
    Pooled output of [`OwlViTVisionModel`]. OWL-ViT represents images as a set of image patches and computes
    image embeddings for each patch.
query_image_embeds (`torch.FloatTensor` of shape `(batch_size, patch_size, patch_size, output_dim`):
    Pooled output of [`OwlViTVisionModel`]. OWL-ViT represents images as a set of image patches and computes
    image embeddings for each patch.
target_pred_boxes (`torch.FloatTensor` of shape `(batch_size, num_patches, 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 target image in the batch
    (disregarding possible padding). You can use [`~OwlViTImageProcessor.post_process_object_detection`] to
    retrieve the unnormalized bounding boxes.
query_pred_boxes (`torch.FloatTensor` of shape `(batch_size, num_patches, 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 query image in the batch
    (disregarding possible padding). You can use [`~OwlViTImageProcessor.post_process_object_detection`] to
    retrieve the unnormalized bounding boxes.
class_embeds (`torch.FloatTensor` of shape `(batch_size, num_patches, hidden_size)`):
    Class embeddings of all image patches. OWL-ViT represents images as a set of image patches where the total
    number of patches is (image_size / patch_size)**2.
text_model_output (tuple[`BaseModelOutputWithPooling`]):
    The output of the [`OwlViTTextModel`].
vision_model_output (`BaseModelOutputWithPooling`):
    The output of the [`OwlViTVisionModel`].
Nc                ó0   <€ V ^8„  d   QhRS[ S[,          /# r9   r:   )r#   r<   s   "€r$   r%   Ú3OwlViTImageGuidedObjectDetectionOutput.__annotate__  r>   r&   c                ó    a € \         ;QJ d%    . V 3R  lS P                  4        4       F  NK  	  5# ! V 3R  lS P                  4        4       4      # )c              3   óx   <"  € T F/  pVR9  d
   SV,          M\        SV4      P                  4       x € K1  	  R# 5irA   rD   rG   s   & €r$   rK   ÚBOwlViTImageGuidedObjectDetectionOutput.to_tuple.<locals>.<genexpr>  rM   rN   rO   rQ   s   fr$   rF   Ú/OwlViTImageGuidedObjectDetectionOutput.to_tuple  rS   r&   c                óF  <€ 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[;R&   S[;R	&   # )
r   Nr   rY   Úquery_image_embedsÚtarget_pred_boxesÚquery_pred_boxesr§   rB   rC   rZ   )r#   r<   s   "€r$   r%   r¬   ß   s¿   ø‡ ‚ ñF ×Ñ Õ$Ñ+ñG ñH ×#Ñ# dÕ*Ñ1ñI ñJ ×)Ñ)¨DÕ0Ñ7ñK ñL ×(Ñ(¨4Õ/Ñ6ñM ñN ×'Ñ'¨$Õ.Ñ5ñO ñP ×#Ñ# dÕ*Ñ1ñQ ñR 2Ñ8ñS ñT 4Ñ:òU r&   r\   )r]   r^   r_   r`   ra   r   rY   r²   r³   r´   r§   rB   rC   rF   rb   rc   rd   re   s   @r$   rª   rª   ß   sK   ø‡ € ñð8 (,€FØ-1€LØ37ÐØ26ÐØ15ÐØ-1€LØ48ÐØ6:Ð÷
ð 
÷Y ƒ r&   rª   c                   óf   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	V3R lR lltRtVtV ;t	# )
ÚOwlViTVisionEmbeddingsi  c                ó    <€ V ^8„  d   QhRS[ /# ©r   Úconfig©r   )r#   r<   s   "€r$   r%   Ú#OwlViTVisionEmbeddings.__annotate__  s   ø€ ÷ jñ jÑ1ñ jr&   c                óì  <€ \         SV `  4        VP                  V n        Wn        VP                  V n        \        P                  ! \        P                  ! VP                  4      4      V n
        \        P                  ! VP                  V P
                  VP                  VP                  R R7      V n        VP                  VP                  ,          ^,          V n        V P                  ^,           V n        \        P"                  ! V P                   V P
                  4      V n        \        P&                  ! \        P(                  ! V P                   4      P+                  R4      R R7      V n        R# )F)Úin_channelsÚout_channelsÚkernel_sizeÚstrideÚbias©Ú
persistentN©rz   éÿÿÿÿ)ÚsuperÚ__init__Ú
patch_sizer¹   Úhidden_sizeÚ	embed_dimr   Ú	Parameterr"   ÚrandnÚclass_embeddingÚConv2dÚnum_channelsÚpatch_embeddingÚ
image_sizeÚnum_patchesÚnum_positionsÚ	EmbeddingÚposition_embeddingÚBufferr,   ÚexpandÚposition_ids©rJ   r¹   Ú	__class__s   &&€r$   rÇ   ÚOwlViTVisionEmbeddings.__init__  s  ø€ Ü‰ÑÔØ ×+Ñ+ˆŒØŒØ×+Ñ+ˆŒÜ!Ÿ|š|¬E¯KªK¸×8JÑ8JÓ,KÓLˆÔä!ŸyšyØ×+Ñ+ØŸ™Ø×)Ñ)Ø×$Ñ$Øô 
ˆÔð #×-Ñ-°×1BÑ1BÕBÀqÕHˆÔØ!×-Ñ-°Õ1ˆÔÜ"$§,¢,¨t×/AÑ/AÀ4Ç>Á>Ó"RˆÔÜŸIšI¤e§l¢l°4×3EÑ3EÓ&F×&MÑ&MÈgÓ&VÐchÔiˆÖr&   c                óZ   <€ V ^8„  d   QhRS[ P                  RS[RS[RS[ P                  /# )r   Ú
embeddingsÚheightÚwidthr    )r"   r   rr   )r#   r<   s   "€r$   r%   r»   (  s;   ø€ ÷ $Dñ $D±5·<±<ð $DÉð $DÑUXð $DÑ]b×]iÑ]iñ $Dr&   c                ó  € VP                   ^,          ^,
          pV P                  P                  P                  ^ 4      pVP                   ^,          ^,
          p\        P
                  P                  4       '       g(   WF8X  d"   W#8X  d   V P                  V P                  4      # VR,          pVR,          pVP                   R,          p	W P                  ,          p
W0P                  ,          p\        VR,          4      pVP                  ^WÌV	4      pVP                  ^ ^^^4      p\        P                  P                  VW«3RRR7      pVP                  ^ ^^^4      P                  ^RV	4      p\        P                   ! Wx3^R7      # )	aÐ  
This method allows to interpolate the pre-trained position encodings, to be able to use the model on higher resolution
images. This method is also adapted to support torch.jit tracing.

Adapted from:
- https://github.com/facebookresearch/dino/blob/de9ee3df6cf39fac952ab558447af1fa1365362a/vision_transformer.py#L174-L194, and
- https://github.com/facebookresearch/dinov2/blob/e1277af2ba9496fbadf7aec6eba56e8d882d1e35/dinov2/models/vision_transformer.py#L179-L211
g      à?ÚbicubicF)ÚsizeÚmodeÚalign_corners©Údim)rw   ºNrz   N)rw   ºrz   NNrÅ   )ÚshaperÕ   ÚweightÚ	unsqueezer"   ÚjitÚ
is_tracingrØ   rÈ   r   ÚreshapeÚpermuter   r*   ÚinterpolateÚviewÚcat)rJ   rÝ   rÞ   rß   rÒ   rÕ   rÓ   Úclass_pos_embedÚpatch_pos_embedræ   Ú
new_heightÚ	new_widthÚsqrt_num_positionss   &&&&         r$   Úinterpolate_pos_encodingÚ/OwlViTVisionEmbeddings.interpolate_pos_encoding(  s[  € ð !×&Ñ& qÕ)¨AÕ-ˆØ!×4Ñ4×;Ñ;×EÑEÀaÓHÐØ*×0Ñ0°Õ3°aÕ7ˆô �y‰y×#Ñ#×%Ò%¨+Ô*FÈ6Ì?Ø×*Ñ*¨4×+<Ñ+<Ó=Ð=à,¨UÕ3ˆØ,¨UÕ3ˆà×Ñ˜rÕ"ˆàŸ™Õ.ˆ
ØŸ_™_Õ,ˆ	ä& }°cÕ'9Ó:ÐØ)×1Ñ1°!Ð5GÐ]`ÓaˆØ)×1Ñ1°!°Q¸¸1Ó=ˆÜŸ-™-×3Ñ3ØØÐ(ØØð	 4ó 
ˆð *×1Ñ1°!°Q¸¸1Ó=×BÑBÀ1ÀbÈ#ÓNˆÜ�yŠy˜/Ð;ÀÔCÐCr&   c                óT   <€ V ^8„  d   QhRS[ P                  RS[RS[ P                  /# )r   Úpixel_valuesrø   r    )r"   r[   Úboolr   )r#   r<   s   "€r$   r%   r»   N  s0   ø€ ÷ 
ñ 
¡E×$5Ñ$5ð 
ÑQUð 
Ñbg×bnÑbnñ 
r&   c                óz  € VP                   w  r4rVV P                  V4      pVP                  ^4      P                  ^^4      pV P                  P                  V^R4      p\        P                  ! W‡.^R7      p	V'       d   W�P                  W•V4      ,           p	V	# W�P                  V P                  4      ,           p	V	# )r   rå   rÅ   )ré   rÐ   ÚflattenÚ	transposerÍ   r×   r"   rò   rø   rÕ   rØ   )
rJ   rû   rø   Ú
batch_sizeÚ_rÞ   rß   Úpatch_embedsr§   rÝ   s
   &&&       r$   ÚforwardÚOwlViTVisionEmbeddings.forwardN  s®   € Ø'3×'9Ñ'9Ñ$ˆ
�vØ×+Ñ+¨LÓ9ˆØ#×+Ñ+¨AÓ.×8Ñ8¸¸AÓ>ˆØ×+Ñ+×2Ñ2°:¸qÀ"ÓEˆÜ—Y’Y Ð;ÀÔCˆ
ß#Ø#×&CÑ&CÀJÐX]Ó&^Õ^ˆJð Ðð $×&=Ñ&=¸d×>OÑ>OÓ&PÕPˆJØÐr&   )	rÍ   r¹   rÊ   rÒ   rÓ   rÐ   rÈ   rÕ   rØ   ©F)
r]   r^   r_   r`   rÇ   rø   r  rc   rd   Ú__classcell__©rÚ   r<   s   @@r$   r¶   r¶     s-   ù‡ € ÷jó j÷*$Dð $D÷L
÷ 
ò 
r&   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# )ÚOwlViTTextEmbeddingsi[  c                ó    <€ V ^8„  d   QhRS[ /# r¸   ©r   )r#   r<   s   "€r$   r%   Ú!OwlViTTextEmbeddings.__annotate__\  s   ø€ ÷ vñ vÑ/ñ vr&   c                óx  <€ \         SV `  4        \        P                  ! VP                  VP
                  4      V n        \        P                  ! VP                  VP
                  4      V n        \        P                  ! \        P                  ! VP                  4      P                  R4      RR7      V n        R# )rz   FrÂ   NrÄ   )rÆ   rÇ   r   rÔ   Ú
vocab_sizerÉ   Útoken_embeddingÚmax_position_embeddingsrÕ   rÖ   r"   r,   r×   rØ   rÙ   s   &&€r$   rÇ   ÚOwlViTTextEmbeddings.__init__\  s}   ø€ Ü‰ÑÔÜ!Ÿ|š|¨F×,=Ñ,=¸v×?QÑ?QÓRˆÔÜ"$§,¢,¨v×/MÑ/MÈv×OaÑOaÓ"bˆÔô ŸIšI¤e§l¢l°6×3QÑ3QÓ&R×&YÑ&YÐZaÓ&bÐotÔuˆÖr&   c                ó¬   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  /# )r   Ú	input_idsNrØ   Úinputs_embedsr    )r"   Ú
LongTensorr[   r   )r#   r<   s   "€r$   r%   r  d  sX   ø€ ÷ ñ á×#Ñ# dÕ*ðñ ×&Ñ&¨Õ-ðñ ×(Ñ(¨4Õ/ð	ñ
 
�‰ñr&   c                óì   € Ve   VP                   R,          MVP                   R,          pVf   V P                  RR V13,          pVf   V P                  V4      pV P                  V4      pW5,           pV# )Nrw   rÅ   éþÿÿÿ)ré   rØ   r  rÕ   )rJ   r  rØ   r  Ú
seq_lengthÚposition_embeddingsrÝ   s   &&&&   r$   r  ÚOwlViTTextEmbeddings.forwardd  sx   € ð -6Ò,A�Y—_‘_ RÖ(À}×GZÑGZÐ[]ÕG^ˆ
àÒØ×,Ñ,¨Q°°°¨^Õ<ˆLàÒ Ø ×0Ñ0°Ó;ˆMà"×5Ñ5°lÓCÐØ"Õ8ˆ
àÐr&   )rÕ   rØ   r  ©NNN©	r]   r^   r_   r`   rÇ   r  rc   rd   r  r  s   @@r$   r	  r	  [  s    ù‡ € ÷vó v÷÷ ò r&   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ÚkeyÚvalueÚattention_maskNÚscalingÚdropoutÚkwargs)r   ÚModuler"   r   ro   r   r   )r#   s   "r$   r%   r%   y  s{   € ÷ %ñ %Ü�I‰Ið%ä�<‰<ð%ô 
�‰ð%ô �<‰<ð	%ô
 —L‘L 4Õ'ð%ô �T�\ð%ô ð%ô Ô'Õ(ñ%r&   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ÚtrainingrÅ   ç      à¿)
râ   r"   Úmatmulrÿ   r   r*   Úsoftmaxr$  r)  Ú
contiguous)
r  r  r   r!  r"  r#  r$  r%  Úattn_weightsÚattn_outputs
   &&&&&&&,  r$   Úeager_attention_forwardr0  y  s±   € ð ‚Ø—*‘*˜R“. DÕ(ˆô —<’< §}¡}°Q¸Ó':Ó;¸gÕE€LàÒ!Ø#Õ4ˆä—=‘=×(Ñ(¨¸2Ð(Ó>€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ó[€Lä—,’,˜|Ó3€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KàÐ$Ð$r&   c                   óL   a a€ ] tR tRt oRtV 3R ltRV3R lR lltRtVtV ;t	# )ÚOwlViTAttentioni•  z=Multi-headed attention from 'Attention Is All You Need' paperc                ó<  <€ \         SV `  4        Wn        VP                  V n        VP
                  V n        V P                  V P                  ,          V n        V P                  V P                  ,          V P                  8w  d'   \        R V P                   RV P                   R24      hV P                  R,          V n	        VP                  V n        RV n        \        P                  ! V P                  V P                  4      V n        \        P                  ! V P                  V P                  4      V n        \        P                  ! V P                  V P                  4      V n        \        P                  ! V P                  V P                  4      V n        R# )z;embed_dim must be divisible by num_heads (got `embed_dim`: z and `num_heads`: z).FNr*  )rÆ   rÇ   r¹   rÉ   rÊ   Únum_attention_headsÚ	num_headsÚhead_dimr–   ÚscaleÚattention_dropoutr$  Ú	is_causalr   ÚLinearÚk_projÚv_projÚq_projÚout_projrÙ   s   &&€r$   rÇ   ÚOwlViTAttention.__init__˜  s  ø€ Ü‰ÑÔØŒØ×+Ñ+ˆŒØ×3Ñ3ˆŒØŸ™¨$¯.©.Õ8ˆŒØ�=‰=˜4Ÿ>™>Õ)¨T¯^©^Ô;ÜØMÈdÏnÉnÐM]ð ^Ø—N‘NÐ# 2ð'óð ð —]‘] DÕ(ˆŒ
Ø×/Ñ/ˆŒØˆŒä—i’i §¡°·±Ó?ˆŒÜ—i’i §¡°·±Ó?ˆŒÜ—i’i §¡°·±Ó?ˆŒÜŸ	š	 $§.¡.°$·.±.ÓAˆŽr&   c                óÄ   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          RS[S[ P                  S[ P                  R,          3,          /# )r   Úhidden_statesr"  Nr%  r    )r"   r   r   r   r;   )r#   r<   s   "€r$   r%   ÚOwlViTAttention.__annotate__¬  s]   ø€ ÷ )ñ )á—|‘|ð)ñ Ÿ™ tÕ+ð)ñ Ñ+Õ,ð	)ñ
 
‰u�|‰|™UŸ\™\¨DÕ0Ð0Õ	1ñ)r&   c                ó¢  € VP                   R R p. VORNV P                  N5pV P                  V4      P                  ! V!  P	                  ^^4      pV P                  V4      P                  ! V!  P	                  ^^4      pV P                  V4      P                  ! V!  P	                  ^^4      p\        P                  ! V P                  P                  \        4      p	T	! V VVVV3RV P                  RV P                  '       g   RMV P                  /VB w  r«V
P                  ! . VORN5!  P!                  4       p
V P#                  V
4      p
W«3# )Nr#  r$  ç        rÅ   )ré   r6  r=  rñ   rÿ   r;  r<  r   Úget_interfacer¹   Ú_attn_implementationr0  r7  r)  r$  rî   r-  r>  )rJ   rA  r"  r%  Úinput_shapeÚhidden_shapeÚquery_statesÚ
key_statesÚvalue_statesÚattention_interfacer/  r.  s   &&&,        r$   r  ÚOwlViTAttention.forward¬  sN  € ð $×)Ñ)¨#¨2Ð.ˆØ8˜Ð8 bÐ8¨$¯-©-Ñ8ˆà—{‘{ =Ó1×6Ò6¸ÑE×OÑOÐPQÐSTÓUˆØ—[‘[ Ó/×4Ò4°lÑC×MÑMÈaÐQRÓSˆ
Ø—{‘{ =Ó1×6Ò6¸ÑE×OÑOÐPQÐSTÓUˆä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØñ	%
ð —J‘Jð	%
ð  $Ÿ}Ÿ}˜}‘C°$·,±,ð	%
ð ñ	%
Ñ!ˆð "×)Ò)Ð;¨;Ð;¸Ó;×FÑFÓHˆØ—m‘m KÓ0ˆàÐ(Ð(r&   )r¹   r$  rÊ   r6  r9  r;  r5  r>  r=  r7  r<  rj   ©
r]   r^   r_   r`   ra   rÇ   r  rc   rd   r  r  s   @@r$   r2  r2  •  s   ù‡ € ÙGõB÷()÷ )ò )r&   r2  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# )Ú	OwlViTMLPiÏ  c                ó(  <€ \         SV `  4        Wn        \        VP                  ,          V n        \        P                  ! VP                  VP                  4      V n
        \        P                  ! VP                  VP                  4      V n        R # rj   )rÆ   rÇ   r¹   r   Ú
hidden_actÚactivation_fnr   r:  rÉ   Úintermediate_sizeÚfc1Úfc2rÙ   s   &&€r$   rÇ   ÚOwlViTMLP.__init__Ð  sb   ø€ Ü‰ÑÔØŒÜ# F×$5Ñ$5Õ6ˆÔÜ—9’9˜V×/Ñ/°×1IÑ1IÓJˆŒÜ—9’9˜V×5Ñ5°v×7IÑ7IÓJˆŽr&   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   rA  r    r!   )r#   r<   s   "€r$   r%   ÚOwlViTMLP.__annotate__×  s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r&   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# rj   )rU  rS  rV  )rJ   rA  s   &&r$   r  ÚOwlViTMLP.forward×  s4   € ØŸ™ Ó/ˆØ×*Ñ*¨=Ó9ˆØŸ™ Ó/ˆØÐr&   )rS  r¹   rU  rV  r  r  s   @@r$   rP  rP  Ï  s   ù‡ € õK÷÷ ð r&   rP  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# )ÚOwlViTEncoderLayeriß  c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r¸   )r   r   )r#   r<   s   "€r$   r%   ÚOwlViTEncoderLayer.__annotate__à  s   ø€ ÷ Sñ SÑ1Ñ4DÕDñ Sr&   c                óJ  <€ \         SV `  4        VP                  V n        \	        V4      V n        \        P                  ! V P                  VP                  R 7      V n	        \        V4      V n        \        P                  ! V P                  VP                  R 7      V n        R# ©©ÚepsN)rÆ   rÇ   rÉ   rÊ   r2  Ú	self_attnr   Ú	LayerNormÚlayer_norm_epsÚlayer_norm1rP  ÚmlpÚlayer_norm2rÙ   s   &&€r$   rÇ   ÚOwlViTEncoderLayer.__init__à  sm   ø€ Ü‰ÑÔØ×+Ñ+ˆŒÜ(¨Ó0ˆŒÜŸ<š<¨¯©¸F×<QÑ<QÔRˆÔÜ˜VÓ$ˆŒÜŸ<š<¨¯©¸F×<QÑ<QÔRˆÖr&   c                ó~   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[S[,          RS[ P                  /# )r   rA  r"  r%  r    )r"   r   r   r   r[   )r#   r<   s   "€r$   r%   r_  è  sG   ø€ ÷ ñ á—|‘|ðñ Ÿ™ðñ Ñ+Õ,ð	ñ
 
×	Ñ	ñr&   c                óÄ   € TpV P                  V4      pV P                  ! RR VRV/VB w  rWA,           pTpV P                  V4      pV P                  V4      pWA,           pV# )rA  r"  r\   )rg  rd  ri  rh  )rJ   rA  r"  r%  Úresidualr  s   &&&,  r$   r  ÚOwlViTEncoderLayer.forwardè  s   € ð !ˆà×(Ñ(¨Ó7ˆØŸ>š>ñ 
Ø'ð
à)ð
ð ñ
Ñˆð
 !Õ0ˆà ˆØ×(Ñ(¨Ó7ˆØŸ™ Ó/ˆØ Õ0ˆàÐr&   )rÊ   rg  ri  rh  rd  r  r  s   @@r$   r]  r]  ß  s    ù‡ € ÷Só S÷÷ ð r&   r]  c                   ó    a a€ ] tR tRt oRtRtRtRtRtRt	Rt
R.tR]R]/t]P                   ! 4       V3R lV 3R ll4       tV3R	 ltR
tVtV ;t# )ÚOwlViTPreTrainedModeli   ÚowlvitTr]  rA  Ú
attentionsc                ó4   <€ V ^8„  d   QhRS[ P                  /# )r   r  ©r   r&  )r#   r<   s   "€r$   r%   Ú"OwlViTPreTrainedModel.__annotate__  s   ø€ ÷ $vñ $v¡B§I¡Iñ $vr&   c                ó  <€ \         SV `  V4       V P                  P                  p\	        V\
        4      '       dÊ   \        P                  ! VP                  P                  RVR,          R7       \        P                  ! VP                  P                  RVR,          R7       \        P                  ! VP                  \        P                  ! VP                  P                  R,          4      P!                  R4      4       R# \	        V\"        4      '       Ed+   \        P                  ! VP$                  RVP&                  R,          V,          R7       \        P                  ! VP(                  P                  VP                  P*                  V,          R7       \        P                  ! VP                  P                  VP                  P*                  V,          R7       \        P                  ! VP                  \        P                  ! VP                  P                  R,          4      P!                  R4      4       R# \	        V\,        4      '       Ed   VP&                  R,          ^VP                  P.                  ,          R,          ,          V,          pVP&                  R,          V,          p\        P                  ! VP0                  P                  VR7       \        P                  ! VP2                  P                  VR7       \        P                  ! VP4                  P                  VR7       \        P                  ! VP6                  P                  VR7       R# \	        V\8        4      '       dÓ   VP                  P:                  R,          ^VP                  P.                  ,          R,          ,          V,          p^VP                  P:                  ,          R,          V,          p\        P                  ! VP<                  P                  VR7       \        P                  ! VP>                  P                  VR7       R# \	        V\@        4      '       dÀ   \        P                  ! VPB                  P                  VPD                  R,          V,          R7       \        P                  ! VPF                  P                  VPH                  R,          V,          R7       \        PJ                  ! VPL                  V P                  PN                  4       R# \	        V\P        4      '       dH   \        P                  ! VPR                  VPU                  VPV                  VPX                  4      4       R# R# )	zInitialize the weightsrD  g{®Gáz”?)ÚmeanÚstd)rx  NrÅ   rÄ   r*  )-rÆ   Ú_init_weightsr¹   Úinitializer_factorÚ
isinstancer	  ÚinitÚnormal_r  rê   rÕ   Úcopy_rØ   r"   r,   ré   r×   r¶   rÍ   rÊ   rÐ   Úinitializer_ranger2  Únum_hidden_layersr=  r;  r<  r>  rP  rÉ   rU  rV  ÚOwlViTModelÚtext_projectionÚtext_embed_dimÚvisual_projectionÚvision_embed_dimÚ	constant_Úlogit_scaleÚlogit_scale_init_valueÚOwlViTForObjectDetectionÚbox_biasÚcompute_box_biasÚnum_patches_heightÚnum_patches_width)rJ   r  ÚfactorÚin_proj_stdÚout_proj_stdÚfc_stdrÚ   s   &&    €r$   ry  Ú#OwlViTPreTrainedModel._init_weights  s{  ø€ ô 	‰Ñ˜fÔ%Ø—‘×/Ñ/ˆÜ�fÔ2×3Ò3Ü�LŠL˜×/Ñ/×6Ñ6¸SÀfÈtÅmÕTÜ�LŠL˜×2Ñ2×9Ñ9ÀÈÐRVÍÕWÜ�JŠJ�v×*Ñ*¬E¯LªL¸×9LÑ9L×9RÑ9RÐSUÕ9VÓ,W×,^Ñ,^Ð_fÓ,gÖhÜ˜Ô 6×7Ó7Ü�LŠL˜×/Ñ/°c¸v×?OÑ?OÐQUÕ?UÐX^Õ?^Õ_Ü�LŠL˜×/Ñ/×6Ñ6¸F¿M¹M×<[Ñ<[Ð^dÕ<dÕeÜ�LŠL˜×2Ñ2×9Ñ9¸v¿}¹}×?^Ñ?^ÐagÕ?gÕhÜ�JŠJ�v×*Ñ*¬E¯LªL¸×9LÑ9L×9RÑ9RÐSUÕ9VÓ,W×,^Ñ,^Ð_fÓ,gÖhÜ˜¤×0Ó0Ø!×+Ñ+¨TÕ1°q¸6¿=¹=×;ZÑ;ZÕ7ZÐ_cÕ6cÕdÐgmÕmˆKØ"×,Ñ,¨dÕ2°fÕ<ˆLÜ�LŠL˜Ÿ™×-Ñ-°;Õ?Ü�LŠL˜Ÿ™×-Ñ-°;Õ?Ü�LŠL˜Ÿ™×-Ñ-°;Õ?Ü�LŠL˜Ÿ™×/Ñ/°\×BÜ˜¤	×*Ò*Ø!Ÿ=™=×4Ñ4°dÕ:ÀÀFÇMÁM×DcÑDcÕ@cÐhlÕ?lÕmÐpvÕvˆKØ˜&Ÿ-™-×3Ñ3Õ3¸Õ<¸vÕEˆFÜ�LŠL˜Ÿ™×*Ñ*°Õ7Ü�LŠL˜Ÿ™×*Ñ*°×<Ü˜¤×,Ò,Ü�LŠLØ×&Ñ&×-Ñ-Ø×)Ñ)¨4Õ/°&Õ8õô �LŠLØ×(Ñ(×/Ñ/Ø×+Ñ+¨TÕ1°FÕ:õô �NŠN˜6×-Ñ-¨t¯{©{×/QÑ/QÖRÜ˜Ô 8×9Ò9Ü�JŠJ�v—‘¨×(?Ñ(?À×@YÑ@YÐ[a×[sÑ[sÓ(tÖuñ :r&   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r¸   ©r   )r#   r<   s   "€r$   r%   ru     ó   ø‡ ‚ áÑò r&   r\   )ÚimageÚtext)r]   r^   r_   r`   Úbase_model_prefixÚinput_modalitiesÚsupports_gradient_checkpointingÚ_supports_sdpaÚ_supports_flash_attnÚ_supports_flex_attnÚ_supports_attention_backendÚ_no_split_modulesr]  r2  Ú_can_record_outputsr"   Úno_gradry  rb   rc   rd   r  r  s   @@r$   rp  rp     su   ù‡ € ð !ÐØ(ÐØ&*Ð#Ø€NØÐØÐØ"&ÐØ-Ð.ÐàÐ+Ø�oðÐð
 ‡]‚]ƒ_÷$vò $vó ð$v÷# … r&   rp  c                   óX   a a€ ] tR tRt oRt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	# )	ÚOwlViTEncoderi9  z�
Transformer encoder consisting of `config.num_hidden_layers` self attention layers. Each layer is a
[`OwlViTEncoderLayer`].

Args:
    config: OwlViTConfig
c                ó    <€ V ^8„  d   QhRS[ /# r¸   r”  )r#   r<   s   "€r$   r%   ÚOwlViTEncoder.__annotate__B  s   ø€ ÷ ,ñ ,™|ñ ,r&   c                óÖ   <€ \         SV `  4        Wn        \        P                  ! \        VP                  4       Uu. uF  p\        V4      NK  	  up4      V n        R V n	        R# u upi )FN)
rÆ   rÇ   r¹   r   Ú
ModuleListÚranger€  r]  ÚlayersÚgradient_checkpointing)rJ   r¹   r  rÚ   s   && €r$   rÇ   ÚOwlViTEncoder.__init__B  sS   ø€ Ü‰ÑÔØŒÜ—m’mÌÈv×OgÑOgÔIhÓ$iÑIhÀAÔ%7¸Ö%?ÑIhÑ$iÓjˆŒØ&+ˆÖ#ùò %js   ½A&c                ó^   <€ V ^8„  d   QhRS[ P                  R,          RS[S[,          RS[/# )r   r"  Nr%  r    )r"   r   r   r   r   )r#   r<   s   "€r$   r%   r¥  H  s:   ø€ ÷ 
ñ 
ñ Ÿ™ tÕ+ð
ñ Ñ+Õ,ð	
ñ
 
ñ
r&   c                óX   € TpV P                    F  pV! VV3/ VB pK  	  \        VR 7      # ))Úlast_hidden_state)r©  r   )rJ   r  r"  r%  rA  Úencoder_layers   &&&,  r$   r  ÚOwlViTEncoder.forwardH  sC   € ð &ˆØ!Ÿ[œ[ˆMÙ)ØØñð ñŠMñ )ô Ø+ô
ð 	
r&   )r¹   rª  r©  rj   rN  r  s   @@r$   r£  r£  9  s#   ù‡ € ñ÷,ó ,÷
÷ 
ò 
r&   r£  c                   ó€   a a€ ] tR tRt oV3R lV 3R llt]]! RR7      ]R	V3R lR ll4       4       4       tRt	Vt
V ;t# )
ÚOwlViTTextTransformeri[  c                ó    <€ V ^8„  d   QhRS[ /# r¸   r  )r#   r<   s   "€r$   r%   Ú"OwlViTTextTransformer.__annotate__\  s   ø€ ÷ 	ñ 	Ñ/ñ 	r&   c                óê   <€ \         SV `  V4       VP                  p\        V4      V n        \        V4      V n        \        P                  ! W!P                  R 7      V n
        V P                  4        R# ra  )rÆ   rÇ   rÉ   r	  rÝ   r£  Úencoderr   re  rf  Úfinal_layer_normÚ	post_init)rJ   r¹   rÊ   rÚ   s   && €r$   rÇ   ÚOwlViTTextTransformer.__init__\  sV   ø€ Ü‰Ñ˜Ô à×&Ñ&ˆ	Ü.¨vÓ6ˆŒÜ$ VÓ,ˆŒÜ "§¢¨Y×<QÑ<QÔ RˆÔð 	�‰Ör&   F©Útie_last_hidden_statesc                ó¾   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[S[,          RS[S[,          /# )r   r  Nr"  rØ   r%  r    ©r"   r   r   r   r;   r   )r#   r<   s   "€r$   r%   r´  j  sd   ø€ ÷ -
ñ -
á—<‘< $Õ&ð-
ñ Ÿ™ tÕ+ð-
ñ —l‘l TÕ)ð	-
ñ
 Ñ+Õ,ð-
ñ 
Ñ+Õ	+ñ-
r&   c           	     óV  € VP                  4       pVP                  RVR,          4      pV P                  WR7      p\        V P                  VVRR7      pVP                  RR4       V P                  ! RRVRVRR/VB pVP                  pV P                  V4      pV\        P                  ! VP                  ^ ,          VP                  R7      VP                  \        P                  4      P                  RR	7      P                  VP                  4      3,          p	\!        VV	R
7      # )aT  
input_ids (`torch.LongTensor` of shape `(batch_size * num_max_text_queries, sequence_length)`):
    Indices of input sequence tokens in the vocabulary. Indices can be obtained using [`AutoTokenizer`]. See
    [`PreTrainedTokenizer.encode`] and [`PreTrainedTokenizer.__call__`] for details. [What are input
    IDs?](../glossary#input-ids)
)r  rØ   N)r¹   r  r"  Úpast_key_valuesr9  r  r"  Tr(   rå   ©r®  Úpooler_outputrÅ   r\   )râ   rñ   rÝ   r	   r¹   Úpopr¶  r®  r·  r"   r,   ré   r)   Útorr   Úargmaxr   )
rJ   r  r"  rØ   r%  rG  rA  Úencoder_outputsr®  Úpooled_outputs
   &&&&,     r$   r  ÚOwlViTTextTransformer.forwardg  s(  € ð   —n‘nÓ&ˆØ—N‘N 2 {°2¥Ó7ˆ	ØŸ™°)˜ÓWˆä+Ø—;‘;Ø'Ø)Ø ô	
ˆð 	�
‰
�; Ô%Ø+/¯<ª<ñ ,
Ø'ð,
à)ð,
ð ð,
ð ñ	,
ˆð ,×=Ñ=ÐØ ×1Ñ1Ð2CÓDÐð *Ü�LŠLÐ*×0Ñ0°Õ3Ð<M×<TÑ<TÔUØ�L‰LœŸ™Ó#×*Ñ*¨rÐ*Ó2×5Ñ5Ð6G×6NÑ6NÓOðQõ
ˆô
 *Ø/Ø'ô
ð 	
r&   )rÝ   r¶  r·  r  ©r]   r^   r_   r`   rÇ   r   r   r   r  rc   rd   r  r  s   @@r$   r²  r²  [  sB   ù‡ € ÷	ó 	ð  Ù¨EÔ2Ø÷-
ñ -
ó ó 3ó  ÷-
ð -
r&   r²  c                   ó†   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]RV3R lR ll4       t	V3R	 lt
R
tVtV ;t# )ÚOwlViTTextModeliš  c                ó    <€ V ^8„  d   QhRS[ /# r¸   r  )r#   r<   s   "€r$   r%   ÚOwlViTTextModel.__annotate__ž  s   ø€ ÷ ñ Ñ/ñ r&   c                óf   <€ \         SV `  V4       \        V4      V n        V P	                  4        R # rj   )rÆ   rÇ   r²  Ú
text_modelr¸  rÙ   s   &&€r$   rÇ   ÚOwlViTTextModel.__init__ž  s&   ø€ Ü‰Ñ˜Ô Ü/°Ó7ˆŒà�‰Ör&   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r9   rt  )r#   r<   s   "€r$   r%   rÌ  ¤  s   ø€ ÷ :ñ :¡b§i¡iñ :r&   c                óB   € V P                   P                  P                  # rj   ©rÎ  rÝ   r  rQ   s   &r$   Úget_input_embeddingsÚ$OwlViTTextModel.get_input_embeddings¤  s   € Ø�‰×)Ñ)×9Ñ9Ð9r&   c                ó:   € WP                   P                  n        R # rj   rÒ  )rJ   r!  s   &&r$   Úset_input_embeddingsÚ$OwlViTTextModel.set_input_embeddings§  s   € Ø5:�‰×"Ñ"Ö2r&   c          	      ó–   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[S[,          RS[S[,          /# )r   r  Nr"  r%  r    r½  )r#   r<   s   "€r$   r%   rÌ  «  sQ   ø€ ÷ 
ñ 
á—<‘< $Õ&ð
ñ Ÿ™ tÕ+ð
ñ Ñ+Õ,ð	
ñ
 
Ñ+Õ	+ñ
r&   c                ó.   € V P                   ! RRVRV/VB # )a[  
input_ids (`torch.LongTensor` of shape `(batch_size * num_max_text_queries, sequence_length)`):
    Indices of input sequence tokens in the vocabulary. Indices can be obtained using [`AutoTokenizer`]. See
    [`PreTrainedTokenizer.encode`] and [`PreTrainedTokenizer.__call__`] for details. [What are input
    IDs?](../glossary#input-ids)

Examples:
```python
>>> from transformers import AutoProcessor, OwlViTTextModel

>>> model = OwlViTTextModel.from_pretrained("google/owlvit-base-patch32")
>>> processor = AutoProcessor.from_pretrained("google/owlvit-base-patch32")
>>> inputs = processor(
...     text=[["a photo of a cat", "a photo of a dog"], ["photo of a astranaut"]], return_tensors="pt"
... )
>>> outputs = model(**inputs)
>>> last_hidden_state = outputs.last_hidden_state
>>> pooled_output = outputs.pooler_output  # pooled (EOS token) states
```r  r"  r\   ©rÎ  )rJ   r  r"  r%  s   &&&,r$   r  ÚOwlViTTextModel.forwardª  s/   € ð6 �Šñ 
Øð
à)ð
ð ñ
ð 	
r&   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r¸   r  )r#   r<   s   "€r$   r%   rÌ  š  s   ø‡ ‚ ÙÑò r&   rÚ  )r—  ©NN)r]   r^   r_   r`   r™  rÇ   rÓ  rÖ  r   r  rb   rc   rd   r  r  s   @@r$   rÊ  rÊ  š  sD   ù‡ € à Ð÷ó ÷:ð :ò;ð ÷
ñ 
ó ð
÷# … r&   rÊ  c                   ó€   a a€ ] tR tRt oV3R lV 3R llt]]! RR7      ]R	V3R lR ll4       4       4       tRt	Vt
V ;t# )
ÚOwlViTVisionTransformeriÌ  c                ó    <€ V ^8„  d   QhRS[ /# r¸   rº   )r#   r<   s   "€r$   r%   Ú$OwlViTVisionTransformer.__annotate__Í  s   ø€ ÷ 	ñ 	Ñ1ñ 	r&   c                óJ  <€ \         SV `  V4       \        V4      V n        \        P
                  ! VP                  VP                  R 7      V n        \        V4      V n
        \        P
                  ! VP                  VP                  R 7      V n        V P                  4        R# ra  )rÆ   rÇ   r¶   rÝ   r   re  rÉ   rf  Úpre_layernormr£  r¶  Úpost_layernormr¸  rÙ   s   &&€r$   rÇ   Ú OwlViTVisionTransformer.__init__Í  sr   ø€ Ü‰Ñ˜Ô ä0°Ó8ˆŒÜŸ\š\¨&×*<Ñ*<À&×BWÑBWÔXˆÔÜ$ VÓ,ˆŒÜ Ÿlšl¨6×+=Ñ+=À6×CXÑCXÔYˆÔð 	�‰Ör&   Frº  c          	      ót   <€ V ^8„  d   QhRS[ P                  RS[R,          RS[S[,          RS[S[,          /# )r   rû   rø   Nr%  r    )r"   r[   rü   r   r   r;   r   )r#   r<   s   "€r$   r%   rá  Û  sI   ø€ ÷ 
ñ 
á×'Ñ'ð
ñ #'¨¥+ð
ñ Ñ+Õ,ð	
ñ
 
Ñ+Õ	+ñ
r&   c                óL  € V P                   P                  P                  P                  pVP	                  V4      pV P                  WR 7      pV P                  V4      pV P                  ! RRV/VB pVP                  pVR,          pV P                  V4      p\        VVR7      # ))rø   r  rÀ  r\   )rw   rx   rw   )
rÝ   rÐ   rê   rl   rÃ  rã  r¶  r®  rä  r   )	rJ   rû   rø   r%  Úexpected_input_dtyperA  rÅ  r®  rÆ  s	   &&&,     r$   r  ÚOwlViTVisionTransformer.forwardØ  s¨   € ð  $Ÿ™×>Ñ>×EÑE×KÑKÐØ#—‘Ð';Ó<ˆàŸ™¨˜ÓhˆØ×*Ñ*¨=Ó9ˆà+/¯<ª<ñ ,
Ø'ð,
àñ,
ˆð
 ,×=Ñ=ÐØ)¨'Õ2ˆØ×+Ñ+¨MÓ:ˆä)Ø/Ø'ô
ð 	
r&   )rÝ   r¶  rä  rã  r  rÈ  r  s   @@r$   rß  rß  Ì  sB   ù‡ € ÷	ó 	ð  Ù¨EÔ2Ø÷
ñ 
ó ó 3ó  ÷
ð 
r&   rß  c                   ó„   a a€ ] tR tRt oRtRtV3R lV 3R lltV3R lR lt]RV3R lR ll4       t	V3R	 lt
R
tVtV ;t# )ÚOwlViTVisionModeli÷  rû   c                ó    <€ V ^8„  d   QhRS[ /# r¸   rº   )r#   r<   s   "€r$   r%   ÚOwlViTVisionModel.__annotate__ü  s   ø€ ÷ ñ Ñ1ñ r&   c                óf   <€ \         SV `  V4       \        V4      V n        V P	                  4        R # rj   )rÆ   rÇ   rß  Úvision_modelr¸  rÙ   s   &&€r$   rÇ   ÚOwlViTVisionModel.__init__ü  s'   ø€ Ü‰Ñ˜Ô Ü3°FÓ;ˆÔà�‰Ör&   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r9   rt  )r#   r<   s   "€r$   r%   rí    s   ø€ ÷ <ñ <¡b§i¡iñ <r&   c                óB   € V P                   P                  P                  # rj   )rï  rÝ   rÐ   rQ   s   &r$   rÓ  Ú&OwlViTVisionModel.get_input_embeddings  s   € Ø× Ñ ×+Ñ+×;Ñ;Ð;r&   c                ód   <€ V ^8„  d   QhRS[ P                  R,          RS[RS[S[,          RS[/# )r   rû   Nrø   r%  r    )r"   r[   rü   r   r   r   )r#   r<   s   "€r$   r%   rí    sD   ø€ ÷ 
ñ 
á×'Ñ'¨$Õ.ð
ñ #'ð
ñ Ñ+Õ,ð	
ñ
 
$ñ
r&   c                ó.   € V P                   ! RRVRV/VB # )a§  
Examples:
```python
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO
>>> from transformers import AutoProcessor, OwlViTVisionModel

>>> model = OwlViTVisionModel.from_pretrained("google/owlvit-base-patch32")
>>> processor = AutoProcessor.from_pretrained("google/owlvit-base-patch32")
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

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

>>> outputs = model(**inputs)
>>> last_hidden_state = outputs.last_hidden_state
>>> pooled_output = outputs.pooler_output  # pooled CLS states
```rû   rø   r\   ©rï  )rJ   rû   rø   r%  s   &&&,r$   r  ÚOwlViTVisionModel.forward  s1   € ð8 × Ò ñ 
Ø%ð
à%=ð
ð ñ
ð 	
r&   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r¸   rº   )r#   r<   s   "€r$   r%   rí  ÷  s   ø‡ ‚ ÙÑò r&   rö  )r–  ©NF)r]   r^   r_   r`   Úmain_input_namer™  rÇ   rÓ  r   r  rb   rc   rd   r  r  s   @@r$   rë  rë  ÷  sD   ù‡ € à$€OØ!Ð÷ó ÷<ð <ð ÷
ñ 
ó ð
÷ … r&   rë  c                   óÈ   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4       4       t]]RV3R lR ll4       4       t]]RV3R lR	 ll4       4       t	V3R
 lt
RtVtV ;t# )r�  i(  c                ó    <€ V ^8„  d   QhRS[ /# r¸   r”  )r#   r<   s   "€r$   r%   ÚOwlViTModel.__annotate__,  s   ø€ ÷ ñ ™|ñ r&   c                óV  <€ \         SV `  V4       VP                  pVP                  pVP                  V n        VP
                  V n        VP
                  V n        \        V4      V n	        \        V4      V n        \        P                  ! V P                  V P                  R R7      V n        \        P                  ! V P                  V P                  R R7      V n        \        P                   ! \"        P$                  ! VP&                  4      4      V n        V P+                  4        R# )F)rÁ   N)rÆ   rÇ   Útext_configÚvision_configÚprojection_dimrÉ   rƒ  r…  r²  rÎ  rß  rï  r   r:  r„  r‚  rË   r"   Útensorrˆ  r‡  r¸  )rJ   r¹   rÿ  r   rÚ   s   &&  €r$   rÇ   ÚOwlViTModel.__init__,  sÙ   ø€ Ü‰Ñ˜Ô à×(Ñ(ˆØ×,Ñ,ˆà$×3Ñ3ˆÔØ)×5Ñ5ˆÔØ -× 9Ñ 9ˆÔä/°Ó<ˆŒÜ3°MÓBˆÔä!#§¢¨4×+@Ñ+@À$×BUÑBUÐ\aÔ!bˆÔÜ!Ÿyšy¨×)<Ñ)<¸d×>QÑ>QÐX]Ô^ˆÔÜŸ<š<¬¯ª°V×5RÑ5RÓ(SÓTˆÔð 	�‰Ör&   c          	      óˆ   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          RS[S[,          /# )r   r  r"  Nr%  r    r½  )r#   r<   s   "€r$   r%   rý  B  sL   ø€ ÷ !ñ !á—<‘<ð!ñ Ÿ™ tÕ+ð!ñ Ñ+Õ,ð	!ñ
 
Ñ+Õ	+ñ!r&   c                óv   € V P                   ! RRVRV/VB pVP                  pV P                  V4      Vn        V# )a(  
input_ids (`torch.LongTensor` of shape `(batch_size * num_max_text_queries, sequence_length)`):
    Indices of input sequence tokens in the vocabulary. Indices can be obtained using [`AutoTokenizer`]. See
    [`PreTrainedTokenizer.encode`] and [`PreTrainedTokenizer.__call__`] for details. [What are input
    IDs?](../glossary#input-ids)

Examples:
```python
>>> import torch
>>> from transformers import AutoProcessor, OwlViTModel

>>> model = OwlViTModel.from_pretrained("google/owlvit-base-patch32")
>>> processor = AutoProcessor.from_pretrained("google/owlvit-base-patch32")
>>> inputs = processor(
...     text=[["a photo of a cat", "a photo of a dog"], ["photo of a astranaut"]], return_tensors="pt"
... )
>>> with torch.inference_mode():
...     text_features = model.get_text_features(**inputs)
```r  r"  r\   )rÎ  rÁ  r‚  )rJ   r  r"  r%  Útext_outputsrÆ  s   &&&,  r$   Úget_text_featuresÚOwlViTModel.get_text_features@  sR   € ð6 48·?²?ñ 4
Øð4
à)ð4
ð ñ4
ˆð
 %×2Ñ2ˆØ%)×%9Ñ%9¸-Ó%HˆÔ"àÐr&   c          	      óf   <€ V ^8„  d   QhRS[ P                  RS[RS[S[,          RS[S[,          /# ©r   rû   rø   r%  r    )r"   r   rü   r   r   r;   r   )r#   r<   s   "€r$   r%   rý  g  sC   ø€ ÷ ñ á—l‘lðñ #'ðñ Ñ+Õ,ð	ñ
 
Ñ+Õ	+ñr&   c                ór   € V P                   ! RRVRV/VB pV P                  VP                  4      Vn        V# )a   
Examples:
```python
>>> import torch
>>> from transformers.image_utils import load_image
>>> from transformers import AutoProcessor, OwlViTModel

>>> model = OwlViTModel.from_pretrained("google/owlvit-base-patch32")
>>> processor = AutoProcessor.from_pretrained("google/owlvit-base-patch32")

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

>>> inputs = processor(images=image, return_tensors="pt")
>>> with torch.inference_mode():
...     image_features = model.get_image_features(**inputs)
```rû   rø   r\   )rï  r„  rÁ  )rJ   rû   rø   r%  Úvision_outputss   &&&, r$   Úget_image_featuresÚOwlViTModel.get_image_featurese  sO   € ð2 6:×5FÒ5Fñ 6
Ø%ð6
à%=ð6
ð ñ6
ˆð
 (,×'=Ñ'=¸n×>ZÑ>ZÓ'[ˆÔ$àÐr&   c                óì   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[RS[R,          RS[S[,          R	S[S[,          /# )
r   r  Nrû   r"  Úreturn_lossrø   Úreturn_base_image_embedsr%  r    )	r"   r  r[   r   rü   r   r   r;   r7   )r#   r<   s   "€r$   r%   rý  ‰  s—   ø€ ÷ K
ñ K
á×#Ñ# dÕ*ðK
ñ ×'Ñ'¨$Õ.ðK
ñ Ÿ™ tÕ+ð	K
ñ
 ˜D•[ðK
ñ #'ðK
ñ #'¨¥+ðK
ñ Ñ+Õ,ðK
ñ 
‘Õ	ñK
r&   c           
     ó¤  € V P                   ! R	RVRV/VB pV P                  ! R	RVRV/VB p	V	P                  p
V P                  V
4      p
VP                  pV P	                  V4      pV\
        P                  P                  V^R
RR7      ,          pV
\
        P                  P                  V
^R
RR7      ,          pV P                  P                  4       P                  VP                  4      p\
        P                  ! WËP                  4       4      V,          pVP                  4       pRpV'       d   \        V4      pTp
\        VVVV
VV	VR7      # )a×  
return_loss (`bool`, *optional*):
    Whether or not to return the contrastive loss.
return_base_image_embeds (`bool`, *optional*):
    Whether or not to return the base image embeddings.

Examples:
```python
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO
>>> from transformers import AutoProcessor, OwlViTModel

>>> model = OwlViTModel.from_pretrained("google/owlvit-base-patch32")
>>> processor = AutoProcessor.from_pretrained("google/owlvit-base-patch32")
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))
>>> inputs = processor(text=[["a photo of a cat", "a photo of a dog"]], images=image, return_tensors="pt")
>>> outputs = model(**inputs)
>>> logits_per_image = outputs.logits_per_image  # this is the image-text similarity score
>>> probs = logits_per_image.softmax(dim=1)  # we can take the softmax to get the label probabilities
```rû   rø   r  r"  T)Úordræ   ÚkeepdimN)rU   rV   rW   rX   rY   rB   rC   r\   rÅ   )rï  rÎ  rÁ  r‚  r„  r"   ÚlinalgÚnormr‡  ÚexprÃ  r)   r+  rg   r5   r7   )rJ   r  rû   r"  r  rø   r  r%  r  r  rX   rY   Útext_embeds_normr‡  rW   rV   rU   s   &&&&&&&,         r$   r  ÚOwlViTModel.forward‡  sf  € ðF 6:×5FÒ5Fñ 6
Ø%ð6
à%=ð6
ð ñ6
ˆð 48·?²?ñ 4
Øð4
à)ð4
ð ñ4
ˆð #×0Ñ0ˆØ×*Ñ*¨;Ó7ˆØ%×3Ñ3ˆØ×-Ñ-¨lÓ;ˆð $¤e§l¡l×&7Ñ&7¸È!ÐQSÐ]aÐ&7Ó&bÕbˆØ&¬¯©×):Ñ):¸;ÈAÐSUÐ_cÐ):Ó)dÕdÐð ×&Ñ&×*Ñ*Ó,×/Ñ/°×0CÑ0CÓDˆäŸ,š,Ð'7¿¹Ó9IÓJÈ[ÕXˆØ*×,Ñ,Ó.ÐàˆßÜ.¨Ó?ˆDà&ˆäØØ-Ø+Ø#Ø%Ø*Ø .ô
ð 	
r&   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r¸   r”  )r#   r<   s   "€r$   r%   rý  (  r•  r&   )r‡  r  rƒ  rÎ  r‚  r…  rï  r„  rj   r  )NNNNFN)r]   r^   r_   r`   rÇ   r   r   r  r  r  rb   rc   rd   r  r  s   @@r$   r�  r�  (  s   ù‡ € ÷ó ð( Ø÷!ñ !ó ó ð!ðF Ø÷ñ ó ó ðð@ Ø÷K
ñ K
ó ó ðK
÷C … r&   r�  c                   óT   a a€ ] tR tR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# )ÚOwlViTBoxPredictionHeadi×  c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   r¹   Úout_dim)r   rr   )r#   r<   s   "€r$   r%   Ú$OwlViTBoxPredictionHead.__annotate__Ø  s   ø€ ÷ 0ñ 0™|ð 0±cñ 0r&   c                ó&  <€ \         SV `  4        VP                  P                  p\        P
                  ! W34      V n        \        P
                  ! W34      V n        \        P                  ! 4       V n	        \        P
                  ! W24      V n
        R # rj   )rÆ   rÇ   r   rÉ   r   r:  Údense0Údense1ÚGELUÚgeluÚdense2)rJ   r¹   r  rß   rÚ   s   &&& €r$   rÇ   Ú OwlViTBoxPredictionHead.__init__Ø  s\   ø€ Ü‰ÑÔà×$Ñ$×0Ñ0ˆÜ—i’i Ó-ˆŒÜ—i’i Ó-ˆŒÜ—G’G“IˆŒ	Ü—i’i Ó/ˆŽr&   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   Úimage_featuresr    )r"   r   r[   )r#   r<   s   "€r$   r%   r  á  s%   ø€ ÷ ñ ¡e§l¡lð ±u×7HÑ7Hñ r&   c                ó°   € V P                  V4      pV P                  V4      pV P                  V4      pV P                  V4      pV P                  V4      pV# rj   )r!  r$  r"  r%  )rJ   r(  Úoutputs   && r$   r  ÚOwlViTBoxPredictionHead.forwardá  sM   € Ø—‘˜^Ó,ˆØ—‘˜6Ó"ˆØ—‘˜VÓ$ˆØ—‘˜6Ó"ˆØ—‘˜VÓ$ˆØˆr&   )r!  r"  r%  r$  )é   r  r  s   @@r$   r  r  ×  s   ù‡ € ÷0õ 0÷÷ ð r&   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# )ÚOwlViTClassPredictionHeadiê  c                ó    <€ V ^8„  d   QhRS[ /# r¸   r”  )r#   r<   s   "€r$   r%   Ú&OwlViTClassPredictionHead.__annotate__ë  s   ø€ ÷ 	ñ 	™|ñ 	r&   c                óž  <€ \         SV `  4        VP                  P                  pVP                  P                  V n        \        P                  ! V P
                  V4      V n        \        P                  ! V P
                  ^4      V n	        \        P                  ! V P
                  ^4      V n
        \        P                  ! 4       V n        R# )rz   N)rÆ   rÇ   rÿ  rÉ   r   Ú	query_dimr   r:  r!  Úlogit_shiftr‡  ÚELUÚelu)rJ   r¹   r  rÚ   s   && €r$   rÇ   Ú"OwlViTClassPredictionHead.__init__ë  sƒ   ø€ Ü‰ÑÔà×$Ñ$×0Ñ0ˆØ×-Ñ-×9Ñ9ˆŒä—i’i §¡°Ó8ˆŒÜŸ9š9 T§^¡^°QÓ7ˆÔÜŸ9š9 T§^¡^°QÓ7ˆÔÜ—6’6“8ˆŽr&   c          	      ó®   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[S[ P                  ,          /# )r   rY   Úquery_embedsNÚ
query_maskr    ©r"   r[   r   r;   )r#   r<   s   "€r$   r%   r0  ö  sX   ø€ ÷ !1ñ !1á×'Ñ'ð!1ñ ×'Ñ'¨$Õ.ð!1ñ —L‘L 4Õ'ð	!1ñ
 
‰u× Ñ Õ	!ñ!1r&   c                óz  € V P                  V4      pVfV   VP                  pVP                  R,          w  rg\        P                  ! WgV P
                  34      P                  V4      pW„3# V\        P                  P                  VRRR7      R,           ,          pV\        P                  P                  VRRR7      R,           ,          p\        P                  ! RWB4      pV P                  V4      p	V P                  V4      p
V P                  V
4      ^,           p
W‰,           V
,          pVeŒ   VP                  ^8”  d   \        P                  ! VRR7      p\        P                  ! V^ 8H  \        P                   ! VP"                  4      P$                  V4      pVP                  \        P&                  4      pW„3# )	Nr€   T)ræ   r  g�íµ ÷Æ°>z...pd,...qd->...pqrå   rÅ   r  )r!  r)   ré   r"   Úzerosr2  rÃ  r  r  Úeinsumr3  r‡  r5  Úndimrë   ÚwhereÚfinforl   r~   rm   )rJ   rY   r8  r9  Úimage_class_embedsr)   r   rÒ   Úpred_logitsr3  r‡  s   &&&&       r$   r  Ú!OwlViTClassPredictionHead.forwardö  su  € ð "Ÿ[™[¨Ó6ÐØÒØ'×.Ñ.ˆFØ&8×&>Ñ&>¸rÕ&BÑ#ˆJÜŸ+š+ zÀÇÁÐ&OÓP×SÑSÐTZÓ[ˆKØÐ4Ð4ð 0´5·<±<×3DÑ3DÐEWÐ]_ÐimÐ3DÓ3nÐquÕ3uÕvÐØ#¤u§|¡|×'8Ñ'8¸È2ÐW[Ð'8Ó'\Ð_cÕ'cÕdˆô —l’lÐ#7Ð9KÓZˆð ×&Ñ& |Ó4ˆØ×&Ñ& |Ó4ˆØ—h‘h˜{Ó+¨aÕ/ˆØ"Õ0°KÕ?ˆàÒ!Ø�‰ Ô"Ü"Ÿ_š_¨Z¸RÔ@�
äŸ+š+ j°A¡o´u·{²{À;×CTÑCTÓ7U×7YÑ7YÐ[fÓgˆKØ%Ÿ.™.¬¯©Ó7ˆKàÐ0Ð0r&   )r!  r5  r‡  r3  r2  r  r  s   @@r$   r.  r.  ê  s   ù‡ € ÷	ó 	÷!1÷ !1ð !1r&   r.  c                   ó:  a a€ ] tR tRt oV3R lV 3R llt]V3R lR l4       tV3R lR ltRV3R lR	 lltRV3R
 lR llt	RV3R lR llt
RV3R lR lltRV3R lR llt]]RV3R lR ll4       4       t]]RV3R lR ll4       4       tV3R ltRtVtV ;t# )r‰  i  c                ó    <€ V ^8„  d   QhRS[ /# r¸   r”  )r#   r<   s   "€r$   r%   Ú%OwlViTForObjectDetection.__annotate__  s   ø€ ÷ ñ ™|ñ r&   c                ó  <€ \         SV `  V4       \        V4      V n        \	        V4      V n        \        V4      V n        \        P                  ! VP                  P                  VP                  P                  R 7      V n        \        P                  ! 4       V n        Wn        V P                   P                  P"                  V P                   P                  P$                  ,          V n        V P                   P                  P"                  V P                   P                  P$                  ,          V n        \        P*                  ! V P-                  V P&                  V P(                  4      RR7      V n        V P1                  4        R# )rb  FrÂ   N)rÆ   rÇ   r�  rq  r.  Ú
class_headr  Úbox_headr   re  r   rÉ   rf  Ú
layer_normÚSigmoidÚsigmoidr¹   rÑ   rÈ   rŒ  r�  rÖ   r‹  rŠ  r¸  rÙ   s   &&€r$   rÇ   Ú!OwlViTForObjectDetection.__init__  s  ø€ Ü‰Ñ˜Ô ä! &Ó)ˆŒÜ3°FÓ;ˆŒÜ/°Ó7ˆŒäŸ,š, v×';Ñ';×'GÑ'GÈV×MaÑMa×MpÑMpÔqˆŒÜ—z’z“|ˆŒØŒØ"&§+¡+×";Ñ";×"FÑ"FÈ$Ï+É+×JcÑJc×JnÑJnÕ"nˆÔØ!%§¡×!:Ñ!:×!EÑ!EÈÏÉ×IbÑIb×ImÑImÕ!mˆÔÜŸ	š	Ø×!Ñ! $×"9Ñ"9¸4×;QÑ;QÓRÐ_dô
ˆŒð 	�‰Ör&   c                ó@   <€ V ^8„  d   QhRS[ RS[ RS[P                  /# ©r   rŒ  r�  r    ©rr   r"   r   )r#   r<   s   "€r$   r%   rF  0  s*   ø€ ÷ ñ ¹cð ÑVYð Ñ^c×^jÑ^jñ r&   c                óœ  € \         P                  ! ^V^,           \         P                  R7      p\         P                  ! ^V ^,           \         P                  R7      p\         P                  ! W#RR7      w  rE\         P                  ! WE3RR7      pVR;;,          V,          uu&   VR;;,          V ,          uu&   VP                  R^4      pV# )rz   )rl   Úxy)Úindexingrå   rÅ   ©.rx   ©.rz   )r"   r,   rm   ÚmeshgridÚstackrñ   )rŒ  r�  Úx_coordinatesÚy_coordinatesÚxxÚyyÚbox_coordinatess   &&     r$   Ú!normalize_grid_corner_coordinatesÚ:OwlViTForObjectDetection.normalize_grid_corner_coordinates/  sž   € ô Ÿš QÐ(9¸AÕ(=ÄUÇ]Á]ÔSˆÜŸš QÐ(:¸QÕ(>ÄeÇmÁmÔTˆÜ—’ ÀtÔL‰ˆô  Ÿ+š+ r h°BÔ7ˆØ˜×Ð#4Õ4ÓØ˜×Ð#5Õ5Óð *×.Ñ.¨r°1Ó5ˆàÐr&   c                ó@   <€ V ^8„  d   QhRS[ RS[ RS[P                  /# rO  rP  )r#   r<   s   "€r$   r%   rF  @  s)   ø€ ÷ ñ ±3ð É3ð ÑSX×S_ÑS_ñ r&   c                ó  € V P                  W4      p\        P                  ! VR R4      p\        P                  ! VR,           4      \        P                  ! V) R,           4      ,
          p\        P
                  ! VR4      pVR;;,          V,          uu&   VR;;,          V,          uu&   \        P                  ! VR,           4      \        P                  ! V) R,           4      ,
          p\        P                  ! WF.RR7      pV# )rD  g      ð?g-Cëâ6?rå   rT  rU  rÅ   )r]  r"   ÚclipÚlogÚlog1pÚ	full_likerò   )rJ   rŒ  r�  r\  Úbox_coord_biasÚbox_sizeÚbox_size_biasrŠ  s   &&&     r$   r‹  Ú)OwlViTForObjectDetection.compute_box_bias@  sÆ   € à×@Ñ@ÐASÓgˆÜŸ*š* _°c¸3Ó?ˆô Ÿš ?°TÕ#9Ó:¼U¿[º[È/ÐIYÐ\`ÕI`Ó=aÕaˆô —?’? >°3Ó7ˆØ�×Ð-Õ-ÓØ�×Ð.Õ.ÓÜŸ	š	 (¨T¥/Ó2´U·[²[À(ÀÈTÕAQÓ5RÕRˆô —9’9˜nÐ<À"ÔEˆØˆr&   c                ón   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[RS[ P                  /# )r   Úimage_featsÚfeature_maprø   r    ©r"   r[   rü   )r#   r<   s   "€r$   r%   rF  R  sE   ø€ ÷ ñ á×&Ñ&ðñ ×&Ñ&ðñ #'ð	ñ
 
×	Ñ	ñr&   c                óú   € V P                  V4      pV'       d"   VP                  w  rVruV P                  Wg4      pMV P                  pVP	                  VP
                  4      pWH,          pV P                  V4      pV# )a»  
Args:
    image_feats:
        Features extracted from the image, returned by the `image_text_embedder` method.
    feature_map:
        A spatial re-arrangement of image_features, also returned by the `image_text_embedder` method.
    interpolate_pos_encoding:
        Whether to interpolate the pre-trained position encodings.
Returns:
    pred_boxes:
        List of predicted boxes (cxcywh normalized to 0, 1) nested within a dictionary.
)rI  ré   r‹  rŠ  rÃ  r)   rL  )	rJ   rj  rk  rø   r¦   r  rŒ  r�  rŠ  s	   &&&&     r$   Úbox_predictorÚ&OwlViTForObjectDetection.box_predictorR  sr   € ð& —]‘] ;Ó/ˆ
÷ $Ø:E×:KÑ:KÑ7ˆAÐ#4Ø×,Ñ,Ð-?ÓS‰Hà—}‘}ˆHà—;‘;˜{×1Ñ1Ó2ˆØÕˆ
Ø—\‘\ *Ó-ˆ
ØÐr&   c          	      ó®   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[S[ P                  ,          /# )r   rj  r8  Nr9  r    r:  )r#   r<   s   "€r$   r%   rF  s  sX   ø€ ÷ 1ñ 1á×&Ñ&ð1ñ ×'Ñ'¨$Õ.ð1ñ —L‘L 4Õ'ð	1ñ
 
‰u× Ñ Õ	!ñ1r&   c                ó0   € V P                  WV4      w  rEWE3# )zø
Args:
    image_feats:
        Features extracted from the `image_text_embedder`.
    query_embeds:
        Text query embeddings.
    query_mask:
        Must be provided with query_embeddings. A mask indicating which query embeddings are valid.
)rH  )rJ   rj  r8  r9  rB  rA  s   &&&&  r$   Úclass_predictorÚ(OwlViTForObjectDetection.class_predictors  s!   € ð -1¯O©O¸KÐWaÓ,bÑ)ˆàÐ0Ð0r&   c                ó®   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  RS[RS[S[,          RS[S[ P                  ,          /# )r   r  rû   r"  rø   r%  r    )r"   r   r[   rü   r   r   r;   )r#   r<   s   "€r$   r%   rF  †  sf   ø€ ÷ -4ñ -4á—<‘<ð-4ñ ×'Ñ'ð-4ñ Ÿ™ð	-4ñ
 #'ð-4ñ Ñ+Õ,ð-4ñ 
‰u× Ñ Õ	!ñ-4r&   c                óÔ  € V P                   ! RR VRVRVRV/VB pV'       d^   VP                  w   rxp	W€P                  P                  P                  ,          p
W�P                  P                  P                  ,          pMV P
                  p
V P                  pVP                  ^ ,          pV P                   P                  P                  V4      p\        P                  ! VR,          VRRR13,          P                  4      pVR	,          V,          pV P                  V4      pVP                  ^ ,          V
VVP                  R,          3pVP                  V4      pVR
,          pVWÖ3# )rû   r  r"  rø   rw   Nr\   ©rw   rç   rw   rÅ   ©rw   rè   rw   éüÿÿÿ)rq  ré   r¹   r   rÈ   rŒ  r�  rC   rï  rä  r"   Úbroadcast_torJ  rî   )rJ   r  rû   r"  rø   r%  Úoutputsr  rÞ   rß   rŒ  r�  r®  rY   Úclass_token_outÚnew_sizerX   s   &&&&&,           r$   Úimage_text_embedderÚ,OwlViTForObjectDetection.image_text_embedder†  sp  € ð —+’+ñ 
Ø%ð
àð
ð *ð
ð &>ð	
ð
 ñ
ˆ÷ $Ø".×"4Ñ"4ÑˆAˆq˜%Ø!'¯;©;×+DÑ+D×+OÑ+OÕ!OÐØ %¯©×)BÑ)B×)MÑ)MÕ MÑà!%×!8Ñ!8ÐØ $× 6Ñ 6Ðð $×7Ñ7¸Õ:ÐØ—{‘{×/Ñ/×>Ñ>Ð?PÓQˆô  ×,Ò,¨\¸(Õ-CÀ\ÐRSÐUXÐVXÐUXÐRXÕEY×E_ÑE_Ó`ˆð $ HÕ-°Õ?ˆØ—‘ |Ó4ˆð ×Ñ˜qÕ!ØØØ×Ñ˜rÕ"ð	
ˆð $×+Ñ+¨HÓ5ˆØ˜b•kˆà˜\Ð3Ð3r&   c          	      óz   <€ V ^8„  d   QhRS[ P                  RS[RS[S[,          RS[S[ P                  ,          /# r
  )r"   r[   rü   r   r   r;   )r#   r<   s   "€r$   r%   rF  µ  sJ   ø€ ÷ '.ñ '.á×'Ñ'ð'.ñ #'ð'.ñ Ñ+Õ,ð	'.ñ
 
‰u× Ñ Õ	!ñ'.r&   c                ó¸  € V P                   P                  ! RR VRV/VB pV'       d^   VP                  w   rVpW`P                  P                  P
                  ,          pWpP                  P                  P
                  ,          p	MV P                  pV P                  p	V^ ,          p
V P                   P                  P                  V
4      p\        P                  ! VR,          VRRR13,          P                  4      pVR,          V,          pV P                  V4      pVP                  ^ ,          VV	VP                  R,          3pVP                  V4      pW´3# )rû   rø   rw   Nr\   rv  rÅ   rw  )rq  rï  ré   r¹   r   rÈ   rŒ  r�  rä  r"   ry  rJ  rî   )rJ   rû   rø   r%  r  r  rÞ   rß   rŒ  r�  r®  rY   r{  r|  s   &&&,          r$   Úimage_embedderÚ'OwlViTForObjectDetection.image_embedderµ  sO  € ð 6:·[±[×5MÒ5Mñ 6
Ø%ð6
Ø@Xð6
Ø\bñ6
ˆ÷ $Ø".×"4Ñ"4ÑˆAˆq˜%Ø!'¯;©;×+DÑ+D×+OÑ+OÕ!OÐØ %¯©×)BÑ)B×)MÑ)MÕ MÑà!%×!8Ñ!8ÐØ $× 6Ñ 6Ðð +¨1Õ-ÐØ—{‘{×/Ñ/×>Ñ>Ð?PÓQˆô  ×,Ò,¨\¸(Õ-CÀ\ÐRSÐUXÐVXÐUXÐRXÕEY×E_ÑE_Ó`ˆð $ HÕ-°Õ?ˆØ—‘ |Ó4ˆð ×Ñ˜qÕ!ØØØ×Ñ˜rÕ"ð	
ˆð $×+Ñ+¨HÓ5ˆàÐ-Ð-r&   c                ón   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[RS[ P                  /# )r   Úquery_image_featuresÚquery_feature_maprø   r    rl  )r#   r<   s   "€r$   r%   rF  Þ  sE   ø€ ÷ *5ñ *5á#×/Ñ/ð*5ñ !×,Ñ,ð*5ñ #'ð	*5ñ
 
×	Ñ	ñ*5r&   c                óè  € V P                  V4      w  rEV P                  WV4      p\        V4      p. p. p	VP                  p
\	        VP
                  ^ ,          4       EFT  p\        P                  ! . RO.V
R7      pW{,          p\        WÍ4      w  rä\        P                  ! V^ ,          R8H  4      '       d   \        WÍ4      p\        P                  ! V4      R,          pV^ ,          V8¬  P                  4       pVP                  4       '       g   K´  W[,          VP                  ^4      ,          p\        P                  ! W[,          ^ R7      p\        P                   ! RVV4      pV\        P"                  ! V4      ,          pVP%                  W[,          V,          4       V	P%                  V4       EKW  	  V'       d.   \        P&                  ! V4      p\        P&                  ! V	4      pMRRppVVV3# )rx   r(   rD  gš™™™™™é?)Úaxiszd,id->iN)rx   rx   rz   rz   )rr  rn  r   r)   r¨  ré   r"   r  r“   r•   rš   r‡   ÚnonzeroÚnumelÚsqueezerw  r=  ÚargminÚappendrW  )rJ   r„  r…  rø   r  r§   r¦   Úpred_boxes_as_cornersÚbest_class_embedsÚbest_box_indicesÚpred_boxes_deviceÚiÚeach_query_boxÚeach_query_pred_boxesÚiousÚiou_thresholdÚselected_indsÚselected_embeddingsÚmean_embedsÚmean_simÚbest_box_indr8  Úbox_indicess   &&&&                   r$   Úembed_image_queryÚ*OwlViTForObjectDetection.embed_image_queryÞ  sœ  € ð ×.Ñ.Ð/CÓD‰ˆØ×'Ñ'Ð(<ÐQiÓjˆ
Ü 8¸Ó DÐð ÐØÐØ1×8Ñ8ÐäÐ+×1Ñ1°!Õ4×5ˆAÜ"Ÿ\š\ª<¨.ÐARÔSˆNØ$9Õ$<Ð!Ü˜nÓD‰GˆDô �yŠy˜˜a� C™×(Ò(Ü*¨>ÓQ�ô "ŸIšI d›O¨cÕ1ˆMà! !�W¨Ñ5×>Ñ>Ó@ˆMØ×"Ñ"×$Ô$Ø&2¥o°m×6KÑ6KÈAÓ6NÕ&OÐ#Ü#Ÿjšj¨­¸qÔA�Ü Ÿ<š<¨	°;Ð@SÓT�Ø,¬U¯\ª\¸(Ó-CÕD�Ø!×(Ñ(¨­¸Õ)FÔGØ ×'Ñ'¨×5ñ' 6÷* Ü Ÿ;š;Ð'8Ó9ˆLÜŸ+š+Ð&6Ó7‰Kà(,¨d˜+ˆLà˜[¨*Ð4Ð4r&   c          
      ó~   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[RS[S[,          RS[/# )r   rû   Úquery_pixel_valuesNrø   r%  r    )r"   r[   rü   r   r   rª   )r#   r<   s   "€r$   r%   rF    s[   ø€ ÷ Q
ñ Q
á×'Ñ'ðQ
ñ "×-Ñ-°Õ4ðQ
ñ #'ð	Q
ñ
 Ñ+Õ,ðQ
ñ 
0ñQ
r&   c                óº  € V P                  W#R7      ^ ,          pV P                   ! RRVRV/VB w  rgVP                  w  r‰r«\        P                  ! WhWš,          V34      pVP                  w  r‰r«\        P                  ! WXWš,          V34      pV P	                  WÕV4      w  rïpV P                  WÎR7      w  ppV P                  WÆV4      p\        VVVVVVRVR7      # )a‚  
query_pixel_values (`torch.FloatTensor` of shape `(batch_size, num_channels, height, width)`):
    Pixel values of query image(s) to be detected. Pass in one query image per target image.

Examples:
```python
>>> import httpx
>>> from io import BytesIO
>>> from PIL import Image
>>> import torch
>>> from transformers import AutoProcessor, OwlViTForObjectDetection

>>> processor = AutoProcessor.from_pretrained("google/owlvit-base-patch16")
>>> model = OwlViTForObjectDetection.from_pretrained("google/owlvit-base-patch16")
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))
>>> query_url = "http://images.cocodataset.org/val2017/000000001675.jpg"
>>> with httpx.stream("GET", query_url) as response:
...     query_image = Image.open(BytesIO(response.read()))
>>> inputs = processor(images=image, query_images=query_image, return_tensors="pt")
>>> with torch.no_grad():
...     outputs = model.image_guided_detection(**inputs)
>>> # Target image sizes (height, width) to rescale box predictions [batch_size, 2]
>>> target_sizes = torch.Tensor([image.size[::-1]])
>>> # Convert outputs (bounding boxes and class logits) to Pascal VOC format (xmin, ymin, xmax, ymax)
>>> results = processor.post_process_image_guided_detection(
...     outputs=outputs, threshold=0.6, nms_threshold=0.3, target_sizes=target_sizes
... )
>>> i = 0  # Retrieve predictions for the first image
>>> boxes, scores = results[i]["boxes"], results[i]["scores"]
>>> for box, score in zip(boxes, scores):
...     box = [round(i, 2) for i in box.tolist()]
...     print(f"Detected similar object with confidence {round(score.item(), 3)} at location {box}")
Detected similar object with confidence 0.856 at location [10.94, 50.4, 315.8, 471.39]
Detected similar object with confidence 1.0 at location [334.84, 25.33, 636.16, 374.71]
```)rû   rø   rû   rø   )rj  r8  N)rY   r²   r³   r´   r   r§   rB   rC   r\   )r�  ré   r"   rî   rœ  rr  rn  rª   )rJ   rû   rŸ  rø   r%  r…  rk  r  r   rŒ  r�  Ú
hidden_dimrj  Úquery_image_featsr8  r�  r´   rB  r§   r³   s   &&&&,               r$   Úimage_guided_detectionÚ/OwlViTForObjectDetection.image_guided_detection
  s'  € ð^ !×/Ñ/Ø+ð 0ó 
à
õÐð '+×&9Ò&9ñ '
Ø%ð'
à%=ð'
ð ñ'
Ñ#ˆð IT×HYÑHYÑEˆ
Ð(9Ü—m’m KÐ>PÕ>dÐfpÐ1qÓrˆàHY×H_ÑH_ÑEˆ
Ð(9Ü!ŸMšMØÐ,>Õ,RÐT^Ð_ó
Ðð <@×;QÑ;QØÐ2Jó<
Ñ8ˆÐ(8ð
 '+×&:Ñ&:À{Ð&:Ó&nÑ#ˆ�lð !×.Ñ.¨{ÐIaÓbÐä5Ø$Ø0Ø/Ø-ØØ%Ø"Ø .ô	
ð 		
r&   c                ó˜   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  R,          RS[RS[S[,          RS[/# )r   r  rû   r"  Nrø   r%  r    )r"   r   r[   rü   r   r   r�   )r#   r<   s   "€r$   r%   rF  a  sh   ø€ ÷ V
ñ V
á—<‘<ðV
ñ ×'Ñ'ðV
ñ Ÿ™ tÕ+ð	V
ñ
 #'ðV
ñ Ñ+Õ,ðV
ñ 
%ñV
r&   c                ó  € V P                   ! RRVRVRVRV/VB w  rgpVP                  p	VP                  p
VP                  w  r¼rÞ\        P
                  ! W{WÍ,          V34      pVP                  ^ ,          V,          pVP                  VVVP                  R,          4      pVP                  VVVP                  R,          4      pVR,          ^ 8„  pV P                  WöV4      w  ppV P                  W÷V4      p\        VVVVVV	V
R7      # )	aö  
input_ids (`torch.LongTensor` of shape `(batch_size * num_max_text_queries, sequence_length)`, *optional*):
    Indices of input sequence tokens in the vocabulary. Indices can be obtained using [`AutoTokenizer`]. See
    [`PreTrainedTokenizer.encode`] and [`PreTrainedTokenizer.__call__`] for details. [What are input
    IDs?](../glossary#input-ids).

Examples:
```python
>>> import httpx
>>> from io import BytesIO
>>> from PIL import Image
>>> import torch

>>> from transformers import OwlViTProcessor, OwlViTForObjectDetection

>>> processor = OwlViTProcessor.from_pretrained("google/owlvit-base-patch32")
>>> model = OwlViTForObjectDetection.from_pretrained("google/owlvit-base-patch32")

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))
>>> text_labels = [["a photo of a cat", "a photo of a dog"]]
>>> inputs = processor(text=text_labels, images=image, return_tensors="pt")
>>> outputs = model(**inputs)

>>> # Target image sizes (height, width) to rescale box predictions [batch_size, 2]
>>> target_sizes = torch.tensor([(image.height, image.width)])
>>> # Convert outputs (bounding boxes and class logits) to Pascal VOC format (xmin, ymin, xmax, ymax)
>>> results = processor.post_process_grounded_object_detection(
...     outputs=outputs, target_sizes=target_sizes, threshold=0.1, text_labels=text_labels
... )
>>> # Retrieve predictions for the first image for the corresponding text queries
>>> result = results[0]
>>> boxes, scores, text_labels = result["boxes"], result["scores"], result["text_labels"]
>>> for box, score, text_label in zip(boxes, scores, text_labels):
...     box = [round(i, 2) for i in box.tolist()]
...     print(f"Detected {text_label} with confidence {round(score.item(), 3)} at location {box}")
Detected a photo of a cat with confidence 0.707 at location [324.97, 20.44, 640.58, 373.29]
Detected a photo of a cat with confidence 0.717 at location [1.46, 55.26, 315.55, 472.17]
```r  rû   r"  rø   )rY   rX   r¦   r   r§   rB   rC   r\   rÅ   rT  )	r}  rB   rC   ré   r"   rî   rr  rn  r�   )rJ   r  rû   r"  rø   r%  r8  rk  rz  r  r  r   rŒ  r�  r¡  rj  Úmax_text_queriesr9  rB  r§   r¦   s   &&&&&,               r$   r  Ú OwlViTForObjectDetection.forward_  sC  € ðf .2×-EÒ-Eñ .
Øð.
à%ð.
ð *ð.
ð &>ð	.
ð
 ñ.
Ñ*ˆ 7ð ×0Ñ0ˆØ ×4Ñ4ˆàHS×HYÑHYÑEˆ
Ð(9Ü—m’m KÐ>PÕ>dÐfpÐ1qÓrˆð %Ÿ?™?¨1Õ-°Õ;ÐØ#×+Ñ+¨JÐ8HÈ,×J\ÑJ\Ð]_ÕJ`Óaˆð ×%Ñ% jÐ2BÀIÇOÁOÐTVÕDWÓXˆ	Ø˜vÕ&¨Ñ*ˆ
ð '+×&:Ñ&:¸;ÐV`Ó&aÑ#ˆ�lð ×'Ñ'¨ÐBZÓ[ˆ
ä*Ø$Ø$Ø!ØØ%Ø*Ø .ô
ð 	
r&   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r¸   r”  )r#   r<   s   "€r$   r%   rF    s   ø‡ ‚ ÙÑò r&   )	rŠ  rI  rH  r¹   rJ  rŒ  r�  rq  rL  r  rÝ  rù  )r]   r^   r_   r`   rÇ   Ústaticmethodr]  r‹  rn  rr  r}  r�  rœ  r   r   r£  r  rb   rc   rd   r  r  s   @@r$   r‰  r‰    s´   ù‡ € ÷ó ð$ ÷ó ð÷ ð ÷$ò ÷B1ò 1÷&-4ò -4÷^'.ò '.÷R*5ò *5ðX Ø÷Q
ñ Q
ó ó ðQ
ðf Ø÷V
ñ V
ó ó ðV
÷O
 … r&   r‰  )NrD  )r�  rp  rÊ  rë  r‰  )Kra   Úcollections.abcr   Údataclassesr   Útypingr   r"   r   r   Ú r   r|  Úactivationsr   Úmasking_utilsr	   Úmodeling_layersr
   Úmodeling_outputsr   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   r   r   Úutils.genericr   r   Úutils.output_capturingr   Úconfiguration_owlvitr   r   r   Útransformers.image_transformsr   Ú
get_loggerr]   Úloggerr.   r5   r7   rs   r{   r“   rš   r�   rª   r&  r¶   r	  r0  r2  rP  r]  rp  r£  r²  rÊ  rß  rë  r�  r  r.  r‰  Ú__all__r\   r&   r$   Ú<module>r½     s$  ðñ å $Ý !Ý ã ß å &Ý !Ý /Ý 9ß Kß FÝ &÷÷ ÷ JÝ 5ß TÑ Tñ ×ÒÝFð 
×	Ò	˜HÓ	%€õ`õ
-ð Ø
ô!
�;ó !
ó ó ð!
õJGõEò"ò"'ñ0 ðôð
 ô+
 +ó +
ó óð+
ñ\ ðôð
 ô*
¨[ó *
ó óð*
ôZF˜RŸY™Yô FôR˜2Ÿ9™9ô ÷<%ô86)�b—i‘iô 6)ôt�—	‘	ô ô Ð3ô ðB ô4v˜Oó 4vó ð4vôp
�B—I‘Iô 
ôD<
Ð1ô <
ô~/
Ð+ô /
ôd(
Ð3ô (
ôV.
Ð-ô .
ðb ôk
Ð'ó k
ó ðk
ô\˜bŸi™iô ô&-1 §	¡	ô -1ô`]
Ð4ô ]
ò@ w‚r&   