Ë
    ÛÓ^j„*  ã                   óò   — 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 ddlmZmZ dd	lmZmZ  G d
„ ded¬«      Z	 	 	 	 ddededededededefd„Ze G d„ de«      «       ZdgZy)é    N)Ú
functionalé   )ÚTorchvisionBackend)ÚBatchFeature)Úgroup_images_by_shapeÚreorder_images)ÚOPENAI_CLIP_MEANÚOPENAI_CLIP_STDÚ
ImageInputÚPILImageResamplingÚSizeDict)ÚImagesKwargsÚUnpack)Ú
TensorTypeÚauto_docstringc                   ó:   — e Zd ZU dZeed<   eed<   eed<   eed<   y)ÚGlmgaImageProcessorKwargsaÔ  
    patch_size (`int`, *optional*, defaults to 14):
        The spatial patch size of the vision encoder.
    temporal_patch_size (`int`, *optional*, defaults to 2):
        The temporal patch size of the vision encoder.
    merge_size (`int`, *optional*, defaults to 2):
        The merge size of the vision encoder to llm encoder.
    patch_expand_factor (`int`, *optional*, defaults to 1):
        The patch_expand_factor of the vision encoder to llm encoder.
    Ú
patch_sizeÚtemporal_patch_sizeÚ
merge_sizeÚpatch_expand_factorN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚintÚ__annotations__© ó    ú{/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/glmga/image_processing_glmga.pyr   r   "   s   … ñ	ð ƒOØÓØƒOØÔr   r   F)ÚtotalÚ
num_framesÚheightÚwidthÚtemporal_factorÚfactorÚ
min_pixelsÚ
max_pixelsc                 óR  — | |k  rt        d| › d|› �«      ‚||k  s||k  r.t        ||z  ||z  «      }t        ||z  «      }t        ||z  «      }t        ||«      t        ||«      z  dkD  r%t        dt        ||«      t        ||«      z  › �«      ‚t	        ||z  «      |z  }t	        ||z  «      |z  }	t	        | |z  «      |z  }
|
|z  |	z  |kD  rrt        j                  | |z  |z  |z  «      }t        |t        j                  ||z  |z  «      |z  «      }t        |t        j                  ||z  |z  «      |z  «      }	||	fS |
|z  |	z  |k  rZt        j                  || |z  |z  z  «      }t        j                  ||z  |z  «      |z  }t        j                  ||z  |z  «      |z  }	||	fS )Nzt:z% must be larger than temporal_factor:éÈ   z4absolute aspect ratio must be smaller than 200, got )	Ú
ValueErrorÚmaxr   ÚminÚroundÚmathÚsqrtÚfloorÚceil)r"   r#   r$   r%   r&   r'   r(   ÚscaleÚh_barÚw_barÚt_barÚbetas               r    Úsmart_resizer8   4   sÚ  € ð �OÒ#Ü˜2˜j˜\Ð)NÈÐN_Ð`ÓaÐaØ�‚˜% &š.Ü�F˜V‘O V¨e¡^Ó4ˆÜ�V˜e‘^Ó$ˆÜ�E˜E‘MÓ"ˆä
ˆ6�5ÓœC ¨Ó.Ñ.°Ò4ÜØBÄ3ÀvÈuÓCUÔX[Ð\bÐdiÓXjÑCjÐBkÐló
ð 	
ô �&˜6‘/Ó" VÑ+€EÜ�%˜&‘.Ó! FÑ*€EÜ�*˜Ñ.Ó/°/ÑA€Eàˆu�}�uÑ˜zÒ)Ü�y‰y˜* vÑ-°Ñ5¸ÑCÓDˆÜ�FœDŸJ™J v°¡}°vÑ'=Ó>ÀÑGÓHˆÜ�FœDŸJ™J u¨t¡|°fÑ'<Ó=ÀÑFÓGˆð �%ˆ<Ðð 
�‰˜Ñ	 Ò	+Ü�y‰y˜ z°FÑ':¸UÑ'BÑCÓDˆÜ—	‘	˜& 4™-¨&Ñ0Ó1°FÑ:ˆÜ—	‘	˜% $™,¨Ñ/Ó0°6Ñ9ˆà�%ˆ<Ðr   c                    óV  ‡ — e Zd ZdZej
                  ZdddœZdZdZ	dZ
dZeZeZdZdZdZdZeZd	d
gZdZdee   fˆ fd„Zededee   defˆ fd„«       Zdefˆ fd„Zde d   de!de"ddde!de#de!de#e e#   z  dz  de#e e#   z  dz  de$de$de$d e$d!e!dz  d"e%e&z  dz  def d#„Z'd'd$e$d%e$fd&„Z(ˆ xZ)S )(ÚGlmgaImageProcessorTé 1  i€q³ )Úshortest_edgeÚlongest_edgeFgp?é   é   Úpixel_valuesÚimage_grid_thwé   Úkwargsc                 ó¬   •— t        ‰| �  di |¤Ž | j                  �8| j                  j                  r| j                  j                  st        d«      ‚y y )Nú:size must contain 'shortest_edge' and 'longest_edge' keys.r   )ÚsuperÚ__init__Úsizer<   r=   r+   )ÚselfrC   Ú	__class__s     €r    rG   zGlmgaImageProcessor.__init__k   sM   ø€ Ü‰ÑÑ"˜6Ò"Ø�9‰9Ð Ø—9‘9×*Ò*°$·)±)×2HÒ2HÜ Ð!]Ó^Ð^ð 3Ið !r   ÚimagesÚreturnc                 ó$   •— t        ‰| �  |fi |¤ŽS ©N)rF   Ú
preprocess)rI   rK   rC   rJ   s      €r    rO   zGlmgaImageProcessor.preprocessq   s   ø€ ä‰wÑ! &Ñ3¨FÑ3Ð3r   c                 ó¤   •— t        ‰| �  di |¤Ž}|j                  d| j                  «      }|j                  r|j
                  st        d«      ‚|S )z¢
        Update kwargs that need further processing before being validated
        Can be overridden by subclasses to customize the processing of kwargs.
        rH   rE   r   )rF   Ú_standardize_kwargsÚgetrH   r<   r=   r+   )rI   rC   rH   rJ   s      €r    rQ   z'GlmgaImageProcessor._standardize_kwargsu   sM   ø€ ô
 ‘Ñ,Ñ6¨vÑ6ˆØ�z‰z˜& $§)¡)Ó,ˆØ×!Ò!¨×):Ò):ÜÐYÓZÐZàˆr   ztorch.TensorÚ	do_resizerH   Úresamplez7PILImageResampling | tvF.InterpolationMode | int | NoneÚ
do_rescaleÚrescale_factorÚdo_normalizeÚ
image_meanNÚ	image_stdr   r   r   r   Údisable_groupingÚreturn_tensorsc                 ó¬  — t        ||¬«      \  }}i }|j                  «       D ]l  \  }}|j                  dd \  }}|rNt        |||||
|z  |z  |j                  |j
                  ¬«      \  }}| j                  |t        ||¬«      |¬«      }|||<   Œn t        ||«      }t        ||¬«      \  }}i }i }|j                  «       D �]<  \  }}|j                  dd \  }}| j                  ||||||	«      }|j                  dk(  r|j                  d«      }|j                  d   |z  d	k7  rJ|dd…d
d…f   j                  d||j                  d   |z  z
  ddd«      }t        j                  ||gd¬«      }|j                  dd \  }} }!| |z  }"||
z  ||
z  }$}#|j                  ||"||!|#|z  ||
|$|z  ||
«
      }|j!                  d	ddddddddd«
      }|j#                  ||"|#z  |$z  |!|z  |
z  |
z  «      }%|%||<   |"|#|$gg|z  ||<   �Œ? t        ||«      }&t        ||«      }t        j                  |&d	¬«      }'t        j$                  |«      }(t'        |'|(dœ|¬«      S )z9
        Preprocess an image or batch of images.
        )rZ   éþÿÿÿN)r"   r#   r$   r%   r&   r'   r(   )r#   r$   )rH   rT   é   rB   r   éÿÿÿÿ)Údimr   é   é   é   r?   é   é	   )r@   rA   )ÚdataÚtensor_type)r   ÚitemsÚshaper8   r<   r=   Úresizer   r   Úrescale_and_normalizeÚndimÚ	unsqueezeÚrepeatÚtorchÚcatÚviewÚpermuteÚreshapeÚtensorr   ))rI   rK   rS   rH   rT   rU   rV   rW   rX   rY   r   r   r   r   rZ   r[   rC   Úgrouped_imagesÚgrouped_images_indexÚresized_images_groupedri   Ústacked_imagesr#   r$   Úresized_heightÚresized_widthÚresized_imagesÚprocessed_images_groupedÚprocessed_gridsÚpatchesÚrepeatsÚ
batch_sizeÚt_lenÚchannelÚgrid_tÚgrid_hÚgrid_wÚflatten_patchesÚprocessed_imagesr@   rA   s)                                            r    Ú_preprocesszGlmgaImageProcessor._preprocess�   s  € ô. 0EÀVÐ^nÔ/oÑ,ˆÐ,Ø!#ÐØ%3×%9Ñ%9Ó%;ò 	;Ñ!ˆE�>Ø*×0Ñ0°°Ð5‰MˆF�EÙÜ0<Ø2Ø!ØØ$7Ø%¨
Ñ2Ð5HÑHØ#×1Ñ1Ø#×0Ñ0ô1Ñ-� ð "&§¡Ø"Ü!¨¸}ÔMØ%ð "-ó "�ð
 -;Ð" 5Ò)ð#	;ô& (Ð(>Ð@TÓUˆä/DÀ^ÐfvÔ/wÑ,ˆÐ,Ø#%Ð Øˆà%3×%9Ñ%9Ó%;ó )	MÑ!ˆE�>Ø,:×,@Ñ,@ÀÀÐ,EÑ)ˆN˜Mà×0Ñ0Ø 
¨N¸LÈ*ÐV_óˆGð �|‰|˜qÒ Ø!×+Ñ+¨AÓ.�à�}‰}˜QÑÐ"5Ñ5¸Ò:Ø!¢! R¡S &™/×0Ñ0ØÐ*¨g¯m©m¸AÑ.>ÐATÑ.TÑUÐWXÐZ[Ð]^ó�ô  Ÿ)™) W¨gÐ$6¸AÔ>�à)0¯©°r¸Ð):Ñ&ˆJ˜˜wØÐ1Ñ1ˆFØ+¨zÑ9¸=ÈJÑ;V�FˆFà—l‘lØØØ#ØØ˜*Ñ$ØØØ˜*Ñ$ØØóˆGð —o‘o a¨¨A¨q°!°Q¸¸1¸aÀÓCˆGà%Ÿo™oØØ˜‘ &Ñ(ØÐ-Ñ-°
Ñ:¸ZÑGóˆOð />Ð$ UÑ+Ø'-¨v°vÐ&>Ð%?À*Ñ%LˆO˜EÓ"ðS)	MôV *Ð*BÐDXÓYÐÜ(¨Ð:NÓOˆä—y‘yÐ!1°qÔ9ˆÜŸ™ oÓ6ˆäØ".À.ÑQÐ_mô
ð 	
r   r#   r$   c           	      ó0  — |j                  d| j                  «      }|j                  d| j                  «      }|j                  d| j                  «      }||z  }t	        | j
                  ||||d   |d   | j
                  ¬«      \  }}	||z  |	|z  }}
|
|z  S )a±  
        A utility that returns number of image patches for a given image size.

        Args:
            height (`int`):
                Height of the input image.
            width (`int`):
                Width of the input image.
            images_kwargs (`dict`, *optional*)
                Any kwargs to override defaults of the image processor.
        Returns:
            `int`: Number of image patches per image.
        r   r   rH   r<   r=   )r"   r#   r$   r&   r'   r(   r%   )rR   r   r   rH   r8   r   )rI   r#   r$   Úimages_kwargsr   r   rH   r&   ry   rz   r„   r…   s               r    Úget_number_of_image_patchesz/GlmgaImageProcessor.get_number_of_image_patchesè   s©   € ð #×&Ñ& |°T·_±_ÓEˆ
Ø"×&Ñ& |°T·_±_ÓEˆ
Ø× Ñ  ¨¯©Ó3ˆà˜jÑ(ˆÜ(4Ø×/Ñ/ØØØØ˜OÑ,Ø˜NÑ+Ø ×4Ñ4ô)
Ñ%ˆ˜ð (¨:Ñ5°}È
Ñ7R�ˆØ˜‰Ðr   rN   )*r   r   r   rS   r   ÚBICUBICrT   rH   Údefault_to_squarerU   rV   rW   r	   rX   r
   rY   Údo_convert_rgbr   r   r   r   Úvalid_kwargsÚmodel_input_namesr   r   rG   r   r   r   rO   ÚdictrQ   ÚlistÚboolr   Úfloatr   Ústrr   rˆ   r‹   Ú__classcell__)rJ   s   @r    r:   r:   X   s°  ø„ à€IØ!×)Ñ)€HØ&¸ÑH€DØÐØ€JØ€NØ€LØ!€JØ€IØ€NØ€JØÐØ€JØ,€LØ'Ð)9Ð:ÐØÐð_ Ð(AÑ!Bõ _ð ð4 ð 4°vÐ>WÑ7Xð 4Ð]iô 4ó ð4ð
¨tõ 
ðe
à�^Ñ$ðe
ð ðe
ð ð	e
ð
 Lðe
ð ðe
ð ðe
ð ðe
ð ˜D ™KÑ'¨$Ñ.ðe
ð ˜4 ™;Ñ&¨Ñ-ðe
ð ðe
ð !ðe
ð ðe
ð !ðe
ð  ™+ðe
ð  ˜jÑ(¨4Ñ/ð!e
ð$ 
ó%e
ñN°#ð ¸c÷ r   r:   )r?   é   r;   i  “ )r/   ro   Útorchvision.transforms.v2r   ÚtvFÚimage_processing_backendsr   Úimage_processing_utilsr   Úimage_transformsr   r   Úimage_utilsr	   r
   r   r   r   Úprocessing_utilsr   r   Úutilsr   r   r   r   r8   r:   Ú__all__r   r   r    ú<module>r¡      s³   ðó* ã Ý 7å ;Ý 2ß Eß fÕ fß 4ß /ô °Eõ ð, ØØØ0ñ!Øð!àð!ð ð!ð ð	!ð
 ð!ð ð!ð ó!ðH ôlÐ,ó ló ðlð^ !Ð
!�r   