+
    œ°³jˆq  ã                   ó6  € R t ^ RIt^ RIHt ^ RIt^ RIHt ^RIH	t	 ^RI
Ht ^RIHt ^RIHtHtHt ^RIHtHtHtHtHtHt ^R	IHtHt ^R
IHtHtHt  ! R R]RR7      t RR R llt!R R lt"R R lt#R t$RR lt%RR R llt&] ! R R]	4      4       t'R.t(R# )zImage processor class for EoMT.N)ÚUnion)Ú
functional)ÚTorchvisionBackend)Ú'SemanticSegmentationPostProcessorOutput)ÚBatchFeature)Úget_size_with_aspect_ratioÚgroup_images_by_shapeÚreorder_images)ÚIMAGENET_DEFAULT_MEANÚIMAGENET_DEFAULT_STDÚChannelDimensionÚ
ImageInputÚPILImageResamplingÚSizeDict)ÚImagesKwargsÚUnpack)Ú
TensorTypeÚauto_docstringÚfilter_out_non_signature_kwargsc                   ó0   a € ] tR t^*t o RtV 3R ltRtV tR# )ÚEomtImageProcessorKwargsa[  
do_split_image (`bool`, *optional*, defaults to `self.do_split_image`):
    Whether to split the input images into overlapping patches for semantic segmentation. If set to `True`, the
    input images will be split into patches of size `size["shortest_edge"]` with an overlap between patches.
    Otherwise, the input images will be padded to the target size.
ignore_index (`int`, *optional*, defaults to `self.ignore_index`):
    Label to be assigned to background pixels in segmentation maps. If provided, segmentation map pixels
    denoted with 0 (background) will be replaced with `ignore_index`.
c                ó@   <€ V ^8„  d   Qh/ S[ ;R&   S[R,          ;R&   # )é   Údo_split_imageNÚignore_index)ÚboolÚint)ÚformatÚ__classdict__s   "€Úo/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/eomt/image_processing_eomt.pyÚ__annotate__Ú%EomtImageProcessorKwargs.__annotate__*   s#   ø‡ ‚ ñ Ññ ñ ˜•*Ñò ó    © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__)r   s   @r   r   r   *   s   ø‡ € ñ÷ ƒ r"   r   F)Útotalc                ór   € V ^8„  d   QhRRR\         \        \        3,          R,          R\        R,          /# )r   Úsegmentation_mapútorch.TensorÚinstance_id_to_semantic_idNr   )Údictr   )r   s   "r   r    r    :   s7   € ÷ /ñ /Ø$ð/ä $¤S¬# X¥°Õ 5ð/ô ˜•*ñ/r"   c                 óÈ  € Ve"   \         P                  ! V ^ 8H  W ^,
          4      p \         P                  ! V 4      pVe   W3V8g  ,          pV Uu. uF  q@V8H  NK	  	  ppV'       d   \         P                  ! V^ R7      pM0\         P                  ! ^ .V P
                  O5V P                  R7      pVe‹   \         P                  ! VP
                  ^ ,          V P                  R7      p\        V4       FG  w  rGYe   VP                  4       ^,           MVP                  4       ,          pVe
   V^,
          MTWd&   KI  	  MTpVP                  4       VP                  4       3# u upi )N©Údim©Údevice)ÚtorchÚwhereÚuniqueÚstackÚzerosÚshaper6   Ú	enumerateÚitemÚfloatÚlong)	r.   r0   r   Ú
all_labelsÚiÚbinary_masksÚlabelsÚlabelÚclass_ids	   &&&      r   Ú-convert_segmentation_map_to_binary_masks_fastrG   :   s1  € ð
 ÒÜ Ÿ;š;Ð'7¸1Ñ'<¸lÐ_`ÕL`ÓaÐä—’Ð.Ó/€JàÒØ¨lÑ :Õ;ˆ
á5?Ó@±Z°¨Ô*±Z€LÐ@ßÜ—{’{ <°QÔ7‰ä—{’{ AÐ#?Ð(8×(>Ñ(>Ñ#?ÐHX×H_ÑH_Ô`ˆð "Ò-Ü—’˜Z×-Ñ-¨aÕ0Ð9I×9PÑ9PÔQˆä! *Ö-‰HˆAØ1ÒG_°5·:±:³<À!Ö3CÐej×eoÑeoÓeqÕsˆHØ(4Ò(@˜ 1žÀhˆF‹Iò .ð ˆØ×ÑÓ §¡£Ð.Ð.ùò As   ÁEc                ót   € V ^8„  d   QhR\         \        \        3,          R\        \        \        3,          /# )r   Ú	size_dictÚreturn)r1   Ústrr   Útuple)r   s   "r   r    r    Y   s*   € ÷ 'ñ 'œt¤C¬ H�~ð '´%¼¼S¸µ/ñ 'r"   c                ó@   € V R,          pV R,          ;'       g    TpW3# )z.Returns the height and width from a size dict.Úshortest_edgeÚlongest_edger#   )rI   Útarget_heightÚtarget_widths   &  r   Úget_target_sizerR   Y   s'   € à˜oÕ.€MØ˜^Õ,×=Ð=°€LàÐ&Ð&r"   c          
      ó
  € V ^8„  d   QhR\         \        P                  ,          R\         \         \        ,          ,          R\        \         \        P                  ,          \         \         \        ,          ,          3,          /# )r   ÚpatchesÚoffsetsrJ   )Úlistr7   ÚTensorr   rL   )r   s   "r   r    r    a   sP   € ÷ 	6ñ 	6Ü”%—,‘,Õð	6Ü*.¬t´C­y­/ð	6ä
Œ4”—‘Õœt¤D¬¥I�Ð.Õ/ñ	6r"   c                ó’   € \        \        W4      4      pVP                  R R7       \        V!  w  r4\        V4      \        V4      3# )z@Sorts patches and offsets according to the original image index.c                 ó"   € V ^ ,          ^ ,          # )é    r#   )Úxs   &r   Ú<lambda>Ú-reorder_patches_and_offsets.<locals>.<lambda>g   s   €   !¥ Q¦r"   )Úkey)rV   ÚzipÚsort)rT   rU   ÚcombinedÚsorted_offsetsÚsorted_patchess   &&   r   Úreorder_patches_and_offsetsrd   a   sC   € ô
 ”C˜Ó)Ó*€HØ‡M�MÑ'€MÔ(Ü%(¨(¡^Ñ"€Nä�Ó¤ nÓ!5Ð5Ð5r"   c                ó  € V P                   ^ ,          VP                   ^ ,          u;8X  d   VP                   ^ ,          8X  g   M \        R4      hVP                  V4      W8„  ,          pW,          W,          W%,          3# )aÅ  
Binarize the given masks using `object_mask_threshold`, it returns the associated values of `masks`, `scores` and
`labels`.

Args:
    masks (`torch.Tensor`):
        A tensor of shape `(num_queries, height, width)`.
    scores (`torch.Tensor`):
        A tensor of shape `(num_queries)`.
    labels (`torch.Tensor`):
        A tensor of shape `(num_queries)`.
    object_mask_threshold (`float`):
        A number between 0 and 1 used to binarize the masks.
Raises:
    `ValueError`: Raised when the first dimension doesn't match in all input tensors.
Returns:
    `tuple[`torch.Tensor`, `torch.Tensor`, `torch.Tensor`]`: The `masks`, `scores` and `labels` without the region
    < `object_mask_threshold`.
z1mask, scores and labels must have the same shape!)r<   Ú
ValueErrorÚne)ÚmasksÚscoresrD   Úobject_mask_thresholdÚ
num_labelsÚto_keeps   &&&&& r   Úremove_low_and_no_objectsrm   m   s^   € ð( �K‰K˜�N˜fŸl™l¨1�oÖ@°·±¸aµÖ@ÜÐLÓMÐMà�i‰i˜
Ó# vÑ'EÕF€Gà�>˜6�?¨F­OÐ;Ð;r"   c                 ó"  € W8H  pVP                  4       pW,          V8¬  pVP                  4       pWW,          p	V	P                  4       p
V^ 8„  ;'       d    V^ 8„  ;'       d    V
^ 8„  pV'       d    Wh,          pVP                  4       V8”  g   RpW¹3# )rZ   F)Úsumr>   )Úmask_labelsÚ
mask_probsÚkÚmask_thresholdÚoverlap_mask_area_thresholdÚmask_kÚmask_k_areaÚoriginal_maskÚoriginal_areaÚ
final_maskÚfinal_mask_areaÚmask_existsÚ
area_ratios   &&&&&        r   Úcheck_segment_validityr}   ‰   s‘   € àÑ€FØ—*‘*“,€Kð •M ^Ñ3€MØ!×%Ñ%Ó'€MàÕ'€JØ —n‘nÓ&€Oà ‘/×OÐO m°aÑ&7×OÐO¸OÈaÑ<O€KçØ Õ0ˆ
Ø�‰Ó Ð#>Ô>ØˆKàÐ"Ð"r"   c                ól   € V ^8„  d   QhR\         R\         R\        \        \        3,          R,          /# )r   rs   rt   Útarget_sizeN)r?   rL   r   )r   s   "r   r    r    Ÿ   s7   € ÷ 3"ñ 3"ô
 ð3"ô "'ð3"ô ”sœC�x• 4Õ'ñ3"r"   c           	      óÜ  € Vf   V P                   ^,          MV^ ,          pVf   V P                   ^,          MV^,          p\        P                  ! Wx3\        P                  V P                  R7      ^,
          p	. p
V P                  4       p VR,          V ,          P                  ^ 4      p^ p/ p\        VP                   ^ ,          4       Fœ  pW.,          P                  4       p\        W°WäV4      w  ppV'       g   K3  V'       d   Wó9   d   Wý9   d   Wß,          V	V&   KT  WÍV&   WÉV&   \        W,          P                  4       ^4      pV
P                  RVRVRV/4       V^,          pKž  	  Wš3# )N)Údtyper6   ÚidÚlabel_idÚscore)ºNNNNN)r<   r7   r;   r@   r6   ÚsigmoidÚargmaxÚranger>   r}   ÚroundÚappend)rq   Úpred_scoresÚpred_labelsÚstuff_classesrs   rt   r   ÚheightÚwidthÚsegmentationÚsegmentsrp   Úcurrent_segment_idÚstuff_memory_listrr   Ú
pred_classr{   ry   Úsegment_scores   &&&&&&&            r   Úcompute_segmentsr–   Ÿ   sd  € ð %0Ò$7ˆZ×Ñ˜aÖ ¸[È½^€FØ#.Ò#6ˆJ×Ñ˜QÖ¸KÈ½N€Eä—;’; ˜´e·j±jÈ×IZÑIZÔ[Ð^_Õ_€LØ€Hð ×#Ñ#Ó%€JØ˜}Õ-°
Õ:×BÑBÀ1ÓE€Kð ÐØ(*Ðä�;×$Ñ$ QÕ'Ö(ˆØ •^×(Ñ(Ó*ˆ
ô #9Ø QÐ8Só#
Ñˆ�Z÷ Ùç˜ZÔ8ØÔ.Ø+<Õ+H�˜ZÑ(Ùà0B *Ñ-à#5�ZÑ Ü˜k�n×1Ñ1Ó3°QÓ7ˆØ�‰àÐ(Ø˜JØ˜ðô	
ð 	˜aÕÒñ7 )ð8 Ð!Ð!r"   c                   óv  a a€ ] tR t^Õt o]t]P                  t]	t
]tRRRR/tRtRtRtRtRtRtRtV3R lV 3R lltV3R	 lR
 ltV3R lR lt]RV3R lV 3R lll4       tRV3R lR lltV3R lR ltV3R lR ltV3R lR ltR V3R lR lltR!V3R lR llt] ! 4       R"V3R lR ll4       t!Rt"Vt#V ;t$# )#ÚEomtImageProcessorrN   i€  rO   FTNc                ó0   <€ V ^8„  d   QhRS[ S[,          /# )r   Úkwargs)r   r   )r   r   s   "€r   r    ÚEomtImageProcessor.__annotate__ä   s   ø€ ÷ #ñ #¡Ñ(@Õ!Añ #r"   c                ó(   <€ \         SV `  ! R/ VB  R # )Nr#   )ÚsuperÚ__init__)Úselfrš   Ú	__class__s   &,€r   rž   ÚEomtImageProcessor.__init__ä   s   ø€ Ü‰ÒÑ"˜6Ô"r"   c          
      ól   <€ V ^8„  d   QhRS[ P                  RS[RS[S[,          RS[S[S[3,          /# )r   ÚimagesÚsizeÚimage_indicesrJ   )r7   rW   r   rV   r   rL   )r   r   s   "€r   r    r›   ç   sA   ø€ ÷ &ñ &¡5§<¡<ð &±xð &ÑPTÑUXÕPYð &Ñ^cÑdhÑjnÐdnÕ^oñ &r"   c                ó>  € . . rTVP                   w   rgpVP                  p	\        Wx4      p
\        P                  ! W©,          4      pW¹,          V
,
          pV^8”  d   WË^,
          ,          M^ p\        V4       FŸ  p\        WéV,
          ,          4      pWù,           pWx8”  d   VRRVV1R3,          pMVRRRVV13,          p\        \        P                  ! V^ R7      4       F2  w  ppVP                  V4       VP                  VV,          VV.4       K4  	  K¡  	  WE3# )zCSlices an image into overlapping patches for semantic segmentation.r…   r3   )r<   rN   ÚmaxÚmathÚceilrˆ   r   r=   r7   ÚunbindrŠ   )rŸ   r£   r¤   r¥   rT   Úpatch_offsetsÚ_rŽ   r�   Ú
patch_sizeÚlonger_sideÚnum_patchesÚtotal_overlapÚoverlap_per_patchrB   ÚstartÚendÚbatch_patchÚ	batch_idxÚsingles   &&&&                r   Ú_split_imageÚEomtImageProcessor._split_imageç   s  € ð "$ R�à$Ÿl™lÑˆˆ1�eØ×'Ñ'ˆ
ä˜&Ó(ˆÜ—i’i Õ 8Ó9ˆØ#Õ0°;Õ>ˆØALÈqÄ˜M¸1­_Ö=ÐVWÐä�{Ö#ˆAÜ˜Ð*;Õ;Õ<Ó=ˆEØÕ$ˆCàŒ~Ø$ Q¨¨5°¨9°aÐ%7Õ8‘à$ Q¨¨1¨e°C¨iÐ%7Õ8�ä%.¬u¯|ª|¸KÈQÔ/OÖ%PÑ!�	˜6Ø—‘˜vÔ&Ø×$Ñ$ m°IÕ&>ÀÀsÐ%KÖLó &Qñ $ð Ð%Ð%r"   c                óT   <€ V ^8„  d   QhRS[ P                  RS[RS[ P                  /# )r   r£   r¤   rJ   )r7   rW   r   )r   r   s   "€r   r    r›     s*   ø€ ÷ ñ ™5Ÿ<™<ð ©xð ¹E¿L¹Lñ r"   c                óD  € VP                   w   r4p\        RVP                  RVP                  ;'       g    VP                  /4      w  rg\	        ^ Wd,
          4      p\	        ^ Wu,
          4      p	^ V	^ V3p
\
        P                  P                  P                  WRRR7      pV# )z5Pads the image to the target size using zero padding.rN   rO   Úconstantg        )ÚmodeÚvalue)	r<   rR   rN   rO   r§   r7   Únnr   Úpad)rŸ   r£   r¤   r¬   rŽ   r�   rP   rQ   Úpad_hÚpad_wÚpaddingÚpadded_imagess   &&&         r   Ú_padÚEomtImageProcessor._pad  sœ   € à$Ÿl™lÑˆˆ1�eä&5Ø˜d×0Ñ0°.À$×BSÑBS×BiÐBiÐW[×WiÑWiÐjó'
Ñ#ˆô �A�}Õ-Ó.ˆÜ�A�|Õ+Ó,ˆØ�e˜Q Ð&ˆäŸ™×+Ñ+×/Ñ/°ÀjÐX[Ð/Ó\ˆØÐr"   c          
      óž   <€ V ^8„  d   QhRS[ RS[S[P                  ,          R,          RS[S[S[3,          R,          RS[S[,          RS[/# )r   r£   Úsegmentation_mapsNr0   rš   rJ   )	r   rV   r7   rW   r1   r   r   r   r   )r   r   s   "€r   r    r›     se   ø€ ÷ cñ cáðcñ  ¡§¡Õ-°Õ4ðcñ %)©©c¨¥N°TÕ$9ð	cñ
 Ñ1Õ2ðcñ 
ñcr"   c                ó(   <€ \         SV `  ! WV3/ VB # )zÿ
segmentation_maps (`ImageInput`, *optional*):
    The segmentation maps to preprocess for corresponding images.
instance_id_to_semantic_id (`list[dict[int, int]]` or `dict[int, int]`, *optional*):
    A mapping between object instance ids and class ids.
)r�   Ú
preprocess)rŸ   r£   rÇ   r0   rš   r    s   &&&&,€r   rÉ   ÚEomtImageProcessor.preprocess  s   ø€ ô ‰wÒ! &Ð=WÑbÐ[aÑbÐbr"   c                óÒ   <€ V ^8„  d   QhRS[ RS[ R,          RS[S[S[3,          R,          RS[RS[RS[S[,          R,          RS[S[R	3,          R,          R
S[S[	,          RS[
/	# )r   r£   rÇ   Nr0   Údo_convert_rgbÚinput_data_formatÚreturn_tensorsr6   ztorch.devicerš   rJ   )r   r1   r   r   r   rK   r   r   r   r   r   )r   r   s   "€r   r    r›   !  s¡   ø€ ÷ L
ñ L
áðL
ñ &¨Õ,ðL
ñ %)©©c¨¥N°TÕ$9ð	L
ñ
 ðL
ñ ,ðL
ñ ™jÕ(¨4Õ/ðL
ñ ‘c˜>Ð)Õ*¨TÕ1ðL
ñ Ñ1Õ2ðL
ñ 
ñL
r"   c                ó’  € V P                  WWWR7      pVP                  RR4      p	VP                  4       p
/ pV P                  ! V3/ V
B w  rÍWËR&   WÛR&   VEe%   V P                  V^R\        P
                  R7      pVP                  4       pVP                  RRR	RR
\        P                  /4       V P                  ! RRV/VB w  ppV Uu. uF1  pVP                  ^ 4      P                  \        P                  4      NK3  	  pp. . pp\        V4       F[  w  pp\        V\        4      '       d   VV,          pMTp\!        VVV	R7      w  ppVP#                  V4       VP#                  V4       K]  	  VVR&   VVR&   V'       d*   V Uu. uF  p\        P$                  ! V4      NK  	  upVR&   \'        VV. ROR7      # u upi u upi )z
Preprocess image-like inputs.
)r£   rÌ   rÍ   r6   r   NÚpixel_valuesr«   F)r£   Úexpected_ndimsrÌ   rÍ   Údo_normalizeÚ
do_rescaleÚresampler£   )r   rp   Úclass_labels)ÚdataÚtensor_typeÚskip_tensor_conversionr#   )r«   rp   rÕ   )Ú_prepare_image_like_inputsÚpopÚcopyÚ_preprocessr   ÚFIRSTÚupdater   ÚNEARESTÚsqueezeÚtor7   Úint64r=   Ú
isinstancerV   rG   rŠ   Útensorr   )rŸ   r£   rÇ   r0   rÌ   rÍ   rÎ   r6   rš   r   Úimages_kwargsrÖ   Úprocessed_imagesr«   Úprocessed_segmentation_mapsÚsegmentation_maps_kwargsr¬   r.   rp   rÕ   ÚidxÚinstance_idrh   ÚclassesrU   s   &&&&&&&&,                r   Ú_preprocess_image_like_inputsÚ0EomtImageProcessor._preprocess_image_like_inputs!  s  € ð ×0Ñ0ØÐL]ð 1ó 
ˆð —z‘z .°$Ó7ˆØŸ™›ˆØˆØ*.×*:Ò*:¸6Ñ*SÀ]Ñ*SÑ'ÐØ/ˆ^ÑØ -ˆ_ÑàÓ(Ø*.×*IÑ*IØ(Ø Ø$Ü"2×"8Ñ"8ð	 +Jó +Ð'ð (.§{¡{£}Ð$Ø$×+Ñ+à" EØ  %àÔ 2× :Ñ :ð	ôð .2×-=Ò-=ñ .Ø2ð.Ø6Nñ.Ñ*Ð'¨ñ Upó+ÙToÐ@PÐ ×(Ñ(¨Ó+×.Ñ.¬u¯{©{Ö;ÑToð (ð +ð )+¨B˜ˆKÜ)2Ð3NÖ)OÑ%�Ð%ÜÐ8¼$×?Ò?Ø"<¸SÕ"A‘Kà"<�Kä!NØ$ØØ!-ô"‘��wð ×"Ñ" 5Ô)Ø×#Ñ# GÖ,ñ *Pð  #.ˆD�ÑØ#/ˆD�Ñ çÙJWÓ$XÉ-¸w¤U§\¢\°'Ö%:É-Ñ$XˆD�Ñ!äØØ&Ú#Sô
ð 	
ùò7+ùò2 %Ys   Ã7F?Æ
Gc                óØ   <€ V ^8„  d   QhRS[ R,          RS[RS[RRRS[RS[R	S[R
S[RS[RS[S[ S[,          ,          R,          RS[S[ S[,          ,          R,          RS[R,          /# )r   r£   r/   Ú	do_resizer¤   rÔ   z7PILImageResampling | tvF.InterpolationMode | int | NonerÓ   Úrescale_factorrÒ   r   Údo_padÚ
image_meanNÚ	image_stdÚdisable_grouping)rV   r   r   r?   )r   r   s   "€r   r    r›   o  s©   ø€ ÷ 7/ñ 7/á�^Õ$ð7/ñ ð7/ñ ð	7/ð
 Lð7/ñ ð7/ñ ð7/ñ ð7/ñ ð7/ñ ð7/ñ ™D¡�KÕ'¨$Õ.ð7/ñ ™4¡�;Õ&¨Õ-ð7/ñ  �+ñ7/r"   c           	     ó€  € . p\        WR7      w  pp/ pVP                  4        F&  w  ppV'       d   V P                  VW4R7      pVVV&   K(  	  \        VV4      pV'       d¦   \        WR7      w  pp. . ppVP                  4        Fp  w  ppVP                  4        UUUu. uF  w  pw  ppVV8X  g   K  VNK  	  ppppV P	                  VVV4      w  ppVP                  V4       VP                  V4       Kr  	  \        VV4      w  rV	'       dQ   \        WR7      w  ppVP                  4        UUu/ uF  w  ppVV P                  VV4      bK  	  ppp\        VV4      p\        WR7      w  pp/ pVP                  4        F  w  ppV P                  VWVWzV4      pVVV&   K!  	  \        VV4      pVV3# u upppi u uppi )z4Preprocesses the input images and masks if provided.)rô   )Úimager¤   rÔ   )	r   ÚitemsÚresizer	   r·   Úextendrd   rÄ   Úrescale_and_normalize)rŸ   r£   rï   r¤   rÔ   rÓ   rð   rÒ   r   rñ   rò   ró   rô   rš   r«   Úgrouped_imagesÚgrouped_images_indexÚresized_images_groupedr<   Ústacked_imagesrT   Úoriginal_idxÚ	img_shaper¬   Úoriginal_indicesÚsplit_patchesrU   Úpadded_groupedÚprocessed_images_groupedræ   s   &&&&&&&&&&&&&,                r   rÜ   ÚEomtImageProcessor._preprocesso  sö  € ð" ˆä/DÀVÔ/oÑ,ˆÐ,Ø!#ÐØ%3×%9Ñ%9Ö%;Ñ!ˆE�>ßØ!%§¡°>È Ó!`�Ø,:Ð" 5Ó)ñ &<ô  Ð 6Ð8LÓMˆçÜ3HÈÔ3sÑ0ˆNÐ0Ø%'¨�]ˆGØ)7×)=Ñ)=Ö)?Ñ%��~àEY×E_ÑE_ÔEaõ$ÙEaÑ%A \±>°I¸qÐenÐrwÑew—L�LÑEað !ò $ð *.×):Ñ):¸>È4ÐQaÓ)bÑ&�˜wØ—‘˜}Ô-Ø×$Ñ$ WÖ-ñ *@ô %@ÀÈÓ$WÑ!ˆFçÜ3HÈÔ3sÑ0ˆNÐ0àTb×ThÑThÔTjôÙTjÑ;P¸5À.��t—y‘y °Ó6Ò6ÑTjð ñ ô $ NÐ4HÓIˆFä/DÀVÔ/oÑ,ˆÐ,Ø#%Ð Ø%3×%9Ñ%9Ö%;Ñ!ˆE�>Ø!×7Ñ7Ø 
¸LÐV_óˆNð /=Ð$ UÓ+ñ	 &<ô
 *Ð*BÐDXÓYÐà Ð.Ð.ùô1$ùós   ÂF3
Â3F3
Ä1F:c                óÖ   <€ V ^8„  d   QhRS[ P                  RS[S[S[S[S[3,          ,          RS[S[S[S[3,          ,          RS[S[S[3,          RS[S[ P                  ,          /# )r   Úsegmentation_logitsr«   Útarget_sizesr¤   rJ   ©r7   rW   rV   rL   r   r1   rK   )r   r   s   "€r   r    r›   ¨  so   ø€ ÷ 7$ñ 7$á"Ÿ\™\ð7$ñ ™E¡#¡s©C -Õ0Õ1ð7$ñ ™5¡¡c �?Õ+ð	7$ñ
 ‘3™�8�nð7$ñ 
‰e�l‰lÕ	ñ7$r"   c                óî  € VP                   ^,          p. p. pV F…  p\        W„R,          VR,          4      w  ršVP                  \        P                  ! WYV
3VP
                  R7      4       VP                  \        P                  ! WYV
3VP
                  R7      4       K‡  	  \        V4       F´  w  pw  rÍpW<,          ^ ,          W<,          ^,          8”  dG   Wl,          RWÞ1R3;;,          W,          ,          uu&   W|,          RWÞ1R3;;,          ^,          uu&   Kp  Wl,          RRWÞ13;;,          W,          ,          uu&   W|,          RRWÞ13;;,          ^,          uu&   K¶  	  . p\        \        Wg4      4       Fu  w  pw  ppVVP                  ^R7      ,          p\        P                  P                  P                  VR	,          VV,          RRR7      ^ ,          pVP                  V4       Kw  	  V# )
aF  
Reconstructs full-size semantic segmentation logits from patch predictions.

Args:
    segmentation_logits (`torch.Tensor`):
        A tensor of shape `(num_patches, num_classes, patch_height, patch_width)` representing predicted logits
        for each image patch.
    patch_offsets (`list[tuple[int, int, int]]`):
        A list of tuples where each tuple contains:
        - `image_index` (int): Index of the original image this patch belongs to.
        - `start` (int): Start pixel index of the patch along the long dimension (height or width).
        - `end` (int): End pixel index of the patch along the long dimension.
    target_sizes (`list[tuple[int, int]]`):
        list of original (height, width) dimensions for each image before preprocessing.
    size (`dict[str, int]`):
        A size dict which was used to resize.
rN   rO   r5   r…   )ÚminÚbilinearF©r¤   r¼   Úalign_corners©N.)r<   r   rŠ   r7   r;   r6   r=   r_   Úclampr¾   r   Úinterpolate)rŸ   r  r«   r  r¤   Únum_classesÚaggregated_logitsÚpatch_countsÚ
image_sizerŽ   r�   Ú	patch_idxÚ	image_idxÚpatch_startÚ	patch_endÚreconstructed_logitsré   Ú	logit_sumÚcountÚaveraged_logitsÚresized_logitss   &&&&&                r   Úmerge_image_patchesÚ&EomtImageProcessor.merge_image_patches¨  sÒ  € ð0 *×/Ñ/°Õ2ˆØÐØˆã&ˆJÜ6°zÈÕCXÐZ^Ð_mÕZnÓo‰MˆFØ×$Ñ$¤U§[¢[°+ÀuÐ1MÐVi×VpÑVpÔ%qÔrØ×Ñ¤§¢¨[À%Ð,HÐQd×QkÑQkÔ lÖmñ 'ô ?HÈÖ>VÑ:ˆIÑ:˜	°	ØÕ& qÕ)¨LÕ,CÀAÕ,FÔFØ!Õ,¨Q°Ð0EÀqÐ-H×IÐM`ÕMkÕkÓIØÕ'¨¨;Ð+@À!Ð(C×DÈÕIÕDà!Õ,¨Q°°;Ð3HÐ-H×IÐM`ÕMkÕkÓIØÕ'¨¨1¨kÐ.CÐ(C×DÈÕIÕDñ ?Wð  "ÐÜ'0´Ð5FÓ1UÖ'VÑ#ˆCÑ#�)˜UØ'¨%¯+©+¸!¨+Ó*<Õ<ˆOÜ"ŸX™X×0Ñ0×<Ñ<Ø 	Õ*Ø! #Õ&ØØ#ð	 =ó ð
 õˆNð !×'Ñ'¨Ö7ñ (Wð $Ð#r"   c          	      ó¦   <€ V ^8„  d   QhRS[ P                  RS[S[S[S[3,          ,          RS[S[S[3,          RS[S[ P                  ,          /# )r   r  r  r¤   rJ   r	  )r   r   s   "€r   r    r›   á  sU   ø€ ÷ ñ á"Ÿ\™\ðñ ™5¡¡c �?Õ+ðñ ‘3™�8�nð	ñ
 
‰e�l‰lÕ	ñr"   c                ó.  € . p\        V4       Fƒ  w  rV\        WcR,          VR,          4      w  rxW,          RRV1RV13,          p	\        P                  P                  P                  V	R,          VRRR7      ^ ,          p
VP                  V
4       K…  	  V# )	zJRestores panoptic segmentation logits to their original image resolutions.rN   rO   r…   Nr  Fr  r  )r=   r   r7   r¾   r   r  rŠ   )rŸ   r  r  r¤   r  ré   Úoriginal_sizerP   rQ   Úcropped_logitsÚupsampled_logitss   &&&&       r   Úunpad_imageÚEomtImageProcessor.unpad_imageá  s¥   € ð ˆä"+¨LÖ"9ÑˆCÜ*DØ OÕ4°d¸>Õ6Jó+Ñ'ˆMð 1Õ5°a¸¸-¸ÈÈ,ÈÐ6VÕWˆNÜ$Ÿx™x×2Ñ2×>Ñ>Ø˜yÕ)°ÀJÐ^cð  ?ó  àõ Ðð ×!Ñ!Ð"2Ö3ñ #:ð Ðr"   c                óz   <€ V ^8„  d   QhRS[ S[S[S[3,          ,          RS[S[S[3,          R,          RS[RR/# )r   r  r¤   NÚreturn_segmentation_scoresrJ   zBlist[torch.Tensor] | list[SemanticSegmentationPostProcessorOutput])rV   rL   r   r1   rK   r   )r   r   s   "€r   r    r›   ö  sV   ø€ ÷ J%ñ J%ñ ™5¡¡c �?Õ+ðJ%ñ ‘3™�8�n˜tÕ#ð	J%ñ
 %)ðJ%ð 
NñJ%r"   c           
     óR  € Ve   TMV P                   pVP                  pVP                  pVP                  p\	        V4      p\
        P                  P                  P                  VVRR7      pVP                  RR7      RRR13,          p	VP                  4       p
\
        P                  ! RWš4      pV'       d   V P                  W·W#4      pM~. p\        \        V4      4       Fd  p\
        P                  P                  P                  W½,          P                  ^ R7      W-,          RRR7      pVP!                  V^ ,          4       Kf  	  V Uu. uF#  p\#        R	VP%                  ^ R7      R
V/R7      NK%  	  ppV'       g   V Uu. uF  pVP&                  NK  	  ppV# u upi u upi )a˜  
Converts the output of [`EomtForUniversalSegmentation`] into semantic segmentation maps.

Args:
    outputs ([`EomtForUniversalSegmentation`]):
        Raw outputs of the model.
    target_sizes (`list[tuple[int, int]]`):
        A list of tuples (`tuple[int, int]`) containing the target size (height, width) of each image in the
        batch.
    size (`dict[str, int]`, *optional*):
        The size to which the intermediate masks are interpolated. Defaults to `self.size`.
    return_segmentation_scores (`bool`, *optional*, defaults to `False`):
        Whether to return segmentation scores alongside the segmentation map. When `True`, each element of
        the returned list is a [`SemanticSegmentationPostProcessorOutput`] with fields `segmentation`
        (class IDs, shape `(height, width)`) and `segmentation_scores` (shape `(num_classes, height, width)`).

Returns:
    `list[torch.Tensor]` or `list[SemanticSegmentationPostProcessorOutput]`: When
    `return_segmentation_scores=False` (default), a list of length `batch_size` where each item is a
    segmentation map of shape `(height, width)` with class IDs. When `return_segmentation_scores=True`,
    a list of [`SemanticSegmentationPostProcessorOutput`] with fields `segmentation` (class IDs, shape
    `(height, width)`) and `segmentation_scores` (shape `(num_classes, height, width)`). In both cases,
    `(height, width)` corresponds to the target size.
Nr  ©r¤   r¼   r3   .zbqc, bqhw -> bchwFr  r�   Úsegmentation_scores)rÖ   éÿÿÿÿ)r¤   Úmasks_queries_logitsÚclass_queries_logitsr«   rR   r7   r¾   r   r  Úsoftmaxr†   Úeinsumr  rˆ   ÚlenÚ	unsqueezerŠ   r   r‡   r�   )rŸ   Úoutputsr  r¤   r)  r.  r/  r«   Úoutput_sizeÚmasks_classesÚmasks_probsr  Úoutput_logitsré   r  ÚlogitÚsemantic_segmentationr>   s   &&&&&             r   Ú"post_process_semantic_segmentationÚ5EomtImageProcessor.post_process_semantic_segmentationö  s©  € ð> Ò'‰t¨T¯Y©Yˆà&×;Ñ;ÐØ&×;Ñ;ÐØ×-Ñ-ˆä% dÓ+ˆÜ$Ÿx™x×2Ñ2×>Ñ>Ø ØØð  ?ó  
Ðð -×4Ñ4¸Ð4Ó<¸SÀ#À2À#¸XÕFˆØ*×2Ñ2Ó4ˆä#ŸlšlÐ+>ÀÓ[ÐçØ ×4Ñ4Ð5HÐYeÓl‰MàˆMäœSÐ!4Ó5Ö6�Ü!&§¡×!4Ñ!4×!@Ñ!@Ø'Õ,×6Ñ6¸1Ð6Ó=Ø%Õ*Ø#Ø"'ð	 "Aó "�ð ×$Ñ$ ^°AÕ%6Ö7ñ 7ñ 'ó	!
ñ '�ô 4Ø$ e§l¡l°q lÓ&9Ð;PÐRWÐX÷ñ 'ð	 	ð !
÷ *ÙCXÓ$YÑCX¸4 T×%6Ô%6ÑCXÐ!Ð$Yà$Ð$ùò!
ùò %Zs   Å)FÆF$c                ó¦   <€ V ^8„  d   QhRS[ S[S[S[3,          ,          RS[RS[RS[RS[ S[,          R,          RS[S[S[3,          R,          /# )r   r  Ú	thresholdrs   rt   r�   Nr¤   ©rV   rL   r   r?   r1   rK   )r   r   s   "€r   r    r›   B  sl   ø€ ÷ 7ñ 7ñ ™5¡¡c �?Õ+ð7ñ ð	7ñ
 ð7ñ &+ð7ñ ™C•y 4Õ'ð7ñ ‘3™�8�n˜tÕ#ñ7r"   c                óR  € Ve   TMV P                   pVP                  pVP                  p	V	P                  ^ ,          p
V	P                  R	,          ^,
          p\	        V4      p\
        P                  P                  P                  VVRR7      pV P                  W‚V4      pV	P                  R	R7      P                  R	4      w  rï. p\        V
4       FÒ  p\        VV,          VV,          VV,          W;4      w  pppVP                  ^ ,          ^ 8:  dZ   Ve
   VV,          MVP                  R,          w  pp\
        P                  ! VV34      ^,
          pVP                  RVR. /4       K›  \!        TTTTTTVe
   VV,          MRR7      w  ppVP                  RVRV/4       KÔ  	  V# )
zIPost-processes model outputs into final panoptic segmentation prediction.Nr  r+  r3   :é   NNr�   Úsegments_info)rq   r‹   rŒ   r�   rs   rt   r   r-  )r¤   r.  r/  r<   rR   r7   r¾   r   r  r&  r0  r§   rˆ   rm   r;   rŠ   r–   )rŸ   r4  r  r>  rs   rt   r�   r¤   r.  r/  Ú
batch_sizerk   r5  Úmask_probs_batchÚpred_scores_batchÚpred_labels_batchÚresultsrB   rq   r‹   rŒ   rŽ   r�   r�   r‘   s   &&&&&&&&                 r   Ú"post_process_panoptic_segmentationÚ5EomtImageProcessor.post_process_panoptic_segmentationB  s±  € ð Ò'‰t¨T¯Y©Yˆà&×;Ñ;ÐØ&×;Ñ;Ðà)×/Ñ/°Õ2ˆ
Ø)×/Ñ/°Õ3°aÕ7ˆ
ä% dÓ+ˆÜ$Ÿx™x×2Ñ2×>Ñ>Ø ØØð  ?ó  
Ðð  ×+Ñ+Ð,@ÐPTÓUÐØ/C×/KÑ/KÐPRÐ/KÓ/S×/WÑ/WÐXZÓ/[Ñ,Ðàˆä�zÖ"ˆAÜ3LØ  Õ#Ð%6°qÕ%9Ð;LÈQÕ;OÐQZó4Ñ0ˆJ˜ [ð
 ×Ñ Õ" aÔ'Ø3?Ò3K ¨Q¦ÐQ[×QaÑQaÐbdÕQe‘�˜Ü$Ÿ{š{¨F°E¨?Ó;¸aÕ?�Ø—‘ °¸oÈrÐRÔSÙä%5Ø%Ø'Ø'Ø+Ø-Ø,GØ/;Ò/G˜L¨žOÈTô&Ñ"ˆL˜(ð �N‰N˜N¨L¸/È8ÐTÖUñ- #ð. ˆr"   c                óv   <€ V ^8„  d   QhRS[ S[S[S[3,          ,          RS[RS[S[S[3,          R,          /# )r   r  r>  r¤   Nr?  )r   r   s   "€r   r    r›   |  sE   ø€ ÷ ?ñ ?ñ ™5¡¡c �?Õ+ð?ñ ð	?ñ
 ‘3™�8�n˜tÕ#ñ?r"   c                ó  € Ve   TMV P                   pVP                  pVP                  p\        V4      p\        P
                  P                  P                  VVRR7      pV P                  WRV4      pVP                  p	VP                  ^ ,          p
VP                  R,          p. p\        V
4       EFÏ  pW�,          pWm,          pVP                  RR7      RRR13,          P                  R4      w  ppV^ 8„  P                  4       pVP                  4       P!                  ^4      VP!                  ^4      ,          P#                  ^4      VP!                  ^4      P#                  ^4      R,           ,          pVV,          p\        P$                  ! W-,          V	R7      ^,
          p. . pp^ p\        V4       F±  pVV,          P'                  4       p\        P(                  ! VV,          ^ 8H  4      '       d   KB  VV8¼  g   KK  VVVV,          ^8H  &   VP+                  RVR	VV,          P'                  4       R
\-        V^4      /4       V^,          pVP+                  VV,          4       K³  	  VP+                  RVRV/4       EKÒ  	  V# )zDPost-processes model outputs into Instance Segmentation Predictions.Nr  r+  r3   .g�íµ ÷Æ°>r5   r‚   rƒ   r„   r�   rB  éþÿÿÿr-  )r¤   r.  r/  rR   r7   r¾   r   r  r&  r6   r<   rˆ   r0  r§   r?   r†   Úflattenro   r;   r>   ÚallrŠ   r‰   )rŸ   r4  r  r>  r¤   r.  r/  r5  rD  r6   rC  Únum_queriesrG  rB   Ú	mask_predÚ
mask_classri   Úpred_classesÚ
pred_masksÚmask_scoresr‹   r�   Úinstance_mapsr‘   r’   Újr„   s   &&&&&                      r   Ú"post_process_instance_segmentationÚ5EomtImageProcessor.post_process_instance_segmentation{  s[  € ð Ò'‰t¨T¯Y©Yˆà&×;Ñ;ÐØ&×;Ñ;Ðä% dÓ+ˆÜ$Ÿx™x×2Ñ2×>Ñ>Ø ØØð  ?ó  
Ðð  ×+Ñ+Ð,@ÐPTÓUÐà%×,Ñ,ˆØ)×/Ñ/°Õ2ˆ
Ø*×0Ñ0°Õ4ˆàˆä�z×"ˆAØ(Õ+ˆIØ-Õ0ˆJð $.×#5Ñ#5¸"Ð#5Ó#=¸cÀ3ÀBÀ3¸hÕ#G×#KÑ#KÈBÓ#OÑ ˆF�LØ# a™-×.Ñ.Ó0ˆJð %×,Ñ,Ó.×6Ñ6°qÓ9¸J×<NÑ<NÈqÓ<QÕQ×VÑVÐWXÓYØ×"Ñ" 1Ó%×)Ñ)¨!Ó,¨tÕ3õˆKð ! ;Õ.ˆKä Ÿ;š; |¥¸vÔFÈÕJˆLà&(¨"˜8ˆMØ!"ÐÜ˜;Ö'�Ø# A�×+Ñ+Ó-�ä—y’y ¨A¥°!Ñ!3×4Ô4¸À)Ö9KØ7I�L ¨A¥°!Ñ!3Ñ4Ø—O‘Oà Ð"4Ø&¨°Q­×(<Ñ(<Ó(>Ø#¤U¨5°!£_ðôð '¨!Õ+Ð&Ø!×(Ñ(¨°A­Ö7ñ (ð �N‰N˜N¨L¸/È8ÐT×UñC #ðD ˆr"   r#   ©NN)N)NF)çš™™™™™é?ç      à?rZ  NN)rZ  N)%r$   r%   r&   r'   r   Úvalid_kwargsr   ÚBILINEARrÔ   r
   rò   r   ró   r¤   Údefault_to_squarerï   rÓ   rÒ   r   rñ   r   rž   r·   rÄ   r   rÉ   rì   rÜ   r  r&  r;  rH  r   rW  r*   r+   Ú__classcell__)r    r   s   @@r   r˜   r˜   Õ   sñ   ù‡ € à+€LØ!×*Ñ*€HØ&€JØ$€IØ˜S .°#Ð6€DØÐØ€IØ€JØ€LØ€NØ€FØ€L÷#ó #÷&ð &÷8ð ð ÷cô có ðc÷L
ò L
÷\7/ð 7/÷r7$ð 7$÷rð ÷*J%ò J%÷X7ò 7ñr %Ó&÷?ñ ?ó '÷?ð ?r"   r˜   rY  )r[  rZ  )r[  rZ  N))r(   r¨   Útypingr   r7   Útorchvision.transforms.v2r   ÚtvFÚimage_processing_backendsr   Úimage_processing_outputsr   Úimage_processing_utilsr   Úimage_transformsr   r   r	   Úimage_utilsr
   r   r   r   r   r   Úprocessing_utilsr   r   Úutilsr   r   r   r   rG   rR   rd   rm   r}   r–   r˜   Ú__all__r#   r"   r   Ú<module>rk     s•   ðñ &ã Ý ã Ý 7å ;Ý OÝ 2ß aÑ a÷÷ ÷ 5÷ñ ô˜|°5õ ÷ /õ>'õ	6ò<ô8#÷,3"ðl ôeÐ+ó eó ðeðP  Ð
 ‚r"   