+
    œ°³jìÒ  ã                   ó*  € R t ^ RIt^ RIHt ^ RIHt ^ RIt^ RI	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 ^R
IHt ^RIHt ^RIHtHtHtHtH t H!t! ^RI"H#t# ^RI$H%t% ^RI&H't'H(t(H)t) ] PT                  ! ]+4      t,R R lt-R R lt.R R lt/RBR R llt0RCR lt1R t2 ! R R]
Pf                  4      t4 ! R R]
Pf                  4      t5 ! R R]
Pf                  4      t6]] ! R  R!]4      4       4       t7 ! R" R#]
Pf                  4      t8 ! R$ R%]
Pf                  4      t9 ! R& R']
Pf                  4      t: ! R( R)]
Pf                  4      t; ! R* R+]
Pf                  4      t< ! R, R-]<4      t= ! R. R/]
Pf                  4      t> ! R0 R1]4      t?] ! R2 R3]4      4       t@ ! R4 R5]
Pf                  4      tA ! R6 R7]
Pf                  4      tB ! R8 R9]@4      tC ! R: R;]@4      tD ! R< R=]
Pf                  4      tE ! R> R?]@4      tF] ! R@ RA]@4      4       tG. RDOtHR# )EzPyTorch GroupViT model.N)Ú	dataclass)ÚAny)Únn)Úinitialization)ÚACT2FN)Úcreate_causal_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithPooling)ÚPreTrainedModel)ÚUnpack)ÚModelOutputÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚloggingÚ	torch_int)Úmerge_with_config_defaults)Úcapture_outputs)ÚGroupViTConfigÚGroupViTTextConfigÚGroupViTVisionConfigc                óX   € V ^8„  d   QhR\         P                  R\         P                  /# )é   ÚlogitsÚreturn©ÚtorchÚTensor)Úformats   "Úo/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/groupvit/modeling_groupvit.pyÚ__annotate__r!   *   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*   *   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)r,   Úcaption_lossÚ
image_losss   &  r    Úimage_text_contrastive_lossr1   /   s(   € Ü# JÓ/€LÜ! *§,¡,Ó/€JØÕ%¨Õ,Ð,r"   c                óD   € V ^8„  d   QhR\         P                  R\        /# )r   r   Údim©r   r   Úint)r   s   "r    r!   r!   5   s   € ÷ ñ œŸ™ð ¬Cñ r"   c                 ó  € V P                  V4      pVP                  VR R7      ^,          p\        P                  ! V \        P                  R7      P                  WR4      pWBP                  4       ,
          V,           pV# )T©Úkeepdim©Úmemory_formatç      ð?)ÚsoftmaxÚmaxr   Ú
zeros_likeÚlegacy_contiguous_formatÚscatter_Údetach)r   r3   Úy_softÚindexÚy_hardÚrets   &&    r    Úhard_softmaxrF   5   sf   € Ø�^‰^˜CÓ €Fà�J‰J�s DˆJÓ)¨!Õ,€EÜ×Ò˜f´E×4RÑ4RÔS×\Ñ\Ð]`ÐilÓm€FØ
—=‘=“?Õ
" VÕ
+€Cà€Jr"   c          
      ó|   € V ^8„  d   QhR\         P                  R\        R\        R\        R\         P                  /# )r   r   ÚtauÚhardr3   r   )r   r   ÚfloatÚboolr5   )r   s   "r    r!   r!   ?   s;   € ÷ ñ œ5Ÿ<™<ð ¬eð ¼tð ÔRUð Ô_d×_kÑ_kñ r"   c           
      ór  € \         P                  P                  P                  \         P                  ! RR V P
                  V P                  R7      \         P                  ! RRV P
                  V P                  R7      4      pVP                  V P                  4      pW,           V,          pVP                  V4      pV'       dp   VP                  VRR7      ^,          p\         P                  ! V \         P                  R7      P                  W7R4      pW†P                  4       ,
          V,           p	V	# Tp	V	# )ç        )r%   Údtyper;   Tr7   r9   © )r   ÚdistributionsÚgumbelÚGumbelÚfullr%   rN   ÚsampleÚshaper<   r=   r>   r?   r@   rA   )
r   rH   rI   r3   Úgumbel_distÚgumbelsrB   rC   rD   rE   s
   &&&&      r    Úgumbel_softmaxrX   ?   sê   € ä×%Ñ%×,Ñ,×3Ñ3Ü�
Š
�2�s 6§=¡=¸¿¹ÔEÜ�
Š
�2�s 6§=¡=¸¿¹ÔEó€Kð × Ñ  §¡Ó.€GàÕ 3Õ&€GØ�_‰_˜SÓ!€Fçà—
‘
˜3¨�
Ó-¨aÕ0ˆÜ×!Ò! &¼×8VÑ8VÔW×`Ñ`ÐadÐmpÓqˆØ—}‘}“Õ&¨Õ/ˆð €Jð ˆØ€Jr"   c                ó  € W,          V P                   ^,          ,          R,          pW8”  dA   \        \        P                  ! W$,          4      4      pV P                   ^,          V,          pM?\        \        P                  ! W,          4      4      pV P                   ^,          V,          pV P                   ^ ,          pV P                   ^,          pV P	                  WxWe4      p \
        P                  P                  WV3RVR7      p V # )až  
Args:
    attentions (`torch.Tensor`): attention map of shape [batch_size, groups, feat_height*feat_width]
    height (`int`): height of the output attention map
    width (`int`): width of the output attention map
    align_corners (`bool`, *optional*): the `align_corner` argument for `nn.functional.interpolate`.

Returns:
    `torch.Tensor`: resized attention map of shape [batch_size, groups, height, width]
ç      à?Úbilinear©ÚsizeÚmodeÚalign_corners)rU   r5   ÚnpÚroundÚreshaper   r&   Úinterpolate)	Ú
attentionsÚheightÚwidthr_   ÚscaleÚ
feat_widthÚfeat_heightÚ
batch_sizeÚgroupss	   &&&&     r    Úresize_attention_maprl   U   s×   € ð �^˜z×/Ñ/°Õ2Õ2°sÕ:€EØ„~ÜœŸš %¥-Ó0Ó1ˆ
Ø ×&Ñ& qÕ)¨ZÕ7‰äœ"Ÿ(š( 6¥>Ó2Ó3ˆØ×%Ñ% aÕ(¨KÕ7ˆ
à×!Ñ! !Õ$€JØ×Ñ˜aÕ €Fà×#Ñ# J¸ÓP€JÜ—‘×*Ñ*Ø %˜¨zÈð +ó €Jð Ðr"   c           
     ó~  € . p\         P                  ! 4       ;_uu_ 4        RpV  Fp  pVP                  ^ ^^4      P                  4       pVf   TpMW4,          p\	        VP                  ^ ^^4      P                  4       .VO5!  pVP                  V4       Kr  	  RRR4       VR,          pV#   + '       g   i     L; i)a  
Args:
    attentions (`tuple(torch.FloatTensor)`: tuple of attention maps returned by `GroupViTVisionTransformer`
    hw_shape (`tuple(int)`): height and width of the output attention map
Returns:
    `torch.Tensor`: the attention map of shape [batch_size, groups, height, width]
Néÿÿÿÿ)r   Úno_gradÚpermuteÚ
contiguousrl   Úappend)rd   Úhw_shapeÚ	attn_mapsÚprev_attn_masksÚ
attn_masksÚcur_attn_mapÚfinal_groupings   &&     r    Úget_grouping_from_attentionsry   s   s§   € ð €IÜ	�Š��ØˆÛ$ˆJà#×+Ñ+¨A¨q°!Ó4×?Ñ?ÓAˆJØÒ&Ø",‘à"1Õ">�ä/°×0GÑ0GÈÈ1ÈaÓ0P×0[Ñ0[Ó0]ÐiÐ`hÓiˆLØ×Ñ˜\Ö*ñ %÷ 
ð ˜r•]€NàÐ÷! 
�ús    A9B,Â,B<	c                   óD   a a€ ] tR t^�t oV3R lV 3R lltR tRtVtV ;t# )ÚGroupViTCrossAttentionLayerc                ó    <€ V ^8„  d   QhRS[ /# ©r   Úconfig©r   )r   Ú__classdict__s   "€r    r!   Ú(GroupViTCrossAttentionLayer.__annotate__‘   s   ø€ ÷ Uñ UÑ3ñ Ur"   c                ó(  <€ \         S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        R# ©©ÚepsN)ÚsuperÚ__init__ÚGroupViTAttentionÚattnr   Ú	LayerNormÚhidden_sizeÚlayer_norm_epsÚnorm2ÚGroupViTMLPÚmlpÚ	norm_post©Úselfr~   Ú	__class__s   &&€r    r‡   Ú$GroupViTCrossAttentionLayer.__init__‘   sb   ø€ Ü‰ÑÔÜ% fÓ-ˆŒ	Ü—\’\ &×"4Ñ"4¸&×:OÑ:OÔPˆŒ
Ü˜vÓ&ˆŒÜŸš f×&8Ñ&8¸f×>SÑ>SÔTˆŽr"   c                ó¶   € TpW0P                  WR 7      ^ ,          ,           pW0P                  V P                  V4      4      ,           pV P                  V4      pV# ))Úencoder_hidden_states©r‰   r�   r�   r�   )r’   ÚqueryÚkeyÚxs   &&& r    ÚforwardÚ#GroupViTCrossAttentionLayer.forward˜   sK   € ØˆØ—	‘	˜%�	Ó;¸AÕ>Õ>ˆØ—‘˜Ÿ™ A›Ó'Õ'ˆØ�N‰N˜1ÓˆØˆr"   r—   ©	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r‡   r›   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r“   r€   s   @@r    r{   r{   �   s   ù‡ € ÷Uó U÷ò r"   r{   c                   óN   a a€ ] tR t^ t oV3R lV 3R lltRR ltR tRtVtV ;t	# )ÚGroupViTAssignAttentionc                ó    <€ V ^8„  d   QhRS[ /# r}   r   )r   r€   s   "€r    r!   Ú$GroupViTAssignAttention.__annotate__¡   s   ø€ ÷ ,ñ ,Ñ3ñ ,r"   c                óö  <€ \         SV `  4        VP                  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	        VP                  V n
        R# )rZ   Nç      à¿)r†   r‡   r‹   rg   r   ÚLinearÚq_projÚk_projÚv_projÚprojÚ
assign_epsr‘   s   &&€r    r‡   Ú GroupViTAssignAttention.__init__¡   s¥   ø€ Ü‰ÑÔØ×'Ñ'¨Õ-ˆŒ
ä—i’i × 2Ñ 2°F×4FÑ4FÓGˆŒÜ—i’i × 2Ñ 2°F×4FÑ4FÓGˆŒÜ—i’i × 2Ñ 2°F×4FÑ4FÓGˆŒÜ—I’I˜f×0Ñ0°&×2DÑ2DÓEˆŒ	Ø ×+Ñ+ˆŽr"   c                óÊ   € V'       d#   V P                   '       d   \        VRVR7      pV# V'       d   \        VRR7      pV# \        P                  P                  VRR7      pV# )r   )r3   rI   ©r3   éþÿÿÿ)ÚtrainingrX   rF   r   r&   r<   )r’   r‰   rQ   rI   s   &&&&r    Úget_attnÚ GroupViTAssignAttention.get_attn«   sZ   € ß�d—m—m�mÜ! $¨B°TÔ:ˆDð ˆ÷ Ü# D¨bÔ1�ð ˆô —}‘}×,Ñ,¨T°rÐ,Ó:�àˆr"   c                ó”  € TpV P                  V4      pV P                  V4      pV P                  V4      pWP                  RR4      ,          V P                  ,          pV P                  V4      pV P                  VRRR7      pWUP                  RRR7      V P                  ,           ,          pWS,          pV P                  V4      pWv3# )r   F)rQ   rI   T©r3   r8   rµ   rn   )	r­   r®   r¯   Ú	transposerg   r·   Úsumr±   r°   )r’   r˜   r™   ÚvalueÚraw_attnr‰   Ú	soft_attnÚouts   &&&     r    r›   ÚGroupViTAssignAttention.forward¶   s¯   € Øˆà—‘˜EÓ"ˆð �k‰k˜#Óˆð —‘˜EÓ"ˆð ŸM™M¨"¨bÓ1Õ1°T·Z±ZÕ?ˆà�}‰}˜XÓ&ˆØ—M‘M (°5¸u�MÓEˆ	à—x‘x B°�xÓ5¸¿¹ÕGÕHˆà�lˆà�i‰i˜‹nˆàˆ~Ðr"   )r±   r®   r°   r­   rg   r¯   )TT)
rž   rŸ   r    r¡   r‡   r·   r›   r¢   r£   r¤   r¥   s   @@r    r§   r§       s   ù‡ € ÷,ó ,ô	÷ò r"   r§   c                   óJ   a a€ ] tR t^Ðt oV3R lV 3R lltR tR tRtVtV ;t	# )ÚGroupViTTokenAssignc                ó    <€ V ^8„  d   QhRS[ /# r}   r   )r   r€   s   "€r    r!   Ú GroupViTTokenAssign.__annotate__Ñ   s   ø€ ÷ fñ fÑ3ñ fr"   c                óx  <€ \         SV `  4        W0n        \        P                  ! VP
                  VP                  R 7      V n        \        VP                  \        P                  P                  4      '       d   VP                  MVP                  VP                  3pV Uu. uF  p\        WQP
                  ,          4      NK   	  upw  rg\        WWc4      V n        \        P                  ! VP
                  VP                  R 7      V n        \        P                  ! VP
                  VP                  R 7      V n        \%        V4      V n        \)        V4      V n        \        P                  ! VP
                  VP                  R 7      V n        \/        WP
                  WqP
                  4      V n        R# u upi rƒ   )r†   r‡   Únum_output_groupr   rŠ   r‹   rŒ   Únorm_tokensÚ
isinstanceÚassign_mlp_ratioÚcollectionsÚabcÚIterabler5   ÚGroupViTMixerMLPÚ	mlp_interÚnorm_post_tokensÚnorm_xr{   Úpre_assign_attnr§   ÚassignÚ
norm_new_xrŽ   Úmlp_channels)	r’   r~   Únum_group_tokenrÇ   rÊ   rš   Ú
tokens_dimÚchannels_dimr“   s	   &&&&    €r    r‡   ÚGroupViTTokenAssign.__init__Ñ   sD  ø€ Ü‰ÑÔØ 0ÔäŸ<š<¨×(:Ñ(:À×@UÑ@UÔVˆÔô ˜&×1Ñ1´;·?±?×3KÑ3K×LÒLð ×#Ò#à×)Ñ)¨6×+BÑ+BÐCð 	ñ
 JZÓ#ZÑIYÀA¤C¨×,>Ñ,>Õ(>Ö$?ÑIYÑ#ZÑ ˆ
Ü)¨&À:Ó`ˆŒÜ "§¢¨V×-?Ñ-?ÀV×EZÑEZÔ [ˆÔä—l’l 6×#5Ñ#5¸6×;PÑ;PÔQˆŒÜ:¸6ÓBˆÔä-¨fÓ5ˆŒÜŸ,š, v×'9Ñ'9¸v×?TÑ?TÔUˆŒÜ'¨×0BÑ0BÀL×RdÑRdÓeˆÖùò $[s   Â#$F7c                óJ   € V P                  V4      pV P                  V4      pV# )z¾
Args:
    group_tokens (torch.Tensor): group tokens, [batch_size, num_group_tokens, channels]

Returns:
    projected_group_tokens (torch.Tensor): [batch_size, num_output_groups, channels]
)rÏ   rÐ   )r’   Úgroup_tokensÚprojected_group_tokenss   && r    Úproject_group_tokenÚ'GroupViTTokenAssign.project_group_tokenæ   s+   € ð "&§¡°Ó!=ÐØ!%×!6Ñ!6Ð7MÓ!NÐØ%Ð%r"   c                ó  € V P                  V4      pV P                  V4      pV P                  V4      pV P                  W14      pV P	                  W14      w  rEWC,          pW@P                  V P                  V4      4      ,           pWE3# )zÀ
Args:
    image_tokens (`torch.Tensor`): image tokens, of shape [batch_size, input_length, channels]
    group_tokens (`torch.Tensor`): group tokens, [batch_size, num_group_tokens, channels]
)rÈ   rÑ   rÝ   rÒ   rÓ   rÕ   rÔ   )r’   Úimage_tokensrÛ   rÜ   Únew_image_tokensÚ	attentions   &&&   r    r›   ÚGroupViTTokenAssign.forwardó   sˆ   € ð ×'Ñ'¨Ó5ˆØ—{‘{ <Ó0ˆà!%×!9Ñ!9¸,Ó!GÐØ!%×!5Ñ!5Ð6LÓ![ÐØ&*§k¡kÐ2HÓ&WÑ#ÐØÕ2Ðà+×.?Ñ.?ÀÇÁÐP`Ó@aÓ.bÕbÐàÐ*Ð*r"   )	rÓ   rÕ   rÏ   rÔ   rÐ   rÈ   rÑ   rÇ   rÒ   )
rž   rŸ   r    r¡   r‡   rÝ   r›   r¢   r£   r¤   r¥   s   @@r    rÃ   rÃ   Ð   s    ù‡ € ÷fó fò*&÷+ò +r"   rÃ   c                   ób   a € ] tR tRt o RtRtRtRtRtRt	Rt
RtRtV 3R lR ltV 3R ltRtV tR# )ÚGroupViTModelOutputi  a…  
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.
segmentation_logits (`torch.FloatTensor` of shape `(batch_size, config.num_labels, logits_height, logits_width)`):
    Classification scores for each pixel.

    <Tip warning={true}>

    The logits returned do not necessarily have the same size as the `pixel_values` passed as inputs. This is
    to avoid doing two interpolations and lose some quality when a user needs to resize the logits to the
    original image size as post-processing. You should always check your logits shape and resize as needed.

    </Tip>
text_embeds (`torch.FloatTensor` of shape `(batch_size, output_dim`):
    The text embeddings obtained by applying the projection layer to the pooled output of
    [`GroupViTTextModel`].
image_embeds (`torch.FloatTensor` of shape `(batch_size, output_dim`):
    The image embeddings obtained by applying the projection layer to the pooled output of
    [`GroupViTVisionModel`].
text_model_output (`BaseModelOutputWithPooling`):
    The output of the [`GroupViTTextModel`].
vision_model_output (`BaseModelOutputWithPooling`):
    The output of the [`GroupViTVisionModel`].
Nc                ó0   <€ V ^8„  d   QhRS[ S[,          /# ©r   r   )Útupler   )r   r€   s   "€r    r!   Ú GroupViTModelOutput.__annotate__2  s   ø€ ÷ 
ñ 
™%¡�*ñ 
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)rì   Úvision_model_output)ÚgetattrÚto_tuple)Ú.0Úkr’   s   & €r    Ú	<genexpr>Ú/GroupViTModelOutput.to_tuple.<locals>.<genexpr>3  s<   øé € ð 
á �ð Ð LÔLˆD�ŽGÔRYÐZ^Ð`aÓRb×RkÑRkÓRmÔmÛ ùs   ƒ7:)rè   Úkeys©r’   s   fr    rï   ÚGroupViTModelOutput.to_tuple2  sA   ø€ ßŒuô 
à—Y‘Y”[ó
�uð 	
ˆuô 
à—Y‘Y”[ó
ó 
ð 	
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   NÚlossÚlogits_per_imageÚlogits_per_textÚsegmentation_logitsÚtext_embedsÚimage_embedsrì   rí   )r   ÚFloatTensorr
   )r   r€   s   "€r    r!   ré     s¿   ø‡ ‚ ñD ×
Ñ
˜dÕ
"Ñ)ñE ñF ×'Ñ'¨$Õ.Ñ5ñG ñH ×&Ñ&¨Õ-Ñ4ñI ñJ ×*Ñ*¨TÕ1Ñ8ñK ñL ×"Ñ" TÕ)Ñ0ñM ñN ×#Ñ# dÕ*Ñ1ñO ñP 2Ñ8ñQ ñR 4Ñ:òS r"   rO   )rž   rŸ   r    r¡   Ú__doc__rø   rù   rú   rû   rü   rý   rì   rí   rï   Ú__annotate_func__r¢   r£   )r€   s   @r    rå   rå     sJ   ø‡ € ñð> &*€DØ15ÐØ04€OØ48ÐØ,0€KØ-1€LØ48ÐØ6:Ð÷
ð 
÷W ƒ r"   rå   c                   ó\   a a€ ] tR tRt oRtRV3R lV 3R llltR	V3R lR lltRtVtV ;t	# )
ÚGroupViTPatchEmbeddingsi9  z
Image to Patch Embedding.
c                óž   <€ V ^8„  d   QhRS[ S[S[ ,          ,          S[S[ S[ 3,          ,          RS[ S[S[ S[ 3,          ,          RS[ RS[ /# )r   Ú
image_sizeÚ
patch_sizeÚnum_channelsÚ	embed_dim)r5   Úlistrè   )r   r€   s   "€r    r!   Ú$GroupViTPatchEmbeddings.__annotate__>  s[   ø€ ÷ hñ há™$™s�)•O¡e©C±¨H¥oÕ5ðhñ ™%¡¡S �/Õ)ðhñ ð	hñ
 ñhr"   c                ó¤  <€ \         SV `  4        \        V\        P                  P
                  4      '       d   TMW3p\        V\        P                  P
                  4      '       d   TMW"3pV^,          V^,          ,          V^ ,          V^ ,          ,          ,          pWn        W n        WPn        \        P                  ! W4W"R7      V n        R# )é   )Úkernel_sizeÚstrideN)r†   r‡   rÉ   rË   rÌ   rÍ   r  r  Únum_patchesr   ÚConv2dÚ
projection)r’   r  r  r  r  r  r“   s   &&&&& €r    r‡   Ú GroupViTPatchEmbeddings.__init__>  s™   ø€ ô 	‰ÑÔÜ#-¨j¼+¿/¹/×:RÑ:R×#SÒ#S‘ZÐZdÐYqˆ
Ü#-¨j¼+¿/¹/×:RÑ:R×#SÒ#S‘ZÐZdÐYqˆ
Ø! !•}¨
°1­Õ5¸*ÀQ½-È:ÐVWÍ=Õ:XÕYˆØ$ŒØ$ŒØ&ÔäŸ)š) LÈÔgˆŽr"   c                óT   <€ V ^8„  d   QhRS[ P                  RS[RS[ P                  /# ©r   Úpixel_valuesÚinterpolate_pos_encodingr   ©r   r   rK   )r   r€   s   "€r    r!   r	  O  s-   ø€ ÷ 	ñ 	¡E§L¡Lð 	ÉDð 	Ñ]b×]iÑ]iñ 	r"   c                ód  € VP                   w  r4rVV'       gi   WPP                  ^ ,          8w  g   W`P                  ^,          8w  d;   \        RV RV RV P                  ^ ,           RV P                  ^,           R2	4      hV P                  V4      P	                  ^4      P                  ^^4      pV# )é    zInput image size (Ú*z) doesn't match model (ú).)rU   r  Ú
ValueErrorr  Úflattenr»   )r’   r  r  rj   r  re   rf   rš   s   &&&     r    r›   ÚGroupViTPatchEmbeddings.forwardO  s¥   € Ø2>×2DÑ2DÑ/ˆ
 &ß'ØŸ™¨Õ+Ô+¨u¿¹ÈÕ8JÔ/JÜ Ø(¨¨°°%°ð 9ØŸ™¨Õ+Ð,¨A¨d¯o©o¸aÕ.@Ð-AÀðEóð ð �O‰O˜LÓ)×1Ñ1°!Ó4×>Ñ>¸qÀ!ÓDˆØˆr"   )r  r  r  r  )éà   é   é   i   ©F©
rž   rŸ   r    r¡   rÿ   r‡   r›   r¢   r£   r¤   r¥   s   @@r    r  r  9  s%   ù‡ € ñ÷hõ h÷"	÷ 	ò 	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	# )
ÚGroupViTVisionEmbeddingsi[  c                ó    <€ V ^8„  d   QhRS[ /# r}   r   )r   r€   s   "€r    r!   Ú%GroupViTVisionEmbeddings.__annotate__\  s   ø€ ÷ ñ Ñ3ñ r"   c                ó  <€ \         SV `  4        \        VP                  VP                  VP
                  VP                  R 7      V n        V P                  P                  p\        P                  ! \        P                  ! ^W!P                  4      4      V n        \        P                  ! VP                  4      V n        \        P                   ! VP                  VP"                  R7      V n        VP                  V n        Wn        R# ))r  r  r  r  r„   N)r†   r‡   r  r  r  r  r‹   Úpatch_embeddingsr  r   Ú	Parameterr   ÚzerosÚposition_embeddingsÚDropoutÚdropoutrŠ   rŒ   Ú	layernormr~   )r’   r~   r  r“   s   && €r    r‡   Ú!GroupViTVisionEmbeddings.__init__\  s¸   ø€ Ü‰ÑÔä 7Ø×(Ñ(Ø×(Ñ(Ø×,Ñ,Ø×(Ñ(ô	!
ˆÔð ×+Ñ+×7Ñ7ˆÜ#%§<¢<´·²¸A¸{×L^ÑL^Ó0_Ó#`ˆÔ Ü—z’z &§.¡.Ó1ˆŒÜŸš f×&8Ñ&8¸f×>SÑ>SÔTˆŒØ ×+Ñ+ˆŒØŽr"   c                óZ   <€ V ^8„  d   QhRS[ P                  RS[RS[RS[ P                  /# )r   Ú
embeddingsre   rf   r   r4   )r   r€   s   "€r    r!   r&  l  s5   ø€ ÷ $ñ $±5·<±<ð $Éð $ÑUXð $Ñ]b×]iÑ]iñ $r"   c                óh  € VP                   ^,          pV P                  P                   ^,          p\        P                  P	                  4       '       g   WE8X  d   W#8X  d   V P                  # V P                  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V# )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 and no class embeddings.

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
rZ   ÚbicubicFr\   rn   )rU   r+  r   ÚjitÚ
is_tracingr  r   rb   rp   r   r&   rc   Úview)r’   r1  re   rf   r  Únum_positionsÚpatch_pos_embedr3   Ú
new_heightÚ	new_widthÚsqrt_num_positionss   &&&&       r    r  Ú1GroupViTVisionEmbeddings.interpolate_pos_encodingl  s  € ð !×&Ñ& qÕ)ˆØ×0Ñ0×6Ñ6°qÕ9ˆô �y‰y×#Ñ#×%Ò%¨+Ô*FÈ6Ì?Ø×+Ñ+Ð+à×2Ñ2ˆà×Ñ˜rÕ"ˆàŸ™Õ.ˆ
ØŸ_™_Õ,ˆ	ä& }°cÕ'9Ó:ÐØ)×1Ñ1°!Ð5GÐ]`ÓaˆØ)×1Ñ1°!°Q¸¸1Ó=ˆäŸ-™-×3Ñ3ØØÐ(ØØð	 4ó 
ˆð *×1Ñ1°!°Q¸¸1Ó=×BÑBÀ1ÀbÈ#ÓNˆØÐr"   c                óT   <€ V ^8„  d   QhRS[ P                  RS[RS[ P                  /# r  r  )r   r€   s   "€r    r!   r&  ’  s-   ø€ ÷ ñ ¡E§L¡Lð ÉDð Ñ]b×]iÑ]iñ r"   c                ó  € VP                   w  r4rVV P                  WR 7      pV P                  V4      pVP                  4       w  r8p	V'       d   WpP	                  WuV4      ,           pMWpP
                  ,           pV P                  V4      pV# ))r  )rU   r(  r.  r]   r  r+  r-  )
r’   r  r  rj   r  re   rf   r1  Úseq_lenÚ_s
   &&&       r    r›   Ú GroupViTVisionEmbeddings.forward’  s�   € Ø2>×2DÑ2DÑ/ˆ
 &Ø×*Ñ*¨<Ð*Ókˆ
à—^‘^ JÓ/ˆ
à!+§¡Ó!2Ñˆ
˜Q÷ $Ø#×&CÑ&CÀJÐX]Ó&^Õ^‰Jà#×&>Ñ&>Õ>ˆJà—\‘\ *Ó-ˆ
àÐr"   )r~   r-  r.  r(  r  r+  r!  )
rž   rŸ   r    r¡   r‡   r  r›   r¢   r£   r¤   r¥   s   @@r    r$  r$  [  s)   ù‡ € ÷ó ÷ $ð $÷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# )ÚGroupViTTextEmbeddingsi¦  c                ó    <€ V ^8„  d   QhRS[ /# r}   ©r   )r   r€   s   "€r    r!   Ú#GroupViTTextEmbeddings.__annotate__§  s   ø€ ÷ vñ vÑ1ñ vr"   c                óh  <€ \         SV `  4        VP                  p\        P                  ! VP
                  V4      V n        \        P                  ! VP                  V4      V n        \        P                  ! \        P                  ! VP                  4      P                  R4      RR7      V n        R# )r  F)Ú
persistentN©r  rn   )r†   r‡   r‹   r   Ú	EmbeddingÚ
vocab_sizeÚtoken_embeddingÚmax_position_embeddingsÚposition_embeddingÚBufferr   r(   ÚexpandÚposition_ids©r’   r~   r  r“   s   && €r    r‡   ÚGroupViTTextEmbeddings.__init__§  s|   ø€ Ü‰ÑÔØ×&Ñ&ˆ	ä!Ÿ|š|¨F×,=Ñ,=¸yÓIˆÔÜ"$§,¢,¨v×/MÑ/MÈyÓ"YˆÔô Ÿ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_idsNrQ  Úinputs_embedsr   )r   Ú
LongTensorrþ   r   )r   r€   s   "€r    r!   rF  ±  sX   ø€ ÷ ñ á×#Ñ# dÕ*ðñ ×&Ñ&¨Õ-ðñ ×(Ñ(¨4Õ/ð	ñ
 
�‰ñr"   c                óh  € Ve   VP                   R,          MVP                   R,          pV P                  P                  P                   ^ ,          pWE8”  d   \        RV RV 24      hVf   V P                  RR V13,          pVf   V P                  V4      pV P                  V4      pW6,           pV# )NzRSequence length must be less than max_position_embeddings (got `sequence length`: z and max_position_embeddings: ºNNNrn   rµ   )rU   rN  Úweightr  rQ  rL  )r’   rU  rQ  rV  Ú
seq_lengthÚmax_position_embeddingr+  r1  s   &&&&    r    r›   ÚGroupViTTextEmbeddings.forward±  sÁ   € ð -6Ò,A�Y—_‘_ RÖ(À}×GZÑGZÐ[]ÕG^ˆ
Ø!%×!8Ñ!8×!?Ñ!?×!EÑ!EÀaÕ!HÐàÔ.ÜØdØ�,Ð<Ð=SÐ<TðVóð ð
 ÒØ×,Ñ,¨Q°°°¨^Õ<ˆLàÒ Ø ×0Ñ0°Ó;ˆMà"×5Ñ5°lÓCÐØ"Õ8ˆ
àÐr"   )rN  rQ  rL  ©NNNr�   r¥   s   @@r    rC  rC  ¦  s    ù‡ € ÷vó v÷÷ ò r"   rC  c                   ó„   a a€ ] tR tRt oRtV3R lV 3R llt]R 4       tR tRV3R lR llt	RV3R	 lR
 llt
RtVtV ;t# )ÚGroupViTStageiÌ  zMThis corresponds to the `GroupingLayer` class in the GroupViT implementation.c          
      ó8   <€ V ^8„  d   QhRS[ RS[RS[RS[RS[/# )r   r~   ÚdepthÚnum_prev_group_tokenrÖ   rÇ   ©r   r5   )r   r€   s   "€r    r!   ÚGroupViTStage.__annotate__Ï  s=   ø€ ÷  (ñ  (á$ð (ñ ð (ñ "ð	 (ñ
 ð (ñ ñ (r"   c           	     óˆ  <€ \         SV `  4        W n        W@n        V^ 8”  d<   \        P
                  ! \        P                  ! ^WAP                  4      4      V n	        MRV n	        \        P                  ! \        V4       Uu. uF  p\        V4      NK  	  up4      V n        V^ 8”  d   \        VVVR7      V n        MRV n        V^ 8”  dl   V^ 8”  de   \        P                   ! \        P"                  ! VP                  VP$                  R7      \'        WVP                  ^,          V4      4      V n        R# RV n        R# u upi )r  N)r~   rÖ   rÇ   r„   )r†   r‡   rb  rÖ   r   r)  r   r*  r‹   Úgroup_tokenÚ
ModuleListÚrangeÚGroupViTEncoderLayerÚlayersrÃ   Ú
downsampleÚ
SequentialrŠ   rŒ   rÎ   Úgroup_projector)r’   r~   rb  rc  rÖ   rÇ   r@  r“   s   &&&&&& €r    r‡   ÚGroupViTStage.__init__Ï  s   ø€ ô 	‰ÑÔØŒ
Ø.ÔØ˜QÔÜ!Ÿ|š|¬E¯KªK¸¸?×L^ÑL^Ó,_Ó`ˆDÕà#ˆDÔÜ—m’mÌ5ÐQVÌ<Ó$XÉ<ÀaÔ%9¸&Ö%AÉ<Ñ$XÓYˆŒà˜QÔÜ1ØØ /Ø!1ôˆD�Oð #ˆDŒOà !Ô#¨¸!Ô(;Ü#%§=¢=Ü—’˜V×/Ñ/°V×5JÑ5JÔKÜ  ¸v×?QÑ?QÐUVÕ?VÐXgÓhó$ˆDÖ ð
 $(ˆDÖ ùò# %Ys   ÂD?c                ó   € V P                   R J# ©N)rg  rõ   s   &r    Úwith_group_tokenÚGroupViTStage.with_group_tokenñ  s   € à×Ñ tÐ+Ð+r"   c                óŽ   € V P                   '       d1   VR RV P                  ) 13,          VR V P                  ) R13,          3# VR3# )rY  N)rr  rÖ   )r’   rš   s   &&r    Úsplit_xÚGroupViTStage.split_xõ  sQ   € Ø× × Ð Ø�QÐ/˜4×/Ñ/Ð/Ð/Ð/Õ0°!°A¸×8LÑ8LÐ7LÑ7NÐ4NÕ2OÐOÐOà�d�7ˆNr"   c                óv   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  /# )r   rš   rg  Nr   r   )r   r€   s   "€r    r!   re  û  s6   ø€ ÷ 2ñ 2™%Ÿ,™,ð 2±U·\±\ÀDÕ5Hð 2ÑTY×T`ÑT`ñ 2r"   c                ó@   € Vf   V# \         P                  ! W.^R7      # )Nr´   )r   Úcat)r’   rš   rg  s   &&&r    Úconcat_xÚGroupViTStage.concat_xû  s!   € ØÒØˆHÜ�yŠy˜!Ð)¨qÔ1Ð1r"   c          	      óš   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[R,          RS[S[ P                  ,          /# )r   Úhidden_statesÚprev_group_tokenNÚoutput_attentionsr   )r   r   rK   rè   rþ   )r   r€   s   "€r    r!   re     sO   ø€ ÷ &ñ &á—|‘|ð&ñ  Ÿ,™,¨Õ-ð&ñ   $�;ð	&ñ
 
‰u× Ñ Õ	!ñ&r"   c                óÆ  € V P                   '       dS   V P                  P                  VP                  ^ 4      RR4      pV P                  e   W@P	                  V4      ,           pMRpTpV P                  WT4      pV P                   F  pV! VRR7      pK  	  V P                  V4      w  rTRpV P                  e   V P                  WT4      w  rXWT3p	V'       d
   W˜3,           p	V	# )a¸  
Args:
    hidden_states (`torch.FloatTensor`): input to the layer of shape `(batch, seq_len, embed_dim)`
    attention_mask (`torch.FloatTensor`): attention mask of size
        `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values.
        `(config.encoder_attention_heads,)`.
    output_attentions (`bool`, *optional*):
        Whether or not to return the grouping tensors of Grouping block.
N)Úattention_maskrn   )	rr  rg  rP  r]   rn  rz  rk  ru  rl  )
r’   r}  r~  r  rg  rš   Úcat_xÚlayerrâ   Úoutputss
   &&&&      r    r›   ÚGroupViTStage.forward   sÓ   € ð × × Ð Ø×*Ñ*×1Ñ1°-×2DÑ2DÀQÓ2GÈÈRÓPˆKØ×#Ñ#Ò/Ø)×,@Ñ,@ÐAQÓ,RÕR�øàˆKàˆà—‘˜aÓ-ˆØ—[”[ˆEÙ˜%°Ô5ŠEñ !ð Ÿ™ eÓ,‰ˆàˆ	Ø�?‰?Ò&ØŸ?™?¨1Ó:‰LˆAàÐ"ˆßØ Õ,ˆGàˆr"   )rb  rl  rn  rg  rk  rÖ   rq  )NF)rž   rŸ   r    r¡   rÿ   r‡   Úpropertyrr  ru  rz  r›   r¢   r£   r¤   r¥   s   @@r    r`  r`  Ì  sE   ù‡ € ÙW÷ (ó  (ðD ñ,ó ð,ò÷2ò 2÷
&÷ &ò &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# )rŽ   i)  c          	      ó\   <€ V ^8„  d   QhRS[ RS[R,          RS[R,          RS[R,          /# )r   r~   r‹   NÚintermediate_sizeÚoutput_sizerd  )r   r€   s   "€r    r!   ÚGroupViTMLP.__annotate__*  s?   ø€ ÷ =ñ =á$ð=ñ ˜4•Zð=ñ  �:ð	=ñ
 ˜4•Zñ=r"   c                ó,  <€ \         SV `  4        Wn        \        VP                  ,          V n        Ve   TMVP                  pVe   TMVP                  pVe   TMTp\        P                  ! W#4      V n
        \        P                  ! W44      V n        R # rq  )r†   r‡   r~   r   Ú
hidden_actÚactivation_fnr‹   r‰  r   r¬   Úfc1Úfc2)r’   r~   r‹   r‰  rŠ  r“   s   &&&&&€r    r‡   ÚGroupViTMLP.__init__*  s|   ø€ ô 	‰ÑÔØŒÜ# F×$5Ñ$5Õ6ˆÔØ%0Ò%<‘kÀ&×BTÑBTˆØ1BÒ1NÑ-ÐTZ×TlÑTlÐØ%0Ò%<‘kÀ+ˆÜ—9’9˜[Ó<ˆŒÜ—9’9Ð.Ó<ˆŽr"   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   r}  r   r   )r   r€   s   "€r    r!   r‹  :  s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r"   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# rq  )r�  rŽ  r�  )r’   r}  s   &&r    r›   ÚGroupViTMLP.forward:  s4   € ØŸ™ Ó/ˆØ×*Ñ*¨=Ó9ˆØŸ™ Ó/ˆØÐr"   )rŽ  r~   r�  r�  r^  r�   r¥   s   @@r    rŽ   rŽ   )  s   ù‡ € ÷=õ =÷ ÷ ð r"   rŽ   c                   ó2   a a€ ] tR tRt oV 3R ltRtVtV ;t# )rÎ   iA  c                óf   <€ \         SV `  VP                  ^^4      4      pVP                  ^^4      # ©r  )r†   r›   r»   )r’   rš   r“   s   &&€r    r›   ÚGroupViTMixerMLP.forwardB  s-   ø€ Ü‰G‰O˜AŸK™K¨¨1Ó-Ó.ˆØ�{‰{˜1˜aÓ Ð r"   rO   )rž   rŸ   r    r¡   r›   r¢   r£   r¤   r¥   s   @@r    rÎ   rÎ   A  s   ù‡ € ÷!õ !r"   rÎ   c                   ó^   a a€ ] tR tRt oRtV 3R ltV3R lR ltR	V3R lR lltRtVt	V ;t
# )
rˆ   iG  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        \        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`: r  Nr«   )r†   r‡   r~   r‹   r  Únum_attention_headsÚ	num_headsÚhead_dimr  rg   Úattention_dropoutr-  r   r¬   r®   r¯   r­   Úout_projr‘   s   &&€r    r‡   ÚGroupViTAttention.__init__J  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[RS[/# )r   Útensorr?  Úbszr4   )r   r€   s   "€r    r!   ÚGroupViTAttention.__annotate__]  s+   ø€ ÷ eñ e™UŸ\™\ð e±Cð e¹cñ er"   c                óŒ   € VP                  W2V P                  V P                  4      P                  ^^4      P	                  4       # r—  )r6  rœ  r�  r»   rq   )r’   r¢  r?  r£  s   &&&&r    Ú_shapeÚGroupViTAttention._shape]  s5   € Ø�{‰{˜3¨¯©¸¿¹ÓG×QÑQÐRSÐUVÓW×bÑbÓdÐdr"   c                óÖ   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[S[ P                  S[ P                  R,          3,          /# )r   r}  r�  Nr–   r   )r   r   rþ   rè   )r   r€   s   "€r    r!   r¤  `  sh   ø€ ÷ D2ñ D2á—|‘|ðD2ñ Ÿ™ tÕ+ðD2ñ  %×0Ñ0°4Õ7ð	D2ñ 
‰u�|‰|™UŸ\™\¨DÕ0Ð0Õ	1ñD2r"   c                óX  € VP                  4       w  rVpVRJpV P                  V4      V P                  ,          p	V'       dF   V P                  V P	                  V4      RV4      p
V P                  V P                  V4      RV4      pMDV P                  V P	                  V4      RV4      p
V P                  V P                  V4      RV4      pWPP                  ,          RV P                  3pV P                  W–V4      P                  ! V!  p	V
P                  ! V!  p
VP                  ! V!  pV
P                  ^4      p\        P                  ! WšP                  ^^4      4      pVP                  4       WPP                  ,          Wm38w  d2   \        RWPP                  ,          Wm3 RVP                  4        24      hVe€   VP                  4       V^Wm38w  d#   \        RV^Wm3 RVP                  4        24      hVP                  WPP                  Wm4      V,           pVP                  WPP                  ,          Wm4      p\        P                  P                  VRR7      pVP                  WPP                  Wm4      pVP                  WPP                  ,          Wm4      p\        P                  P!                  WàP                   V P"                  R7      p\        P                  ! VV4      pVP                  4       WPP                  ,          W`P                  38w  d6   \        RWPP                  W`P                  3 RVP                  4        24      hVP                  WPP                  W`P                  4      pVP                  ^^4      pVP%                  WVV4      pV P'                  V4      pVV3# )	z#Input shape: Batch x Time x ChannelNz$Attention weights should be of size z	, but is z!Attention mask should be of size r´   )Úpr¶   z `attn_output` should be of size rn   )r]   r­   rg   r¦  r®   r¯   rœ  r�  r6  r   Úbmmr»   r  r   r&   r<   r-  r¶   rb   rŸ  )r’   r}  r�  r–   Úkwargsr£  Útgt_lenr  Úis_cross_attentionÚquery_statesÚ
key_statesÚvalue_statesÚ
proj_shapeÚsrc_lenÚattn_weightsÚattn_weights_reshapedÚ
attn_probsÚattn_outputs   &&&&,             r    r›   ÚGroupViTAttention.forward`  s=  € ð #0×"4Ñ"4Ó"6Ñˆ�iØ2¸$Ð>Ðð —{‘{ =Ó1°D·J±JÕ>ˆßØŸ™ T§[¡[Ð1FÓ%GÈÈSÓQˆJØŸ;™; t§{¡{Ð3HÓ'IÈ2ÈsÓS‰LàŸ™ T§[¡[°Ó%?ÀÀSÓIˆJØŸ;™; t§{¡{°=Ó'AÀ2ÀsÓKˆLàŸN™NÕ*¨B°·±Ð>ˆ
Ø—{‘{ <¸#Ó>×CÒCÀZÑPˆØ—_’_ jÑ1ˆ
Ø#×(Ò(¨*Ñ5ˆà—/‘/ !Ó$ˆÜ—y’y ×/CÑ/CÀAÀqÓ/IÓJˆà×ÑÓ 3¯©Õ#7¸Ð"JÔJÜØ6¸¿n¹nÕ8LÈgÐ7_Ð6`ð aØ ×%Ñ%Ó'Ð(ð*óð ð
 Ò%Ø×"Ñ"Ó$¨¨a°Ð(BÔBÜ Ø7¸¸aÀÐ8RÐ7SÐS\Ð]k×]pÑ]pÓ]rÐ\sÐtóð ð (×,Ñ,¨S·.±.À'ÓSÐVdÕdˆLØ'×,Ñ,¨S·>±>Õ-AÀ7ÓTˆLä—}‘}×,Ñ,¨\¸rÐ,ÓBˆð !-× 1Ñ 1°#·~±~ÀwÓ XÐØ,×1Ñ1°#¿¹Õ2FÈÓYˆä—]‘]×*Ñ*¨<¿<¹<ÐRV×R_ÑR_Ð*Ó`ˆ
ä—i’i 
¨LÓ9ˆà×ÑÓ #¯©Õ"6¸ÇÁÐ!OÔOÜØ2°C¿¹È×R_ÑR_Ð3`Ð2að bØ×$Ñ$Ó&Ð'ð)óð ð
 "×&Ñ& s¯N©N¸GÇ]Á]ÓSˆØ!×+Ñ+¨A¨qÓ1ˆØ!×)Ñ)¨#¸	ÓBˆà—m‘m KÓ0ˆàÐ1Ð1Ð1r"   )
r~   r-  r  r�  r®   rœ  rŸ  r­   rg   r¯   ©NN)rž   rŸ   r    r¡   rÿ   r‡   r¦  r›   r¢   r£   r¤   r¥   s   @@r    rˆ   rˆ   G  s,   ù‡ € ÙGõB÷&eð e÷D2÷ D2ò D2r"   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# )rj  i¨  c                ó    <€ V ^8„  d   QhRS[ /# r}   r   )r   r€   s   "€r    r!   Ú!GroupViTEncoderLayer.__annotate__©  s   ø€ ÷ Sñ SÑ3ñ 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# rƒ   )r†   r‡   r‹   r  rˆ   Ú	self_attnr   rŠ   rŒ   Úlayer_norm1rŽ   r�   Úlayer_norm2r‘   s   &&€r    r‡   ÚGroupViTEncoderLayer.__init__©  sm   ø€ Ü‰ÑÔØ×+Ñ+ˆŒÜ*¨6Ó2ˆŒÜŸ<š<¨¯©¸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   r}  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# )r}  r�  rO   )r¿  r¾  rÀ  r�   )r’   r}  r�  r¬  Úresidualr@  s   &&&,  r    r›   ÚGroupViTEncoderLayer.forward±  s   € ð !ˆà×(Ñ(¨Ó7ˆØŸ>š>ñ 
Ø'ð
à)ð
ð ñ
Ñˆð
 !Õ0ˆà ˆØ×(Ñ(¨Ó7ˆØŸ™ Ó/ˆØ Õ0ˆàÐr"   )r  r¿  rÀ  r�   r¾  r�   r¥   s   @@r    rj  rj  ¨  s    ù‡ € ÷Só S÷÷ ð r"   rj  c                   ó~   a a€ ] tR tRt oRtR	tRtR]R]/t	]
P                  ! 4       V 3R l4       tV3R ltRtVtV ;t# )
ÚGroupViTPreTrainedModeliÉ  ÚgroupvitTr}  rd   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&   V P                  P                  pVP$                  R,          ^VP                  P&                  ,          R,          ,          V,          pVP$                  R,          V,          p\        P                  ! VP(                  P                  VR7       \        P                  ! VP*                  P                  VR7       \        P                  ! VP,                  P                  VR7       \        P                  ! VP.                  P                  VR7       R# \	        V\0        4      '       dé   V P                  P                  pVP                  P2                  R,          ^VP                  P&                  ,          R,          ,          V,          p^VP                  P2                  ,          R,          V,          p\        P                  ! VP4                  P                  VR7       \        P                  ! VP6                  P                  VR7       R# R# )	zInitialize the weightsrM   g{®Gáz”?)ÚmeanÚstd)rË  Nrn   rI  r«   )r†   Ú_init_weightsr~   Úinitializer_factorrÉ   rC  ÚinitÚnormal_rL  rZ  rN  Úcopy_rQ  r   r(   rU   rP  rˆ   r  Únum_hidden_layersr­   r®   r¯   rŸ  rŽ   r‹   r�  r�  )r’   ÚmoduleÚfactorÚin_proj_stdÚout_proj_stdÚfc_stdr“   s   &&    €r    rÌ  Ú%GroupViTPreTrainedModel._init_weightsÔ  s  ø€ ô 	‰Ñ˜fÔ%Ø—‘×/Ñ/ˆÜ�fÔ4×5Ò5Ü�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Ü˜Ô 1×2Ó2Ø—[‘[×3Ñ3ˆFØ!×+Ñ+¨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Ü˜¤×,Ò,Ø—[‘[×3Ñ3ˆFØ!Ÿ=™=×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˜Ÿ™×*Ñ*°×<ñ -r"   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r}   ©r   )r   r€   s   "€r    r!   Ú$GroupViTPreTrainedModel.__annotate__É  ó   ø‡ ‚ áÑò r"   rO   )ÚimageÚtext)rž   rŸ   r    r¡   Úbase_model_prefixÚinput_modalitiesÚsupports_gradient_checkpointingrj  rˆ   Ú_can_record_outputsr   ro   rÌ  r   r¢   r£   r¤   r¥   s   @@r    rÇ  rÇ  É  sN   ù‡ € ð #ÐØ(ÐØ&*Ð#àÐ-ØÐ'ðÐð
 ‡]‚]ƒ_ô=ó ð=÷ … 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# )ÚGroupViTVisionEncoderiî  c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   r~   r   Nr   )r   r€   s   "€r    r!   Ú"GroupViTVisionEncoder.__annotate__ï  s   ø€ ÷ ,ñ ,Ñ3ð ,¸ñ ,r"   c                óš  <€ \         SV `  4        Wn        \        P                  ! \        \        VP                  4      4       Uu. uFg  p\        TVP                  V,          VP                  V,          VP                  V,          V^ 8”  d   VP                  V^,
          ,          M^ R7      NKi  	  up4      V n        RV n        R# u upi )r  )r~   rb  rÖ   rÇ   rc  FN)r†   r‡   r~   r   rh  ri  r)   Údepthsr`  Únum_group_tokensÚnum_output_groupsÚstagesÚgradient_checkpointing)r’   r~   Úir“   s   && €r    r‡   ÚGroupViTVisionEncoder.__init__ï  s­   ø€ Ü‰ÑÔØŒÜ—m’mô œs 6§=¡=Ó1Ô2ó	ñ 3�Aô Ø!Ø Ÿ-™-¨Õ*Ø$*×$;Ñ$;¸AÕ$>Ø%+×%=Ñ%=¸aÕ%@ØLMÐPQÌE¨×)AÑ)AÀ!ÀaÅ%Ö)HÐWX÷ñ 3ñ	ó
ˆŒð ',ˆÖ#ùò	s   ÁA-Cc                ó†   <€ V ^8„  d   QhRS[ P                  RS[R,          RS[R,          RS[R,          RS[S[,          /# )r   r}  Úoutput_hidden_statesNr  Úreturn_dictr   )r   r   rK   rè   r	   )r   r€   s   "€r    r!   rå     sR   ø€ ÷ %
ñ %
á—|‘|ð%
ñ # T�kð%
ñ   $�;ð	%
ñ
 ˜D•[ð%
ñ 
‘Õ	 ñ%
r"   c                ól  € Ve   TMV P                   P                  pVe   TMV P                   P                  pVe   TMV P                   P                  pV'       d   RMR pV'       d   RMR pR p\	        V P
                  4       FX  w  r‰V'       d
   WQ3,           pV	! WV4      p
V
^ ,          pV
^,          pV'       g   K;  V
^,          f   KH  Wj^,          3,           pKZ  	  V'       d
   WQ3,           pV'       g1   \        ;QJ d    . R WV3 4       F  NK  	  5# ! R WV3 4       4      # \        WVR7      # )Nc              3   ó0   "  € T F  qf   K  Vx € K  	  R # 5irq  rO   )rð   Úvs   & r    rò   Ú0GroupViTVisionEncoder.forward.<locals>.<genexpr>"  s   é € ÐgÑ$U˜qŸšÓ$Uùs   ‚Œ
)Úlast_hidden_stater}  rd   rO   )r~   r  rï  rð  Ú	enumeraterê  rè   r	   )r’   r}  rï  r  rð  Úall_hidden_statesÚall_groupingsrÛ   rì  ÚstageÚlayer_outputss   &&&&&      r    r›   ÚGroupViTVisionEncoder.forward   s"  € ð 2CÒ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ò$DÑ È$Ï+É+×JjÑJjð 	ð &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆç"6™B¸DÐß/™°Tˆàˆä! $§+¡+Ö.‰HˆAß#Ø$5Ð8HÕ$HÐ!á! -Ð?PÓQˆMà)¨!Õ,ˆMØ(¨Õ+ˆLç Ñ  ]°1Õ%5Ô%AØ -¸qÕ1AÐ0CÕ C’ñ /÷  Ø 1Ð4DÕ DÐçß”5Ñg ]À}Ñ$UÓg—5Ðg�5Ñg ]À}Ñ$UÓgÓgÐgÜØ+ÐYfô
ð 	
r"   )r~   rë  rê  r^  r�   r¥   s   @@r    rã  rã  î  s   ù‡ € ÷,ó ,÷"%
÷ %
ò %
r"   rã  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	# )	ÚGroupViTTextEncoderi(  z¥
Transformer encoder consisting of `config.num_hidden_layers` self-attention layers. Each layer is a
[`GroupViTEncoderLayer`].

Args:
    config: GroupViTTextConfig
c                ó    <€ V ^8„  d   QhRS[ /# r}   rE  )r   r€   s   "€r    r!   Ú GroupViTTextEncoder.__annotate__1  s   ø€ ÷ ,ñ ,Ñ1ñ ,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   rh  ri  rÑ  rj  rk  rë  )r’   r~   r@  r“   s   && €r    r‡   ÚGroupViTTextEncoder.__init__1  sT   ø€ Ü‰ÑÔØŒÜ—m’mÌ5ÐQW×QiÑQiÔKjÓ$kÑKjÀaÔ%9¸&Ö%AÑKjÑ$kÓlˆŒØ&+ˆÖ#ùò %ls   ½A&c                ón   <€ V ^8„  d   QhRS[ P                  R,          RS[S[,          RS[S[,          /# )r   r�  Nr¬  r   )r   r   r   r   rè   r	   )r   r€   s   "€r    r!   rÿ  7  s?   ø€ ÷ 
ñ 
ñ Ÿ™ tÕ+ð
ñ Ñ+Õ,ð	
ñ
 
‘Õ	 ñ
r"   c                óX   € TpV P                    F  pV! VV3/ VB pK  	  \        VR7      # )aß  
Args:
    inputs_embeds (`torch.FloatTensor` of shape `(batch_size, sequence_length, hidden_size)`):
        Optionally, instead of passing `input_ids` you can choose to directly pass an embedded representation.
        This is useful if you want more control over how to convert `input_ids` indices into associated vectors
        than the model's internal embedding lookup matrix.
    attention_mask (`torch.Tensor` of shape `(batch_size, sequence_length)`, *optional*):
        Mask to avoid performing attention on padding token indices. Mask values selected in `[0, 1]`:

        - 1 for tokens that are **not masked**,
        - 0 for tokens that are **masked**.

        [What are attention masks?](../glossary#attention-mask)
)rõ  )rk  r	   )r’   rV  r�  r¬  r}  Úencoder_layers   &&&,  r    r›   ÚGroupViTTextEncoder.forward7  sC   € ð( &ˆØ!Ÿ[œ[ˆMÙ)ØØñð ñŠMñ )ô Ø+ô
ð 	
r"   )r~   rë  rk  rq  r"  r¥   s   @@r    rý  rý  (  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# )
ÚGroupViTTextTransformeriX  c                ó    <€ V ^8„  d   QhRS[ /# r}   rE  )r   r€   s   "€r    r!   Ú$GroupViTTextTransformer.__annotate__Y  s   ø€ ÷ 
ñ 
Ñ1ñ 
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                  V n        V P                  4        R# rƒ   )r†   r‡   r‹   rC  r1  rý  Úencoderr   rŠ   rŒ   Úfinal_layer_normÚeos_token_idÚ	post_initrR  s   && €r    r‡   Ú GroupViTTextTransformer.__init__Y  sd   ø€ Ü‰Ñ˜Ô Ø×&Ñ&ˆ	Ü0°Ó8ˆŒÜ*¨6Ó2ˆŒÜ "§¢¨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[/# ©r   rU  Nr�  rQ  r¬  r   )r   r   r   r   r
   )r   r€   s   "€r    r!   r	  h  s^   ø€ ÷ :
ñ :
á—<‘< $Õ&ð:
ñ Ÿ™ tÕ+ð:
ñ —l‘l TÕ)ð	:
ñ
 Ñ+Õ,ð:
ñ 
$ñ:
r"   c           	     ó˜  € Vf   \        R4      h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V P                  V4      pV P                  ^8X  dw   V\        P                  ! VP                  ^ ,          VP                  R7      VP                  \        P                  VP                  R	7      P!                  RR
7      3,          p	M�V\        P                  ! VP                  ^ ,          VP                  R7      VP                  \        P                  VP                  R	7      V P                  8H  P                  4       P!                  RR
7      3,          p	\#        VV	R7      # )NzYou have to specify input_ids)rU  rQ  )r~   rV  r�  Úpast_key_valuesÚ	is_causalrV  r�  Tr$   )rN   r%   r´   )rõ  Úpooler_outputrn   rO   )r  r]   r6  r1  r   r~   Úpopr  r  r  r   r(   rU   r%   Útor5   Úargmaxr
   )
r’   rU  r�  rQ  r¬  Úinput_shaper}  Úencoder_outputsrõ  Úpooled_outputs
   &&&&,     r    r›   ÚGroupViTTextTransformer.forwarde  s®  € ð ÒÜÐ<Ó=Ð=à—n‘nÓ&ˆØ—N‘N 2 {°2¥Ó7ˆ	àŸ™°)˜ÓWˆä+Ø—;‘;Ø'Ø)Ø ô	
ˆð 	�
‰
�; Ô%Ø+/¯<ª<ñ ,
Ø'ð,
à)ð,
ð ð,
ð ñ	,
ˆð ,¨AÕ.ÐØ ×1Ñ1Ð2CÓDÐà×Ñ Ô!ð .Ü—’Ð.×4Ñ4°QÕ7Ð@Q×@XÑ@XÔYØ—‘¤5§9¡9Ð5F×5MÑ5M�ÓN×UÑUÐZ\ÐUÓ]ð_õ‰Mð .Ü—’Ð.×4Ñ4°QÕ7Ð@Q×@XÑ@XÔYð —‘¤E§I¡IÐ6G×6NÑ6N�ÓOÐSW×SdÑSdÑdß‘“ß‘˜B�“ð!õˆMô *Ø/Ø'ô
ð 	
r"   )r1  r  r  r  r^  )rž   rŸ   r    r¡   r‡   r   r   r   r›   r¢   r£   r¤   r¥   s   @@r    r  r  X  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# )ÚGroupViTTextModeli¥  c                ó    <€ V ^8„  d   QhRS[ /# r}   rE  )r   r€   s   "€r    r!   ÚGroupViTTextModel.__annotate__©  s   ø€ ÷ ñ Ñ1ñ r"   c                óf   <€ \         SV `  V4       \        V4      V n        V P	                  4        R # rq  )r†   r‡   r  Ú
text_modelr  r‘   s   &&€r    r‡   ÚGroupViTTextModel.__init__©  s&   ø€ Ü‰Ñ˜Ô Ü1°&Ó9ˆŒà�‰Ör"   c                ó4   <€ V ^8„  d   QhRS[ P                  /# rç   )r   ÚModule)r   r€   s   "€r    r!   r!  ¯  s   ø€ ÷ :ñ :¡b§i¡iñ :r"   c                óB   € V P                   P                  P                  # rq  ©r#  r1  rL  rõ   s   &r    Úget_input_embeddingsÚ&GroupViTTextModel.get_input_embeddings¯  s   € Ø�‰×)Ñ)×9Ñ9Ð9r"   c                ó:   € WP                   P                  n        R # rq  r(  )r’   r½   s   &&r    Úset_input_embeddingsÚ&GroupViTTextModel.set_input_embeddings²  s   € Ø5:�‰×"Ñ"Ö2r"   c                ó¾   <€ 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   r   r   r   rè   r
   )r   r€   s   "€r    r!   r!  ¶  sd   ø€ ÷ 
ñ 
á—<‘< $Õ&ð
ñ Ÿ™ tÕ+ð
ñ —l‘l TÕ)ð	
ñ
 Ñ+Õ,ð
ñ 
Ñ+Õ	+ñ
r"   c           	     ó2   € V P                   ! RRVRVRV/VB # )aé  
Examples:

```python
>>> from transformers import CLIPTokenizer, GroupViTTextModel

>>> tokenizer = CLIPTokenizer.from_pretrained("nvidia/groupvit-gcc-yfcc")
>>> model = GroupViTTextModel.from_pretrained("nvidia/groupvit-gcc-yfcc")

>>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="pt")

>>> outputs = model(**inputs)
>>> last_hidden_state = outputs.last_hidden_state
>>> pooled_output = outputs.pooler_output  # pooled (EOS token) states
```rU  r�  rQ  rO   ©r#  )r’   rU  r�  rQ  r¬  s   &&&&,r    r›   ÚGroupViTTextModel.forwardµ  s9   € ð. �Šñ 
Øð
à)ð
ð &ð
ð ñ	
ð 	
r"   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r}   rE  )r   r€   s   "€r    r!   r!  ¥  s   ø‡ ‚ ÙÑò r"   r1  )rÝ  r^  )rž   rŸ   r    r¡   rß  r‡   r)  r,  r   r›   r   r¢   r£   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V3R lR ll4       tRtVtV ;t	# )ÚGroupViTVisionTransformeriÔ  c                ó    <€ V ^8„  d   QhRS[ /# r}   r   )r   r€   s   "€r    r!   Ú&GroupViTVisionTransformer.__annotate__Õ  s   ø€ ÷ Lñ LÑ3ñ Lr"   c                óÔ   <€ \         SV `  4        Wn        VP                  p\	        V4      V n        \        V4      V n        \        P                  ! W!P                  R 7      V n        R# rƒ   )r†   r‡   r~   r‹   r$  r1  rã  r  r   rŠ   rŒ   r.  rR  s   && €r    r‡   Ú"GroupViTVisionTransformer.__init__Õ  sL   ø€ Ü‰ÑÔØŒØ×&Ñ&ˆ	ä2°6Ó:ˆŒÜ,¨VÓ4ˆŒÜŸš i×5JÑ5JÔKˆŽr"   c                ó”   <€ V ^8„  d   QhRS[ P                  R,          RS[R,          RS[R,          RS[R,          RS[S[,          /# )r   r  Nrï  r  rð  r   ©r   rþ   rK   rè   r
   )r   r€   s   "€r    r!   r7  ß  sZ   ø€ ÷ '
ñ '
á×'Ñ'¨$Õ.ð'
ñ # T�kð'
ñ   $�;ð	'
ñ
 ˜D•[ð'
ñ 
Ñ+Õ	+ñ'
r"   c                óä  € Ve   TMV P                   P                  pVe   TMV P                   P                  pVe   TMV P                   P                  pVf   \	        R4      hV P                  V4      pV P                  VVVVR7      pV^ ,          pV P                  V4      pVP                  ^R7      pV'       g   Wx3VR,          ,           # \        VVVP                  VP                  R7      # )Nz You have to specify pixel_values)r}  rï  r  rð  r´   :r  NN)rõ  r  r}  rd   )r~   r  rï  rð  r  r1  r  r.  rÊ  r
   r}  rd   )	r’   r  rï  r  rð  r}  r  rõ  r  s	   &&&&&    r    r›   Ú!GroupViTVisionTransformer.forwardÞ  sþ   € ð 2CÒ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ò$DÑ È$Ï+É+×JjÑJjð 	ð &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆàÒÜÐ?Ó@Ð@àŸ™¨Ó5ˆàŸ,™,Ø'Ø!5Ø/Ø#ð	 'ó 
ˆð ,¨AÕ.Ðð !ŸN™NÐ+<Ó=ÐØ)×.Ñ.°1Ð.Ó5ˆçØ%Ð5¸ÈÕ8KÕKÐKä)Ø/Ø'Ø)×7Ñ7Ø&×1Ñ1ô	
ð 	
r"   )r~   r1  r  r.  ©NNNN)
rž   rŸ   r    r¡   r‡   r   r›   r¢   r£   r¤   r¥   s   @@r    r5  r5  Ô  s/   ù‡ € ÷Ló Lð ÷'
ñ '
ó ÷'
ð '
r"   r5  c                   óˆ   a a€ ] tR tRt oRtRt/ 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# )ÚGroupViTVisionModeli	  r  c                ó    <€ V ^8„  d   QhRS[ /# r}   r   )r   r€   s   "€r    r!   Ú GroupViTVisionModel.__annotate__  s   ø€ ÷ ñ Ñ3ñ r"   c                óf   <€ \         SV `  V4       \        V4      V n        V P	                  4        R # rq  )r†   r‡   r5  Úvision_modelr  r‘   s   &&€r    r‡   ÚGroupViTVisionModel.__init__  s'   ø€ Ü‰Ñ˜Ô Ü5°fÓ=ˆÔà�‰Ör"   c                ó    <€ V ^8„  d   QhRS[ /# rç   )r  )r   r€   s   "€r    r!   rB    s   ø€ ÷ =ñ =Ñ&=ñ =r"   c                óB   € V P                   P                  P                  # rq  )rD  r1  r(  rõ   s   &r    r)  Ú(GroupViTVisionModel.get_input_embeddings  s   € Ø× Ñ ×+Ñ+×<Ñ<Ð<r"   c                ó”   <€ V ^8„  d   QhRS[ P                  R,          RS[R,          RS[R,          RS[R,          RS[S[,          /# )r   r  Nr  rï  rð  r   r;  )r   r€   s   "€r    r!   rB    sZ   ø€ ÷ #
ñ #
á×'Ñ'¨$Õ.ð#
ñ   $�;ð#
ñ # T�kð	#
ñ
 ˜D•[ð#
ñ 
Ñ+Õ	+ñ#
r"   c                ó,   € V P                  VVVVR7      # )a©  
Examples:

```python
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO
>>> from transformers import AutoProcessor, GroupViTVisionModel

>>> processor = AutoProcessor.from_pretrained("nvidia/groupvit-gcc-yfcc")
>>> model = GroupViTVisionModel.from_pretrained("nvidia/groupvit-gcc-yfcc")

>>> 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ð  ©rD  )r’   r  r  rï  rð  r¬  s   &&&&&,r    r›   ÚGroupViTVisionModel.forward  s(   € ð> × Ñ Ø%Ø/Ø!5Ø#ð	 !ó 
ð 	
r"   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r}   r   )r   r€   s   "€r    r!   rB  	  s   ø‡ ‚ Ù Ñ ò r"   rL  )rÜ  r>  )rž   rŸ   r    r¡   Úmain_input_namerß  rá  r‡   r)  r   r›   r   r¢   r£   r¤   r¥   s   @@r    r@  r@  	  sJ   ù‡ € à$€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]]V3R lR 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# )ÚGroupViTModeli?  c                ó    <€ V ^8„  d   QhRS[ /# r}   rÙ  )r   r€   s   "€r    r!   ÚGroupViTModel.__annotate__C  s   ø€ ÷ )ñ )™~ñ )r"   c                óh  <€ \         SV `  V4       \        VP                  \        4      '       g#   \        R \        VP                  4       R24      h\        VP                  \        4      '       g#   \        R\        VP                  4       R24      hVP                  pVP                  pVP                  V n	        VP                  V n
        VP                  V n        VP                  V n        \        V4      V n        \!        V4      V n        \$        P&                  ! \$        P(                  ! V P                  V P                  RR7      \$        P*                  ! V P                  4      \$        P,                  ! RR7      \$        P(                  ! V P                  V P                  RR7      4      V n        \$        P&                  ! \$        P(                  ! V P                  V P                  RR7      \$        P*                  ! V P                  4      \$        P,                  ! RR7      \$        P(                  ! V P                  V P                  RR7      4      V n        \$        P2                  ! \4        P6                  ! V P8                  P:                  4      4      V n        V P?                  4        R# )zOconfig.text_config is expected to be of type GroupViTTextConfig but is of type Ú.zSconfig.vision_config is expected to be of type GroupViTVisionConfig but is of type T)Úbias)ÚinplaceN) r†   r‡   rÉ   Útext_configr   Ú	TypeErrorÚtypeÚvision_configr   Úprojection_dimÚprojection_intermediate_dimr‹   Útext_embed_dimÚvision_embed_dimr  r#  r5  rD  r   rm  r¬   ÚBatchNorm1dÚReLUÚvisual_projectionÚtext_projectionr)  r   r¢  r~   Úlogit_scale_init_valueÚlogit_scaler  )r’   r~   rX  r[  r“   s   &&  €r    r‡   ÚGroupViTModel.__init__C  sý  ø€ Ü‰Ñ˜Ô ä˜&×,Ñ,Ô.@×AÒAÜðÜ˜×+Ñ+Ó,Ð-¨Qð0óð ô
 ˜&×.Ñ.Ô0D×EÒEÜðÜ˜×-Ñ-Ó.Ð/¨qð2óð ð
 ×(Ñ(ˆØ×,Ñ,ˆà$×3Ñ3ˆÔØ+1×+MÑ+MˆÔ(Ø)×5Ñ5ˆÔØ -× 9Ñ 9ˆÔä1°+Ó>ˆŒÜ5°mÓDˆÔä!#§¢Ü�IŠI�d×+Ñ+¨T×-MÑ-MÐTXÔYÜ�NŠN˜4×;Ñ;Ó<Ü�GŠG˜DÔ!Ü�IŠI�d×6Ñ6¸×8KÑ8KÐRVÔWó	"
ˆÔô  "Ÿ}š}Ü�IŠI�d×)Ñ)¨4×+KÑ+KÐRVÔWÜ�NŠN˜4×;Ñ;Ó<Ü�GŠG˜DÔ!Ü�IŠI�d×6Ñ6¸×8KÑ8KÐRVÔWó	 
ˆÔô Ÿ<š<¬¯ª°T·[±[×5WÑ5WÓ(XÓYˆÔð 	�‰Ör"   c                ó°   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[S[,          RS[S[,          /# )r   rU  r�  NrQ  r¬  r   r/  )r   r€   s   "€r    r!   rS  p  s_   ø€ ÷ ñ á—<‘<ðñ Ÿ™ tÕ+ðñ —l‘l TÕ)ð	ñ
 Ñ+Õ,ðñ 
Ñ+Õ	+ñr"   c                ó~   € V P                   ! RRVRVRVRR/VB pVP                  pV P                  V4      Vn        V# )aµ  
Examples:

```python
>>> import torch
>>> from transformers import CLIPTokenizer, GroupViTModel

>>> model = GroupViTModel.from_pretrained("nvidia/groupvit-gcc-yfcc")
>>> tokenizer = CLIPTokenizer.from_pretrained("nvidia/groupvit-gcc-yfcc")

>>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="pt")
>>> with torch.inference_mode():
...     text_features = model.get_text_features(**inputs)
```rU  r�  rQ  rð  TrO   )r#  r  rc  )r’   rU  r�  rQ  r¬  Útext_outputsr  s   &&&&,  r    Úget_text_featuresÚGroupViTModel.get_text_featuresn  sf   € ð. 48·?²?ñ 4
Øð4
à)ð4
ð &ð4
ð ð	4
ð
 ñ4
ˆð %×2Ñ2ˆØ%)×%9Ñ%9¸-Ó%HˆÔ"àÐr"   c                ó`   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[S[,          /# )r   r  r¬  r   r/  )r   r€   s   "€r    r!   rS  “  s9   ø€ ÷ ñ á—l‘lðñ Ñ+Õ,ðñ 
Ñ+Õ	+ñ	r"   c                óp   € V P                   ! V3RR/VB pV P                  VP                  4      Vn        V# )a"  
Examples:

```python
>>> import torch
>>> from transformers import AutoProcessor, GroupViTModel
>>> from transformers.image_utils import load_image

>>> model = GroupViTModel.from_pretrained("nvidia/groupvit-gcc-yfcc")
>>> processor = AutoProcessor.from_pretrained("nvidia/groupvit-gcc-yfcc")

>>> 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ð  T)rD  rb  r  )r’   r  r¬  Úvision_outputss   &&, r    Úget_image_featuresÚ GroupViTModel.get_image_features‘  s?   € ð4 6:×5FÒ5FÀ|Ñ5pÐaeÐ5pÐioÑ5pˆØ'+×'=Ñ'=¸n×>ZÑ>ZÓ'[ˆÔ$àÐr"   c                ó6  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[R,          RS[R,          R	S[R,          R
S[S[,          RS[S[,          /
# )r   rU  Nr  r�  rQ  Úreturn_lossr  rï  Úoutput_segmentationr¬  r   )	r   rW  rþ   r   rK   r   r   rè   rå   )r   r€   s   "€r    r!   rS  ²  sÁ   ø€ ÷ |
ñ |
á×#Ñ# dÕ*ð|
ñ ×'Ñ'¨$Õ.ð|
ñ Ÿ™ tÕ+ð	|
ñ
 ×&Ñ&¨Õ-ð|
ñ ˜D•[ð|
ñ   $�;ð|
ñ # T�kð|
ñ " D�[ð|
ñ Ñ+Õ,ð|
ñ 
Ñ$Õ	$ñ|
r"   c	                ó<  € Ve   TMV P                   P                  pVe   TMV P                   P                  pV'       d   RpVe   TMV P                   P                  pV P	                  VVVRR7      p
V P
                  ! R
RVRVRV/V	B pV
P                  pV P                  V4      pVP                  pV P                  V4      pWÌP                  RRR7      ,          pWÝP                  RRR7      ,          pV P                  P                  4       p\        P                  ! WÜP                  4       4      V,          pVP                  4       pRpV'       EdŸ   V
P                  pV P                  VP!                  RVP"                  R,          4      4      pV
P$                  p\'        VVP"                  R,          4      pVVP                  RRR7      ,          p\        P                  ! VVP                  4       4      V,          pVP!                  VP"                  ^ ,          RVP"                  ^ ,          4      P)                  ^ ^^4      pVP!                  VP"                  ^ ,          VP"                  ^,          R4      p\        P                  ! VV4      V,          pVP!                  VP"                  ^ ,          VP"                  ^,          VP"                  ^,          VP"                  ^,          4      pRpV'       d   \+        V4      p\-        VVVVVVVV
R	7      # )aî  
return_loss (`bool`, *optional*):
    Whether or not to return the contrastive loss.
output_segmentation (`bool`, *optional*):
    Whether or not to return the segmentation logits.

Examples:

```python
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO
>>> from transformers import AutoProcessor, GroupViTModel

>>> model = GroupViTModel.from_pretrained("nvidia/groupvit-gcc-yfcc")
>>> processor = AutoProcessor.from_pretrained("nvidia/groupvit-gcc-yfcc")

>>> 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", padding=True
... )

>>> 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
```NTrK  rU  r�  rQ  rº   :r   NN)rø   rù   rú   rû   rü   rý   rì   rí   rO   rn   )r~   r  rs  rï  rD  r#  r  rb  rc  Únormre  Úexpr   ÚmatmulÚtrõ  rb   rU   rd   ry   rp   r1   rå   )r’   rU  r  r�  rQ  rr  r  rï  rs  r¬  rn  ri  rý   rü   re  rú   rù   Ú
seg_logitsÚimage_group_embedsrd   ÚgroupingÚlogits_per_image_groupÚflatten_groupingrø   s   &&&&&&&&&,              r    r›   ÚGroupViTModel.forward°  s  € ðX 2CÒ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà#6Ò#BÑÈÏÉ×HgÑHgð 	÷ Ø $Ðà$8Ò$DÑ È$Ï+É+×JjÑJjð 	ð
 ×*Ñ*Ø%Ø/Ø!5Øð	 +ó 
ˆð 48·?²?ñ 4
Øð4
à)ð4
ð &ð4
ð ñ	4
ˆð &×3Ñ3ˆØ×-Ñ-¨lÓ;ˆà"×0Ñ0ˆØ×*Ñ*¨;Ó7ˆð $×&7Ñ&7¸BÈÐ&7Ó&MÕMˆØ!×$4Ñ$4¸ÀTÐ$4Ó$JÕJˆð ×&Ñ&×*Ñ*Ó,ˆÜŸ,š, {·N±NÓ4DÓEÈÕSˆØ*×,Ñ,Ó.Ðàˆ
ßÐð "0×!AÑ!AÐà!%×!7Ñ!7Ð8J×8RÑ8RÐSUÐWi×WoÑWoÐprÕWsÓ8tÓ!uÐØ'×2Ñ2ˆJä3°JÀ×@RÑ@RÐSUÕ@VÓWˆHð "4Ð6H×6MÑ6MÐRTÐ^bÐ6MÓ6cÕ!cÐä%*§\¢\Ð2DÀkÇmÁmÃoÓ%VÐYdÕ%dÐ"à%;×%CÑ%CØ×"Ñ" 1Õ% r¨;×+<Ñ+<¸QÕ+?ó&ç‰g�a˜˜AÓð #ð
  (×/Ñ/°·±¸qÕ0AÀ8Ç>Á>ÐRSÕCTÐVXÓYÐô ŸšÐ&<Ð>NÓOÐR]Õ]ˆJØ#×+Ñ+Ø× Ñ  Õ# Z×%5Ñ%5°aÕ%8¸(¿.¹.ÈÕ:KÈXÏ^É^Ð\]ÕM^óˆJð ˆßÜ.¨Ó?ˆDä"ØØ-Ø+Ø *Ø#Ø%Ø*Ø .ô	
ð 		
r"   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r}   rÙ  )r   r€   s   "€r    r!   rS  ?  rÛ  r"   )	re  r\  r]  r^  r#  rc  r_  rD  rb  r¹  )NNNNNNNN)rž   rŸ   r    r¡   r‡   r   r   rj  ro  r›   r   r¢   r£   r¤   r¥   s   @@r    rQ  rQ  ?  sz   ù‡ € ÷)ó )ðV Ø÷ñ ó ó ððB Ø÷ó ó ðð: Ø÷|
ñ |
ó ó ð|
÷g … r"   rQ  )r  Frn   r!  )rQ  rÇ  r  r@  )Irÿ   Úcollections.abcrË   Údataclassesr   Útypingr   Únumpyr`   r   r   Ú r   rÎ  Úactivationsr   Úmasking_utilsr   Úmodeling_layersr   Úmodeling_outputsr	   r
   Úmodeling_utilsr   Úprocessing_utilsr   Úutilsr   r   r   r   r   r   Úutils.genericr   Úutils.output_capturingr   Úconfiguration_groupvitr   r   r   Ú
get_loggerrž   Úloggerr*   r1   rF   rX   rl   ry   r&  r{   r§   rÃ   rå   r  r$  rC  r`  rŽ   rÎ   rˆ   rj  rÇ  rã  rý  r  r  r5  r@  rQ  Ú__all__rO   r"   r    Ú<module>r’     sò  ðñ ã Ý !Ý ã Û Ý å &Ý !Ý /Ý 9ß KÝ -Ý &ß j× jÝ 7Ý 5ß \Ñ \ð 
×	Ò	˜HÓ	%€õ
`õ
-õ÷ô,ò<ô: "§)¡)ô ô -˜bŸi™iô -ô`4+˜"Ÿ)™)ô 4+ðn Ø
ô-
˜+ó -
ó ó ð-
ô`˜bŸi™iô ôDG˜rŸy™yô GôV#˜RŸY™Yô #ôLZ�B—I‘Iô Zôz�"—)‘)ô ô0!�{ô !ô]2˜Ÿ	™	ô ]2ôBÐ5ô ðB ô!=˜oó !=ó ð!=ôH7
˜BŸI™Iô 7
ôt-
˜"Ÿ)™)ô -
ô`J
Ð5ô J
ôZ,
Ð/ô ,
ô^2
 §	¡	ô 2
ôj3
Ð1ô 3
ðl ôn
Ð+ó n
ó ðn
òb c‚r"   