+
    œ°³j’’  ã                   ó–  € R t ^ RIt^ RIH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 ^R	IHtHtHt ^R
IHt ^RIHtHt ^RIHt ]P8                  ! ]4      t]] ! R R]4      4       4       t ! R R]P@                  4      t! ! R R]P@                  4      t" ! R R]P@                  4      t# ! R R]P@                  4      t$ ! R R]P@                  4      t% ! R R]P@                  4      t& ! R R]P@                  4      t' ! R R]4      t( ! R R ]P@                  4      t) ! R! R"]P@                  4      t*] ! R# R$]4      4       t+ ! R% R&]P@                  4      t, ! R' R(]P@                  4      t-R)],R*]-/t.]! R+R,7       ! R- R.]+4      4       t/ ! R/ R0]P@                  4      t0]! R1R,7       ! R2 R3]+4      4       t1. R4Ot2R# )5zPyTorch TVP ModelN)Ú	dataclass)Únn)Úinitialization)ÚACT2FN)Úload_backbone)Úcreate_bidirectional_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithPoolingÚModelOutput)ÚPreTrainedModel)Úauto_docstringÚlogging©Ú	TvpConfigc                   ó@   a € ] tR t^$t o RtRtRtRtRtV 3R lt	Rt
V tR# )ÚTvpVideoGroundingOutputa\  
loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `return_loss` is `True`):
    Temporal-Distance IoU loss for video grounding.
logits (`torch.FloatTensor` of shape `(batch_size, 2)`):
    Contains start_time/duration and end_time/duration. It is the time slot of the videos corresponding to the
    input texts.
attentions (`tuple(torch.FloatTensor)`, *optional*, returned when `output_attentions=True` is passed or when `config.output_attentions=True`):
    Tuple of `torch.FloatTensor` (one for each layer) of shape `(batch_size, num_heads, sequence_length,
    sequence_length)`.
Nc                óú   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[S[ P                  R3,          R,          ;R&   S[S[ P                  R3,          R,          ;R&   # )é   NÚlossÚlogits.Úhidden_statesÚ
attentions)ÚtorchÚFloatTensorÚtuple)ÚformatÚ__classdict__s   "€Úe/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/tvp/modeling_tvp.pyÚ__annotate__Ú$TvpVideoGroundingOutput.__annotate__$   sy   ø‡ ‚ ñ ×
Ñ
˜dÕ
"Ñ)ñ ñ ×Ñ Õ$Ñ+ñ ñ  ™×*Ñ*¨CÐ/Õ0°4Õ7Ñ>ñ! ñ" ‘e×'Ñ'¨Ð,Õ-°Õ4Ñ;ò# ó    © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__)r   s   @r   r   r   $   s'   ø‡ € ñ	ð &*€DØ'+€FØ:>€MØ7;€J÷# ƒ r!   r   c                   óN   a a€ ] tR t^8t oRtV 3R ltR tR tR tR t	Rt
VtV ;t# )ÚTvpLossab  
This class computes the losses for `TvpForVideoGrounding`. The process happens in two steps: 1) we compute
hungarian assignment between ground truth boxes and the outputs of the model 2) we supervise each pair of matched
ground-truth / prediction (supervise class and box).

Args:
    losses (`list[str]`):
        List of all the losses to be applied.
c                óÖ   <€ \         SV `  4        R V P                  RV P                  RV P                  /V n        V F"  pW P
                  9  g   K  \        RV R24      h	  Wn        R# )ÚiouÚdistanceÚdurationzLoss z not supportedN)ÚsuperÚ__init__Úloss_iouÚloss_distanceÚloss_durationÚloss_mapÚ
ValueErrorÚlosses)Úselfr8   r   Ú	__class__s   && €r   r2   ÚTvpLoss.__init__C   sg   ø€ Ü‰ÑÔà�4—=‘=Ø˜×*Ñ*Ø˜×*Ñ*ð
ˆŒó
 ˆDØŸ=™=Ö(Ü  5¨¨¨nÐ!=Ó>Ð>ñ ð Žr!   c                ó
  € \         P                  ! WB4      \         P                  ! W14      ,
          p\         P                  ! WB4      \         P                  ! W14      ,
          p^VP                  ^ R7      V,          ,
          pV# )z&
Measure the intersection over union.
©Úmin)r   r>   ÚmaxÚclamp)	r9   Ú
start_timeÚend_timeÚcandidates_start_timeÚcandidates_end_timer0   ÚinterÚunionr.   s	   &&&&&&   r   r3   ÚTvpLoss.loss_iouP   s_   € ô —	’	Ð-Ó8¼5¿9º9ÐEZÓ;gÕgˆÜ—	’	Ð-Ó8¼5¿9º9ÐEZÓ;gÕgˆØ�%—+‘+ !�+Ó$ uÕ,Õ,ˆàˆ
r!   c                ó^  € \         P                  ! \         P                  ! W44      R4      p\         P                  ! \         P                  ! W4      R4      p\         P                  ! \         P                  ! Wg4      \         P                  ! Wg4      ,
          V4      P                  RR7      pV# )z%
Measure the distance of mid points.
g       @gš™™™™™É?r=   )r   ÚdivÚaddr?   r>   r@   )	r9   rA   rB   rC   rD   r0   Úmid_candidatesÚmid_groundtruthÚdistance_diffs	   &&&&&&   r   r4   ÚTvpLoss.loss_distanceZ   sy   € ô Ÿš¤5§9¢9Ð-BÓ#XÐZ]Ó^ˆÜŸ)š)¤E§I¢I¨jÓ$CÀSÓIˆÜŸ	š	Ü�IŠI�nÓ6¼¿ºÀ>Ó9cÕcÐemó
ç
‰%�Cˆ%‹.ð 	ð Ðr!   c                ó   € \         P                  ! WC4      p\         P                  ! W!4      p\         P                  ! \         P                  ! \         P                  ! Wg4      V4      4      pVP	                  RR7      pV# )z%
Measure the difference of duration.
gš™™™™™Ù?r=   )r   ÚsubÚsquarerI   r@   )	r9   rA   rB   rC   rD   r0   Úduration_candidatesÚduration_groundtruthÚduration_diffs	   &&&&&&   r   r5   ÚTvpLoss.loss_durationf   s`   € ô $ŸišiÐ(;ÓSÐÜ$Ÿyšy¨Ó>ÐÜŸš¤U§Y¢Y¬u¯yªyÐ9LÓ/cÐemÓ%nÓoˆØ%×+Ñ+°Ð+Ó4ˆàÐr!   c                ó  € Vw  r4p\         P                  ! W4      pVR,          P                  4       VR,          P                  4       r‡/ p	V P                   F.  p
V	P	                  W P
                  V
,          ! WEWxV4      /4       K0  	  V	# )a5  
This performs the loss computation.

Args:
    logits (`torch.FloatTensor`):
        The output logits of head module.
    labels (`list[torch.FloatTensor]`):
        List of tensors ([start, end, duration]), which contains start time, end time of the video corresponding to the text, and also the duration.
©ºNNNé    )rX   é   )r   ÚmulÚfloatr8   Úupdater6   )r9   r   Úlabelsr0   rA   rB   Ú
candidatesrC   rD   Úlosses_dictr   s   &&&        r   ÚforwardÚTvpLoss.forwardq   s„   € ð *0Ñ&ˆ˜hÜ—Y’Y˜vÓ0ˆ
Ø5?ÀÕ5E×5KÑ5KÓ5MÈzÐZ^ÕO_×OeÑOeÓOgÐ2àˆØ—K”KˆDØ×ÑØ—}‘} TÖ*¨:ÐAVÐmuÓvÐwöñ  ð
 Ðr!   )r6   r8   )r#   r$   r%   r&   r'   r2   r3   r4   r5   ra   r)   r*   Ú__classcell__©r:   r   s   @@r   r,   r,   8   s(   ù‡ € ñõòò
ò	÷ò r!   r,   c                   ó8   a a€ ] tR t^ˆt oV 3R ltR tRtVtV ;t# )ÚTvpVisionModelc           
     ó¤  <€ \         SV `  4        \        V4      V n        VP                  e   VP                  P
                  R,          pMØ\        V P                  R4      '       dO   \        V P                  P                  R4      '       d)   V P                  P                  P
                  R,          pMn\        V P                  R4      '       dH   \        V P                  P                  R4      '       d"   V P                  P                  P                  pM\        R4      h\        P                  ! VVP                  ^^^^RR7      V n        R # )NÚconfigÚhidden_sizesÚhidden_sizezBackbone config not foundF)Úkernel_sizeÚstrideÚpaddingÚgroupsÚbiaséÿÿÿÿ)r1   r2   r   ÚbackboneÚbackbone_configri   Úhasattrrh   rj   r7   r   ÚConv2dÚgrid_encoder_conv)r9   rh   Úin_channelsr:   s   && €r   r2   ÚTvpVisionModel.__init__‰   só   ø€ Ü‰ÑÔÜ% fÓ-ˆŒà×!Ñ!Ò-Ø ×0Ñ0×=Ñ=¸bÕA‰KÜ�T—]‘] H×-Ò-´'¸$¿-¹-×:NÑ:NÐP^×2_Ò2_ØŸ-™-×.Ñ.×;Ñ;¸BÕ?‰KÜ�T—]‘] H×-Ò-´'¸$¿-¹-×:NÑ:NÐP]×2^Ò2^ØŸ-™-×.Ñ.×:Ñ:‰KäÐ8Ó9Ð9ä!#§¢ØØ×ÑØØØØØô"
ˆÖr!   c                ó²  € VP                   w  r#rEpVP                  W#,          WEV4      pV P                  V4      R ,          ^ ,          pV P                  V4      p\        P
                  P                  V^^R7      p\        P
                  P                  VRR7      pVP                   RR w  ršpVP                  W#WšV4      pVP                  ^ ^^^^4      pV# )Úfeature_maps)rk   rl   T)ÚinplaceNéýÿÿÿ)	ÚshapeÚviewrq   ru   r   Ú
functionalÚ
max_pool2dÚreluÚpermute)r9   Úpixel_valuesÚ
batch_sizeÚ
num_framesÚnum_channelsÚheightÚwidthÚgrid_feat_outputsÚgridÚnew_channelÚ
new_heightÚ	new_widths   &&          r   ra   ÚTvpVisionModel.forward    sË   € Ø>J×>PÑ>PÑ;ˆ
 °eà#×(Ñ(¨Õ)@À,ÐX]Ó^ˆØ ŸM™M¨,Ó7¸ÕGÈÕJÐØ×%Ñ%Ð&7Ó8ˆÜ�}‰}×'Ñ'¨¸!ÀAÐ'ÓFˆÜ�}‰}×!Ñ! $°Ð!Ó5ˆØ-1¯Z©Z¸¸¨_Ñ*ˆ à�y‰y˜°È)ÓTˆà�|‰|˜A˜q ! Q¨Ó*ˆØˆr!   )rq   ru   ©	r#   r$   r%   r&   r2   ra   r)   r*   rc   rd   s   @@r   rf   rf   ˆ   s   ù‡ € õ
÷.ò r!   rf   c                   ót   a a€ ] tR t^°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
V3R lR lltR	t	Vt
V ;t# )ÚTvpVisualInputEmbeddingz3
Takes input of both image and video (multi-frame)
c                ó€  <€ \         SV `  4        \        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
                  4      V n        \        P                  ! VP
                  VP                  R7      V n        \        P                  ! VP                   4      V n        VP                  V n        VP                  V n	        R# )rZ   ©ÚepsN)r1   r2   r   Ú	EmbeddingÚmax_position_embeddingsrj   Úposition_embeddingsÚ max_grid_row_position_embeddingsÚrow_position_embeddingsÚ max_grid_col_position_embeddingsÚcol_position_embeddingsÚtoken_type_embeddingsÚ	LayerNormÚlayer_norm_epsÚ
layer_normÚDropoutÚhidden_dropout_probÚdropout©r9   rh   r:   s   &&€r   r2   Ú TvpVisualInputEmbedding.__init__µ   s×   ø€ Ü‰ÑÔä#%§<¢<°×0NÑ0NÐPV×PbÑPbÓ#cˆÔ Ü')§|¢|°F×4[Ñ4[Ð]c×]oÑ]oÓ'pˆÔ$Ü')§|¢|°F×4[Ñ4[Ð]c×]oÑ]oÓ'pˆÔ$Ü%'§\¢\°!°V×5GÑ5GÓ%HˆÔ"ÜŸ,š, v×'9Ñ'9¸v×?TÑ?TÔUˆŒÜ—z’z &×"<Ñ"<Ó=ˆŒØ06×0WÑ0WˆÔ-Ø06×0WÑ0WˆÖ-r!   c                óZ   <€ V ^8„  d   QhRS[ P                  RS[RS[RS[ P                  /# )r   Ú	embeddingr†   r‡   Úreturn©r   ÚTensorÚint)r   r   s   "€r   r   Ú$TvpVisualInputEmbedding.__annotate__Á   s5   ø€ ÷ ñ ±%·,±,ð Éð ÑTWð Ñ\a×\hÑ\hñ r!   c                ó,  € ^;rEW P                   8”  d   W P                   ,          pW0P                  8”  d   W0P                  ,          pVP                  ^ ^^^4      p\        P                  P                  VWE3RRR7      pVP                  ^ ^^^4      pV# )z 
This method allows to interpolate the pre-trained pad weights , to be able to use the model on collection of high
resolution images (high resolution videos).

ÚbicubicF©Úscale_factorÚmodeÚalign_corners)r—   r™   r�   r   r~   Úinterpolate)r9   r¥   r†   r‡   Úh0Úw0s   &&&&  r   Úinterpolate_pos_encodingÚ0TvpVisualInputEmbedding.interpolate_pos_encodingÁ   sš   € ð ˆˆà×9Ñ9Ô9Ø×?Ñ?Õ?ˆBà×8Ñ8Ô8Ø×>Ñ>Õ>ˆBØ×%Ñ% a¨¨A¨qÓ1ˆ	Ü—M‘M×-Ñ-ØØ˜ØØð	 .ó 
ˆ	ð ×%Ñ% a¨¨A¨qÓ1ˆ	ØÐr!   c                ó    <€ V ^8„  d   QhRS[ /# ©r   r´   ©Úbool)r   r   s   "€r   r   rª   Ø   s   ø€ ÷ 'ñ 'É4ñ 'r!   c                óÌ  € VP                   w  r4rV\        V P                  V4      p\        P                  ! V\        P
                  VP                  R7      pV P                  V4      p	R\        VP                   4      ^,
          ,          V^V3,           p
V	P                  ! V
!  p	\        V P                  V4      p\        P                  ! V\        P
                  VP                  R7      pV P                  V4      pV^W¶3pVP                  ! V!  pW�,           pV'       d;   W@P                  8”  g   WPP                  8”  d   WP                  WôV4      ,           pV# W,           pV# )a.  
Args:
    grid: (batch_size, height, width, hidden_dim)
    interpolate_pos_encoding: (`bool`, *optional*, defaults to `False`):
        Whether to interpolate the pre-trained position encodings.
Returns:
    grid + col_position_embeddings.view(*col_shape): (batch_size, *, height, width, hidden_dim)
©ÚdtypeÚdevice©rZ   )r|   r>   r—   r   ÚarangeÚlongr½   r˜   Úlenr}   r™   rš   r´   )r9   r‰   r´   rƒ   r†   r‡   Ú
hidden_dimÚ
row_heightÚrow_position_idsr˜   Ú	row_shapeÚ	row_widthÚcol_position_idsrš   Ú	col_shapeÚpositional_embeddingss   &&&             r   Úadd_2d_positional_embeddingsÚ4TvpVisualInputEmbedding.add_2d_positional_embeddingsØ   s7  € ð 15·
±
Ñ-ˆ
˜Eô ˜×>Ñ>ÀÓGˆ
Ü Ÿ<š<¨
¼%¿*¹*ÈTÏ[É[ÔYÐà"&×">Ñ">Ð?OÓ"PÐØœC §
¡
›O¨aÕ/Õ0°JÀÀ:Ð3NÕNˆ	à"9×">Ò">À	Ñ"JÐô ˜×=Ñ=¸uÓEˆ	Ü Ÿ<š<¨	¼¿¹ÈDÏKÉKÔXÐà"&×">Ñ">Ð?OÓ"PÐØ  IÐ:ˆ	à"9×">Ò">À	Ñ"JÐà 7Õ QÐ÷ $Ø×:Ñ:Ô:¸e×FkÑFkÔ>kà×7Ñ7Ð8MÐW\Ó]Õ]ˆDð ˆð Õ/ˆDØˆr!   c                ó    <€ V ^8„  d   QhRS[ /# r·   r¸   )r   r   s   "€r   r   rª     s   ø€ ÷ ñ ±dñ r!   c                óŒ  € VP                   w  r4rVpVP                  ^4      pV P                  WR7      pVP                  VRV4      pVP                   RR p	VP                  p
\
        P                  ! V	\
        P                  V
R7      pV P                  V4      pWŒ,           pV P                  V4      pV P                  V4      pV# )aÏ  
Args:
    grid: Array of shape (batch_size, num_frames, height, width, num_channels).
        It contains processed frames extracted from videos, and is generated by Tvp image preprocessor. Note,
        num_frames can be 1
    interpolate_pos_encoding: (bool, *optional*, defaults to `False`):
        Whether to interpolate the pre-trained position encodings.

Returns:
    embeddings: The embedding of grid with size (batch_size, height*width, num_channels)

©r´   Nr»   rp   )r|   ÚmeanrÊ   r}   r½   r   ÚzerosrÀ   r›   rž   r¡   )r9   r‰   r´   rƒ   r„   r†   r‡   r…   Úvisual_tokensÚvisual_tokens_shaper½   Útoken_type_idsr›   Ú
embeddingss   &&&           r   ra   ÚTvpVisualInputEmbedding.forward  sº   € ð ?C¿j¹jÑ;ˆ
 ¨|à�y‰y˜‹|ˆØ×0Ñ0°Ð0ÓiˆàŸ	™	 *¨b°,Ó?ˆØ+×1Ñ1°#°2Ð6ÐØ×%Ñ%ˆô ŸšÐ%8ÄÇ
Á
ÐSYÔZˆØ $× :Ñ :¸>Ó JÐà"Õ:ˆ
Ø—_‘_ ZÓ0ˆ
Ø—\‘\ *Ó-ˆ
ØÐr!   )rš   r¡   rž   r™   r—   r–   r˜   r›   ©F)r#   r$   r%   r&   r'   r2   r´   rÊ   ra   r)   r*   rc   rd   s   @@r   r�   r�   °   s4   ù‡ € ñõ
X÷ð ÷.'ò '÷R÷ ò r!   r�   c                   ó@   a a€ ] tR tRt oRtV 3R ltRR ltRtVtV ;t	# )ÚTvpTextInputEmbeddingsi!  zGConstruct the embeddings from word, position and token_type embeddings.c                ó  <€ \         SV `  4        \        P                  ! VP                  VP
                  VP                  R 7      V n        \        P                  ! VP                  VP
                  4      V n	        \        P                  ! VP                  VP
                  4      V n        \        P                  ! VP
                  VP                  R7      V n        \        P                  ! VP                   4      V n        R# ))Úpadding_idxr’   N)r1   r2   r   r”   Ú
vocab_sizerj   Úpad_token_idÚword_embeddingsr•   r–   Útype_vocab_sizer›   rœ   r�   rž   rŸ   r    r¡   r¢   s   &&€r   r2   ÚTvpTextInputEmbeddings.__init__$  s©   ø€ Ü‰ÑÔÜ!Ÿ|š|¨F×,=Ñ,=¸v×?QÑ?QÐ_e×_rÑ_rÔsˆÔÜ#%§<¢<°×0NÑ0NÐPV×PbÑPbÓ#cˆÔ Ü%'§\¢\°&×2HÑ2HÈ&×J\ÑJ\Ó%]ˆÔ"ÜŸ,š, v×'9Ñ'9¸v×?TÑ?TÔUˆŒÜ—z’z &×"<Ñ"<Ó=ˆŽr!   c                ó\  € Ve   VP                  4       pMVP                  4       R R pV^,          pVe   VP                  MVP                  pVfH   \        P                  ! V\        P                  VR7      pVP                  ^ 4      P                  V4      pVf(   \        P                  ! V\        P                  VR7      pVf   V P                  V4      pV P                  V4      pV P                  V4      p	WH,           V	,           p
V P                  V
4      p
V P                  V
4      p
V
# )Nr»   rp   )Úsizer½   r   r¿   rÀ   Ú	unsqueezeÚexpandrÐ   rÝ   r–   r›   rž   r¡   )r9   Ú	input_idsrÓ   Úposition_idsÚinputs_embedsÚinput_shapeÚ
seq_lengthr½   r–   r›   rÔ   s   &&&&&      r   ra   ÚTvpTextInputEmbeddings.forward,  s  € ØÒ Ø#Ÿ.™.Ó*‰Kà'×,Ñ,Ó.¨s°Ð3ˆKà  •^ˆ
Ø%.Ò%:�×!Ò!À×@TÑ@TˆØÒÜ Ÿ<š<¨
¼%¿*¹*ÈVÔTˆLØ'×1Ñ1°!Ó4×;Ñ;¸KÓHˆLØÒ!Ü"Ÿ[š[¨¼E¿J¹JÈvÔVˆNàÒ Ø ×0Ñ0°Ó;ˆMØ"×6Ñ6°|ÓDÐØ $× :Ñ :¸>Ó JÐà"Õ8Ð;PÕPˆ
Ø—_‘_ ZÓ0ˆ
Ø—\‘\ *Ó-ˆ
ØÐr!   )r¡   rž   r–   r›   rÝ   ©NNNN©
r#   r$   r%   r&   r'   r2   ra   r)   r*   rc   rd   s   @@r   rØ   rØ   !  s   ù‡ € ÙQõ>÷ô r!   rØ   c                   óZ   a a€ ] tR tRt o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	# )	ÚTvpAttentioniE  c                ó  <€ \         SV `  4        VP                  VP                  ,          ^ 8w  d8   \	        VR4      '       g&   \        RVP                   RVP                   24      hVP                  V n        \        VP                  VP                  ,          4      V n        V P                  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                  4      V n        \        P                  ! VP                  VP                  4      V n        \        P$                  ! VP                  VP&                  R7      V n        \        P                  ! VP*                  4      V n        R# )rY   Úembedding_sizezThe hidden size z4 is not a multiple of the number of attention heads r’   N)r1   r2   rj   Únum_attention_headsrs   r7   r©   Úattention_head_sizeÚall_head_sizer   ÚLinearÚqueryÚkeyÚvaluerŸ   Úattention_probs_dropout_probÚattn_dropoutÚdenserœ   r�   rž   r    r¡   r¢   s   &&€r   r2   ÚTvpAttention.__init__F  s{  ø€ Ü‰ÑÔØ×Ñ × :Ñ :Õ:¸aÔ?ÌÐPVÐXh×HiÒHiÜØ" 6×#5Ñ#5Ð"6Ð6jÐkq÷  lFñ  lFð  kGð  Hóð ð $*×#=Ñ#=ˆÔ Ü#& v×'9Ñ'9¸F×<VÑ<VÕ'VÓ#WˆÔ Ø!×5Ñ5¸×8PÑ8PÕPˆÔä—Y’Y˜v×1Ñ1°4×3EÑ3EÓFˆŒ
Ü—9’9˜V×/Ñ/°×1CÑ1CÓDˆŒÜ—Y’Y˜v×1Ñ1°4×3EÑ3EÓFˆŒ
ÜŸJšJ v×'JÑ'JÓKˆÔä—Y’Y˜v×1Ñ1°6×3EÑ3EÓFˆŒ
ÜŸ,š, v×'9Ñ'9¸v×?TÑ?TÔUˆŒÜ—z’z &×"<Ñ"<Ó=ˆŽr!   c                ó@   <€ V ^8„  d   QhRS[ P                  RS[RS[/# )r   ÚtensorÚsequence_lengthrƒ   r§   )r   r   s   "€r   r   ÚTvpAttention.__annotate__Z  s&   ø€ ÷ 
ñ 
™uŸ|™|ð 
¹cð 
Ésñ 
r!   c                óŒ   € VP                  W2V P                  V P                  4      P                  ^^4      P	                  4       # r¾   )r}   rð   rñ   Ú	transposeÚ
contiguous)r9   rü   rý   rƒ   s   &&&&r   Ú_reshapeÚTvpAttention._reshapeZ  s5   € à�K‰K˜
°T×5MÑ5MÈt×OgÑOgÓhß‰Y�q˜!‹_ß‰Z‹\ð	
r!   c                ó.   <€ V ^8„  d   QhRS[ R,          /# ©r   Úoutput_attentionsNr¸   )r   r   s   "€r   r   rþ   a  s   ø€ ÷ &ñ &ñ   $�;ñ	&r!   c                óN  € VP                   R ,          w  rEV P                  V4      pV P                  V4      pV P                  V4      pV P	                  WeV4      p	V P	                  WuV4      p
V P	                  W…V4      p\
        P                  ! WšP                  RR4      4      pV\        P                  ! V P                  4      ,          pVe	   WÂ,           p\        P                  P                  VRR7      pV P                  V4      p\
        P                  ! WÛ4      pVP                  ^^4      P                  4       pVP!                  WEV P"                  4      pV P%                  V4      pV P'                  V4      pV P)                  Wá,           4      pV'       d   Wí3pV# V3pV# )ºNr   N©Údimrp   éþÿÿÿ)r|   rô   rõ   rö   r  r   Úmatmulr   ÚmathÚsqrtrñ   r   r~   Úsoftmaxrø   r  Úreshaperò   rù   r¡   rž   )r9   r   Úattention_maskr  rƒ   rý   Úmixed_query_layerÚmixed_key_layerÚmixed_value_layerÚquery_layerÚ	key_layerÚvalue_layerÚattention_scoresÚattention_probsÚattn_outputÚoutputss   &&&&            r   ra   ÚTvpAttention.forwarda  sw  € ð '4×&9Ñ&9¸"Õ&=Ñ#ˆ
Ø ŸJ™J }Ó5ÐàŸ(™( =Ó1ˆØ ŸJ™J }Ó5Ðà—m‘mÐ$5È
ÓSˆØ—M‘M /ÀJÓOˆ	Ø—m‘mÐ$5È
ÓSˆô !Ÿ<š<¨×5HÑ5HÈÈRÓ5PÓQÐØ+¬d¯iªi¸×8PÑ8PÓ.QÕQÐØÒ%Ø/Õ@Ðô Ÿ-™-×/Ñ/Ð0@ÀbÐ/ÓIˆð ×+Ñ+¨OÓ<ˆä—l’l ?Ó@ˆØ!×+Ñ+¨A¨qÓ1×<Ñ<Ó>ˆØ!×)Ñ)¨*Àt×GYÑGYÓZˆà—j‘j Ó-ˆØ—l‘l ;Ó/ˆØ—o‘o kÕ&AÓBˆç4E�;Ð0ˆØˆð MXÈ>ˆØˆr!   )
rò   rñ   rø   rù   r¡   rõ   rž   rð   rô   rö   ©NN)
r#   r$   r%   r&   r2   r  ra   r)   r*   rc   rd   s   @@r   rí   rí   E  s#   ù‡ € õ>÷(
ð 
÷&÷ &ò &r!   rí   c                   óD   a a€ ] tR tRt oV 3R ltV3R lR ltRtVtV ;t# )ÚTvpIntermediatei‹  c                ó"  <€ \         SV `  4        \        P                  ! VP                  VP
                  4      V n        \        VP                  \        4      '       d   \        VP                  ,          V n        R # VP                  V n        R # ©N)r1   r2   r   ró   rj   Úintermediate_sizerù   Ú
isinstanceÚ
hidden_actÚstrr   Úintermediate_act_fnr¢   s   &&€r   r2   ÚTvpIntermediate.__init__Œ  s`   ø€ Ü‰ÑÔÜ—Y’Y˜v×1Ñ1°6×3KÑ3KÓLˆŒ
Ü�f×'Ñ'¬×-Ò-Ü'-¨f×.?Ñ.?Õ'@ˆDÖ$à'-×'8Ñ'8ˆDÖ$r!   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r   r   r¦   ©r   r¨   )r   r   s   "€r   r   ÚTvpIntermediate.__annotate__”  s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r!   c                óJ   € V P                  V4      pV P                  V4      pV# r!  ©rù   r&  )r9   r   s   &&r   ra   ÚTvpIntermediate.forward”  s&   € ØŸ
™
 =Ó1ˆØ×0Ñ0°Ó?ˆØÐr!   r-  rŽ   rd   s   @@r   r  r  ‹  s   ù‡ € õ9÷÷ ð r!   r  c                   óD   a a€ ] tR tRt oV 3R ltV3R lR ltRtVtV ;t# )ÚTvpOutputLayeriš  c                ó0  <€ \         SV `  4        \        P                  ! VP                  VP
                  4      V n        \        P                  ! VP
                  VP                  R 7      V n	        \        P                  ! VP                  4      V n        R# )r’   N)r1   r2   r   ró   r"  rj   rù   rœ   r�   rž   rŸ   r    r¡   r¢   s   &&€r   r2   ÚTvpOutputLayer.__init__›  s`   ø€ Ü‰ÑÔÜ—Y’Y˜v×7Ñ7¸×9KÑ9KÓLˆŒ
ÜŸ,š, v×'9Ñ'9¸v×?TÑ?TÔUˆŒÜ—z’z &×"<Ñ"<Ó=ˆŽr!   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# )r   r   Úinput_tensorr¦   r*  )r   r   s   "€r   r   ÚTvpOutputLayer.__annotate__¡  s1   ø€ ÷ ñ ¡U§\¡\ð ÁÇÁð ÑRW×R^ÑR^ñ r!   c                óx   € V P                  V4      pV P                  V4      pV P                  W,           4      pV# r!  ©rù   r¡   rž   )r9   r   r4  s   &&&r   ra   ÚTvpOutputLayer.forward¡  s5   € ØŸ
™
 =Ó1ˆØŸ™ ]Ó3ˆØŸ™¨Õ(DÓEˆØÐr!   r7  rŽ   rd   s   @@r   r0  r0  š  s   ù‡ € õ>÷÷ ð r!   r0  c                   óH   a a€ ] tR tRt oV 3R ltRV3R lR lltRtVtV ;t# )ÚTvpEncodeLayeri¨  c                ó„   <€ \         SV `  4        \        V4      V n        \	        V4      V n        \        V4      V n        R # r!  )r1   r2   rí   Ú	attentionr  Úintermediater0  Úoutputr¢   s   &&€r   r2   ÚTvpEncodeLayer.__init__©  s3   ø€ Ü‰ÑÔÜ% fÓ-ˆŒÜ+¨FÓ3ˆÔÜ$ VÓ,ˆŽr!   c                ó.   <€ V ^8„  d   QhRS[ R,          /# r  r¸   )r   r   s   "€r   r   ÚTvpEncodeLayer.__annotate__¯  s   ø€ ÷ ñ ñ   $�;ñ	r!   c                óª   € V P                  VVVR 7      pV^ ,          pVR,          pV P                  V4      pV P                  Wu4      pV3V,           pV# ))r  ºrZ   NN©r<  r=  r>  )	r9   r   r  r  Úself_attention_outputsÚattention_outputr  Úintermediate_outputÚlayer_outputs	   &&&&     r   ra   ÚTvpEncodeLayer.forward¯  sj   € ð "&§¡ØØØ/ð "0ó "
Ðð
 2°!Õ4ÐØ(¨Õ,ˆØ"×/Ñ/Ð0@ÓAÐØ—{‘{Ð#6ÓIˆØ�/ GÕ+ˆØˆr!   rD  r  rŽ   rd   s   @@r   r:  r:  ¨  s   ù‡ € õ-÷÷ ò r!   r:  c                   óH   a a€ ] tR tRt oV 3R ltRV3R lR lltRtVtV ;t# )Ú
TvpEncoderiÂ  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)
r1   r2   rh   r   Ú
ModuleListÚrangeÚnum_hidden_layersr:  ÚlayerÚgradient_checkpointing)r9   rh   Ú_r:   s   && €r   r2   ÚTvpEncoder.__init__Ã  sR   ø€ Ü‰ÑÔØŒÜ—]’]ÄEÈ&×JbÑJbÔDcÓ#dÑDc¸q¤N°6Ö$:ÑDcÑ#dÓeˆŒ
Ø&+ˆÖ#ùò $es   ½A&c          	      ól   <€ V ^8„  d   QhRS[ R,          RS[ R,          RS[ R,          RS[S[,          /# )r   r  NÚoutput_hidden_statesÚreturn_dictr¦   )r¹   r   r	   )r   r   s   "€r   r   ÚTvpEncoder.__annotate__É  sF   ø€ ÷ *
ñ *
ñ   $�;ð	*
ñ
 # T�kð*
ñ ˜D•[ð*
ñ 
‘Õ	 ñ*
r!   c                ó6  € Ve   TMV P                   P                  pVe   TMV P                   P                  pVe   TMV P                   P                  pRpRp\	        V P
                  4       FB  w  r‰V'       d
   Wa3,           pV	! WV4      p
V
^ ,          pV'       g   K2  Wz^,          3,           pKD  	  V'       d
   Wa3,           pV'       g(   V3pV'       d
   W¶3,           pV'       d
   W·3,           pV# \        TV'       d   TMR V'       d   VR7      # R R7      # )N)Úlast_hidden_stater   r   r"   )rh   rV  r  rU  Ú	enumeraterP  r	   )r9   r   r  r  rU  rV  Úall_hidden_statesÚall_attentionsÚiÚlayer_moduleÚlayer_outputsr  s   &&&&&&      r   ra   ÚTvpEncoder.forwardÉ  s  € ð &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆØ1BÒ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ò$DÑ È$Ï+É+×JjÑJjð 	ð ÐØˆä(¨¯©Ö4‰OˆAß#Ø$5Ð8HÕ$HÐ!á(¨ÐHYÓZˆMà)¨!Õ,ˆMß Ñ Ø!/ÀÕ3CÐ2EÕ!E’ñ  5÷  Ø 1Ð4DÕ DÐçØ$Ð&ˆGß#Ø!Ð$8Õ8�ß Ø!Ð$5Õ5�ØˆNäØ+ß/CÑ+Èß):�~ô
ð 	
ð AEô
ð 	
r!   )rh   rQ  rP  rê   rŽ   rd   s   @@r   rK  rK  Â  s   ù‡ € õ,÷*
÷ *
ò *
r!   rK  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# )Ú	TvpPooleri÷  c                ó¸   <€ \         SV `  4        \        P                  ! VP                  VP                  4      V n        \        P                  ! 4       V n        R # r!  )r1   r2   r   ró   rj   rù   ÚTanhÚ
activationr¢   s   &&€r   r2   ÚTvpPooler.__init__ø  s9   ø€ Ü‰ÑÔÜ—Y’Y˜v×1Ñ1°6×3EÑ3EÓFˆŒ
ÜŸ'š'›)ˆŽr!   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r)  r*  )r   r   s   "€r   r   ÚTvpPooler.__annotate__ý  s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r!   c                ó\   € VR,          pV P                  V4      pV P                  V4      pV# )rX   rW   )rù   re  )r9   r   Úfirst_token_tensorÚpooled_outputs   &&  r   ra   ÚTvpPooler.forwardý  s2   € ð +¨4Õ0ÐØŸ
™
Ð#5Ó6ˆØŸ™¨Ó6ˆØÐr!   )re  rù   rŽ   rd   s   @@r   rb  rb  ÷  s   ù‡ € õ$÷
÷ ð r!   rb  c                   ó~   a a€ ] tR tRt oRtRt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# )	ÚTvpPreTrainedModeli  ÚmodelTc                ó4   <€ V ^8„  d   QhRS[ P                  /# )r   Úmodule)r   ÚModule)r   r   s   "€r   r   ÚTvpPreTrainedModel.__annotate__  s   ø€ ÷ +ñ +¡B§I¡Iñ +r!   c                ó  <€ \         SV `  V4       \        V\        P                  4      '       dT   \
        P                  ! VP                  RRR7       VP                  e"   \
        P                  ! VP                  ^ 4       M6\        V\        4      '       d!   \
        P                  ! VP                  4       \        VR4      '       d!   \
        P                  ! VP                  4       \        VR4      '       d!   \
        P                  ! VP                  4       \        VR4      '       d!   \
        P                  ! VP                   4       \        VR4      '       d#   \
        P                  ! VP"                  4       R# R# )	zInitialize the weightsÚfan_outr€   )r¯   ÚnonlinearityNÚpad_upÚpad_downÚpad_leftÚ	pad_right)r1   Ú_init_weightsr#  r   rt   ÚinitÚkaiming_normal_Úweightro   Ú	constant_ÚTvpModelÚnormal_Útext_promptrs   rw  rx  ry  rz  )r9   rq  r:   s   &&€r   r{  Ú TvpPreTrainedModel._init_weights  sð   ø€ ô 	‰Ñ˜fÔ%Ü�fœbŸi™i×(Ò(Ü× Ò  §¡°YÈVÕTØ�{‰{Ò&Ü—’˜vŸ{™{¨AÔ.øÜ˜¤×)Ò)Ü�LŠL˜×+Ñ+Ô,ä�6˜8×$Ò$Ü�LŠL˜Ÿ™Ô'Ü�6˜:×&Ò&Ü�LŠL˜Ÿ™Ô)Ü�6˜:×&Ò&Ü�LŠL˜Ÿ™Ô)Ü�6˜;×'Ò'Ü�LŠL˜×)Ñ)Ö*ñ (r!   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # )r   rh   r   )r   r   s   "€r   r   rs    s   ø‡ ‚ áÑò r!   r"   )ÚvideoÚtext)r#   r$   r%   r&   Úbase_model_prefixÚinput_modalitiesÚsupports_gradient_checkpointingr   Úno_gradr{  r(   r)   r*   rc   rd   s   @@r   rn  rn    s=   ù‡ € ð  ÐØ(ÐØ&*Ð#à
‡]‚]ƒ_÷+ò +ó ð+÷ … r!   rn  c                   ó<   a a€ ] tR tRt oRtV 3R ltR tRtVtV ;t	# )ÚTvpFrameDownPadPrompteri"  z6
Pad frames extracted from videos only at the bottom.
c           	     óˆ  <€ VP                   R9  d   \        R4      h\        SV `  4        VP                  V n        VP
                  V n        VP                  V n        VP                   V n         \        P                  ! \        P                  ! ^VP
                  ^VP                  VP                  .4      4      V n        R# ©rJ   z9`visual_prompter_apply` must be in (add, replace, remove)N)rJ   ÚreplaceÚremove)Úvisual_prompter_applyr7   r1   r2   Úvisual_prompt_sizeÚ	frame_numÚmax_img_sizer   Ú	Parameterr   Úrandnrx  r¢   s   &&€r   r2   Ú TvpFrameDownPadPrompter.__init__'  s™   ø€ Ø×'Ñ'Ð/KÔKÜÐXÓYÐYä‰ÑÔØ"(×";Ñ";ˆÔØ×)Ñ)ˆŒØ"×/Ñ/ˆÔØ%+×%AÑ%AˆÔ"äŸšÜ�KŠK˜˜F×,Ñ,¨a°×1JÑ1JÈF×L_ÑL_Ð`Óaó
ˆŽr!   c                ó®  € V P                   R 8w  dy   \        P                  ! V P                  V P                  .VP                  VP
                  R7      pRW P                  V P                  ,
          V P                  1R3&   W,          pV P                   R8w  d»   \        P                  ! VP                  ^ ,          VP                  ^,          ^V P                  V P                  .VP
                  R7      pV P                  V P                  ,
          pV P                  VRRRW@P                  1R3&   WP                  VP                  4      ,          pV# )rJ   r»   g        rX   r�  ©r½   )r‘  r   Úonesr”  r¼   r½   r’  rÐ   r|   rx  Úto)r9   r‚   Úvisual_prompt_maskÚpromptÚstart_points   &&   r   ra   ÚTvpFrameDownPadPrompter.forward5  s(  € Ø×%Ñ%¨Ô.Ü!&§¢Ø×"Ñ" D×$5Ñ$5Ð6¸l×>PÑ>PÐYe×YlÑYlô"Ðð fiÐ×0Ñ0°4×3JÑ3JÕJÈT×M^ÑM^Ð^Ð`aÐaÑbØÕ.ˆLØ×%Ñ%¨Ô1Ü—[’[Ø×#Ñ# AÕ&¨×(:Ñ(:¸1Õ(=¸qÀ$×BSÑBSÐUY×UfÑUfÐgØ#×*Ñ*ôˆFð ×+Ñ+¨d×.EÑ.EÕEˆKØBFÇ-Á-ˆF�1�a˜˜K×*;Ñ*;Ð;¸QÐ>Ñ?ØŸI™I l×&8Ñ&8Ó9Õ9ˆLØÐr!   )r“  r”  rx  r’  r‘  rë   rd   s   @@r   rŒ  rŒ  "  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
# )
ÚTvpFramePadPrompteriG  z7
Pad frames extracted from videos in the surroundings.
c           
     ó  <€ VP                   R9  d   \        R4      h\        SV `  4        VP                  V n        VP
                  V n        VP                   V n         VP
                  VP                  ^,          ,
          V n        \        P                  ! \        P                  ! ^VP                  ^VP                  VP
                  .4      4      V n        \        P                  ! \        P                  ! ^VP                  ^VP                  VP
                  .4      4      V n        \        P                  ! \        P                  ! ^VP                  ^VP
                  VP                  ^,          ,
          VP                  .4      4      V n        \        P                  ! \        P                  ! ^VP                  ^VP
                  VP                  ^,          ,
          VP                  .4      4      V n        R# rŽ  )r‘  r7   r1   r2   r„   r”  r’  Ú	base_sizer   r•  r   r–  rw  rx  ry  rz  r¢   s   &&€r   r2   ÚTvpFramePadPrompter.__init__L  s‹  ø€ Ø×'Ñ'Ð/KÔKÜÐXÓYÐYä‰ÑÔØ ×+Ñ+ˆŒØ"×/Ñ/ˆÔØ%+×%AÑ%AˆÔ"Ø×,Ñ,¨v×/HÑ/HÈ1Õ/LÕLˆŒÜ—l’lÜ�KŠK˜˜F×-Ñ-¨q°&×2KÑ2KÈV×M`ÑM`ÐaÓbó
ˆŒô ŸšÜ�KŠK˜˜F×-Ñ-¨q°&×2KÑ2KÈV×M`ÑM`ÐaÓbó
ˆŒô ŸšÜ�KŠKàØ×%Ñ%ØØ×'Ñ'¨&×*CÑ*CÀaÕ*GÕGØ×-Ñ-ðóó

ˆŒô ŸšÜ�KŠKàØ×%Ñ%ØØ×'Ñ'¨&×*CÑ*CÀaÕ*GÕGØ×-Ñ-ðóó

ˆŽr!   c                óZ   <€ V ^8„  d   QhRS[ P                  RS[RS[RS[ P                  /# )r   r�  r†   r‡   r¦   r§   )r   r   s   "€r   r   Ú TvpFramePadPrompter.__annotate__r  s5   ø€ ÷ ñ ©u¯|©|ð ÁSð ÑQTð ÑY^×YeÑYeñ r!   c                ó  € W P                   ,          W0P                   ,          rTVP                  w  rgr‰p
VP                  Wg,          W‰V
4      p\        P                  P                  VWE3RRR7      pVP                  WgW‚V4      pV# )zŸ
This method allows to interpolate the pre-trained pad weights, to be able to use the model on collection of high
resolution images (high resolution videos).

r¬   Fr­   )r”  r|   r  r   r~   r±   )r9   r�  r†   r‡   r²   r³   Úbatchr„   ÚchannelsÚprompt_heightÚprompt_widths   &&&&       r   Úinterpolate_pad_encodingÚ,TvpFramePadPrompter.interpolate_pad_encodingr  s„   € ð ×+Ñ+Õ+¨U×5FÑ5FÕ-FˆBàCIÇ<Á<Ñ@ˆ˜8°Lð —‘ Õ 2°HÈ\ÓZˆÜ—‘×*Ñ*ØØ˜ØØð	 +ó 
ˆð —‘ °8ÀUÓKˆØˆr!   c                ó    <€ V ^8„  d   QhRS[ /# )r   r¬  r¸   )r   r   s   "€r   r   r¦  Š  s   ø€ ÷ ñ ¹dñ r!   c           	     óª  € V'       d'   VP                   R,          VP                   R,          3MV P                  V P                  3w  r4V P                  R9  d   \        RV P                   24      hV P                  R9   d7   \        P
                  ! W4.VP                  VP                  R7      pW,          pV P                  R	9   Ed	   \        P                  ! ^V P                  ^V P                  V P                  VP                  R7      p\        P                  ! V P                  W`P                  .^R7      p\        P                  ! V P                  WpP                  .^R7      p\        P                  ! VP!                  ^ 4      V.,          4      pV'       d   V P#                  WsV4      pWP%                  VP                  4      ,           pV# )
r   z$Invalid visual_prompter_apply value r»   r™  r	  r  rp   )rJ   r�  r�  )r�  r�  )r�  rJ   )r|   r”  r‘  r7   r   rš  r¼   r½   rÐ   r„   r£  Úcatry  rz  rw  rx  rá   r¬  r›  )r9   r‚   r¬  r†   r‡   rœ  Úbaser�  s   &&&     r   ra   ÚTvpFramePadPrompter.forwardŠ  sl  € ÷ (ð ×Ñ Õ# \×%7Ñ%7¸Õ%;Ñ<à×#Ñ# T×%6Ñ%6Ð7ñ 	ˆð
 ×%Ñ%Ð-IÔIÜÐCÀD×D^ÑD^ÐC_Ð`ÓaÐaØ×%Ñ%Ð)>Ô>Ü!&§¢¨V¨OÀ<×CUÑCUÐ^j×^qÑ^qÔ!rÐØÕ.ˆLØ×%Ñ%Ð);Õ;Ü—;’;˜q $§/¡/°1°d·n±nÀdÇnÁnÐ]i×]pÑ]pÔqˆDä—Y’Y §¡¨t·^±^ÐDÈ!ÔLˆFÜ—Y’Y §¡¨V·]±]ÐCÈÔKˆFÜ—Y’Y˜|×0Ñ0°Ó3°v°hÕ>Ó?ˆFß'Ø×6Ñ6°vÀuÓM�Ø'¯)©)°L×4FÑ4FÓ*GÕGˆLØÐr!   )r£  r”  r„   rx  ry  rz  rw  r‘  rÖ   )r#   r$   r%   r&   r'   r2   r¬  ra   r)   r*   rc   rd   s   @@r   r¡  r¡  G  s)   ù‡ € ñõ$
÷Lð ÷0÷ ò r!   r¡  ÚframedownpadÚframepadzw
    The bare Tvp Model transformer outputting BaseModelOutputWithPooling object without any specific head on top.
    )Úcustom_introc                   ó^   a a€ ] tR tRt oV 3R ltR tR t]RV3R lR ll4       tRt	Vt
V ;t# )	r€  i§  c                ó8  <€ \         SV `  V4       Wn        \        V4      V n        \        V4      V n        \        V4      V n        \        V4      V n
        \        V4      V n        \        P                  ! \        P                   ! ^^
VP"                  .4      4      V n        \        P&                  ! VP(                  4      V n        VP,                  \.        9  d   \1        R4      h\.        VP,                  ,          ! V4      V n        V P5                  4        R# )rZ   z:`visual_prompter_type` must be in (framedownpad, framepad)N)r1   r2   rh   rf   Úvision_modelrØ   rÔ   r�   Úvisual_embeddingsrK  Úencoderrb  Úpoolerr   r•  r   r–  rj   r‚  rŸ   r    r¡   Úvisual_prompter_typeÚTVP_PROMPTER_CLASSES_MAPPINGr7   Úvisual_prompterÚ	post_initr¢   s   &&€r   r2   ÚTvpModel.__init__­  sÎ   ø€ Ü‰Ñ˜Ô ØŒÜ*¨6Ó2ˆÔÜ0°Ó8ˆŒÜ!8¸Ó!@ˆÔÜ! &Ó)ˆŒÜ Ó'ˆŒÜŸ<š<¬¯ª°Q¸¸F×<NÑ<NÐ4OÓ(PÓQˆÔÜ—z’z &×"<Ñ"<Ó=ˆŒØ×&Ñ&Ô.JÔJÜÐYÓZÐZÜ;¸F×<WÑ<WÖXÐY_Ó`ˆÔà�‰Ör!   c                ó.   € V P                   P                  # r!  ©rÔ   rÝ   )r9   s   &r   Úget_input_embeddingsÚTvpModel.get_input_embeddings½  s   € Ø�‰×.Ñ.Ð.r!   c                ó&   € WP                   n        R # r!  rÂ  )r9   rö   s   &&r   Úset_input_embeddingsÚTvpModel.set_input_embeddingsÀ  s   € Ø*/�‰Ö'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,          RS[R,          RS[R	S[S[,          /# )
r   rä   Nr‚   r  r  rU  rV  r´   r¦   )r   Ú
LongTensorr   r¹   r   r
   )r   r   s   "€r   r   ÚTvpModel.__annotate__Ä  s˜   ø€ ÷ I
ñ I
á×#Ñ# dÕ*ðI
ñ ×'Ñ'¨$Õ.ðI
ñ ×(Ñ(¨4Õ/ð	I
ñ
   $�;ðI
ñ # T�kðI
ñ ˜D•[ðI
ñ #'ðI
ñ 
Ñ+Õ	+ñI
r!   c                óä  € Ve   TMV P                   P                  pV P                  V P                  W'R7      4      pV P	                  VR7      p	V P                  W'R7      p
VeŠ   VP                  V
P                  R,          4      p\        P                  ! VP                  ^ ,          ^
4      P                  VP                  VP                  R7      p\        P                  ! WÃV.RR7      pV P                  P                  V	P                  ^ ,          RR4      p\        P                  ! WÙV
.^R7      p\!        V P                   VVR7      pV P#                  VVVVVR7      pV'       d   VP$                  MV^ ,          pV P'                  V4      pV P)                  V4      pV P)                  V4      pV'       g   VV3VR	,          ,           # \+        VVVP,                  VP.                  R
7      # )aÆ  
Examples:
```python
>>> import torch
>>> from transformers import AutoConfig, AutoTokenizer, TvpModel

>>> model = TvpModel.from_pretrained("Jiqing/tiny-random-tvp")

>>> tokenizer = AutoTokenizer.from_pretrained("Jiqing/tiny-random-tvp")

>>> pixel_values = torch.rand(1, 1, 3, 448, 448)
>>> text_inputs = tokenizer("This is an example input", return_tensors="pt")
>>> output = model(text_inputs.input_ids, pixel_values, text_inputs.attention_mask)
```)r¬  )rä   rÎ   r  )r½   r¼   r	  )rh   ræ   r  )r  r  rU  rV  rC  )rY  Úpooler_outputr   r   rp   )rh   rV  r¸  r¾  rÔ   r¹  Únew_onesr|   r   rš  r›  r½   r¼   r°  r‚  rã   r   rº  rY  r»  r¡   r
   r   r   )r9   rä   r‚   r  r  rU  rV  r´   ÚkwargsÚtext_embedding_outputÚvisual_embedding_outputÚvisual_attention_maskÚpt_maskr‚  Úembedding_outputÚencoder_outputsrY  rk  s   &&&&&&&&,         r   ra   ÚTvpModel.forwardÃ  sâ  € ð4 &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆà×(Ñ(Ø× Ñ  Ð Óaó
ˆð !%§¡¸) Ó DÐà"&×"8Ñ"8Øð #9ó #
Ðð Ò%à$2×$;Ñ$;Ð<S×<YÑ<YÐZ\Õ<]Ó$^Ð!Ü—j’j ×!5Ñ!5°aÕ!8¸"Ó=×@Ñ@Ø%×,Ñ,°N×4HÑ4Hð Aó ˆGô #ŸYšY¨ÐAVÐ'WÐ]_Ô`ˆNà×&Ñ&×-Ñ-Ð.C×.IÑ.IÈ!Õ.LÈbÐRTÓUˆä Ÿ9š9 kÐJaÐ%bÐhiÔjÐä2Ø—;‘;Ø*Ø)ô
ˆð Ÿ,™,ØØ)Ø/Ø!5Ø#ð 'ó 
ˆ÷ BM˜O×=Ò=ÐRaÐbcÕRdÐØŸ™Ð$5Ó6ˆØ ŸL™LÐ):Ó;ÐØŸ™ ]Ó3ˆßØ% }Ð5¸ÈÕ8KÕKÐKÜ)Ø/Ø'Ø)×7Ñ7Ø&×1Ñ1ô	
ð 	
r!   )	rh   r¡   rÔ   rº  r»  r‚  r¸  r¹  r¾  )NNNNNNF)r#   r$   r%   r&   r2   rÃ  rÆ  r   ra   r)   r*   rc   rd   s   @@r   r€  r€  §  s6   ù‡ € õò /ò0ð ÷I
ñ I
ó ÷I
ð I
r!   r€  c                   ó8   a a€ ] tR tRt oV 3R ltR tRtVtV ;t# )ÚTvpVideoGroundingHeadi  c                óT  <€ \         SV `  4        \        P                  ! VP                  VP                  ^,          4      V n        \        P                  ! VP                  ^,          ^4      V n        \        P                  ! 4       V n        \        P                  ! 4       V n
        R# )r   N)r1   r2   r   ró   rj   Úlayer_0Úlayer_1ÚReLUÚactivation_0ÚSigmoidÚactivation_1r¢   s   &&€r   r2   ÚTvpVideoGroundingHead.__init__  sj   ø€ Ü‰ÑÔÜ—y’y ×!3Ñ!3°V×5GÑ5GÈ!Õ5KÓLˆŒÜ—y’y ×!3Ñ!3°aÕ!7¸Ó;ˆŒÜŸGšG›IˆÔÜŸJšJ›LˆÖr!   c                ó†   € V P                  V P                  V4      4      pV P                  V P                  V4      4      pV# r!  )rÜ  rÙ  rÞ  rÚ  )r9   rÌ  r   s   && r   ra   ÚTvpVideoGroundingHead.forward  s9   € Ø×"Ñ" 4§<¡<°Ó#>Ó?ˆØ×"Ñ" 4§<¡<°Ó#7Ó8ˆØˆr!   )rÜ  rÞ  rÙ  rÚ  rŽ   rd   s   @@r   r×  r×    s   ù‡ € õ)÷ò r!   r×  zb
    Tvp Model with a video grounding head on top computing IoU, distance, and duration loss.
    c                   óR   a a€ ] tR tRt oV 3R lt]RV3R lR ll4       tRtVtV ;t	# )ÚTvpForVideoGroundingi  c                ó’   <€ \         SV `  V4       Wn        \        V4      V n        \        V4      V n        V P                  4        R # r!  )r1   r2   rh   r€  ro  r×  Úvideo_grounding_headr¿  r¢   s   &&€r   r2   ÚTvpForVideoGrounding.__init__$  s8   ø€ Ü‰Ñ˜Ô ØŒÜ˜fÓ%ˆŒ
Ü$9¸&Ó$AˆÔ!à�‰Ör!   c                ó"  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[S[ P                  ,          R,          RS[R,          RS[R,          RS[R,          R	S[R
S[S[,          /	# )r   rä   Nr‚   r  r^   r  rU  rV  r´   r¦   )r   rÉ  r   r   r¨   r¹   r   )r   r   s   "€r   r   Ú!TvpForVideoGrounding.__annotate__-  s¦   ø€ ÷ ?
ñ ?
á×#Ñ# dÕ*ð?
ñ ×'Ñ'¨$Õ.ð?
ñ ×(Ñ(¨4Õ/ð	?
ñ
 ‘e—l‘lÕ# dÕ*ð?
ñ   $�;ð?
ñ # T�kð?
ñ ˜D•[ð?
ñ #'ð?
ñ 
Ñ(Õ	(ñ?
r!   c	           
     óX  € Ve   TMV P                   P                  pV P                  VVVVVVVR7      p
V
^,          pV P                  V4      pRpVeŒ   \	        . RO4      pVP                  V P                  4       V! WÄ4      pVR,          V P                   P                  VR,          ,          ,           V P                   P                  VR,          ,          ,           pV'       g"   V3V
R,          ,           p
Ve   V3V
,           p
V
# \        VVV
P                  V
P                  R7      # )	a‡  
labels (`torch.FloatTensor` of shape `(batch_size, 3)`, *optional*):
    The labels contains duration, start time, and end time of the video corresponding to the text.

Examples:
```python
>>> import torch
>>> from transformers import AutoConfig, AutoTokenizer, TvpForVideoGrounding

>>> model = TvpForVideoGrounding.from_pretrained("Jiqing/tiny-random-tvp")

>>> tokenizer = AutoTokenizer.from_pretrained("Jiqing/tiny-random-tvp")

>>> pixel_values = torch.rand(1, 1, 3, 448, 448)
>>> text_inputs = tokenizer("This is an example input", return_tensors="pt")
>>> output = model(text_inputs.input_ids, pixel_values, text_inputs.attention_mask)
```N)r  rU  rV  r´   r.   r/   r0   :r   NN)r   r   r   r   )r.   r/   r0   )rh   rV  ro  rå  r,   r›  r½   Údistance_loss_weightÚduration_loss_weightr   r   r   )r9   rä   r‚   r  r^   r  rU  rV  r´   rÎ  r  rÌ  r   r   Ú	criterionÚ	loss_dicts   &&&&&&&&&,      r   ra   ÚTvpForVideoGrounding.forward,  s%  € ð< &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆØ—*‘*ØØØØ/Ø!5Ø#Ø%=ð ó 
ˆð   �
ˆØ×*Ñ*¨=Ó9ˆàˆØÒÜÒ ?Ó@ˆIØ�L‰L˜Ÿ™Ô%Ù! &Ó1ˆIà˜%Õ Ø—+‘+×2Ñ2°Y¸zÕ5JÕJõKà—+‘+×2Ñ2°Y¸zÕ5JÕJõKð ÷
 Ø�i '¨"¥+Õ-ˆGØÒØ˜' GÕ+�ØˆNä&ØØØ!×/Ñ/Ø×)Ñ)ô	
ð 	
r!   )rh   ro  rå  )NNNNNNNF)
r#   r$   r%   r&   r2   r   ra   r)   r*   rc   rd   s   @@r   rã  rã    s(   ù‡ € õð ÷?
ñ ?
ó ÷?
ð ?
r!   rã  )r€  rn  rã  )3r'   r  Údataclassesr   r   r   Ú r   r|  Úactivationsr   Úbackbone_utilsr   Úmasking_utilsr   Úmodeling_layersr   Úmodeling_outputsr	   r
   r   Úmodeling_utilsr   Úutilsr   r   Úconfiguration_tvpr   Ú
get_loggerr#   Úloggerr   rr  r,   rf   r�   rØ   rí   r  r0  r:  rK  rb  rn  rŒ  r¡  r½  r€  r×  rã  Ú__all__r"   r!   r   Ú<module>rü     sÓ  ðñ ã Ý !ã Ý å &Ý !Ý +Ý 6Ý 9ß XÑ XÝ -ß ,Ý (ð 
×	Ò	˜HÓ	%€ð Ø
ô<˜kó <ó ó ð<ô$Mˆb�i‰iô Mô`%�R—Y‘Yô %ôPn˜bŸi™iô nôb!˜RŸY™Yô !ôHB�2—9‘9ô BôL�b—i‘iô ô�R—Y‘Yô ôÐ/ô ô41
�—‘ô 1
ôj�—	‘	ô ð ô+˜ó +ó ð+ô6"˜bŸi™iô "ôJW˜"Ÿ)™)ô Wðv Ð+ØÐ#ð Ð ñ ðôô
a
Ð!ó a
óð
a
ôH˜BŸI™Iô ñ ðôô
I
Ð-ó I
óð
I
òX E‚r!   