Ë
    ÛÓ^j)  ã                   ó¦   — d Z ddlmZ ddlmZ ddlmZmZmZm	Z	m
Z
 ddlmZmZmZ ddlmZ  ej"                  e«      Ze G d„ de«      «       ZdgZy	)
zq
Processor class for InstructBLIP. Largely copy of Blip2Processor with addition of a tokenizer for the Q-Former.
é   )ÚBatchFeature)ÚProcessorMixin)Ú
AddedTokenÚPaddingStrategyÚPreTokenizedInputÚ	TextInputÚTruncationStrategy)Ú
TensorTypeÚauto_docstringÚlogging)Ú
VideoInputc            $       ó  ‡ — e Zd Zdˆ fd„	Ze	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddedz  deez  ee   z  ee   z  de	de	e
z  ez  de	e
z  ez  dedz  d	ed
edz  de	dz  de	de	de	de	de	de	de
ez  dz  def"d„«       Zed„ «       Zˆ xZS )ÚInstructBlipVideoProcessorNc                 óÔ   •— t        |d«      s2t        ddd¬«      | _        |j                  | j                  gd¬«       n|j                  | _        || _        t
        ‰| �  |||«       y)a&  
        qformer_tokenizer (`AutoTokenizer`):
            An instance of ['PreTrainedTokenizer`]. The Q-Former tokenizer is a required input.
        num_query_tokens (`int`, *optional*):
            Number of tokens used by the Qformer as queries, should be same as in model's config.
        Úvideo_tokenz<video>FT)Ú
normalizedÚspecial)Úspecial_tokensN)Úhasattrr   r   Ú
add_tokensÚnum_query_tokensÚsuperÚ__init__)ÚselfÚvideo_processorÚ	tokenizerÚqformer_tokenizerr   ÚkwargsÚ	__class__s         €ú�/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/instructblipvideo/processing_instructblipvideo.pyr   z#InstructBlipVideoProcessor.__init__$   sd   ø€ ô �y -Ô0Ü)¨)ÀÈtÔTˆDÔØ× Ñ  $×"2Ñ"2Ð!3ÀDÐ ÕIà(×4Ñ4ˆDÔØ 0ˆÔÜ‰Ñ˜¨)Ð5FÕGó    ÚimagesÚtextÚadd_special_tokensÚpaddingÚ
truncationÚ
max_lengthÚstrideÚpad_to_multiple_ofÚreturn_attention_maskÚreturn_overflowing_tokensÚreturn_special_tokens_maskÚreturn_offsets_mappingÚreturn_token_type_idsÚreturn_lengthÚverboseÚreturn_tensorsÚreturnc                 ó  — |€|€t        d«      ‚i }|��5t        |t        «      r|g}n.t        |t        «      st        |d   t        «      st        d«      ‚ | j                  d||||||||	|
||||||dœ|¤Ž}|j                  d«      |d<   |j                  d«      |d<   |�|| j                  z  } | j                  d||||||||	|
|||||d dœ|¤Ž}|�c| j                  j                  | j                  z  d	z  }| j                  |d
|	|
||||d ¬«	      }|D ]  }||   D �cg c]
  }||   |z   ‘Œ c}||<   Œ  |j                  |«       |�$| j                  ||¬«      }|j                  |«       t        ||¬«      }|S c c}w )Nz3You have to specify at least one of images or text.é    zAInvalid input text. Please provide a string, or a list of strings)r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   Ú	input_idsÚqformer_input_idsÚattention_maskÚqformer_attention_maské   F)r$   r*   r+   r,   r-   r.   r/   r1   )r1   )Útensor_type© )Ú
ValueErrorÚ
isinstanceÚstrÚlistr   Úpopr   r   r   ÚcontentÚupdater   r   )r   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r   ÚencodingÚqformer_text_encodingÚtext_encodingÚvideo_tokensÚvideo_text_encodingÚkÚsampleÚimage_encodings                             r    Ú__call__z#InstructBlipVideoProcessor.__call__3   s  € ð* ˆ>˜d˜lÜÐRÓSÐSàˆØÑÜ˜$¤Ô$Ø�v‘Ü ¤dÔ+´J¸tÀA¹wÌÔ4LÜ Ð!dÓeÐeà$: D×$:Ñ$:ð %ØØ#5ØØ%Ø%ØØ#5Ø&;Ø*CØ+EØ'=Ø&;Ø+ØØ-ñ%ð  ñ!%Ð!ð$ -B×,EÑ,EÀkÓ,RˆHÐ(Ñ)Ø1F×1JÑ1JÐK[Ó1\ˆHÐ-Ñ.ð Ð%Ø˜d×3Ñ3Ñ3�
Ø*˜DŸN™Nð ØØ#5ØØ%Ø%ØØ#5Ø&;Ø*CØ+EØ'=Ø&;Ø+ØØ#ñð  ñ!ˆMð& Ð!Ø#×/Ñ/×7Ñ7¸$×:OÑ:OÑOÐRSÑS�Ø&*§n¡nØ Ø',Ø*?Ø.GØ/IØ+AØ*?Ø"/Ø#'ð '5ó 
'Ð#ð 'ò h�AØVcÐdeÑVfÖ'gÈFÐ(;¸AÑ(>ÀÓ(GÒ'g�M !Ò$ðhà�O‰O˜MÔ*àÐØ!×1Ñ1°&ÈÐ1ÓXˆNØ�O‰O˜NÔ+ä °nÔEˆØˆùò (hs   Ä"E?c                 ór   — | j                   j                  }| j                  j                  }ddg}||z   |z   S )Nr6   r8   )r   Úmodel_input_namesr   )r   Útokenizer_input_namesÚvideo_processor_input_namesÚqformer_input_namess       r    rM   z,InstructBlipVideoProcessor.model_input_names–   sB   € à $§¡× @Ñ @ÐØ&*×&:Ñ&:×&LÑ&LÐ#Ø2Ð4LÐMÐØ$Ð'BÑBÐEXÑXÐXr!   )N)NNTFNNr4   NNFFFFFTN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r?   Úboolr>   r   r	   Úintr
   r   rK   ÚpropertyrM   Ú__classcell__)r   s   @r    r   r   "   si  ø„ õHð ð %)ØZ^Ø#'Ø05Ø6:Ø!%ØØ)-Ø-1Ø*/Ø+0Ø',Ø&+Ø#ØØ26ñ#`à˜TÑ!ð`ð Ð+Ñ+¨d°9©oÑ=ÀÐEVÑ@WÑWð`ð !ð	`ð
 ˜‘˜oÑ-ð`ð ˜3‘JÐ!3Ñ3ð`ð ˜$‘Jð`ð ð`ð   $™Jð`ð  $ d™{ð`ð $(ð`ð %)ð`ð !%ð`ð  $ð`ð ð`ð  ð!`ð" ˜jÑ(¨4Ñ/ð#`ð& 
ò'`ó ð`ðD ñYó ôYr!   r   N)Ú__doc__Úimage_processing_utilsr   Úprocessing_utilsr   Útokenization_utils_baser   r   r   r   r	   Úutilsr
   r   r   Úvideo_utilsr   Ú
get_loggerrQ   Úloggerr   Ú__all__r;   r!   r    ú<module>ra      sg   ðñõ 3Ý .÷õ ÷ 9Ñ 8Ý %ð 
ˆ×	Ñ	˜HÓ	%€ð ôxY ó xYó ðxYðv (Ð
(�r!   