
    ^j                         d Z ddlZddlmZ ddlmZ ddlmZ ddl	m
Z
mZ ddlmZmZmZmZmZmZ dd	lmZmZ dd
lmZmZ e G d de             ZdgZy)z#Image processor class for VideoMAE.    N)
functional   )TorchvisionBackend)BatchFeature)group_images_by_shapereorder_images)IMAGENET_STANDARD_MEANIMAGENET_STANDARD_STD
ImageInputPILImageResamplingSizeDictmake_nested_list_of_images)ImagesKwargsUnpack)
TensorTypeauto_docstringc                   0    e Zd Zej                  ZeZeZ	ddiZ
dZdddZdZdZdZdZdee   f fdZdded	ed
efdZededee   d
ef fd       Zdeed      dededddedededededeee   z  dz  deee   z  dz  dedz  deez  dz  d
efdZ  xZ!S )VideoMAEImageProcessorshortest_edge   F)heightwidthTkwargsc                 $    t        |   di | y )N )super__init__)selfr   	__class__s     /var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/videomae/image_processing_videomae.pyr   zVideoMAEImageProcessor.__init__/   s    "6"    imagesexpected_ndimsreturnc                     t        ||      S )N)r#   )r   )r   r"   r#   s      r    _prepare_images_structurez0VideoMAEImageProcessor._prepare_images_structure2   s    )&PPr!   videosc                 $    t        |   |fi |S )a  
        videos (`ImageInput`):
            Video or batch of videos to preprocess. Expects a single video (list of frames) or a batch of videos
            (list of list of frames). Each frame can be a PIL image, numpy array, or torch tensor with pixel values
            ranging from 0 to 255. If passing in frames with pixel values between 0 and 1, set `do_rescale=False`.
        )r   
preprocess)r   r'   r   r   s      r    r)   z!VideoMAEImageProcessor.preprocess5   s     w!&3F33r!   ztorch.Tensor	do_resizesizeresamplez7PILImageResampling | tvF.InterpolationMode | int | Nonedo_center_crop	crop_size
do_rescalerescale_factordo_normalize
image_meanN	image_stddisable_groupingreturn_tensorsc           	         t        |d|      \  }}i }|j                         D ]  \  }}|r| j                  |||      }|||<   ! t        ||d      }t        |d|      \  }}i }|j                         D ]4  \  }}|r| j	                  ||      }| j                  ||||	|
|      }|||<   6 t        ||d      }|D cg c]  }t        j                  |       }}t        d|i|      S c c}w )NT)	is_nestedr4   )r7   pixel_values)datatensor_type)	r   itemsresizer   center_croprescale_and_normalizetorchstackr   )r   r"   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r   grouped_imagesgrouped_images_indexresized_images_groupedshapestacked_imagesresized_imagesprocessed_images_groupedprocessed_imagesvideo_framesr8   s                            r    _preprocessz"VideoMAEImageProcessor._preprocess?   s>   " 0Ed5E0
,, "$%3%9%9%; 	;!E>!%^T8!L,:"5)	; ((>@T`de/Dd=M0
,, $& %3%9%9%; 	=!E>!%!1!1.)!L!77
NL*V_N /=$U+	= **BDXdhi GWWlL1WW.,!?^\\ Xs    C-)r   )"__name__
__module____qualname__r   BILINEARr,   r	   r2   r
   r3   r+   default_to_squarer.   r*   r-   r/   r1   r   r   r   r   intr&   r   r   r)   listboolr   floatstrr   rJ   __classcell__)r   s   @r    r   r   "   sx   !**H'J%IS!D-IINJL#!5 #Q
 QC QXb Q 4 4vl7K 4P\ 4 4*]T.)**] *] 	*]
 L*] *] *] *] *] *] DK'$.*] 4;&-*] +*] j(4/*]  
!*]r!   r   )__doc__r?   torchvision.transforms.v2r   tvFimage_processing_backendsr   image_processing_utilsr   image_transformsr   r   image_utilsr	   r
   r   r   r   r   processing_utilsr   r   utilsr   r   r   __all__r   r!   r    <module>r`      sX    *  7 ; 2 E  5 / F]/ F] F]R $
$r!   