§
    ‚Štj  ã                   óÌ   — 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dS )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dS )Ú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© ó    úv/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/instructblip/processing_instructblip.pyr   r      s=   € € € € € àØ"&ØØØ).Ø*/Ø&+Ø%*Ø"Øð

ð 

ð€I€I€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¦  «        s5t          ddd¬¦  «        | _        |                     | j        gd¬¦  «         n|j        | _        || _        t          ¦   «                              |||¦  «         dS )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__.   s†   ø€ õ �y -Ñ0Ô0ð 	5Ý)¨)ÀÈtÐTÑTÔTˆDÔØ× Ò  $Ô"2Ð!3ÀDÐ ÑIÔIÐIÐIà(Ô4ˆDÔØ 0ˆÔå‰Œ×Ò˜¨)Ð5FÑGÔGÐGÐGÐGr   ÚimagesÚtextr2   Úreturnc                 óî  ‡‡— |€|€t          d¦  «        ‚ | j        t          fd| j        j        i|¤Ž}|d                              dd ¦  «        }i }|��ct          |t          ¦  «        r|g}n?t          |t          ¦  «        s*t          |d         t          ¦  «        st          d¦  «        ‚ | j	        |fi |d         ¤Ž}|                     d¦  «        |d<   |                     d	¦  «        |d
<   |d          
                    d¦  «        �|d         dxx         | j        z  cc<    | j        |fi |d         ¤Ž}|�f| j        j        | j        z  }	d|d         d<   d|d         d<   d|d         d<    | j        |	fi |d         ¤ŽŠ|D ]Šˆˆfd„|‰         D ¦   «         |‰<   Œ|                     |¦  «         |�) | j        |fi |d         ¤Ž}
|                     |
¦  «         t!          ||¬¦  «        }|S )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   Ú
truncationc                 ó&   •— g | ]}‰‰         |z   ‘ŒS r   r   )Ú.0ÚsampleÚimage_text_encodingÚks     €€r    ú
<listcomp>z2InstructBlipProcessor.__call__.<locals>.<listcomp>h   s$   ø€ Ð'gÐ'gÐ'gÈFÐ(;¸AÔ(>ÀÑ(GÐ'gÐ'gÐ'gr   Ú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_encodingrC   rD   s              @@r    Ú__call__zInstructBlipProcessor.__call__?   sƒ  øø€ ð ˆ>˜d˜lÝÐKÑLÔLÐLà*˜Ô*Ý'ð
ð 
à"&¤.Ô"<ð
ð ð
ð 
ˆð ' }Ô5×9Ò9Ð:JÈDÑQÔQˆØˆØÑÝ˜$¥Ñ$Ô$ð fØ�v��Ý ¥dÑ+Ô+ð fµJ¸tÀA¼wÍÑ4LÔ4Lð fÝ Ð!dÑeÔeÐeà$: DÔ$:¸4Ð$`Ð$`À=ÐQ^ÔC_Ð$`Ð$`Ð!Ø,A×,EÒ,EÀkÑ,RÔ,RˆHÐ(Ñ)Ø1F×1JÒ1JÐK[Ñ1\Ô1\ˆHÐ-Ñ.ð ˜]Ô+×/Ò/°Ñ=Ô=ÐIØ˜mÔ,¨\Ð:Ð:Ô:¸dÔ>SÑSÐ:Ð:Ñ:Ø*˜DœN¨4ÐPÐP°=ÀÔ3OÐPÐPˆMàÐ!à#Ô/Ô7¸$Ô:OÑO�ØEJ�˜mÔ,Ð-AÑBØ:?�˜mÔ,¨YÑ7Ø=B�˜mÔ,¨\Ñ:Ø&4 d¤n°\Ð&bÐ&bÀ]ÐS`ÔEaÐ&bÐ&bÐ#Ø&ð hð h�AØ'gÐ'gÐ'gÐ'gÐ'gÐVcÐdeÔVfÐ'gÑ'gÔ'g�M !Ñ$Ð$Ø�OŠO˜MÑ*Ô*Ð*àÐØ1˜TÔ1°&Ð[Ð[¸MÈ/Ô<ZÐ[Ð[ˆNØ�OŠO˜NÑ+Ô+Ð+õ   °nÐEÑEÔEˆØˆr   c                 óJ   — | 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    rZ   z'InstructBlipProcessor.model_input_namess   s7   € à $¤Ô @ÐØ&*Ô&:Ô&LÐ#Ø2Ð4LÐMÐØ$Ð'BÑBÐEXÑXÐXr   )N)NN)r   r   r   r-   r   r   r
   r	   rN   r   r   r   rX   ÚpropertyrZ   Ú__classcell__)r3   s   @r    r#   r#   ,   sÞ   ø€ € € € € ðHð Hð Hð Hð Hð Hð" ð %)ØZ^ð1ð 1à˜TÑ!ð1ð Ð+Ñ+¨d°9¬oÑ=ÀÐEVÔ@WÑWð1ð Ð4Ô5ð	1ð
 
ð1ð 1ð 1ñ „^ð1ðf ðYð Yñ „XðYð Yð Yð 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>ri      s$  ððð ð 3Ð 2Ð 2Ð 2Ð 2Ð 2Ø %Ð %Ð %Ð %Ð %Ð %Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,ð 
ˆÔ	˜HÑ	%Ô	%€ðð ð ð ð Ð"2¸%ð ñ ô ð ð  ðKYð KYð KYð KYð KY˜Nñ KYô KYñ „ðKYð\ #Ð
#€€€r   