
    ^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mZ ddlmZmZmZmZmZ dd	lmZmZ dd
lmZmZ  G d ded      Ze G d de             ZdgZy)z#Image processor class for ConvNeXT.    N)
functional   )TorchvisionBackend)BatchFeature)get_resize_output_image_sizegroup_images_by_shapereorder_images)IMAGENET_STANDARD_MEANIMAGENET_STANDARD_STDChannelDimensionPILImageResamplingSizeDict)ImagesKwargsUnpack)
TensorTypeauto_docstringc                       e Zd ZU dZeed<   y)ConvNextImageProcessorKwargsz
    crop_pct (`float`, *optional*, defaults to `self.crop_pct`):
        Percentage of the image to crop. Only has an effect if size < 384.
    crop_pctN)__name__
__module____qualname____doc__float__annotations__     /var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/convnext/image_processing_convnext.pyr   r   !   s    
 Or   r   F)totalc            #       *    e Zd ZdZeZej                  Ze	Z
eZddiZdZdZdZdZdZdee   f fdZ	 d d	d
dedddedd
f
 fdZ	 d d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dz  dedz  deez  dz  dedef"dZ xZS )!ConvNextImageProcessorz4Torchvision backend for ConvNeXT with custom resize.shortest_edge  FT      ?kwargsc                 $    t        |   di | y )Nr   )super__init__)selfr%   	__class__s     r   r(   zConvNextImageProcessor.__init__:   s    "6"r   imageztorch.Tensorsizeresamplez7PILImageResampling | tvF.InterpolationMode | int | Noner   returnc                    |j                   st        d|j                                |j                   }|dk  rnt        ||z        }t	        ||dt
        j                        }t        	|    |t        |d   |d         fd|i|} | j                  |t        ||      fi |S t        	|    |t        ||      fd|i|S )	zResize with crop_pct support.z6Size dictionary must contain 'shortest_edge' key. Got r#   F)r,   default_to_squareinput_data_formatr      )heightwidthr-   )r"   
ValueErrorkeysintr   r   FIRSTr'   resizer   center_crop)
r)   r+   r,   r-   r   r%   r"   resize_shortest_edgeresize_sizer*   s
            r   r9   zConvNextImageProcessor.resize=   s    !!UVZV_V_VaUbcdd**3#&}x'?#@ 60E]m]s]sK GNAk!nE " 	E $4##]C   7>]C " 	 r   images	do_resizedo_center_crop	crop_size
do_rescalerescale_factordo_normalize
image_meanN	image_stddo_padpad_sizedisable_groupingreturn_tensorsc           	         t        ||      \  }}i }|j                         D ]   \  }}|r| j                  ||||      }|||<   " t        ||      }t        ||      \  }}i }|j                         D ]4  \  }}|r| j	                  ||      }| j                  ||||	|
|      }|||<   6 t        ||      }t        d|i|      S )z"Custom preprocessing for ConvNeXT.)rH   pixel_values)datatensor_type)r   itemsr9   r	   r:   rescale_and_normalizer   )r)   r=   r>   r,   r-   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   r   r%   grouped_imagesgrouped_images_indexresized_images_groupedshapestacked_imagesresized_imagesprocessed_images_groupedprocessed_imagess                             r   _preprocessz"ConvNextImageProcessor._preprocesse   s   * 0EV^n/o,,!#%3%9%9%; 	;!E>!%^T8X!V,:"5)	; ((>@TU/D^fv/w,,#% %3%9%9%; 	=!E>!%!1!1.)!L!77
NL*V_N /=$U+	= **BDXY.2B!CQ_``r   )r$   )r   r   r   r   r   valid_kwargsr   BICUBICr-   r
   rD   r   rE   r,   r0   r>   rA   rC   r   r   r(   r   r   r9   listboolstrr   r   rX   __classcell__)r*   s   @r   r!   r!   *   s   >/L!))H'J%IS!DIJLH#(D!E # $&& & L	&
 & 
&r $#)a^$)a )a 	)a
 L)a )a )a )a )a )a DK'$.)a 4;&-)a t)a T/)a +)a  j(4/!)a" #)a& 
')ar   r!   )r   torchtorchvision.transforms.v2r   tvFimage_processing_backendsr   image_processing_utilsr   image_transformsr   r   r	   image_utilsr
   r   r   r   r   processing_utilsr   r   utilsr   r   r   r!   __all__r   r   r   <module>ri      si    *  7 ; 2 c c  5 /<u  ca/ ca caL $
$r   