Ë
    ÛÓ^jt  ã                   ó´   — d Z ddlm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 ddlmZmZmZ g d	¢Zg d
¢Z G d„ ded¬«      Ze G d„ de«      «       ZdgZy)z"Image processor class for Idefics.é    )ÚCallableé   )ÚTorchvisionBackend)ÚBatchFeature)Ú
ImageInputÚPILImageResamplingÚmake_flat_list_of_images)ÚImagesKwargsÚUnpack)Ú
TensorTypeÚauto_docstringÚis_torch_available)g3<Í4'ÐÞ?gwgí¶MÝ?gy{Îå Ú?)g�‡Bô91Ñ?g•wÝt.¹Ð?g�Ý	U¦Ñ?c                   ó6   — e Zd ZU dZedz  ed<   eed<   eed<   y)ÚIdeficsImageProcessorKwargsaÝ  
    transform (`Callable`, *optional*, defaults to `None`):
        A custom transform function that accepts a single image can be passed for training. For example,
        `torchvision.Compose` can be used to compose multiple transforms. If `None` - an inference mode is
        assumed - and then a preset of inference-specific transforms will be applied to the images.
    image_size (`int`, *optional*, defaults to `self.image_size`):
        Resize to image size. This is a backward-compatible alias for `size`. When provided, it overrides
        `size` and sets it to `{"height": image_size, "width": image_size}`.
    image_num_channels (`int`, *optional*, defaults to `3`):
        The number of channels of the image.
    NÚ	transformÚ
image_sizeÚimage_num_channels)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__Úint© ó    ú/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/idefics/image_processing_idefics.pyr   r   !   s   … ñ
ð ˜$‰ÓØƒOØÔr   r   F)Útotalc                   ó”   ‡ — e Zd ZeZej                  ZeZ	e
ZdddœZdZdZdZdZdZdee   fˆ fd„Zededee   dd	fˆ fd
„«       Zˆ xZS )ÚIdeficsImageProcessoréà   ©ÚheightÚwidthTr   Úkwargsc                 ó’   •— |j                  dd «      }|�||dœ|d<   t        ‰| �  di |¤Ž | j                  j                  | _        y )Nr   r!   Úsizer   )ÚpopÚsuperÚ__init__r&   r"   r   )Úselfr$   r   Ú	__class__s      €r   r)   zIdeficsImageProcessor.__init__@   sH   ø€ Ø—Z‘Z ¨dÓ3ˆ
ØÐ!Ø(2¸ZÑHˆF�6‰NÜ‰ÑÑ"˜6Ò"ØŸ)™)×*Ñ*ˆ�r   ÚimagesÚreturnzTensorType | BatchFeaturec                 ó   •— |j                  dd «      }|�[t        «       st        d«      ‚dd l}| j	                  |«      }t        |«      }|D �cg c]
  } ||«      ‘Œ }}|j                  |«      S t        ‰| �   |fi |¤Žj                  S c c}w )Nr   z.To pass in `transform` torch must be installedr   )
r'   r   ÚImportErrorÚtorchÚfetch_imagesr	   Ústackr(   Ú
preprocessÚpixel_values)r*   r,   r$   r   r0   Úxr+   s         €r   r3   z IdeficsImageProcessor.preprocessG   s�   ø€ ð —J‘J˜{¨DÓ1ˆ	ØÐ Ü%Ô'Ü!Ð"RÓSÐSÛà×&Ñ& vÓ.ˆFÜ-¨fÓ5ˆFØ,2Ö3 q‘i •lÐ3ˆFÐ3Ø—;‘;˜vÓ&Ð&Ü‰wÑ! &Ñ3¨FÑ3×@Ñ@Ð@ùò 4s   ÁB)r   r   r   r   Úvalid_kwargsr   ÚBICUBICÚresampleÚIDEFICS_STANDARD_MEANÚ
image_meanÚIDEFICS_STANDARD_STDÚ	image_stdr&   Ú	do_resizeÚ
do_rescaleÚdo_normalizeÚdo_convert_rgbr   r   r)   r   r   r3   Ú__classcell__)r+   s   @r   r   r   3   sŽ   ø„ à.€LØ!×)Ñ)€HØ&€JØ$€IØ CÑ(€DØ€IØ€JØ€LØ€NØÐð+ Ð(CÑ!Dõ +ð ðAàðAð Ð4Ñ5ðAð 
%ô	Aó ôAr   r   N)r   Úcollections.abcr   Úimage_processing_backendsr   Úimage_processing_utilsr   Úimage_utilsr   r   r	   Úprocessing_utilsr
   r   Úutilsr   r   r   r9   r;   r   r   Ú__all__r   r   r   ú<module>rI      sn   ðñ )å $å ;Ý 2÷ñ ÷
 5ß CÑ Cò <Ð Ú;Ð ô ,°eõ ð$ ô#AÐ.ó #Aó ð#AðL #Ð
#�r   