+
    œ°³j¦)  ã                   óô   € R t ^ RIHt ^ RIt^ RIHu Ht ^ RIHt	 ^RI
Ht ^RIHt ^RIHt ^RI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]4      4       t"R.t#R# )zImage processor class for BEiT.)ÚUnionN)Ú
functional)ÚTorchvisionBackend)Ú'SemanticSegmentationPostProcessorOutput)ÚBatchFeature)Úgroup_images_by_shapeÚreorder_images)ÚIMAGENET_STANDARD_MEANÚIMAGENET_STANDARD_STDÚChannelDimensionÚ
ImageInputÚPILImageResamplingÚSizeDict)ÚImagesKwargsÚUnpack)Ú
TensorTypeÚauto_docstringÚis_torch_availablec                   ó0   a € ] tR t^&t o RtV 3R ltRtV tR# )ÚBeitImageProcessorKwargsaW  
do_reduce_labels (`bool`, *optional*, defaults to `self.do_reduce_labels`):
    Whether or not to reduce all label values of segmentation maps by 1. Usually used for datasets where 0
    is used for background, and background itself is not included in all classes of a dataset (e.g.
    ADE20k). The background label will be replaced by 255.
c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # )é   Údo_reduce_labels)Úbool)ÚformatÚ__classdict__s   "€Úo/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/beit/image_processing_beit.pyÚ__annotate__Ú%BeitImageProcessorKwargs.__annotate__&   s   ø‡ ‚ ñ Ñò ó    © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__)r   s   @r   r   r   &   s   ø‡ € ñ÷ ƒ r   r   F)Útotalc                   ó  a a€ ] tR t^1t oRt]t]P                  t	]
t]tR^àR^à/tRtR^àR^à/tRtRtRtRtRtV3R lV 3R l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RV3R lR lltRV3R lR lltRtVtV ;t# )ÚBeitImageProcessorz/PIL backend for BEiT with reduce_label support.ÚheightÚwidthTFc                ó0   <€ V ^8„  d   QhRS[ S[,          /# )r   Úkwargs)r   r   )r   r   s   "€r   r   ÚBeitImageProcessor.__annotate__C   s   ø€ ÷ #ñ #¡Ñ(@Õ!Añ #r   c                ó(   <€ \         SV `  ! R/ VB  R # )Nr    )ÚsuperÚ__init__)Úselfr/   Ú	__class__s   &,€r   r3   ÚBeitImageProcessor.__init__C   s   ø€ Ü‰ÒÑ"˜6Ô"r   c                óP   <€ V ^8„  d   QhRS[ RS[ R,          RS[S[,          RS[/# )r   ÚimagesÚsegmentation_mapsNr/   Úreturn)r   r   r   r   )r   r   s   "€r   r   r0   G   sD   ø€ ÷ 
Gñ 
Gáð
Gñ &¨Õ,ð
Gñ Ñ1Õ2ð	
Gñ
 
ñ
Gr   c                ó&   <€ \         SV `  ! W3/ VB # )zX
segmentation_maps (`ImageInput`, *optional*):
    The segmentation maps to preprocess.
)r2   Ú
preprocess)r4   r8   r9   r/   r5   s   &&&,€r   r<   ÚBeitImageProcessor.preprocessF   s   ø€ ô ‰wÒ! &ÑF¸vÑFÐFr   c                ó’   <€ V ^8„  d   QhRS[ RS[ R,          RS[RS[RS[S[,          R,          RS[S[R3,          R,          R	S[/# )
r   r8   r9   NÚdo_convert_rgbÚinput_data_formatÚreturn_tensorsÚdeviceztorch.devicer:   )r   r   r   Ústrr   r   r   )r   r   s   "€r   r   r0   S   sx   ø€ ÷ *Cñ *Cáð*Cñ &¨Õ,ð*Cñ ð	*Cñ
 ,ð*Cñ ™jÕ(¨4Õ/ð*Cñ ‘c˜>Ð)Õ*¨TÕ1ð*Cñ 
ñ*Cr   c                óæ  € V P                  WWFR7      pVP                  4       pRVR&   / p	V P                  ! V3/ VB V	R&   Vež   V P                  V^R\        P                  R7      p
VP                  4       pVP                  RRRR/4       V P                  ! RRV
/VB p
V
 Uu. uF1  pVP                  ^ 4      P                  \        P                  4      NK3  	  p
pW©R	&   \        W•R
7      # u upi )z"Handle extra inputs beyond images.)r8   r?   r@   rB   Fr   Úpixel_values)r8   Úexpected_ndimsr?   r@   Údo_normalizeÚ
do_rescaler8   Úlabels)ÚdataÚtensor_typer    )Ú_prepare_image_like_inputsÚcopyÚ_preprocessr   ÚFIRSTÚupdateÚsqueezeÚtoÚtorchÚint64r   )r4   r8   r9   r?   r@   rA   rB   r/   Úimages_kwargsrJ   Úprocessed_segmentation_mapsÚsegmentation_maps_kwargsÚprocessed_segmentation_maps   &&&&&&&,     r   Ú_preprocess_image_like_inputsÚ0BeitImageProcessor._preprocess_image_like_inputsS   s%  € ð ×0Ñ0ØÐL]ð 1ó 
ˆð Ÿ™›ˆØ,1ˆÐ(Ñ)ØˆØ#×/Ò/°ÑH¸-ÑHˆˆ^Ñð Ò(Ø*.×*IÑ*IØ(Ø Ø$Ü"2×"8Ñ"8ð	 +Jó +Ð'ð (.§{¡{£}Ð$Ø$×+Ñ+¨^¸UÀLÐRWÐ,XÔYØ*.×*:Ò*:ñ +Ø2ð+Ø6Nñ+Ð'ñ 3Nó+á2MÐ.ð +×2Ñ2°1Ó5×8Ñ8¼¿¹ÖEÙ2Mð (ð +ð 9�‰Nä ÔBÐBùò+s   Â%7C.c                óB   <€ V ^8„  d   QhRS[ R,          RS[ R,          /# )r   rI   útorch.Tensorr:   )Úlist)r   r   s   "€r   r   r0      s%   ø€ ÷ ñ ¡4¨Õ#7ð ¹DÀÕ<Pñ r   c           
     ó~  € \        \        V4      4       F¤  pW,          p\        P                  ! V^ 8H  \        P                  ! ^ÿVP
                  VP                  R7      V4      pV^,
          p\        P                  ! V^þ8H  \        P                  ! ^ÿVP
                  VP                  R7      V4      pW1V&   K¦  	  V# )z/Reduce label values by 1, replacing 0 with 255.)ÚdtyperB   )ÚrangeÚlenrS   ÚwhereÚtensorr_   rB   )r4   rI   ÚidxÚlabels   &&  r   Úreduce_labelÚBeitImageProcessor.reduce_label   s‘   € äœ˜V›Ö%ˆCØ•KˆEÜ—K’K ¨¡
¬E¯LªL¸ÀEÇKÁKÐX]×XdÑXdÔ,eÐglÓmˆEØ˜A•IˆEÜ—K’K ¨¡¬e¯lªl¸3ÀeÇkÁkÐZ_×ZfÑZfÔ.gÐinÓoˆEØ�3‹Kñ &ð ˆr   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S[RS[ R,          /# )r   r8   r\   Ú	do_resizeÚsizeÚresamplez7PILImageResampling | tvF.InterpolationMode | int | NoneÚdo_center_cropÚ	crop_sizerH   Úrescale_factorrG   Ú
image_meanNÚ	image_stdÚdisable_groupingr   r:   )r]   r   r   Úfloat)r   r   s   "€r   r   r0   ‰   sÂ   ø€ ÷ , ñ , á�^Õ$ð, ñ ð, ñ ð	, ð
 Lð, ñ ð, ñ ð, ñ ð, ñ ð, ñ ð, ñ ™D¡�KÕ'¨$Õ.ð, ñ ™4¡�;Õ&¨Õ-ð, ñ  �+ð, ñ ð, ñ  
ˆnÕ	ñ!, r   c           	     óº  € V'       d   V P                  V4      p\        WR7      w  pp/ pVP                  4        F%  w  ppV'       d   V P                  VW44      pVVV&   K'  	  \	        VV4      p\        VVR7      w  pp/ pVP                  4        F9  w  ppV'       d   V P                  VV4      pV P                  VWxWšV4      pVVV&   K;  	  \	        VV4      pV# )zCustom preprocessing for BEiT.)rq   )rf   r   ÚitemsÚresizer   Úcenter_cropÚrescale_and_normalize)r4   r8   ri   rj   rk   rl   rm   rH   rn   rG   ro   rp   rq   r   r/   Úgrouped_imagesÚgrouped_images_indexÚresized_images_groupedÚshapeÚstacked_imagesÚresized_imagesÚprocessed_images_groupedÚprocessed_imagess   &&&&&&&&&&&&&&,        r   rN   ÚBeitImageProcessor._preprocess‰   sý   € ÷$ Ø×&Ñ& vÓ.ˆFô 0EÀVÔ/oÑ,ˆÐ,Ø!#ÐØ%3×%9Ñ%9Ö%;Ñ!ˆE�>ßØ!%§¡¨^¸TÓ!L�Ø,:Ð" 5Ó)ñ &<ô (Ð(>Ð@TÓUˆô 0EÀ^ÐfvÔ/wÑ,ˆÐ,Ø#%Ð Ø%3×%9Ñ%9Ö%;Ñ!ˆE�>ßØ!%×!1Ñ!1°.À)Ó!L�à!×7Ñ7Ø 
¸LÐV_óˆNð /=Ð$ UÓ+ñ &<ô *Ð*BÐDXÓYÐàÐr   c                óH   <€ V ^8„  d   QhRS[ S[,          R,          RS[RR/# )r   Útarget_sizesNÚreturn_segmentation_scoresr:   zBlist[torch.Tensor] | list[SemanticSegmentationPostProcessorOutput])r]   Útupler   )r   r   s   "€r   r   r0   ·   s3   ø€ ÷ @%ñ @%Ù%)©%¥[°4Õ%7ð@%Ù\`ð@%à	Mñ@%r   c           
     ó0  € \        4       '       g   \        R4      hVP                  pVeè   \        V4      \        V4      8w  d   \	        R4      h\        V\        P                  4      '       d   VP                  4       p. p\        \        V4      4       Fx  p\        P                  ! WF,          P                  ^ R7      W&,          RRR7      pV^ ,          P                  ^ R7      pVP                  \        RVRV^ ,          /R	7      4       Kz  	  MWVP                  ^R7      p	\        VP                   ^ ,          4       U
u. uF  p
\        RWš,          RWJ,          /R	7      NK!  	  pp
V'       g   V Uu. uF  q»P"                  NK  	  ppV# u up
i u upi )
ag  
Converts the output of [`BeitForSemanticSegmentation`] into semantic segmentation maps.

Args:
    outputs ([`BeitForSemanticSegmentation`]):
        Raw outputs of the model.
    target_sizes (`list[Tuple]` of length `batch_size`, *optional*):
        List of tuples corresponding to the requested final size (height, width) of each prediction. If unset,
        predictions will not be resized.
    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 (if `target_sizes` is specified).
z:PyTorch is required for post_process_semantic_segmentationzTMake sure that you pass in as many target sizes as the batch dimension of the logits)ÚdimÚbilinearF)rj   ÚmodeÚalign_cornersÚsegmentationÚsegmentation_scores)rJ   )r   ÚImportErrorÚlogitsra   Ú
ValueErrorÚ
isinstancerS   ÚTensorÚnumpyr`   ÚFÚinterpolateÚ	unsqueezeÚargmaxÚappendr   r{   rŠ   )r4   Úoutputsr‚   rƒ   r�   Úsemantic_segmentationrd   Úresized_logitsÚsemantic_mapÚseg_mapsÚiÚitems   &&&&        r   Ú"post_process_semantic_segmentationÚ5BeitImageProcessor.post_process_semantic_segmentation·   s€  € ô2 "×#Ò#ÜÐZÓ[Ð[à—‘ˆð Ò#Ü�6‹{œc ,Ó/Ô/Ü Øjóð ô ˜,¬¯©×5Ò5Ø+×1Ñ1Ó3�à$&Ð!äœS ›[Ö)�Ü!"§¢Ø•K×)Ñ)¨aÐ)Ó0°|Õ7HÈzÐinô"�ð  .¨aÕ0×7Ñ7¸AÐ7Ó>�Ø%×,Ñ,Ü;Ø,¨lÐ<QÐSaÐbcÕSdÐeôöò *ð —}‘}¨�}Ó+ˆHô
 ˜vŸ|™|¨A�Ô/ó	%ñ 0�Aô 8Ø(¨(­+Ð7LÈfÍiÐX÷ñ 0ð	 "ð %÷ *ÙCXÓ$YÑCX¸4×%6Ô%6ÑCXÐ!Ð$Yà$Ð$ùò%ùò %Zs   Å%FÅ6Fr    )N)F)NF) r!   r"   r#   r$   r%   r   Úvalid_kwargsr   ÚBICUBICrk   r	   ro   r
   rp   rj   Údefault_to_squarerm   ri   rl   rH   rG   r   r3   r   r<   rY   rf   rN   rž   r'   r(   Ú__classcell__)r5   r   s   @@r   r+   r+   1   s¸   ù‡ € á9à+€Là!×)Ñ)€HØ'€JØ%€IØ�c˜7 CÐ(€DØÐØ˜3 ¨Ð-€IØ€IØ€NØ€JØ€LØÐ÷#ó #ð ÷
Gô 
Gó ð
G÷*Cò *C÷Xð ÷, ò , ÷\@%÷ @%ò @%r   r+   )$r%   Útypingr   rS   Útorch.nn.functionalÚnnr   r’   Útorchvision.transforms.v2ÚtvFÚimage_processing_backendsr   Úimage_processing_outputsr   Úimage_processing_utilsr   Úimage_transformsr   r   Úimage_utilsr	   r
   r   r   r   r   Úprocessing_utilsr   r   Úutilsr   r   r   r   r+   Ú__all__r    r   r   Ú<module>r±      sr   ðñ &å ã ß Ð Ý 7å ;Ý OÝ 2ß E÷÷ ÷ 5ß CÑ Cô˜|°5õ ð ôE%Ð+ó E%ó ðE%ðP  Ð
 ‚r   