
    bCiA^                     :   S r SSKJrJr  SSKrSSKJrJrJ	r	J
r
  SSKJrJr  SSKJrJrJrJrJrJrJrJrJrJrJr  SSKJrJrJrJrJrJ r   SS	K!J"r"  \" 5       (       a  SSK#r#\" 5       (       a  SSK$r$\ RJ                  " \&5      r'\"" S
S9 " S S\5      5       r(S/r)g)zImage processor class for Beit.    )OptionalUnionN   )INIT_SERVICE_KWARGSBaseImageProcessorBatchFeatureget_size_dict)resizeto_channel_dimension_format)IMAGENET_STANDARD_MEANIMAGENET_STANDARD_STDChannelDimension
ImageInputPILImageResamplinginfer_channel_dimension_formatis_scaled_imagemake_flat_list_of_imagesto_numpy_arrayvalid_imagesvalidate_preprocess_arguments)
TensorTypefilter_out_non_signature_kwargsis_torch_availableis_torch_tensoris_vision_availablelogging)requires)vision)backendsc            %         ^  \ rS rSrSrS/r\" \S9SS\R                  SSSSSSSS4S	\
S
\\\\4      S\S\
S\\\\4      S\\\4   S\
S\
S\\\\\   4      S\\\\\   4      S\
SS4U 4S jjj5       r\R                  SS4S\R(                  S
\\\4   S\S\\\\4      S\\\\4      S\R(                  4S jjrS\S\R(                  4S jr            S(S\S\\
   S	\\
   S
\\\\4      S\\   S\\
   S\\\\4      S\\
   S\\   S\\
   S\\\\\   4      S\\\\\   4      S\\\\4      4S jjr            S(S\S	\\
   S
\\\\4      S\\   S\\
   S\\\\4      S\\
   S\\   S\\
   S\\\\\   4      S\\\\\   4      S\\\\4      S\\\\4      S\R(                  4S jjr       S)S\S	\\
   S
\\\\4      S\\   S\\
   S\\\\4      S\\
   S\\\\4      4S jjrS*U 4S  jjr\" 5       SSSSSSSSSSSSS\R:                  S4S!\S"\\   S	\\
   S
\\\\4      S\\   S\\
   S\\\\4      S\\
   S\\   S\\
   S\\\\\   4      S\\\\\   4      S\\
   S#\\\\4      S\S\\\\4      S\R@                  R@                  4"S$ jj5       r!S*S%\\\"      4S& jjr#S'r$U =r%$ )+BeitImageProcessor9   a  
Constructs a BEiT image processor.

Args:
    do_resize (`bool`, *optional*, defaults to `True`):
        Whether to resize the image's (height, width) dimensions to the specified `size`. Can be overridden by the
        `do_resize` parameter in the `preprocess` method.
    size (`dict[str, int]` *optional*, defaults to `{"height": 256, "width": 256}`):
        Size of the output image after resizing. Can be overridden by the `size` parameter in the `preprocess`
        method.
    resample (`PILImageResampling`, *optional*, defaults to `Resampling.BICUBIC`):
        Resampling filter to use if resizing the image. Can be overridden by the `resample` parameter in the
        `preprocess` method.
    do_center_crop (`bool`, *optional*, defaults to `True`):
        Whether to center crop the image. If the input size is smaller than `crop_size` along any edge, the image
        is padded with 0's and then center cropped. Can be overridden by the `do_center_crop` parameter in the
        `preprocess` method.
    crop_size (`dict[str, int]`, *optional*, defaults to `{"height": 224, "width": 224}`):
        Desired output size when applying center-cropping. Only has an effect if `do_center_crop` is set to `True`.
        Can be overridden by the `crop_size` parameter in the `preprocess` method.
    rescale_factor (`int` or `float`, *optional*, defaults to `1/255`):
        Scale factor to use if rescaling the image. Can be overridden by the `rescale_factor` parameter in the
        `preprocess` method.
    do_rescale (`bool`, *optional*, defaults to `True`):
        Whether to rescale the image by the specified scale `rescale_factor`. Can be overridden by the `do_rescale`
        parameter in the `preprocess` method.
    do_normalize (`bool`, *optional*, defaults to `True`):
        Whether to normalize the image. Can be overridden by the `do_normalize` parameter in the `preprocess`
        method.
    image_mean (`float` or `list[float]`, *optional*, defaults to `IMAGENET_STANDARD_MEAN`):
        The mean to use if normalizing the image. This is a float or list of floats of length of the number of
        channels of the image. Can be overridden by the `image_mean` parameter in the `preprocess` method.
    image_std (`float` or `list[float]`, *optional*, defaults to `IMAGENET_STANDARD_STD`):
        The standard deviation to use if normalizing the image. This is a float or list of floats of length of the
        number of channels of the image. Can be overridden by the `image_std` parameter in the `preprocess` method.
    do_reduce_labels (`bool`, *optional*, defaults to `False`):
        Whether or not to reduce all label values of segmentation maps by 1. Usually used for datasets where 0 is
        used for background, and background itself is not included in all classes of a dataset (e.g. ADE20k). The
        background label will be replaced by 255. Can be overridden by the `do_reduce_labels` parameter in the
        `preprocess` method.
pixel_values)extraTNgp?F	do_resizesizeresampledo_center_crop	crop_sizerescale_factor
do_rescaledo_normalize
image_mean	image_stddo_reduce_labelsreturnc                 $  > [         TU ]  " S0 UD6  Ub  UOSSS.n[        U5      nUb  UOSSS.n[        USS9nXl        X l        X0l        X@l        XPl        Xpl        X`l	        Xl
        U	b  U	O[        U l        U
b  U
O[        U l        Xl        g )N   )heightwidth   r)   )
param_name )super__init__r	   r%   r&   r'   r(   r)   r+   r*   r,   r   r-   r   r.   r/   )selfr%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   kwargs	__class__s                h/home/james-whalen/.local/lib/python3.13/site-packages/transformers/models/beit/image_processing_beit.pyr9   BeitImageProcessor.__init__g   s      	"6"'tc-JT"!*!6IsUX<Y	!)D	"	 ,"$,((2(>*DZ&/&;AV 0    imagedata_formatinput_data_formatc                     [        USSS9nSU;  d  SU;  a  [        SUR                  5        35      e[        U4US   US   4UUUS.UD6$ )a  
Resize an image to (size["height"], size["width"]).

Args:
    image (`np.ndarray`):
        Image to resize.
    size (`dict[str, int]`):
        Size of the output image.
    resample (`PILImageResampling`, *optional*, defaults to `PIL.Image.BICUBIC`):
        Resampling filter to use when resiizing the image.
    data_format (`str` or `ChannelDimension`, *optional*):
        The channel dimension format of the image. If not provided, it will be the same as the input image.
    input_data_format (`str` or `ChannelDimension`, *optional*):
        The channel dimension format of the input image. If not provided, it will be inferred.
Tr&   default_to_squarer6   r3   r4   z@The `size` argument must contain `height` and `width` keys. Got )r&   r'   rA   rB   )r	   
ValueErrorkeysr
   )r:   r@   r&   r'   rA   rB   r;   s          r=   r
   BeitImageProcessor.resize   sw    0 TTfM47$#6_`d`i`i`k_lmnn
x.$w-0#/
 
 	
r?   labelc                 B    [        U5      nSXS:H  '   US-
  nSXS:H  '   U$ )N   r         )r   )r:   rI   s     r=   reduce_labelBeitImageProcessor.reduce_label   s2    u%qj	!slr?   c                     U(       a  U R                  U5      nU(       a  U R                  XX]S9nU(       a  U R                  XUS9nU(       a  U R                  XUS9nU
(       a  U R	                  XXS9nU$ )N)r@   r&   r'   rB   )r@   r&   rB   )r@   scalerB   )r@   meanstdrB   )rN   r
   center_croprescale	normalize)r:   r@   r/   r%   r&   r'   r(   r)   r+   r*   r,   r-   r.   rB   s                 r=   _preprocessBeitImageProcessor._preprocess   su      %%e,EKKeKoE$$5Te$fELLuVgLhENNYNtEr?   c                     [        U5      nU(       a%  [        U5      (       a  [        R                  S5        Uc  [	        U5      nU R                  USUUUUUUUU	U
UUS9nUb
  [        XUS9nU$ )zPreprocesses a single image.zIt looks like you are trying to rescale already rescaled images. If the input images have pixel values between 0 and 1, set `do_rescale=False` to avoid rescaling them again.F)r/   r%   r&   r'   r(   r)   r+   r*   r,   r-   r.   rB   )input_channel_dim)r   r   loggerwarning_oncer   rW   r   )r:   r@   r%   r&   r'   r(   r)   r+   r*   r,   r-   r.   rA   rB   s                 r=   _preprocess_image$BeitImageProcessor._preprocess_image   s    $ u%/%00s $ >u E  ")!)%!/ ! 
 "/VghEr?   segmentation_mapc	                 L   [        U5      nUR                  S:X  a  US   nSn	[        R                  nOSn	Uc
  [	        USS9nU R                  UUUUUUUSS[        R                  S9
nU	(       a  [        R                  " USS	9nUR                  [        R                  5      nU$ )
z'Preprocesses a single segmentation map.   )N.TFrL   )num_channels)
r@   r/   r%   r'   r&   r(   r)   r,   r+   rB   r   )axis)
r   ndimr   FIRSTr   rW   npsqueezeastypeint64)
r:   r_   r%   r&   r'   r(   r)   r/   rB   added_dimensions
             r=   _preprocess_segmentation_map/BeitImageProcessor._preprocess_segmentation_map  s     **:;  A%/	:"O 0 6 6#O ($BCSbc$d!++"-).44 , 
 !zz*:C+22288<r?   c                 *   > [         TU ]  " U4SU0UD6$ )Nsegmentation_maps)r8   __call__)r:   imagesrn   r;   r<   s       r=   ro   BeitImageProcessor.__call__+  s      wV:KVvVVr?   rp   rn   return_tensorsc                 J   Ub  UOU R                   nUb  UOU R                  n[        USSS9nUb  UOU R                  nUb  UOU R                  nUb  UOU R
                  n[        USSS9nUb  UOU R                  nU	b  U	OU R                  n	U
b  U
OU R                  n
Ub  UOU R                  nUb  UOU R                  nUb  UOU R                  n[        U5      nUb
  [        USS9nUb  [        U5      (       d  [        S5      e[        U5      (       d  [        S5      e[        UU	U
UUUUUUUS	9
  U Vs/ s H  nU R!                  UUUUU
UUU	UUUUUS
9PM      nnSU0nUb*  U Vs/ s H  nU R#                  UUUUUUUS9PM     nnUUS'   [%        UUS9$ s  snf s  snf )a  
Preprocess an image or batch of images.

Args:
    images (`ImageInput`):
        Image to preprocess. Expects a single or batch of images with pixel values ranging from 0 to 255. If
        passing in images with pixel values between 0 and 1, set `do_rescale=False`.
    segmentation_maps (`ImageInput`, *optional*)
        Segmentation maps to preprocess. Expects a single or batch of images with pixel values ranging from 0 to 255. If
        passing in images with pixel values between 0 and 1, set `do_rescale=False`.
    do_resize (`bool`, *optional*, defaults to `self.do_resize`):
        Whether to resize the image.
    size (`dict[str, int]`, *optional*, defaults to `self.size`):
        Size of the image after resizing.
    resample (`int`, *optional*, defaults to `self.resample`):
        Resampling filter to use if resizing the image. This can be one of the enum `PILImageResampling`, Only
        has an effect if `do_resize` is set to `True`.
    do_center_crop (`bool`, *optional*, defaults to `self.do_center_crop`):
        Whether to center crop the image.
    crop_size (`dict[str, int]`, *optional*, defaults to `self.crop_size`):
        Size of the image after center crop. If one edge the image is smaller than `crop_size`, it will be
        padded with zeros and then cropped
    do_rescale (`bool`, *optional*, defaults to `self.do_rescale`):
        Whether to rescale the image values between [0 - 1].
    rescale_factor (`float`, *optional*, defaults to `self.rescale_factor`):
        Rescale factor to rescale the image by if `do_rescale` is set to `True`.
    do_normalize (`bool`, *optional*, defaults to `self.do_normalize`):
        Whether to normalize the image.
    image_mean (`float` or `list[float]`, *optional*, defaults to `self.image_mean`):
        Image mean.
    image_std (`float` or `list[float]`, *optional*, defaults to `self.image_std`):
        Image standard deviation.
    do_reduce_labels (`bool`, *optional*, defaults to `self.do_reduce_labels`):
        Whether or not to reduce all label values of segmentation maps by 1. Usually used for datasets where 0
        is used for background, and background itself is not included in all classes of a dataset (e.g.
        ADE20k). The background label will be replaced by 255.
    return_tensors (`str` or `TensorType`, *optional*):
        The type of tensors to return. Can be one of:
            - Unset: Return a list of `np.ndarray`.
            - `TensorType.TENSORFLOW` or `'tf'`: Return a batch of type `tf.Tensor`.
            - `TensorType.PYTORCH` or `'pt'`: Return a batch of type `torch.Tensor`.
            - `TensorType.NUMPY` or `'np'`: Return a batch of type `np.ndarray`.
            - `TensorType.JAX` or `'jax'`: Return a batch of type `jax.numpy.ndarray`.
    data_format (`ChannelDimension` or `str`, *optional*, defaults to `ChannelDimension.FIRST`):
        The channel dimension format for the output image. Can be one of:
        - `"channels_first"` or `ChannelDimension.FIRST`: image in (num_channels, height, width) format.
        - `"channels_last"` or `ChannelDimension.LAST`: image in (height, width, num_channels) format.
        - Unset: Use the channel dimension format of the input image.
    input_data_format (`ChannelDimension` or `str`, *optional*):
        The channel dimension format for the input image. If unset, the channel dimension format is inferred
        from the input image. Can be one of:
        - `"channels_first"` or `ChannelDimension.FIRST`: image in (num_channels, height, width) format.
        - `"channels_last"` or `ChannelDimension.LAST`: image in (height, width, num_channels) format.
        - `"none"` or `ChannelDimension.NONE`: image in (height, width) format.
Tr&   rD   r)   ra   )expected_ndimszwInvalid segmentation_maps type. Must be of type PIL.Image.Image, numpy.ndarray, torch.Tensor, tf.Tensor or jax.ndarray.zkInvalid image type. Must be of type PIL.Image.Image, numpy.ndarray, torch.Tensor, tf.Tensor or jax.ndarray.)
r+   r*   r,   r-   r.   r(   r)   r%   r&   r'   )r@   r%   r(   r+   r,   r'   r&   r*   r)   r-   r.   rA   rB   r#   )r_   r/   r%   r'   r&   r(   r)   labels)datatensor_type)r%   r&   r	   r'   r(   r)   r+   r*   r,   r-   r.   r/   r   r   rF   r   r]   rk   r   )r:   rp   rn   r%   r&   r'   r(   r)   r+   r*   r,   r-   r.   r/   rr   rA   rB   imgrv   r_   s                       r=   
preprocessBeitImageProcessor.preprocess0  sD   V "+!6IDNN	'tTYYTTfM'38+9+E4K^K^!*!6IDNN	!)tP[\	#-#9Zt
+9+E4K^K^'3'?|TEVEV#-#9Zt
!*!6IDNN	/?/K+QUQfQf)&1( 89J[\ ](>O1P1P:  F##: 
 	&!)%!)	
: !
   ""#-%)!-#%#'"3 #  ! 	 
& '( ):! ):$ 11%5%5'%#1' 2  ):  ! /DN>BBI
,!s   9%F+F target_sizesc                     UR                   nUb  [        U5      [        U5      :w  a  [        S5      e[        U5      (       a  UR	                  5       n/ n[        [        U5      5       Ha  n[        R                  R                  R                  X5   R                  SS9X%   SSS9nUS   R                  SS9nUR                  U5        Mc     U$ UR                  SS9n[        UR                  S   5       Vs/ s H  oU   PM	     nnU$ s  snf )a  
Converts the output of [`BeitForSemanticSegmentation`] into semantic segmentation maps. Only supports PyTorch.

Args:
    outputs ([`BeitForSemanticSegmentation`]):
        Raw outputs of the model.
    target_sizes (`list[Tuple]` of length `batch_size`, *optional*):
        List of tuples corresponding to the requested final size (height, width) of each prediction. If unset,
        predictions will not be resized.

Returns:
    semantic_segmentation: `list[torch.Tensor]` of length `batch_size`, where each item is a semantic
    segmentation map of shape (height, width) corresponding to the target_sizes entry (if `target_sizes` is
    specified). Each entry of each `torch.Tensor` correspond to a semantic class id.
zTMake sure that you pass in as many target sizes as the batch dimension of the logitsr   )dimbilinearF)r&   modealign_cornersrL   )logitslenrF   r   numpyrangetorchnn
functionalinterpolate	unsqueezeargmaxappendshape)	r:   outputsr{   r   semantic_segmentationidxresized_logitssemantic_mapis	            r=   "post_process_semantic_segmentation5BeitImageProcessor.post_process_semantic_segmentation  s"   "  #6{c,// j  |,,+113$&!S[)!&!4!4!@!@K))a)0|7Hzin "A "  .a077A7>%,,\: * %$ %+MMaM$8!GLMbMhMhijMkGl$mGl!1%=Gl!$m$$ %ns   9D)r)   r(   r,   r/   r+   r%   r-   r.   r'   r*   r&   )NNNNNNNNNNNN)NNNNNNN)N)&__name__
__module____qualname____firstlineno____doc__model_input_namesr   r   r   BICUBICboolr   dictstrintr   floatlistr9   rf   ndarrayr   r
   r   rN   rW   r]   rk   ro   re   r   PILImagery   tupler   __static_attributes____classcell__)r<   s   @r=   r!   r!   9   sj   (T (($+>? )-'9'A'A#.2,3!:>9=!&11 tCH~&1 %	1
 1 DcN+1 c5j)1 1 1 U5$u+#5671 E%e"4561 1 
1 @1H (:'A'A>BDH"
zz"
 38n"
 %	"

 eC)9$9:;"
 $E#/?*?$@A"
 
"
H*   ,0$()-15)-.2%)*.'+:>9=DH #4. D>	
 tCH~& -. ! DcN+ TN ! tn U5$u+#567 E%e"456 $E#/?*?$@AH %))-15)-.2%)*.'+:>9=>BDH++ D>+ tCH~&	+
 -.+ !+ DcN++ TN+ !+ tn+ U5$u+#567+ E%e"456+ eC)9$9:;+ $E#/?*?$@A+ 
+` %))-15)-.2+/DH' $'  D>'  tCH~&	' 
 -.'  !'  DcN+'  #4.'  $E#/?*?$@A' RW
 %& 37$()-15)-.2%)*.'+:>9=+/;?(8(>(>DH#YCYC $J/YC D>	YC
 tCH~&YC -.YC !YC DcN+YC TNYC !YC tnYC U5$u+#567YC E%e"456YC #4.YC !sJ!78YC  &!YC" $E#/?*?$@A#YC$ 
%YC 'YCv)%QUV[Q\H] )% )%r?   r!   )*r   typingr   r   r   rf   image_processing_utilsr   r   r   r	   image_transformsr
   r   image_utilsr   r   r   r   r   r   r   r   r   r   r   utilsr   r   r   r   r   r   utils.import_utilsr   r   r   
get_loggerr   r[   r!   __all__r7   r?   r=   <module>r      s    & "  j j C     +  
		H	% 
;{%+ {%  {%|  
 r?   