Ë
    ÛÓ^j  ã                   ó¼   — d Z ddlmZ ddlmZ ddlmZmZmZ ddl	m
Z
mZmZ ddlmZmZ  ej                   e«      Z G d„ ded	¬
«      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)Ú
ImageInput)ÚProcessingKwargsÚProcessorMixinÚUnpack)Ú
AddedTokenÚPreTokenizedInputÚ	TextInput)Úauto_docstringÚloggingc                   ó(   — e Zd Zdddddddddddœ	iZy)ÚInstructBlipProcessorKwargsÚtext_kwargsTFé    )	Úadd_special_tokensÚpaddingÚstrideÚreturn_overflowing_tokensÚreturn_special_tokens_maskÚreturn_offsets_mappingÚreturn_token_type_idsÚreturn_lengthÚverboseN)Ú__name__Ú
__module__Ú__qualname__Ú	_defaults© ó    úƒ/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/instructblip/processing_instructblip.pyr   r      s,   „ àØ"&ØØØ).Ø*/Ø&+Ø%*Ø"Øñ

ð�Ir   r   F)Útotalc            
       ó‚   ‡ — 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	e
   defd„«       Zed„ «       Zˆ xZS )ÚInstructBlipProcessorNc                 óÔ   •— t        |d«      s2t        ddd¬«      | _        |j                  | j                  gd¬«       n|j                  | _        || _        t
        ‰| �  |||«       y)a4  
        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.
        Úimage_tokenz<image>FT)Ú
normalizedÚspecial)Úspecial_tokensN)Úhasattrr   r%   Ú
add_tokensÚnum_query_tokensÚsuperÚ__init__)ÚselfÚimage_processorÚ	tokenizerÚqformer_tokenizerr+   ÚkwargsÚ	__class__s         €r    r-   zInstructBlipProcessor.__init__.   sd   ø€ ô �y -Ô0Ü)¨)ÀÈtÔTˆDÔØ× Ñ  $×"2Ñ"2Ð!3ÀDÐ ÕIà(×4Ñ4ˆDÔØ 0ˆÔä‰Ñ˜¨)Ð5FÕGr   ÚimagesÚtextr2   Úreturnc                 ó¾  — |€|€t        d«      ‚ | j                  t        fd| j                  j                  i|¤Ž}|d   j                  dd «      }i }|��Kt        |t        «      r|g}n.t        |t        «      st        |d   t        «      st        d«      ‚ | j                  |fi |d   ¤Ž}|j                  d«      |d<   |j                  d	«      |d
<   |d   j                  d«      �|d   dxx   | j                  z  cc<    | j                  |fi |d   ¤Ž}|�t| j                  j                  | j                  z  }	d|d   d<   d|d   d<   d|d   d<    | j                  |	fi |d   ¤Ž}
|D ]  }||   D �cg c]
  }|
|   |z   ‘Œ c}||<   Œ  |j                  |«       |�' | j                  |fi |d   ¤Ž}|j                  |«       t!        ||¬«      }|S c c}w )Nz,You have to specify at least images or text.Útokenizer_init_kwargsr   Úreturn_tensorsr   zAInvalid input text. Please provide a string, or a list of stringsÚ	input_idsÚqformer_input_idsÚattention_maskÚqformer_attention_maskÚ
max_lengthFr   r   Ú
truncationÚimages_kwargs)Útensor_type)Ú
ValueErrorÚ_merge_kwargsr   r0   Úinit_kwargsÚpopÚ
isinstanceÚstrÚlistr1   Úgetr+   r%   ÚcontentÚupdater/   r   )r.   r4   r5   r2   Úoutput_kwargsr9   ÚencodingÚqformer_text_encodingÚtext_encodingÚimage_tokensÚimage_text_encodingÚkÚsampleÚimage_encodings                 r    Ú__call__zInstructBlipProcessor.__call__?   s1  € ð ˆ>˜d˜lÜÐKÓLÐLà*˜×*Ñ*Ü'ñ
à"&§.¡.×"<Ñ"<ð
ð ñ
ˆð ' }Ñ5×9Ñ9Ð:JÈDÓQˆØˆØÑÜ˜$¤Ô$Ø�v‘Ü ¤dÔ+´J¸tÀA¹wÌÔ4LÜ Ð!dÓeÐeà$: D×$:Ñ$:¸4Ñ$`À=ÐQ^ÑC_Ñ$`Ð!Ø,A×,EÑ,EÀkÓ,RˆHÐ(Ñ)Ø1F×1JÑ1JÐK[Ó1\ˆHÐ-Ñ.ð ˜]Ñ+×/Ñ/°Ó=ÐIØ˜mÑ,¨\Ó:¸d×>SÑ>SÑSÓ:Ø*˜DŸN™N¨4ÑP°=ÀÑ3OÑPˆMàÐ!à#×/Ñ/×7Ñ7¸$×:OÑ:OÑO�ØEJ�˜mÑ,Ð-AÑBØ:?�˜mÑ,¨YÑ7Ø=B�˜mÑ,¨\Ñ:Ø&4 d§n¡n°\Ñ&bÀ]ÐS`ÑEaÑ&bÐ#Ø&ò h�AØVcÐdeÑVfÖ'gÈFÐ(;¸AÑ(>ÀÓ(GÒ'g�M !Ò$ðhà�O‰O˜MÔ*àÐØ1˜T×1Ñ1°&Ñ[¸MÈ/Ñ<ZÑ[ˆNØ�O‰O˜NÔ+ô   °nÔEˆØˆùò (hs   Å:Gc                 ór   — | j                   j                  }| j                  j                  }ddg}||z   |z   S )Nr;   r=   )r0   Úmodel_input_namesr/   )r.   Útokenizer_input_namesÚimage_processor_input_namesÚqformer_input_namess       r    rW   z'InstructBlipProcessor.model_input_namess   sB   € à $§¡× @Ñ @ÐØ&*×&:Ñ&:×&LÑ&LÐ#Ø2Ð4LÐMÐØ$Ð'BÑBÐEXÑXÐXr   )N)NN)r   r   r   r-   r   r   r
   r	   rH   r   r   r   rU   ÚpropertyrW   Ú__classcell__)r3   s   @r    r#   r#   ,   s‡   ø„ õHð" ð %)ØZ^ñ1à˜TÑ!ð1ð Ð+Ñ+¨d°9©oÑ=ÀÐEVÑ@WÑWð1ð Ð4Ñ5ð	1ð
 
ò1ó ð1ðf ñYó ôYr   r#   N)Ú__doc__Úimage_processing_utilsr   Úimage_utilsr   Úprocessing_utilsr   r   r   Útokenization_utils_baser   r	   r
   Úutilsr   r   Ú
get_loggerr   Úloggerr   r#   Ú__all__r   r   r    ú<module>rf      sp   ðñõ 3Ý %ß HÑ Hß OÑ Oß ,ð 
ˆ×	Ñ	˜HÓ	%€ôÐ"2¸%õ ð  ôKY˜Nó KYó ðKYð\ #Ð
#�r   