Ë
    ÛÓ^j§  ã                   ó(  — d Z ddlmZ ddl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 dd	lmZmZmZmZmZmZ dd
lmZmZ ddlmZmZmZ 	 	 	 ddeej<                  df   dededede eef   f
d„Z! G d„ ded¬«      Z"e G d„ de
«      «       Z#dgZ$y)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                 óª  — t        «       r-t        | t        j                  «      r| j                  dd \  }}nt        | t        j                  ¬«      \  }}||}}|t        ||«      z  }||k  r|}	||z  }
n||z  }	|}
t        |	|
«      |kD  r|t        |	|
«      z  }||	z  }	||
z  }
t        |	dz   «      t        |
dz   «      }
}	|	|z  |z  }	|
|z  |z  }
|	|
fS )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              ú‡/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/bridgetower/image_processing_bridgetower.pyÚget_resize_output_image_sizer.   %   sÿ   € ô Ô¤
¨;¼¿¹Ô EØ$/×$5Ñ$5°b°cÐ$:Ñ!ˆ‘kä$2°;ÔL\×LbÑLbÔ$cÑ!ˆ�kà  &ˆh€HØ”s˜<¨Ó5Ñ5€Eà�kÒ!Øˆ
Ø˜KÑ'‰	à˜\Ñ)ˆ
Øˆ	ä
ˆ:�yÓ! HÒ,Øœ3˜z¨9Ó5Ñ5ˆØ˜ZÑ'ˆ
Ø˜IÑ%ˆ	ä 
¨SÑ 0Ó1´3°yÀ3±Ó3G�	€JØ˜|Ñ+¨lÑ:€JØ˜\Ñ)¨LÑ8€Ià�yÐ Ð ó    c                   ó   — e Zd ZU dZeed<   y)ÚBridgeTowerImageProcessorKwargsz�
    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__Ú__doc__r%   Ú__annotations__© r/   r-   r1   r1   G   s   … ñð
 Ôr/   r1   F)Útotalc            #       óB  ‡ — e Zd ZdZeZddgZej                  Z	e
ZeZddiZdZddiZd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 )#ÚBridgeTowerImageProcessorzGTorchvision backend for BridgeTower with custom resize and center_crop.Úpixel_valuesÚ
pixel_maskÚshortest_edgei   FTé    Úkwargsc                 ó$   •— t        ‰| �  di |¤Ž y )Nr7   )ÚsuperÚ__init__)Úselfr?   Ú	__class__s     €r-   rB   z"BridgeTowerImageProcessor.__init__d   s   ø€ Ü‰ÑÑ"˜6Ó"r/   Úimager   ÚsizeÚresamplez7PILImageResampling | tvF.InterpolationMode | int | Noner   r   c                 óè   •— |j                   st        d|j                  «       › �«      ‚|j                   }t        d|z  «      }t	        ||||¬«      \  }}	t        ‰
| �  d|t        ||	¬«      |dœ|¤ŽS )z!Resize with size_divisor support.z@The `size` dictionary must contain the key `shortest_edge`. Got g)\�Âõ¨ú?)r   r   r   ©ÚheightÚwidth)rE   rF   rG   r7   )r=   Ú
ValueErrorÚkeysr%   r.   rA   Úresizer   )rC   rE   rF   rG   r   r?   r   r   Úoutput_heightÚoutput_widthrD   s             €r-   rN   z BridgeTowerImageProcessor.resizeg   s�   ø€ ð ×!Ò!ÜÐ_Ð`d×`iÑ`iÓ`kÐ_lÐmÓnÐnØ×$Ñ$ˆÜ�Z 'Ñ)Ó*ˆÜ&BØ˜7¨6Àô'
Ñ#ˆ�|ô ‰w‰~ð 
ØÜ °lÔ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 ]T  \  }}|r2| j	                  |t        |j                  |j                  ¬«      ¬«      }| j                  ||||	|
|«      }|||<   ŒV t        ||«      }i }|r| j                  |d|¬«      \  }}||d<   ||d<   t        ||¬	«      S )
z%Custom preprocessing for BridgeTower.)r\   )rF   rG   r   rI   )rF   T)Úreturn_maskr\   r<   r;   )ÚdataÚtensor_type)
r   ÚitemsrN   r	   Úcenter_cropr   r=   Úrescale_and_normalizeÚpadr   )rC   rQ   rR   rF   rG   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r   r?   Úgrouped_imagesÚgrouped_images_indexÚresized_images_groupedr!   Ústacked_imagesÚresized_imagesÚprocessed_images_groupedÚprocessed_imagesr`   Úprocessed_maskss                               r-   Ú_preprocessz%BridgeTowerImageProcessor._preprocess~   se  € ô, 0EÀVÐ^nÔ/oÑ,ˆÐ,Ø!#ÐØ%3×%9Ñ%9Ó%;ò 	;Ñ!ˆE�>ÙØ!%§¡¨^À$ÐQYÐht Ó!u�Ø,:Ð" 5Ò)ð	;ô (Ð(>Ð@TÓUˆô 0EÀ^ÐfvÔ/wÑ,ˆÐ,Ø#%Ð Ø%3×%9Ñ%9Ó%;ò 		=Ñ!ˆE�>ÙØ!%×!1Ñ!1Ø"¬¸×9PÑ9PÐXa×XoÑXoÔ)pð "2ó "�ð "×7Ñ7Ø 
¨N¸LÈ*ÐV_óˆNð /=Ð$ UÒ+ð		=ô *Ð*BÐDXÓYÐàˆÙØ04·±Ø ¨dÐEUð 19ó 1Ñ-Ð˜oð "1ˆD�Ñà/ˆˆ^Ñä °>ÔBÐBr/   )r>   )$r2   r3   r4   r5   r1   Úvalid_kwargsÚmodel_input_namesr   ÚBICUBICrG   r
   rX   r   rY   rF   Údefault_to_squarerT   rR   rS   rU   rW   rZ   r   r   rB   r   r%   rN   ÚlistÚboolÚfloatÚstrr   r   rn   Ú__classcell__)rD   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r/   r:   )i   i5  r>   )%r5   Ú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__r7   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/   