
    Z j                     &   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
[        X5      U:  a  U[        X5      -  nX-  n	X-  n
[        U	S-   5      [        U
S-   5      pX-  U-  n	X-  U-  n
X4$ )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              ڍ/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/transformers/models/bridgetower/image_processing_bridgetower.pyget_resize_output_image_sizer.   %   s     
; E E$/$5$5bc$:!k$2;L\LbLb$c! hs<55E!
'	)
	
:!H,3z55'
%	
S 013y33G	+l:J)L8I      c                   $    \ rS rSr% Sr\\S'   Srg)BridgeTowerImageProcessorKwargsG   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%$ )%BridgeTowerImageProcessorP   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[        XS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XxXU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"9P9PXaXoXo)p "2 " "77
LV_N /=$U+ &< **BDXY04 dEU 19 1-o "1D/^>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2L'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
 	!rzz>12!! ! 	!
 38_!Dl%  dC 2 dC dCN '
'r/   