
    Z j                         S r SSKJr  SSKrSSKJr  SSKJr  SSK	J
r
  SSKJrJr  SS	KJrJrJrJrJr  SS
KJrJr  SSKJrJr   " S S\SS9r\ " S S\5      5       rS/rg)z#Image processor class for ViTMatte.    )UnionN)
functional   )TorchvisionBackend)BatchFeature)group_images_by_shapereorder_images)IMAGENET_STANDARD_MEANIMAGENET_STANDARD_STDChannelDimension
ImageInputget_image_size)ImagesKwargsUnpack)
TensorTypeauto_docstringc                   $    \ rS rSr% Sr\\S'   Srg)VitMatteImageProcessorKwargs#   z
size_divisor (`int`, *optional*, defaults to `self.size_divisor`):
    The width and height of the image will be padded to be divisible by this number.
size_divisor N)__name__
__module____qualname____firstlineno____doc__int__annotations____static_attributes__r       ڇ/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/transformers/models/vitmatte/image_processing_vitmatte.pyr   r   #   s    
 r    r   F)totalc                   p  ^  \ rS rSrSrSrSr\r\	r
SrSr\rS\\   SS4U 4S jjr SS	S
S\SS
4S jjr\S	\S\S\\   S\4U 4S jj5       r SS	\S\S\S\S\\S4   S-  S\\   S\4S jjrS	\S
   S\S
   S\S\S\S\\\   -  S-  S\\\   -  S-  S\S-  S\S-  S\S-  S\\-  S-  S\4S jrSr U =r!$ ) VitMatteImageProcessor,   Tgp?    kwargsreturnNc                 t   > UR                  SS 5      nUb  UR                  SU5        [        TU ]  " S0 UD6  g )Nsize_divisibilityr   r   )pop
setdefaultsuper__init__)selfr'   r*   	__class__s      r!   r.   VitMatteImageProcessor.__init__7   s<    "JJ':DA(n.?@"6"r    imagesztorch.Tensorr   c                     [        U[        R                  S9u  p4X2-  S:X  a  SOX#U-  -
  nXB-  S:X  a  SOX$U-  -
  nXe-   S:  a  SSXe4n[        R                  " X5      nU$ )a,  
Pads an image or batched images constantly so that width and height are divisible by size_divisor

Args:
    images (`torch.Tensor`):
        Image to pad.
    size_divisor (`int`, *optional*, defaults to 32):
        The width and height of the image will be padded to be divisible by this number.
)channel_dimr   )r   r   FIRSTtvFpad)r/   r2   r   heightwidth
pad_height	pad_widthpaddings           r!   
_pad_image!VitMatteImageProcessor._pad_image>   sv     'v;K;Q;QR /14Q,R^I^:^
-2A|G[8[	!A%!Y3GWWV-Fr    trimapsc                 &   > [         TU ]  " X40 UD6$ )z8
trimaps (`ImageInput`):
    The trimaps to preprocess.
)r-   
preprocess)r/   r2   r?   r'   r0   s       r!   rA   !VitMatteImageProcessor.preprocessW   s     w!&<V<<r    do_convert_rgbinput_data_formatdeviceztorch.devicec                 j    U R                  XXES9nU R                  USUS9nU R                  " X40 UD6$ )z
Preprocess image-like inputs.
)r2   rC   rD   rE      )r2   expected_ndimsrE   )_prepare_image_like_inputs_preprocess)r/   r2   r?   rC   rD   rE   r'   s          r!   _preprocess_image_like_inputs4VitMatteImageProcessor._preprocess_image_like_inputsd   sP     00L] 1 
 11QR[a1b:6::r    
do_rescalerescale_factordo_normalize
image_mean	image_stddo_paddisable_groupingreturn_tensorsc           	      D   [        XS9u  p[        X*S9u  nn0 nU Hj  nUU   nUU   nU R                  UX4XVU5      nU R                  UX4SXg5      n[        R                  " UU/SS9nU(       a  U R	                  UU	5      nUUU'   Ml     [        UU5      n[        SU0US9$ )N)rS   F   )dimpixel_values)datatensor_type)r   rescale_and_normalizetorchcatr=   r	   r   )r/   r2   r?   rM   rN   rO   rP   rQ   rR   r   rS   rT   r'   grouped_imagesgrouped_images_indexgrouped_trimapsgrouped_trimaps_indexprocessed_images_groupedshapestacked_imagesstacked_trimapsprocessed_imagess                         r!   rJ   "VitMatteImageProcessor._preprocessw   s     0EV/o,1Fw1r..#% #E+E2N-e4O!77
LV_N #88UJO #YY'HaPN!%!N.<$U+ $ **BDXY.2B!CQ_``r    r   )r&   )N)"r   r   r   r   rM   rN   rO   r
   rP   r   rQ   rR   r   r   valid_kwargsr   r.   r   r=   r   r   r   rA   boolr   r   strrK   listfloatr   rJ   r   __classcell__)r0   s   @r!   r$   r$   ,   s   JNL'J%IFL/L#(D!E #$ #   
	2 
=
= 
= 56	
=
 

= 
=$ 59;; ; 	;
 ,; c>)*T1; 56; 
;&#a^$#a n%#a 	#a
 #a #a DK'$.#a 4;&-#a t#a Dj#a +#a j(4/#a 
#a #ar    r$   )r   typingr   r\   torchvision.transforms.v2r   r6   image_processing_backendsr   image_processing_utilsr   image_transformsr   r	   image_utilsr
   r   r   r   r   processing_utilsr   r   utilsr   r   r   r$   __all__r   r    r!   <module>rw      si    *   7 ; 2 E  5 /<u  ma/ ma ma` $
$r    