ó
    qyüi›)  ã                   óð   • 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  SSKJrJr  SS	KJrJr   " S
 S\SS9r    SS\S\S\S\S\S\S\4S jjr\ " S S\5      5       rS/rg)é    N)Ú
functionalé   )ÚTorchvisionBackend)ÚBatchFeature)Úgroup_images_by_shapeÚreorder_images)ÚOPENAI_CLIP_MEANÚOPENAI_CLIP_STDÚ
ImageInputÚPILImageResamplingÚSizeDict)ÚImagesKwargsÚUnpack)Ú
TensorTypeÚauto_docstringc                   ó8   • \ rS rSr% Sr\\S'   \\S'   \\S'   Srg)ÚGlm46VImageProcessorKwargsé#   a6  
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_sizeÚtemporal_patch_sizeÚ
merge_size© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚintÚ__annotations__Ú__static_attributes__r   ó    Úo/home/mande/repo/quber/.venv/lib/python3.13/site-packages/transformers/models/glm46v/image_processing_glm46v.pyr   r   #   s   ‡ ñð ƒOØÓØ†Or!   r   F)ÚtotalÚ
num_framesÚheightÚwidthÚtemporal_factorÚfactorÚ
min_pixelsÚ
max_pixelsc                 ó:  • X:  a  [        SU  SU 35      eX:  d  X$:  a*  [        XA-  XB-  5      n[        X-  5      n[        X'-  5      n[        X5      [        X5      -  S:”  a#  [        S[        X5      [        X5      -   35      e[	        X-  5      U-  n[	        X$-  5      U-  n	[	        X-  5      U-  n
X¨-  U	-  U:”  aq  [
        R                  " X-  U-  U-  5      n[        U[
        R                  " X-  U-  5      U-  5      n[        U[
        R                  " X+-  U-  5      U-  5      n	X‰4$ X¨-  U	-  U:  aZ  [
        R                  " XPU-  U-  -  5      n[
        R                  " X-  U-  5      U-  n[
        R                  " X+-  U-  5      U-  n	X‰4$ )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_resizer:   2   s©  € ð Ó#Ü˜2˜j˜\Ð)NÈÐN_Ð`ÓaÐaØƒ˜%›.Ü�F‘O V¡^Ó4ˆÜ�V‘^Ó$ˆÜ�E‘MÓ"ˆä
ˆ6ÓœC Ó.Ñ.°Ó4ÜØBÄ3ÀvÓCUÔX[Ð\bÓXjÑCjÐBkÐló
ð 	
ô �&‘/Ó" VÑ+€EÜ�%‘.Ó! FÑ*€EÜ�*Ñ.Ó/°/ÑA€Eà�}�uÑ˜zÓ)Ü�yŠy˜*Ñ-°Ñ5¸ÑCÓDˆÜ�FœDŸJšJ v¡}°vÑ'=Ó>ÀÑGÓHˆÜ�FœDŸJšJ u¡|°fÑ'<Ó=ÀÑFÓGˆð ˆ<Ðð 
‰˜Ñ	 Ó	+Ü�yŠy˜°FÑ':¸UÑ'BÑCÓDˆÜ—	’	˜&™-¨&Ñ0Ó1°FÑ:ˆÜ—	’	˜%™,¨Ñ/Ó0°6Ñ9ˆàˆ<Ðr!   c                   óh  ^ • \ rS rSrSr\R                  rSSS.rSr	Sr
SrSr\r\rSrSrS	rS	r\rS
S/rS\\   4U 4S jjr\S\S\\   S\4U 4S jj5       rS\4U 4S jjrS\ S   S\!S\"SSS\!S\#S\!S\#\ \#   -  S-  S\#\ \#   -  S-  S\$S\$S\$S \!S-  S!\%\&-  S-  S\4S" jr'S'S#\$S$\$4S% jjr(S&r)U =r*$ )(ÚGlm46VImageProcessoréV   Té 1  i€q³ )Úshortest_edgeÚlongest_edgeFgp?é   é   Úpixel_valuesÚimage_grid_thwÚkwargsc                 óÄ   >• [         TU ]  " S0 UD6  U R                  bB  U R                  R                  (       a  U R                  R                  (       d  [        S5      eg g )Nú:size must contain 'shortest_edge' and 'longest_edge' keys.r   )ÚsuperÚ__init__Úsizer?   r@   r-   )ÚselfrE   Ú	__class__s     €r"   rI   ÚGlm46VImageProcessor.__init__h   sM   ø€ Ü‰ÒÑ"˜6Ò"Ø�9‰9Ñ Ø—9‘9×*×*°$·)±)×2H×2HÜ Ð!]Ó^Ð^ð 3Ið !r!   ÚimagesÚreturnc                 ó&   >• [         TU ]  " U40 UD6$ ©N)rH   Ú
preprocess)rK   rN   rE   rL   s      €r"   rR   ÚGlm46VImageProcessor.preprocessn   s   ø€ ä‰wÒ! &Ñ3¨FÑ3Ð3r!   c                 óº   >• [         TU ]  " S0 UD6nUR                  SU R                  5      nUR                  (       a  UR
                  (       d  [        S5      eU$ )zŠ
Update kwargs that need further processing before being validated
Can be overridden by subclasses to customize the processing of kwargs.
rJ   rG   r   )rH   Ú_standardize_kwargsÚgetrJ   r?   r@   r-   )rK   rE   rJ   rL   s      €r"   rU   Ú(Glm46VImageProcessor._standardize_kwargsr   sM   ø€ ô
 ‘Ò,Ñ6¨vÑ6ˆØ�z‰z˜& $§)¡)Ó,ˆØ×!×!¨×):×):ÜÐYÓZÐZàˆr!   ztorch.TensorÚ	do_resizerJ   Úresamplez7PILImageResampling | tvF.InterpolationMode | int | NoneÚ
do_rescaleÚrescale_factorÚdo_normalizeÚ
image_meanNÚ	image_stdr   r   r   Údisable_groupingÚreturn_tensorsc                 óŠ  • [        XS9u  nn0 nUR                  5        He  u  nnUR                  SS u  nnU(       aA  [        UUUUX¬-  UR                  UR
                  S9u  nnU R                  U[        UUS9US9nUUU'   Mg     [        UU5      n[        UUS9u  nn0 n0 nUR                  5        GH;  u  nnUR                  SS u  nnU R                  UXVXxU	5      nUR                  S:X  a  UR                  S5      nUR                  S   U-  S	:w  aH  USS2S
S24   R                  SUUR                  S   U-  -
  SSS5      n[        R                  " UU/SS9nUR                  SS u  nnn UU-  n!UU
-  UU
-  n#n"UR                  UU!UU U"U-  UU
U#U-  UU
5
      nUR!                  S	SSSSSSSSS5
      nUR#                  UU!U"-  U#-  U U-  U
-  U
-  5      n$U$UU'   U!U"U#//U-  UU'   GM>     [        UU5      n%[        UU5      n[        R                  " U%S	S9n&[        R$                  " U5      n'['        U&U'S.US9$ )z)
Preprocess an image or batch of images.
)r_   éþÿÿÿN)r$   r%   r&   r'   r(   r)   r*   )r%   r&   )rJ   rY   é   é   r   éÿÿÿÿ)Údimr   é   é   é   rB   é   é	   )rC   rD   )ÚdataÚtensor_type)r   ÚitemsÚshaper:   r?   r@   Úresizer   r   Úrescale_and_normalizeÚndimÚ	unsqueezeÚrepeatÚtorchÚcatÚviewÚpermuteÚreshapeÚtensorr   )(rK   rN   rX   rJ   rY   rZ   r[   r\   r]   r^   r   r   r   r_   r`   rE   Úgrouped_imagesÚgrouped_images_indexÚresized_images_groupedro   Ú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_imagesrC   rD   s(                                           r"   Ú_preprocessÚ Glm46VImageProcessor._preprocess~   së  € ô, 0EÀVÑ/oÑ,ˆÐ,Ø!#ÐØ%3×%9Ñ%9Ö%;Ñ!ˆE�>Ø*×0Ñ0°°Ð5‰MˆF�EÞÜ0<Ø2Ø!ØØ$7Ø%Ñ2Ø#×1Ñ1Ø#×0Ñ0ñ1Ñ-� ð "&§¡Ø"Ü!¨¸}ÑMØ%ð "-ð "�ð
 -;Ð" 5Ó)ñ# &<ô& (Ð(>Ð@TÓUˆä/DÀ^ÐfvÑ/wÑ,ˆÐ,Ø#%Ð Øˆà%3×%9Ñ%9×%;Ñ!ˆE�>Ø,:×,@Ñ,@ÀÀÐ,EÑ)ˆN˜Mà×0Ñ0Ø 
¸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 &<ôV *Ð*BÐDXÓYÐÜ(¨Ð:NÓOˆä—y’yÐ!1°qÑ9ˆÜŸš oÓ6ˆäØ".À.ÑQÐ_mñ
ð 	
r!   r%   r&   c           
      ó  • UR                  SU R                  5      nUR                  SU R                  5      nUR                  SU R                  5      nXE-  n[	        U R
                  UUUUS   US   U R
                  S9u  p‰X„-  X”-  pºX«-  $ )aY  
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   rJ   r?   r@   )r$   r%   r&   r(   r)   r*   r'   )rV   r   r   rJ   r:   r   )rK   r%   r&   Úimages_kwargsr   r   rJ   r(   r   r€   rŠ   r‹   s               r"   Úget_number_of_image_patchesÚ0Glm46VImageProcessor.get_number_of_image_patchesä   s�   € ð #×&Ñ& |°T·_±_ÓEˆ
Ø"×&Ñ& |°T·_±_ÓEˆ
Ø× Ñ  ¨¯©Ó3ˆàÑ(ˆÜ(4Ø×/Ñ/ØØØØ˜OÑ,Ø˜NÑ+Ø ×4Ñ4ñ)
Ñ%ˆð (Ñ5°}Ñ7R�Ø‰Ðr!   r   rQ   )+r   r   r   r   rX   r   ÚBICUBICrY   rJ   Údefault_to_squarerZ   r[   r\   r	   r]   r
   r^   Údo_convert_rgbr   r   r   r   Úvalid_kwargsÚmodel_input_namesr   rI   r   r   r   rR   ÚdictrU   ÚlistÚboolr   Úfloatr   Ústrr   rŽ   r’   r    Ú__classcell__)rL   s   @r"   r<   r<   V   s¤  ø† à€IØ!×)Ñ)€HØ&¸ÑH€DØÐØ€JØ€NØ€LØ!€JØ€IØ€NØ€JØÐØ€JØ-€LØ'Ð)9Ð:Ðð_ Ð(BÑ!C÷ _ð ð4 ð 4°vÐ>XÑ7Yð 4Ð^jö 4ó ð4ð
¨t÷ 
ðd
à�^Ñ$ðd
ð ðd
ð ð	d
ð
 Lðd
ð ðd
ð ðd
ð ðd
ð ˜D ™KÑ'¨$Ñ.ðd
ð ˜4 ™;Ñ&¨Ñ-ðd
ð ðd
ð !ðd
ð ðd
ð  ™+ðd
ð ˜jÑ(¨4Ñ/ðd
ð" 
ô#d
ñL°#ð ¸c÷ ó r!   r<   )rB   é   r>   i  “ )r1   ru   Ú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   r:   r<   Ú__all__r   r!   r"   Ú<module>r©      s³   ðó, ã Ý 7å ;Ý 2ß Eß fÕ fß 4ß /ô °Uò ð& ØØØ0ñ!Øð!àð!ð ð!ð ð	!ð
 ð!ð ð!ð õ!ðH ôjÐ-ó jó ðjðZ "Ð
"�r!   