Ë
    ÛÓ^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  ø€ ð ×!Ò!ÜÐUÐVZ×V_ÑV_ÓVaÐUbÐcÓdÐdØ×*Ñ*ˆà˜3Òä#& }°xÑ'?Ó#@Ð Ü6ØÐ0ÀEÔ]m×]sÑ]sôˆKô ‘G‘NØÜ ¨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�>ÙØ!%§¡¨^¸TÀ8ÈXÓ!V�Ø,:Ð" 5Ò)ð	;ô (Ð(>Ð@TÓUˆä/DÀ^ÐfvÔ/wÑ,ˆÐ,Ø#%Ð Ø%3×%9Ñ%9Ó%;ò 	=Ñ!ˆE�>ÙØ!%×!1Ñ!1°.À)Ó!L�Ø!×7Ñ7Ø 
¨N¸LÈ*ÐV_óˆNð /=Ð$ UÒ+ð	=ô *Ð*BÐDXÓYÐä .Ð2BÐ!CÐQ_Ô`Ð`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   