§
    ‚Štjš*  ã                   óv  — d dl mZ d dlZd dlmZ d dlmZ ddlmZ ddlm	Z	 ddl
mZmZ d	d
lmZ d	dlmZmZmZmZmZmZmZmZmZmZmZ  ed¬¦  «        e G d„ de¦  «        ¦   «         ¦   «         Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z  G d„ de¦  «        Z! ed¬¦  «        e G d„ de¦  «        ¦   «         ¦   «         Z" G d „ d!e¦  «        Z# G d"„ d#e¦  «        Z$ G d$„ d%e¦  «        Z% G d&„ d'e¦  «        Z& G d(„ d)e¦  «        Z'g d*¢Z(dS )+é    )Ú	dataclassN)Ústrict)Únné   )ÚModelOutput)ÚUnpack)ÚTransformersKwargsÚauto_docstringé   )Ú
EomtConfig)ÚEomtEmbeddingsÚEomtForUniversalSegmentationÚ	EomtLayerÚEomtLayerNorm2dÚEomtLayerScaleÚEomtMLPÚEomtPatchEmbeddingsÚEomtPreTrainedModelÚEomtScaleBlockÚEomtScaleLayerÚEomtSwiGLUFFNz&tue-mps/videomt-dinov2-small-ytvis2019)Ú
checkpointc                   ó   — e Zd ZdZdS )ÚVideomtConfigÚvideomtN)Ú__name__Ú
__module__Ú__qualname__Ú
model_type© ó    úi/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/videomt/modular_videomt.pyr   r   (   s   € € € € € ð €J€J€Jr!   r   c                   ó2   — e Zd Zdej        dej        fd„ZdS )ÚVideomtPatchEmbeddingsÚpixel_valuesÚreturnc                 ó.  — |j         d         }|| j        k    rt          d| j        › d|› d�¦  «        ‚|                     | j        j        j        ¬¦  «        }|                      |¦  «                             d¦  «                             dd¦  «        }|S )Né   zoMake sure that the channel dimension of the pixel values match with the one set in the configuration. Expected z	 but got ú.)Údtyper   )	ÚshapeÚnum_channelsÚ
ValueErrorÚtoÚ
projectionÚweightr*   ÚflattenÚ	transpose)Úselfr%   r,   Ú
embeddingss       r"   ÚforwardzVideomtPatchEmbeddings.forward/   s®   € Ø#Ô)¨!Ô,ˆØ˜4Ô,Ò,Ð,ÝðIØ!Ô.ðIð IØ9EðIð Ið Iñô ð ð
 $—’¨T¬_Ô-CÔ-I�ÑJÔJˆØ—_’_ \Ñ2Ô2×:Ò:¸1Ñ=Ô=×GÒGÈÈ1ÑMÔMˆ
ØÐr!   N)r   r   r   ÚtorchÚTensorr5   r    r!   r"   r$   r$   .   s:   € € € € € ð
 E¤Lð 
°U´\ð 
ð 
ð 
ð 
ð 
ð 
r!   r$   c                   ó^   ‡ — e Zd Zdefˆ fd„Zddej        dej        dz  dej        fd„Zˆ xZS )	ÚVideomtEmbeddingsÚconfigc                 óÖ   •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          j        t          j        dd|j        ¦  «        ¦  «        | _	        d S )Nr(   )
ÚsuperÚ__init__r$   Úpatch_embeddingsr   Ú	Parameterr6   ÚzerosÚhidden_sizeÚ
mask_token©r3   r:   Ú	__class__s     €r"   r=   zVideomtEmbeddings.__init__=   sQ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý 6°vÑ >Ô >ˆÔÝœ,¥u¤{°1°a¸Ô9KÑ'LÔ'LÑMÔMˆŒˆˆr!   Nr%   Úbool_masked_posr&   c                 óö  — |j         dk    rD|j        \  }}}}}|                     ||z  |||¦  «        }|�|                     ||z  d¦  «        }n.|�,|j         dk    r!|                     |j        d         d¦  «        }|j        d         }|                      |¦  «        }|�T|                     |j        t          j        ¬¦  «                             d¦  «        }	t          j	        |	| j
        |¦  «        }| j                             |dd¦  «        }
| j                             |dd¦  «        }||                      | j        ¦  «        z   }t          j        |
||gd¬¦  «        }|                      |¦  «        }|S )Né   éÿÿÿÿr   r   )Údevicer*   r(   ©Údim)Úndimr+   Úreshaper>   r.   rI   r6   ÚboolÚ	unsqueezeÚwhererB   Ú	cls_tokenÚexpandÚregister_tokensÚposition_embeddingsÚposition_idsÚcatÚdropout)r3   r%   rE   Ú
batch_sizeÚ
num_framesr,   ÚheightÚwidthr4   ÚmaskÚ
cls_tokensrS   s               r"   r5   zVideomtEmbeddings.forwardB   s}  € ØÔ Ò!Ð!ØBNÔBTÑ?ˆJ˜
 L°&¸%Ø'×/Ò/°
¸ZÑ0GÈÐW]Ð_dÑeÔeˆLàÐ*Ø"1×"9Ò"9¸*ÀzÑ:QÐSUÑ"VÔ"V�øØÐ(¨_Ô-AÀAÒ-EÐ-EØ-×5Ò5°oÔ6KÈAÔ6NÐPRÑSÔSˆOà!Ô'¨Ô*ˆ
Ø×*Ò*¨<Ñ8Ô8ˆ
àÐ&Ø"×%Ò%¨ZÔ->ÅeÄjÐ%ÑQÔQ×[Ò[Ð\^Ñ_Ô_ˆDÝœ T¨4¬?¸JÑGÔGˆJà”^×*Ò*¨:°r¸2Ñ>Ô>ˆ
ØÔ.×5Ò5°jÀ"ÀbÑIÔIˆà $×":Ò":¸4Ô;LÑ"MÔ"MÑMˆ
Ý”Y 
¨O¸ZÐHÈaÐPÑPÔPˆ
Ø—\’\ *Ñ-Ô-ˆ
ØÐr!   ©N)	r   r   r   r   r=   r6   r7   r5   Ú__classcell__©rD   s   @r"   r9   r9   <   s‡   ø€ € € € € ðN˜}ð Nð Nð Nð Nð Nð Nð
ð  E¤Lð À5Ä<ÐRVÑCVð ÐbgÔbnð ð ð ð ð ð ð ð r!   r9   c                   ó   — e Zd ZdS )Ú
VideomtMLPN©r   r   r   r    r!   r"   rb   rb   \   ó   € € € € € Ø€Dr!   rb   c                   ó   — e Zd ZdS )ÚVideomtGatedMLPNrc   r    r!   r"   rf   rf   `   rd   r!   rf   c                   ó   — e Zd ZdS )ÚVideomtLayerNrc   r    r!   r"   rh   rh   d   rd   r!   rh   c                   ó   — e Zd ZdS )ÚVideomtLayerScaleNrc   r    r!   r"   rj   rj   h   rd   r!   rj   a¨  
    Class for outputs of [`VideomtForUniversalSegmentationOutput`].

    This output can be directly passed to [`~VideomtVideoProcessor.post_process_semantic_segmentation`] or
    [`~VideomtVideoProcessor.post_process_instance_segmentation`] or
    [`~VideomtVideoProcessor.post_process_panoptic_segmentation`] to compute final segmentation maps. Please, see
    [`~VideomtVideoProcessor`] for details regarding usage.
    )Úcustom_introc                   óà   — e Zd ZU dZdZej        dz  ed<   dZej        dz  ed<   dZ	ej        dz  ed<   dZ
ej        dz  ed<   dZeej                 dz  ed<   dZeej                 dz  ed<   dS )	Ú%VideomtForUniversalSegmentationOutputa€  
    loss (`torch.Tensor`, *optional*):
        The computed loss, returned when labels are present.
    class_queries_logits (`torch.FloatTensor`):
        A tensor of shape `(batch_size, num_queries, num_labels + 1)` representing the proposed classes for each
        query. Note the `+ 1` is needed because we incorporate the null class.
    masks_queries_logits (`torch.FloatTensor`):
        A tensor of shape `(batch_size, num_queries, height, width)` representing the proposed masks for each
        query.
    last_hidden_state (`torch.FloatTensor` of shape `(batch_size, num_channels, height, width)`):
        Last hidden states (final feature map) of the last layer.
    hidden_states (`tuple(torch.FloatTensor)`, *optional*, returned when `output_hidden_states=True` is passed or when `config.output_hidden_states=True`):
        Tuple of `torch.FloatTensor` (one for the output of the embeddings + one for the output of each stage) of
        shape `(batch_size, sequence_length, hidden_size)`. Hidden-states all layers of the model.
    attentions (`tuple(tuple(torch.FloatTensor))`, *optional*, returned when `output_attentions=True` is passed or when `config.output_attentions=True`):
        Tuple of `tuple(torch.FloatTensor)` (one for each layer) of shape `(batch_size, num_heads, sequence_length,
        sequence_length)`. Self and Cross Attentions weights from transformer decoder.
    NÚlossÚclass_queries_logitsÚmasks_queries_logitsÚlast_hidden_stateÚhidden_statesÚ
attentions)r   r   r   Ú__doc__rn   r6   ÚFloatTensorÚ__annotations__ro   rp   rq   rr   Útuplers   r    r!   r"   rm   rm   l   s»   € € € € € € ðð ð& &*€Dˆ%Ô
˜dÑ
"Ð)Ð)Ñ)Ø59Ð˜%Ô+¨dÑ2Ð9Ð9Ñ9Ø59Ð˜%Ô+¨dÑ2Ð9Ð9Ñ9Ø26Ð�uÔ(¨4Ñ/Ð6Ð6Ñ6Ø59€M�5˜Ô*Ô+¨dÑ2Ð9Ð9Ñ9Ø26€J��eÔ'Ô(¨4Ñ/Ð6Ð6Ñ6Ð6Ð6r!   rm   c                   ód   ‡ — e Zd ZdZdZ ej        ¦   «         dej        ddfˆ fd„¦   «         Z	ˆ xZ
S )ÚVideomtPreTrainedModelÚpixel_values_videos)ÚvideoÚmoduler&   Nc                 óÀ   •— t          ¦   «                              |¦  «         t          |t          ¦  «        r&t          j                             |j        ¦  «         d S d S r^   )r<   Ú_init_weightsÚ
isinstancer9   r   ÚinitÚzeros_rB   )r3   r|   rD   s     €r"   r~   z$VideomtPreTrainedModel._init_weights—   sU   ø€ å‰Œ×Ò˜fÑ%Ô%Ð%Ý�fÕ/Ñ0Ô0ð 	.ÝŒG�NŠN˜6Ô,Ñ-Ô-Ð-Ð-Ð-ð	.ð 	.r!   )r   r   r   Úmain_input_nameÚinput_modalitiesr6   Úno_gradr   ÚModuler~   r_   r`   s   @r"   ry   ry   “   sj   ø€ € € € € Ø+€OØ!Ðà€U„]�_„_ð. B¤Ið .°$ð .ð .ð .ð .ð .ñ „_ð.ð .ð .ð .ð .r!   ry   c                   ó   — e Zd ZdS )ÚVideomtLayerNorm2dNrc   r    r!   r"   r‡   r‡   ž   rd   r!   r‡   c                   ó   — e Zd ZdS )ÚVideomtScaleLayerNrc   r    r!   r"   r‰   r‰   ¢   rd   r!   r‰   c                   ó   — e Zd ZdS )ÚVideomtScaleBlockNrc   r    r!   r"   r‹   r‹   ¦   rd   r!   r‹   c                   óÈ   ‡ — e Zd ZdZdefˆ fd„Zd„ Z	 	 	 	 ddej        dz  de	ej                 dz  de	ej                 dz  de	ej                 dz  d	e
e         d
efd„Zˆ xZS )ÚVideomtForUniversalSegmentationrz   r:   c                 ó’   •— t          ¦   «                              |¦  «         t          j        |j        |j        ¦  «        | _        d S r^   )r<   r=   r   ÚLinearrA   Úquery_updaterrC   s     €r"   r=   z(VideomtForUniversalSegmentation.__init__­   s;   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ÝœY vÔ'9¸6Ô;MÑNÔNˆÔÐÐr!   c                 ó    — t          d¦  «        ‚)NzNot needed for Videomt)ÚAttributeError)Ú	attn_maskÚprobÚnum_query_tokensÚencoder_start_tokensrI   s        r"   Ú_disable_attention_maskz7VideomtForUniversalSegmentation._disable_attention_mask±   s   € ÝÐ5Ñ6Ô6Ð6r!   NÚmask_labelsÚclass_labelsÚpatch_offsetsÚkwargsr&   c           	      ó’  — d|v rt          d¦  «        ‚|€t          d¦  «        ‚|j        dk    rt          d¦  «        ‚|€|�t          d¦  «        ‚|j        \  }}}}	}
|                     ||z  ||	|
¦  «        }|                      |¦  «        }| j        | j        j        z
  }| j        d|…         D ]} ||¦  «        }Œ| 	                    |||j        d         |j        d	         ¦  «        }g }g }g }d}t          |¦  «        D �]s}|dd…|f         }|€G| j        j        ddd…dd…f                              |d
d
¦  «                             |j        ¦  «        }n_|                      |¦  «                             |j        ¦  «        | j        j        ddd…dd…f                              |j        ¦  «        z   }t#          j        ||fd¬¦  «        }| j        |d…         D ]} ||¦  «        }Œ|                      |¦  «        }|                      |¦  «        \  }}|                     |¦  «         |                     |¦  «         |                     |¦  «         |dd…d| j        j        …dd…f         }�Œut/          dt#          j        |d¬¦  «        t#          j        |d¬¦  «        t#          j        |d¬¦  «        ¬¦  «        S )aø  
        pixel_values_videos (`torch.Tensor`, *optional*):
            Video inputs of shape `(batch_size, num_frames, num_channels, height, width)`.
        mask_labels (`list[torch.Tensor]`, *optional*):
            Not supported for 5D video inputs.
        class_labels (`list[torch.LongTensor]`, *optional*):
            Not supported for 5D video inputs.
        patch_offsets (`list[torch.Tensor]`, *optional*):
            Unused for video inputs and only kept for modular compatibility.
        r%   zAUse `pixel_values_videos` with `VideomtForUniversalSegmentation`.Nz'You have to specify pixel_values_videosrG   zyVideomtForUniversalSegmentation only supports 5D video inputs of shape (batch_size, num_frames, channels, height, width).z“Training with 5D video inputs is not supported in `VideomtForUniversalSegmentation`. Flatten frames and use `EomtForUniversalSegmentation` instead.r(   r   rH   rJ   r   )rn   rp   ro   rq   )r-   rL   r+   rM   r4   Únum_hidden_layersr:   Ú
num_blocksÚlayersÚviewÚrangeÚqueryr0   rR   r.   rI   r�   r6   rV   Ú	layernormÚpredictÚappendÚnum_queriesrm   )r3   rz   r˜   r™   rš   r›   rX   rY   r,   rZ   r[   Úflat_pixel_valuesrr   Úquery_start_idxÚlayer_moduleÚall_masks_queries_logitsÚall_class_queries_logitsÚall_last_hidden_statesÚpropagated_queryÚ	frame_idxÚframe_hidden_statesÚquery_tokensÚsequence_outputrp   ro   s                            r"   r5   z'VideomtForUniversalSegmentation.forward´   sT  € ð$ ˜VÐ#Ð#ÝÐ`ÑaÔaÐaàÐ&ÝÐFÑGÔGÐGàÔ# qÒ(Ð(ÝðEñô ð ð
 Ð" lÐ&>ÝðQñô ð ð
 ?RÔ>WÑ;ˆ
�J ¨f°eØ/×7Ò7¸
ÀZÑ8OÐQ]Ð_eÐglÑmÔmÐàŸšÐ(9Ñ:Ô:ˆØÔ0°4´;Ô3IÑIˆà œKÐ(8¨Ð(8Ô9ð 	8ð 	8ˆLØ(˜L¨Ñ7Ô7ˆMˆMà%×*Ò*¨:°zÀ=ÔCVÐWXÔCYÐ[hÔ[nÐopÔ[qÑrÔrˆà#%Ð Ø#%Ð Ø!#ÐØÐå˜zÑ*Ô*ð 	Tñ 	TˆIØ"/°°°°9°Ô"=ÐàÐ'Ø#œzÔ0°°q°q°q¸!¸!¸!°Ô<×CÒCÀJÐPRÐTVÑWÔW×ZÒZÐ[nÔ[uÑvÔv��à#×1Ò1Ð2BÑCÔC×FÒFÐGZÔGaÑbÔbÐeiÔeoÔevØ˜!˜!˜!˜Q˜Q˜Q�Jôfç’"Ð(Ô/Ñ0Ô0ñ 1�õ #(¤)¨\Ð;NÐ,OÐUVÐ"WÑ"WÔ"WÐà $¤¨OÐ,<Ð,<Ô =ð Hð H�Ø&2 lÐ3FÑ&GÔ&GÐ#Ð#à"ŸnšnÐ-@ÑAÔAˆOØ9=¿ºÀoÑ9VÔ9VÑ6Ð Ð"6à$×+Ò+Ð,@ÑAÔAÐAØ$×+Ò+Ð,@ÑAÔAÐAØ"×)Ò)¨/Ñ:Ô:Ð:Ø2°1°1°1Ð6O¸¼Ô8OÐ6OÐQRÐQRÐQRÐ3RÔSÐÑå4ØÝ!&¤Ð+CÈÐ!KÑ!KÔ!KÝ!&¤Ð+CÈÐ!KÑ!KÔ!KÝ#œiÐ(>ÀAÐFÑFÔFð	
ñ 
ô 
ð 	
r!   )NNNN)r   r   r   r‚   r   r=   r—   r6   r7   Úlistr   r	   rm   r5   r_   r`   s   @r"   r�   r�   ª   s   ø€ € € € € Ø+€OðO˜}ð Oð Oð Oð Oð Oð Oð7ð 7ð 7ð
 48Ø15Ø26Ø37ðO
ð O
à"œ\¨DÑ0ðO
ð ˜%œ,Ô'¨$Ñ.ðO
ð ˜5œ<Ô(¨4Ñ/ð	O
ð
 ˜EœLÔ)¨DÑ0ðO
ð Ð+Ô,ðO
ð 
/ðO
ð O
ð O
ð O
ð O
ð O
ð O
ð O
r!   r�   )r   ry   r�   ))Údataclassesr   r6   Úhuggingface_hub.dataclassesr   r   Ú
file_utilsr   Úprocessing_utilsr   Úutilsr	   r
   Úeomt.configuration_eomtr   Úeomt.modeling_eomtr   r   r   r   r   r   r   r   r   r   r   r   r$   r9   rb   rf   rh   rj   rm   ry   r‡   r‰   r‹   r�   Ú__all__r    r!   r"   ú<module>r»      s±  ðð "Ð !Ð !Ð !Ð !Ð !à €€€Ø .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð Ð Ð à %Ð %Ð %Ð %Ð %Ð %Ø &Ð &Ð &Ð &Ð &Ð &Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð €ÐCÐDÑDÔDØðð ð ð ð �Jñ ô ñ „ñ EÔDððð ð ð ð Ð0ñ ô ð ðð ð ð ð ˜ñ ô ð ð@	ð 	ð 	ð 	ð 	�ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�mñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�9ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	˜ñ 	ô 	ð 	ð €ðð	ñ 	ô 	ð ð7ð 7ð 7ð 7ð 7¨Kñ 7ô 7ñ „ñ	ô 	ð7ð8.ð .ð .ð .ð .Ð0ñ .ô .ð .ð	ð 	ð 	ð 	ð 	˜ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	˜ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	˜ñ 	ô 	ð 	ðY
ð Y
ð Y
ð Y
ð Y
Ð&Bñ Y
ô Y
ð Y
ðxð ð €€€r!   