ó
    qyüi§  ã                   ó&  • S r SSKJr  SSK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Jr  SS
KJrJr  SSKJrJrJr     SS\\R<                  S4   S\S\S\S\ \\4   4
S jjr! " S S\SS9r"\ " S S\
5      5       r#S/r$g)z&Image processor class for BridgeTower.é    )ÚUnionN)Ú
functionalé   )ÚTorchvisionBackend)ÚBatchFeature)Úgroup_images_by_shapeÚreorder_images)ÚOPENAI_CLIP_MEANÚOPENAI_CLIP_STDÚChannelDimensionÚPILImageResamplingÚSizeDictÚget_image_size)ÚImagesKwargsÚUnpack)Ú
TensorTypeÚauto_docstringÚis_torch_availableÚinput_imageútorch.TensorÚshorterÚlongerÚsize_divisorÚreturnc                 óœ  • [        5       (       a1  [        U [        R                  5      (       a  U R                  SS u  pEO[        U [        R                  S9u  pEXpvU[        XE5      -  nXE:  a  Un	X…-  n
OX„-  n	Un
[        Xš5      U:”  a  U[        Xš5      -  nX‰-  n	XŠ-  n
[        U	S-   5      [        U
S-   5      p©X“-  U-  n	X£-  U-  n
Xš4$ )z7Get output image size after resizing with size_divisor.éþÿÿÿN)Úchannel_dimg      à?)r   Ú
isinstanceÚtorchÚTensorÚshaper   r   ÚFIRSTÚminÚmaxÚint)r   r   r   r   Úinput_heightÚinput_widthÚmin_sizeÚmax_sizeÚscaleÚ
new_heightÚ	new_widths              Úy/home/mande/repo/quber/.venv/lib/python3.13/site-packages/transformers/models/bridgetower/image_processing_bridgetower.pyÚget_resize_output_image_sizer.   %   sç   € ô ×Ñ¤
¨;¼¿¹× EÑ EØ$/×$5Ñ$5°b°cÐ$:Ñ!ˆ�kä$2°;ÔL\×LbÑLbÑ$cÑ!ˆà ˆhØ”s˜<Ó5Ñ5€EàÓ!Øˆ
ØÑ'‰	àÑ)ˆ
Øˆ	ä
ˆ:Ó! HÓ,Øœ3˜zÓ5Ñ5ˆØÑ'ˆ
ØÑ%ˆ	ä 
¨SÑ 0Ó1´3°yÀ3±Ó3G�	ØÑ+¨lÑ:€JØÑ)¨LÑ8€IàÐ Ð ó    c                   ó$   • \ rS rSr% Sr\\S'   Srg)ÚBridgeTowerImageProcessorKwargséG   z‘
size_divisor (`int`, *optional*, defaults to `self.size_divisor`):
    The size by which to make sure both the height and width can be divided.
r   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r%   Ú__annotations__Ú__static_attributes__r3   r/   r-   r1   r1   G   s   ‡ ñð
 Ör/   r1   F)Útotalc            #       óX  ^ • \ rS rSrSr\rSS/r\R                  r
\r\rSS0rSrSS0rSrSrSrSrSrS	rS
\\   4U 4S jj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#r$U =r%$ )%ÚBridgeTowerImageProcessoréP   zGTorchvision backend for BridgeTower with custom resize and center_crop.Úpixel_valuesÚ
pixel_maskÚshortest_edgei   FTé    Úkwargsc                 ó&   >• [         TU ]  " S0 UD6  g )Nr3   )ÚsuperÚ__init__)ÚselfrC   Ú	__class__s     €r-   rF   Ú"BridgeTowerImageProcessor.__init__d   s   ø€ Ü‰ÒÑ"˜6Ó"r/   Úimager   ÚsizeÚresamplez7PILImageResampling | tvF.InterpolationMode | int | Noner   r   c           	      óà   >• UR                   (       d  [        SUR                  5        35      eUR                   n[        SU-  5      n[	        XXtS9u  p‰[
        T
U ]  " SU[        X‰S9US.UD6$ )z!Resize with size_divisor support.z@The `size` dictionary must contain the key `shortest_edge`. Got g)\�Âõ¨ú?)r   r   r   ©ÚheightÚwidth)rJ   rK   rL   r3   )rA   Ú
ValueErrorÚkeysr%   r.   rE   Úresizer   )rG   rJ   rK   rL   r   rC   r   r   Úoutput_heightÚoutput_widthrH   s             €r-   rS   Ú BridgeTowerImageProcessor.resizeg   sˆ   ø€ ð ×!×!ÜÐ_Ð`d×`iÑ`iÓ`kÐ_lÐmÓnÐnØ×$Ñ$ˆÜ�Z 'Ñ)Ó*ˆÜ&BØ¨6ñ'
Ñ#ˆô ‰wŠ~ð 
ØÜ Ñ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           	      ó  • [        XS9u  nn0 nUR                  5        H#  u  nnU(       a  U R                  UX4US9nUUU'   M%     [        UU5      n[        UUS9u  nn0 nUR                  5        HR  u  nnU(       a,  U R	                  U[        UR                  UR                  S9S9nU R                  UXxXšU5      nUUU'   MT     [        UU5      n0 nU(       a  U R                  USUS9u  nnUUS'   UUS'   [        UUS	9$ )
z%Custom preprocessing for BridgeTower.)rb   )rK   rL   r   rN   )rK   T)Úreturn_maskrb   r@   r?   )ÚdataÚtensor_type)
r   ÚitemsrS   r	   Úcenter_cropr   rA   Úrescale_and_normalizeÚpadr   )rG   rW   rX   rK   rL   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   r   rC   Úgrouped_imagesÚgrouped_images_indexÚresized_images_groupedr!   Ústacked_imagesÚresized_imagesÚprocessed_images_groupedÚprocessed_imagesrf   Úprocessed_maskss                               r-   Ú_preprocessÚ%BridgeTowerImageProcessor._preprocess~   sQ  € ô, 0EÀVÑ/oÑ,ˆÐ,Ø!#ÐØ%3×%9Ñ%9Ö%;Ñ!ˆE�>ÞØ!%§¡¨^À$Ðht Ð!u�Ø,:Ð" 5Ó)ñ &<ô (Ð(>Ð@TÓUˆô 0EÀ^ÐfvÑ/wÑ,ˆÐ,Ø#%Ð Ø%3×%9Ñ%9Ö%;Ñ!ˆE�>ÞØ!%×!1Ñ!1Ø"¬¸×9PÑ9PÐXa×XoÑXoÑ)pð "2ð "�ð "×7Ñ7Ø 
¸LÐV_óˆNð /=Ð$ UÓ+ñ &<ô *Ð*BÐDXÓYÐàˆÞØ04·±Ø ¨dÐEUð 19ð 1Ñ-Ð˜oð "1ˆD�Ñà/ˆˆ^Ñä °>ÑBÐBr/   r3   )rB   )&r4   r5   r6   r7   r8   r1   Úvalid_kwargsÚmodel_input_namesr   ÚBICUBICrL   r
   r^   r   r_   rK   Údefault_to_squarerZ   rX   rY   r[   r]   r`   r   r   rF   r   r%   rS   ÚlistÚboolÚfloatÚstrr   r   rt   r:   Ú__classcell__)rH   s   @r-   r=   r=   P   s¸  ø† áQà2€LØ'¨Ð6Ðà!×)Ñ)€HØ!€JØ€IØ˜SÐ!€DØÐØ  #Ð&€IØ€IØ€NØ€JØ€LØ€FØ€Lð# Ð(GÑ!H÷ #ð ñ
àð
ð ð
ð Lð	
ð
 ð
ð 
÷
ð 
ðP ñ#7Cà�^Ñ$ð7Cð ð7Cð ð	7Cð
 Lð7Cð ð7Cð ð7Cð ð7Cð ð7Cð ð7Cð ˜D ™KÑ'¨$Ñ.ð7Cð ˜4 ™;Ñ&¨Ñ-ð7Cð �t‘ð7Cð ˜T‘/ð7Cð  ™+ð7Cð  ˜jÑ(¨4Ñ/ð!7Cð" ð#7Cð& 
÷'7Có 7Cr/   r=   )i   i5  rB   )%r8   Útypingr   ÚnumpyÚnpr   Ú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   Úndarrayr%   Útupler.   r1   r=   Ú__all__r3   r/   r-   Ú<module>r�      sÄ   ðñ -å ã Û Ý 7å ;Ý 2ß E÷÷ ÷ 5ß CÑ Cð
 ØØñ	!Ø�r—z‘z >Ð1Ñ2ð!àð!ð ð!ð ð	!ð
 ˆ3�ˆ8�_õ!ôD l¸%ò ð ôdCÐ 2ó dCó ðdCðN 'Ð
'�r/   