
    ^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{ ?)gB91?gwt.?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    ZZd3
!(2ZHF6N"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     JJ{D1	 %'!"RSS&&v.F-f5F,23qil3F3;;v&&w!&3F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   