ó
    qyüia  ã                   ó  • S 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  SSKJrJr  SS	KJrJrJrJr  \(       a  SS
KJr  SSKrSSKJr  \R8                  " \5      r " S S\SS9r\ " S S\5      5       r S/r!g)zImage processor class for GLPN.é    )ÚTYPE_CHECKINGé   )ÚTorchvisionBackend)ÚBatchFeature)Úgroup_images_by_shapeÚreorder_images)Ú
ImageInputÚPILImageResamplingÚSizeDict)ÚImagesKwargsÚUnpack)Ú
TensorTypeÚauto_docstringÚloggingÚrequires_backends)ÚDepthEstimatorOutputN)Ú
functionalc                   ó$   • \ rS rSr% Sr\\S'   Srg)ÚGLPNImageProcessorKwargsé(   zÀ
size_divisor (`int`, *optional*, defaults to 32):
    When `do_resize` is `True`, images are resized so their height and width are rounded down to the closest
    multiple of `size_divisor`.
Úsize_divisor© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚintÚ__annotations__Ú__static_attributes__r   ó    Úk/home/mande/repo/quber/.venv/lib/python3.13/site-packages/transformers/models/glpn/image_processing_glpn.pyr   r   (   s   ‡ ñð Ör!   r   F)Útotalc            #       ó¬  ^ • \ rS rSrSr\rSrSrSr	\
R                  rSrS\\   4U 4S jjrU 4S jr\S	\S\\   S
\4U 4S jj5       r S&SSS\SSS\S
S4
U 4S jjjr S&S	\S   S\S\SSS\S\S\S\S\S\\\   -  S-  S\\\   -  S-  S\S-  S\S-  S\S-  S\\-  S-  S\S
\4"S  jjr S'S!S"S#\\\\\4      -  S-  S
\\\\4      4S$ jjr S%r!U =r"$ )(ÚGLPNImageProcessoré2   z6Torchvision backend for GLPN with size_divisor resize.Tgp?é    Úkwargsc                 ó&   >• [         TU ]  " S0 UD6  g )Nr   )ÚsuperÚ__init__©Úselfr(   Ú	__class__s     €r"   r+   ÚGLPNImageProcessor.__init__>   s   ø€ Ü‰ÒÑ"˜6Ó"r!   c                 óH   >• UR                  SS 5        [        TU ]  " S0 UD6$ )NÚ	do_resizer   )Úpopr*   Ú_validate_preprocess_kwargsr,   s     €r"   r3   Ú.GLPNImageProcessor._validate_preprocess_kwargsA   s$   ø€ à�
‰
�; Ô%Ü‰wÒ2Ñ<°VÑ<Ð<r!   ÚimagesÚreturnc                 ó&   >• [         TU ]  " U40 UD6$ ©N)r*   Ú
preprocess)r-   r5   r(   r.   s      €r"   r9   ÚGLPNImageProcessor.preprocessF   s   ø€ ä‰wÒ! &Ñ3¨FÑ3Ð3r!   Úimageztorch.TensorÚsizeÚresamplez7PILImageResampling | tvF.InterpolationMode | int | Noner   c                 óx   >• UR                   SS u  pgXd-  U-  nXt-  U-  n	[        T
U ]  " U[        X‰S94SU0UD6$ )zTResize so height and width are rounded down to the closest multiple of size_divisor.éþÿÿÿN)ÚheightÚwidthr=   )Úshaper*   Úresizer   )r-   r;   r<   r=   r   r(   r@   rA   Únew_hÚnew_wr.   s             €r"   rC   ÚGLPNImageProcessor.resizeJ   sa   ø€ ð Ÿ™ B CÐ(‰ˆØÑ&¨Ñ5ˆØÑ%¨Ñ4ˆÜ‰wŠ~ØÜ˜EÑ/ñ
ð ð
ð ñ	
ð 	
r!   r1   Údo_center_cropÚ	crop_sizeÚ
do_rescaleÚrescale_factorÚdo_normalizeÚ
image_meanNÚ	image_stdÚdo_padÚpad_sizeÚdisable_groupingÚreturn_tensorsc           	      óä   • [        XS9u  nn0 nUR                  5        H7  u  nnU(       a  U R                  UX4US9nU R                  UXxXšU5      nUUU'   M9     [	        UU5      n[        SU0US9$ )zCustom preprocessing for GLPN.)rP   )r   Úpixel_values)ÚdataÚtensor_type)r   ÚitemsrC   Úrescale_and_normalizer   r   )r-   r5   r1   r<   r=   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   r   r(   Úgrouped_imagesÚgrouped_images_indexÚprocessed_images_groupedrB   Ústacked_imagesÚprocessed_imagess                           r"   Ú_preprocessÚGLPNImageProcessor._preprocess]   s—   € ô* 0EÀVÑ/oÑ,ˆÐ,Ø#%Ð Ø%3×%9Ñ%9Ö%;Ñ!ˆE�>ÞØ!%§¡¨^¸TÐZf Ð!g�Ø!×7Ñ7Ø 
¸LÐV_óˆNð /=Ð$ UÓ+ñ &<ô *Ð*BÐDXÓYÐÜ .Ð2BÐ!CÐQ_Ñ`Ð`r!   Úoutputsr   Útarget_sizesc                 óž  • [        U S5        UR                  nUb#  [        U5      [        U5      :w  a  [        S5      e/ nUc  S/[        U5      -  OUn[	        X25       Hi  u  pVUbN  US   n[
        R                  R                  R                  XVSSS9nUR                  S5      R                  S5      nUR                  S	U05        Mk     U$ )
zN
Convert raw model outputs to final depth predictions.
Only supports PyTorch.
ÚtorchNz]Make sure that you pass in as many target sizes as the batch dimension of the predicted depth)NN.ÚbicubicF)r<   ÚmodeÚalign_cornersr   Úpredicted_depth)r   rf   ÚlenÚ
ValueErrorÚziprb   Únnr   ÚinterpolateÚsqueezeÚappend)r-   r_   r`   rf   ÚresultsÚdepthÚtarget_sizes          r"   Úpost_process_depth_estimationÚ0GLPNImageProcessor.post_process_depth_estimation~   sØ   € ô 	˜$ Ô(Ø!×1Ñ1ˆØÑ#¬¨OÓ(<ÄÀLÓ@QÓ(QÜØoóð ð ˆØ8DÑ8L˜�v¤ OÓ 4Ò4ÐR^ˆÜ"% oÖ"DÑˆEØÑ&Ø˜oÑ.�ÜŸ™×+Ñ+×7Ñ7¸ÐV_ÐotÐ7Ðu�ØŸ™ aÓ(×0Ñ0°Ó3�Ø�N‰NÐ-¨uÐ5Ö6ñ #Eð ˆr!   r   )r'   r8   )#r   r   r   r   r   r   Úvalid_kwargsr1   rI   rJ   r
   ÚBILINEARr=   r   r   r+   r3   r   r	   r   r9   r   r   rC   ÚlistÚboolÚfloatÚstrr   r]   ÚtupleÚdictrq   r    Ú__classcell__)r.   s   @r"   r%   r%   2   s  ø† á@à+€Là€IØ€JØ€NØ!×*Ñ*€HØ€Lð# Ð(@Ñ!A÷ #õ=ð
 ð4 ð 4°vÐ>VÑ7Wð 4Ð\hö 4ó ð4ð ñ
àð
ð ð
ð Lð	
ð
 ð
ð 
÷
ð 
ðH ñ#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ðH CGñà'ðð ! 4¨¨c°3¨h©Ñ#8Ñ8¸4Ñ?ðð 
ˆd�3˜
�?Ñ#Ñ	$÷	ó r!   r%   )"r   Útypingr   Úimage_processing_backendsr   Úimage_processing_utilsr   Úimage_transformsr   r   Úimage_utilsr	   r
   r   Úprocessing_utilsr   r   Úutilsr   r   r   r   Úmodeling_outputsr   rb   Útorchvision.transforms.v2r   ÚtvFÚ
get_loggerr   Úloggerr   r%   Ú__all__r   r!   r"   Ú<module>r‰      sƒ   ðñ &å  å ;Ý 2ß E÷ñ ÷
 5ß KÓ Kö Ý8ã Ý 7ð 
×	Ò	˜HÓ	%€ô˜|°5ò ð ôbÐ+ó bó ðbðJ  Ð
 �r!   