Ë
    ÜÓ^j×  ã                   ó´   — 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
 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)é   )ÚBatchFeature)Ú
ImageInput)ÚProcessingKwargsÚProcessorMixinÚUnpack)ÚPreTokenizedInputÚ	TextInput)Úauto_docstringÚloggingc                   ó   — e Zd Zddii dœZy)ÚOvis2ProcessorKwargsÚpaddingF)Útext_kwargsÚimage_kwargsN)Ú__name__Ú
__module__Ú__qualname__Ú	_defaults© ó    úu/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/ovis2/processing_ovis2.pyr   r      s   „ ð �uð
ð ñ	�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dee   deee      fd	„Zd
„ Zd„ Zed„ «       Zˆ xZS )ÚOvis2ProcessorNc                 óê   •— || _         t        |d«      r|j                  n|| _        t        |dd«      r|j                  n|j                  | j                  «      | _        t        ‰| �  ||fd|i|¤Ž y)a  
        image_token (`str`, *optional*, defaults to `"<image>"`):
            Special token used to denote image location.
        image_seq_length (`int`, *optional*, defaults to 256):
            The number of image tokens to be used for each image in the input.
        Úimage_tokenÚimage_token_idNÚchat_template)Úimage_seq_lengthÚhasattrr   Úgetattrr   Úconvert_tokens_to_idsÚsuperÚ__init__)ÚselfÚimage_processorÚ	tokenizerr   r   r   ÚkwargsÚ	__class__s          €r   r$   zOvis2Processor.__init__%   sy   ø€ ð !1ˆÔÜ4;¸IÀ}Ô4U˜9×0Ò0Ð[fˆÔô �yÐ"2°DÔ9ð ×$Ò$à×0Ñ0°×1AÑ1AÓBð 	Ôô
 	‰Ñ˜¨)Ñ[À=Ð[ÐTZÓ[r   ÚimagesÚtextr(   Úreturnc                 óÂ  —  | j                   t        fd| j                  j                  i|¤Ž}t	        |t
        «      r|g}n.t	        |t        «      st	        |d   t
        «      st        d«      ‚i }|�G | j                  |fi |d   ¤Ž}|j                  d«      j                  «       }| j                  ||«      } | j                  |fi |d   ¤Ž}t        i |¥|¥¬«      S )aÀ  
        Returns:
            [`BatchFeature`]: A [`BatchFeature`] with the following fields:

            - **input_ids** -- List of token ids to be fed to a model. Returned when `text` is not `None`.
            - **attention_mask** -- List of indices specifying which tokens should be attended to by the model (when
              `return_attention_mask=True` or if *"attention_mask"* is in `self.model_input_names` and if `text` is not
              `None`).
            - **pixel_values** -- Pixel values to be fed to a model. Returned when `images` is not `None`.
            - **image_sizes** -- Size of each image that will be used to unpad an image. Returned when `images` is not `None`.
        Útokenizer_init_kwargsé    zAInvalid input text. Please provide a string, or a list of stringsÚimages_kwargsÚgridsr   )Údata)Ú_merge_kwargsr   r'   Úinit_kwargsÚ
isinstanceÚstrÚlistÚ	TypeErrorr&   ÚpopÚtolistÚ_expand_image_tokensr   )r%   r*   r+   r(   Úoutput_kwargsÚimage_inputsÚimage_gridsÚtext_inputss           r   Ú__call__zOvis2Processor.__call__=   sí   € ð& +˜×*Ñ*Ü ñ
à"&§.¡.×"<Ñ"<ð
ð ñ
ˆô �dœCÔ Ø�6‰DÜ˜D¤$Ô'´
¸4À¹7ÄCÔ0HÜÐ_Ó`Ð`àˆàÐØ/˜4×/Ñ/°ÑY¸-ÈÑ:XÑYˆLØ&×*Ñ*¨7Ó3×:Ñ:Ó<ˆKØ×,Ñ,¨T°;Ó?ˆDà$�d—n‘n TÑJ¨]¸=Ñ-IÑJˆÜÐ!@ KÐ!@°<Ð!@ÔAÐAr   r1   c                 ó|  — g }d}|D ]²  }d|v r›||   }|d   |d   }}dd| j                   z  › d�}	||z  dkD  rOt        |«      D ]A  }
t        |«      D ]#  }|	d| j                   z  › z  }	||dz
  k  sŒ|	dz  }	Œ% |
|dz
  k  sŒ=|	dz  }	ŒC |	d	z  }	|j                  d|	d«      }|dz  }d|v rŒ›|j                  |«       Œ´ |S )
Nr/   ú<image>é   z<IMG_START>z
<IMG_ATOM>z
<IMG_GRID>z	<IMG_COL>z	<IMG_ROW>z	<IMG_END>)r   ÚrangeÚreplaceÚappend)r%   r+   r1   Úprocessed_textÚ
grid_indexÚsampleÚgridÚrowÚcolÚplaceholderÚrÚcs               r   r;   z#Ovis2Processor._expand_image_tokense   s  € ð
 ˆØˆ
Øò 	*ˆFØ˜vÑ%Ø˜ZÑ(�Ø ™7 D¨¡G�S�Ø +¨L¸4×;PÑ;PÑ,PÐ+QÐQ[Ð\�Ø˜‘9˜q’=Ü" 3›Zò 7˜Ü!& s£ò ;˜AØ'¨l¸T×=RÑ=RÑ.RÐ-SÑT˜KØ  3¨¡7›{Ø +¨{Ñ :¡ð;ð ˜s Q™w›;Ø'¨;Ñ6™Kð7ð ˜{Ñ*�àŸ™¨	°;ÀÓB�Ø˜a‘�
ð ˜vÒ%ð  ×!Ñ! &Õ)ð#	*ð$ Ðr   c                 ó:   —  | j                   j                  |i |¤ŽS )zÂ
        This method forwards all its arguments to Qwen2TokenizerFast's [`~PreTrainedTokenizer.batch_decode`]. Please
        refer to the docstring of this method for more information.
        )r'   Úbatch_decode©r%   Úargsr(   s      r   rQ   zOvis2Processor.batch_decode€   s    € ð
 +ˆt�~‰~×*Ñ*¨DÐ;°FÑ;Ð;r   c                 ó:   —  | j                   j                  |i |¤ŽS )z¼
        This method forwards all its arguments to Qwen2TokenizerFast's [`~PreTrainedTokenizer.decode`]. Please refer to
        the docstring of this method for more information.
        )r'   ÚdecoderR   s      r   rU   zOvis2Processor.decode‡   s    € ð
 %ˆt�~‰~×$Ñ$ dÐ5¨fÑ5Ð5r   c                 óˆ   — | j                   j                  }| j                  j                  }t        |«      t        |«      z   S )N)r'   Úmodel_input_namesr&   r7   )r%   Útokenizer_input_namesÚimage_processor_input_namess      r   rW   z Ovis2Processor.model_input_namesŽ   s;   € à $§¡× @Ñ @ÐØ&*×&:Ñ&:×&LÑ&LÐ#ÜÐ)Ó*¬TÐ2MÓ-NÑNÐNr   )NNNrB   é   )NN)r   r   r   r$   r
   r   r	   r   r7   r   r   r   r@   Úintr;   rQ   rU   ÚpropertyrW   Ú__classcell__)r)   s   @r   r   r   #   sË   ø„ ð ØØØØõ\ð0 ð %)ØZ^ñ%Bà˜TÑ!ð%Bð Ð+Ñ+¨d°9©oÑ=ÀÐEVÑ@WÑWð%Bð Ð-Ñ.ð	%Bð
 
ò%Bó ð%BðNà�9‰oðð �D˜‘I‰óò6<ò6ð ñOó ôOr   r   N)Úfeature_extraction_utilsr   Úimage_utilsr   Úprocessing_utilsr   r   r   Útokenization_utils_baser   r	   Úutilsr
   r   Ú
get_loggerr   Úloggerr   r   Ú__all__r   r   r   ú<module>rf      sh   ðõ  5Ý %ß HÑ Hß Cß ,ð 
ˆ×	Ñ	˜HÓ	%€ôÐ+°5õ ð ônO�^ó nOó ðnOðb Ð
�r   