CoolFace
Apppublic

XaviXva/Video-LLaVA

sourceHugging Faceapache-2.0updated 3y agoView on Hugging Face
0likes
processing_video.cpython-310.pyc69 linesDownload Raw Back to __pycache__
1o

25�De��@s�ddlZddlZddlZddlmZmZej�d�ddlZddl	m3Z4ddlmZddl
mZmZddlmZddlmZdd	lmZmZmZdd5lmZmZmZmZddlmZmZm Z dZ!d
Z"dd�Z#dd�Z$				ddd�Z%Gdd�de�Z&dS)�N)�VideoReader�cpu�torch)�Image)�6transforms)�ProcessorMixin�
BatchEncoding)�BatchFeature)�EncodedVideo)�Compose�Lambda�ToTensor)�NormalizeVideo�RandomCropVideo�RandomHorizontalFlipVideo�CenterCropVideo)�ApplyTransformToKey�ShortSideScale�UniformTemporalSubsample)g3<�4'��?gwg��M�?gy{�� �?)g��B�91�?g�w�t.��?g��	U��?cCst|t�s|gS|S�N)�7isinstance�list��x�r�f/scc_cephfs/yy/lb/LLaVA-Video-YY/llava/model/multimodal_encoder/languagebind/video/processing_video.py�make_list_of_imagess8rcCs�|j}|jdkr+tdtt|j�tdd��ttt	d�t9dd�td�tdd	�g�d10�}|S|jdkrKttdd��ttt	d�t11dd�td�tdd	�g�}|S|jd
krkttdd��ttt	d�t12dd�td�tdd	�g�}|St
d��)N�pytorchvideo�videocS�|dS�Ng�o@rrrrr�<lambda>"�z%get_video_transform.<locals>.<lambda>)�mean�std��)�sizeg�?)�p)�key�	transform�decordcSrr rrrrrr!0r"�opencvcSrr rrrrrr!<r"�Evideo_decode_backend should specify in (pytorchvideo, decord, opencv))�
vision_config�video_decode_backendrrr�13num_framesrr�OPENAI_DATASET_MEAN�OPENAI_DATASET_STDrrr�	NameError)�configr)rrr�get_video_transformsH141516���(17�1819��20�2122���r4r+��cCsv|dkr&tj|ddd�}|j}|}|dur|n|}	|j||	d�}23||24�}|S|dkrZtj�d�t|td�d�}t	|�}t25jd|d	|td26�}
|�
|
�}27|28�ddd	d�}29||30�}|S|d
kr�t�|�}t|�tj��}t31jd|d|td32�}
g}33|
D]+}|�d	|�|��\}}|s�td|����t�|tj�}|34�t�|��ddd	��qz|��tj|35d	d�}36||37�}|Std��)Nrr*F)�decoderZdecode_audio)�	start_sec�end_secrr)�ctx�)�dtype��r+�zvideo error at )�dimr,)r38�	from_path�duration�get_clipr*�bridge�39set_bridgerr�len�np�linspace�int�	get_batch�permute�cv2ZVideoCapture�getZCAP_PROP_FRAME_COUNT�set�read�40ValueErrorZcvtColorZ
COLOR_BGR2RGB�appendr�41from_numpy�release�stackr2)�42video_pathr)r.Zclip_start_secZclip_end_secr/rrBr8r9�43video_dataZ
video_outputsZ	decord_vrZ
frame_id_listZcv2_vrZ	frame_idx�ret�framerrr�load_and_transform_videoHsD�44�45�rYcsLeZdZgZdZd�fdd�	Zddd�Zdd	�Zddd�Zdd
d�Z	�Z46S)�LanguageBindVideoProcessor�LanguageBindVideoTokenizerNcs2t�jdi|��||_t|�|_t|_||_dS)Nr)�super�__init__r3r4r)rY�image_processor�	tokenizer)�selfr3r_�kwargs��	__class__rrr]zs474849z#LanguageBindVideoProcessor.__init__�Mcs�|dur|durtd��|dur�j|f|dd|d�|��}|dur4t|�}�fdd�|D�}t�|�}|durB|durB||d<|S|durH|Sd|iS)Nz?You have to specify either text or images. Both cannot be none.�50max_lengthT)re�padding�51truncation�return_tensorscs,g|]}�j|�j�jjj�jjjd��qS))r.r/)r^r)r3r-r.r/)�.0�image�r`rr�52<listcomp>�s53�54�z7LanguageBindVideoProcessor.__call__.<locals>.<listcomp>�pixel_values)rPr_rrrT)r`�images�text�context_lengthrhra�encoding�image_featuresrrkr�__call__�s(��55�56z#LanguageBindVideoProcessor.__call__cCs|j||d�S)N)rnrh)rs)r`rnrhrrr�57preprocess�sz%LanguageBindVideoProcessor.preprocessTcO�|jj|d|i|��S)z�58        This method forwards all its arguments to CLIPTokenizerFast's [`~PreTrainedTokenizer.batch_decode`]. Please59        refer to the docstring of this method for more information.60        �skip_special_tokens)r_�batch_decode�r`rv�argsrarrrrw��z'LanguageBindVideoProcessor.batch_decodecOru)z�61        This method forwards all its arguments to CLIPTokenizerFast's [`~PreTrainedTokenizer.decode`]. Please refer to62        the docstring of this method for more information.63        rv)r_�decoderxrrrr{�rzz!LanguageBindVideoProcessor.decoder)NNrdN)T)�__name__�64__module__�__qualname__�65attributes�tokenizer_classr]rsrtrwr{�
__classcell__rrrbrrZvs66	67rZ)r+r5Nr6)'rrLr*rrrDrE�numpyrG�PILr�torchvisionr�transformersrrZ#transformers.image_processing_utilsr	Zpytorchvideo.data.encoded_videor68Ztorchvision.transformsrrr
Z(torchvision.transforms._transforms_videorrrrZpytorchvideo.transformsrrrr0r1rr4rYrZrrrr�<module>s0169�.