+
    œ°³jÁ³  ã                   óŠ  € ^ RI t ^ RIt^ RIHt ^ RIH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 ^R
IHtHt ^RIHtHt ^RIHt ^RIHtHtHtHt ^RI H!t!H"t" ^RI#H$t$ ^RI%H&t&H't'H(t( ]] ! R R]4      4       4       t)]] ! R R]4      4       4       t*]] ! R R]4      4       4       t+ ! R R]	PX                  4      t- ! R R]	PX                  4      t.R=R R llt/ ! R R]	PX                  4      t0 ! R R ]	PX                  4      t1 ! R! R"]4      t2 ! R# R$]4      t3] ! R% R&]4      4       t4 ! R' R(]	PX                  4      t5 ! R) R*]44      t6]! R+R,7       ! R- R.]44      4       t7]! R/R,7       ! R0 R1]44      4       t8R2 R3 lt9R4 R5 lt:R6 R7 lt;] ! R8 R9]44      4       t<]! R:R,7       ! R; R<]44      4       t=. R>Ot>R# )?é    N)ÚCallable)Ú	dataclass)ÚAny)Únn)Úinitialization)ÚACT2FN)Úcreate_causal_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithPooling)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚModelOutputÚTransformersKwargsÚauto_docstringÚ	torch_int)Úcan_return_tupleÚmerge_with_config_defaults)Úcapture_outputs)ÚCLIPSegConfigÚCLIPSegTextConfigÚCLIPSegVisionConfigc                   ó^   a € ] tR t^+t o RtRtRtRtRtRt	Rt
RtV 3R lR ltV 3R ltRtV tR# )ÚCLIPSegOutputaq  
loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `return_loss` is `True`):
    Contrastive loss for image-text similarity.
logits_per_image (`torch.FloatTensor` of shape `(image_batch_size, text_batch_size)`):
    The scaled dot product scores between `image_embeds` and `text_embeds`. This represents the image-text
    similarity scores.
logits_per_text (`torch.FloatTensor` of shape `(text_batch_size, image_batch_size)`):
    The scaled dot product scores between `text_embeds` and `image_embeds`. This represents the text-image
    similarity scores.
text_embeds (`torch.FloatTensor` of shape `(batch_size, output_dim`):
    The text embeddings obtained by applying the projection layer to the pooled output of [`CLIPSegTextModel`].
image_embeds (`torch.FloatTensor` of shape `(batch_size, output_dim`):
    The image embeddings obtained by applying the projection layer to the pooled output of [`CLIPSegVisionModel`].
text_model_output (`BaseModelOutputWithPooling`):
    The output of the [`CLIPSegTextModel`].
vision_model_output (`BaseModelOutputWithPooling`):
    The output of the [`CLIPSegVisionModel`].
Nc                ó0   <€ V ^8„  d   QhRS[ S[,          /# ©é   Úreturn©Útupler   )ÚformatÚ__classdict__s   "€Úm/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/clipseg/modeling_clipseg.pyÚ__annotate__ÚCLIPSegOutput.__annotate__I   ó   ø€ ÷ _ñ _™%¡�*ñ _ó    c                ó’   € \         ;QJ d"    . R  V P                  4        4       F  NK  	  5# ! R  V P                  4        4       4      # )c              3   ór   "  € T F-  p\        V\        4      '       d   VP                  4       MTx € K/  	  R # 5i©N©Ú
isinstancer   Úto_tuple©Ú.0Úvs   & r$   Ú	<genexpr>Ú)CLIPSegOutput.to_tuple.<locals>.<genexpr>J   ó)   é € Ð^ÑP]È1¤Z°´;×%?Ò%?�Q—Z‘Z”\ÀQÔFÓP]ùó   ‚57©r!   Úvalues©Úselfs   &r$   r.   ÚCLIPSegOutput.to_tupleI   ó8   € ßŒuÑ^ÐPT×P[ÑP[ÔP]Ó^�uÐ^ˆuÑ^ÐPT×P[ÑP[ÔP]Ó^Ó^Ð^r(   c                ó  <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[;R&   S[;R&   # )	r   NÚlossÚlogits_per_imageÚlogits_per_textÚtext_embedsÚimage_embedsÚtext_model_outputÚvision_model_output)ÚtorchÚFloatTensorr   )r"   r#   s   "€r$   r%   r&   +   s—   ø‡ ‚ ñ, ×
Ñ
˜dÕ
"Ñ)ñ- ñ. ×'Ñ'¨$Õ.Ñ5ñ/ ñ0 ×&Ñ&¨Õ-Ñ4ñ1 ñ2 ×"Ñ" TÕ)Ñ0ñ3 ñ4 ×#Ñ# dÕ*Ñ1ñ5 ñ6 2Ñ8ñ7 ñ8 4Ñ:ò9 r(   © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r=   r>   r?   r@   rA   rB   rC   r.   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r#   s   @r$   r   r   +   sE   ø‡ € ñð& &*€DØ15ÐØ04€OØ,0€KØ-1€LØ48ÐØ6:Ð÷_ð _÷= ƒ r(   r   c                   ó<   a € ] tR t^Mt o RtRtRtRtV 3R ltRt	V t
R# )ÚCLIPSegDecoderOutputa}  
logits (`torch.FloatTensor` of shape `(batch_size, height, width)`):
    Classification scores for each pixel.
hidden_states (`tuple(torch.FloatTensor)`, *optional*,):
    Hidden-states of the model at the output of each layer plus the optional initial embedding outputs.

    Returned when `output_hidden_states=True` is passed or when `config.output_hidden_states=True`
attentions (`tuple(torch.FloatTensor)`, *optional*):
    Attentions weights after the attention softmax, used to compute the weighted average in the self-attention
    heads. Returned when `output_attentions=True` is passed or when `config.output_attentions=True`
Nc                óÌ   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[S[ P                  R3,          R,          ;R&   S[S[ P                  R3,          R,          ;R&   # )r   NÚlogits.Úhidden_statesÚ
attentions)rD   rE   r!   )r"   r#   s   "€r$   r%   Ú!CLIPSegDecoderOutput.__annotate__M   sa   ø‡ ‚ ñ ×Ñ Õ$Ñ+ñ ñ  ™×*Ñ*¨CÐ/Õ0°4Õ7Ñ>ñ! ñ" ‘e×'Ñ'¨Ð,Õ-°Õ4Ñ;ò# r(   rF   )rG   rH   rI   rJ   rK   rS   rT   rU   rL   rM   rN   rO   s   @r$   rQ   rQ   M   s"   ø‡ € ñ
ð (,€FØ:>€MØ7;€J÷# ƒ r(   rQ   c                   óZ   a € ] tR t^at o RtRtRtRtRtRt	Rt
V 3R lR ltV 3R ltRtV tR# )ÚCLIPSegImageSegmentationOutputa²  
loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `labels` is provided):
    Binary cross entropy loss for segmentation.
logits (`torch.FloatTensor` of shape `(batch_size, height, width)`):
    Classification scores for each pixel.
conditional_embeddings (`torch.FloatTensor` of shape `(batch_size, projection_dim)`):
    Conditional embeddings used for segmentation.
pooled_output (`torch.FloatTensor` of shape `(batch_size, embed_dim)`):
    Pooled output of the [`CLIPSegVisionModel`].
vision_model_output (`BaseModelOutputWithPooling`):
    The output of the [`CLIPSegVisionModel`].
decoder_output (`CLIPSegDecoderOutput`):
    The output of the [`CLIPSegDecoder`].
Nc                ó0   <€ V ^8„  d   QhRS[ S[,          /# r   r    )r"   r#   s   "€r$   r%   Ú+CLIPSegImageSegmentationOutput.__annotate__z   r'   r(   c                ó’   € \         ;QJ d"    . R  V P                  4        4       F  NK  	  5# ! R  V P                  4        4       4      # )c              3   ór   "  € T F-  p\        V\        4      '       d   VP                  4       MTx € K/  	  R # 5ir+   r,   r/   s   & r$   r2   Ú:CLIPSegImageSegmentationOutput.to_tuple.<locals>.<genexpr>{   r4   r5   r6   r8   s   &r$   r.   Ú'CLIPSegImageSegmentationOutput.to_tuplez   r;   r(   c                óê   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[;R&   S[;R&   # )r   Nr=   rS   Úconditional_embeddingsÚpooled_outputrC   Údecoder_output)rD   rE   r   rQ   )r"   r#   s   "€r$   r%   rZ   a   s   ø‡ ‚ ñ$ ×
Ñ
˜dÕ
"Ñ)ñ% ñ& ×Ñ Õ$Ñ+ñ' ñ( "×-Ñ-°Õ4Ñ;ñ) ñ* ×$Ñ$ tÕ+Ñ2ñ+ ñ, 4Ñ:ñ- ñ. )Ñ/ò/ r(   rF   )rG   rH   rI   rJ   rK   r=   rS   r`   ra   rC   rb   r.   rL   rM   rN   rO   s   @r$   rX   rX   a   s?   ø‡ € ñð &*€DØ'+€FØ7;ÐØ.2€MØ6:ÐØ+/€N÷_ð _÷3 ƒ r(   rX   c                   óf   a a€ ] tR t^~t oV3R lV 3R lltV3R lR ltRV3R lR lltRtVtV ;t	# )	ÚCLIPSegVisionEmbeddingsc                ó    <€ V ^8„  d   QhRS[ /# ©r   Úconfig©r   )r"   r#   s   "€r$   r%   Ú$CLIPSegVisionEmbeddings.__annotate__   s   ø€ ÷ jñ jÑ2ñ jr(   c                ó  <€ \         SV `  4        Wn        VP                  V n        VP
                  V n        VP                  V n        \        P                  ! \        P                  ! V P                  4      4      V n        \        P                  ! VP                  V P                  V P                  V P                  R R7      V n        V P
                  V P                  ,          ^,          V n        V P                  ^,           V n        \        P"                  ! V P                   V P                  4      V n        \        P&                  ! \        P(                  ! V P                   4      P+                  R4      R R7      V n        R# )F)Úin_channelsÚout_channelsÚkernel_sizeÚstrideÚbias©Ú
persistentN©é   éÿÿÿÿ)ÚsuperÚ__init__rg   Úhidden_sizeÚ	embed_dimÚ
image_sizeÚ
patch_sizer   Ú	ParameterrD   ÚrandnÚclass_embeddingÚConv2dÚnum_channelsÚpatch_embeddingÚnum_patchesÚnum_positionsÚ	EmbeddingÚposition_embeddingÚBufferÚarangeÚexpandÚposition_ids©r9   rg   Ú	__class__s   &&€r$   rv   Ú CLIPSegVisionEmbeddings.__init__   s  ø€ Ü‰ÑÔØŒØ×+Ñ+ˆŒØ ×+Ñ+ˆŒØ ×+Ñ+ˆŒä!Ÿ|š|¬E¯KªK¸¿¹Ó,GÓHˆÔä!ŸyšyØ×+Ñ+ØŸ™ØŸ™Ø—?‘?Øô 
ˆÔð !ŸO™O¨t¯©Õ>À1ÕDˆÔØ!×-Ñ-°Õ1ˆÔÜ"$§,¢,¨t×/AÑ/AÀ4Ç>Á>Ó"RˆÔÜŸIšI¤e§l¢l°4×3EÑ3EÓ&F×&MÑ&MÈgÓ&VÐchÔiˆÖr(   c                óZ   <€ V ^8„  d   QhRS[ P                  RS[RS[RS[ P                  /# )r   Ú
embeddingsÚheightÚwidthr   )rD   ÚTensorÚint)r"   r#   s   "€r$   r%   ri   •   s;   ø€ ÷ 'Dñ 'D±5·<±<ð 'DÉð 'DÑUXð 'DÑ]b×]iÑ]iñ 'Dr(   c                ó  € VP                   ^,          ^,
          pV P                  P                  P                  ^ 4      pVP                   ^,          ^,
          p\        P
                  P                  4       '       g(   WF8X  d"   W#8X  d   V P                  V P                  4      # VR,          pVR,          pVP                   R,          p	W P                  ,          p
W0P                  ,          p\        VR,          4      pVP                  ^WÌV	4      pVP                  ^ ^^^4      p\        P                  P                  VW«3RRR7      pVP                  ^ ^^^4      P                  ^RV	4      p\        P                   ! Wx3^R7      # )	aÐ  
This method allows to interpolate the pre-trained position encodings, to be able to use the model on higher resolution
images. This method is also adapted to support torch.jit tracing.

Adapted from:
- https://github.com/facebookresearch/dino/blob/de9ee3df6cf39fac952ab558447af1fa1365362a/vision_transformer.py#L174-L194, and
- https://github.com/facebookresearch/dinov2/blob/e1277af2ba9496fbadf7aec6eba56e8d882d1e35/dinov2/models/vision_transformer.py#L179-L211
ç      à?ÚbicubicF)ÚsizeÚmodeÚalign_corners©Údim)ºNNN:Nrs   N)rš   ºrs   NNrt   )Úshaper„   ÚweightÚ	unsqueezerD   ÚjitÚ
is_tracingrˆ   rz   r   ÚreshapeÚpermuter   Ú
functionalÚinterpolateÚviewÚcat)r9   r�   rŽ   r�   r�   r„   r‚   Úclass_pos_embedÚpatch_pos_embedr™   Ú
new_heightÚ	new_widthÚsqrt_num_positionss   &&&&         r$   Úinterpolate_pos_encodingÚ0CLIPSegVisionEmbeddings.interpolate_pos_encoding•   s[  € ð !×&Ñ& qÕ)¨AÕ-ˆØ!×4Ñ4×;Ñ;×EÑEÀaÓHÐØ*×0Ñ0°Õ3°aÕ7ˆô �y‰y×#Ñ#×%Ò%¨+Ô*FÈ6Ì?Ø×*Ñ*¨4×+<Ñ+<Ó=Ð=à,¨UÕ3ˆØ,¨UÕ3ˆà×Ñ˜rÕ"ˆàŸ™Õ.ˆ
ØŸ_™_Õ,ˆ	ä& }°cÕ'9Ó:ÐØ)×1Ñ1°!Ð5GÐ]`ÓaˆØ)×1Ñ1°!°Q¸¸1Ó=ˆäŸ-™-×3Ñ3ØØÐ(ØØð	 4ó 
ˆð *×1Ñ1°!°Q¸¸1Ó=×BÑBÀ1ÀbÈ#ÓNˆä�yŠy˜/Ð;ÀÔCÐCr(   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   Úpixel_valuesr   )rD   rE   r�   )r"   r#   s   "€r$   r%   ri   ¾   s(   ø€ ÷ ñ ¡E×$5Ñ$5ð ÑY^×YeÑYeñ r(   c                ó‚  € VP                   w  r4rVV'       gM   WPP                  8w  g   W`P                  8w  d-   \        R V RV RV P                   RV P                   R2	4      hV P                  P                  P
                  pV P                  VP                  VR7      4      pVP                  ^4      P                  ^^4      pV P                  P                  V^R4      p	\        P                  ! W˜.^R7      p
V'       d   W P                  W¥V4      ,           p
V
# W P                  V P                  4      ,           p
V
# )zInput image size (Ú*z) doesn't match model (z).)Údtyper˜   rt   )rœ   ry   Ú
ValueErrorr€   r�   r²   ÚtoÚflattenÚ	transposer}   r‡   rD   r¦   r¬   r„   rˆ   )r9   r¯   r¬   Ú
batch_sizeÚ_rŽ   r�   Útarget_dtypeÚpatch_embedsÚclass_embedsr�   s   &&&        r$   ÚforwardÚCLIPSegVisionEmbeddings.forward¾   s$  € Ø'3×'9Ñ'9Ñ$ˆ
�vß'¨V·±Ô-FÈ%×SbÑSbÔJbÜØ$ V H¨A¨e¨WÐ4KÈDÏOÉOÐK\Ð\]Ð^b×^mÑ^mÐ]nÐnpÐqóð ð ×+Ñ+×2Ñ2×8Ñ8ˆØ×+Ñ+¨L¯O©OÀ,¨OÓ,OÓPˆØ#×+Ñ+¨AÓ.×8Ñ8¸¸AÓ>ˆà×+Ñ+×2Ñ2°:¸qÀ"ÓEˆÜ—Y’Y Ð;ÀÔCˆ
ß#Ø#×&CÑ&CÀJÐX]Ó&^Õ^ˆJð Ðð $×&=Ñ&=¸d×>OÑ>OÓ&PÕPˆJØÐr(   )
r}   rg   rx   ry   r�   r‚   r€   rz   r„   rˆ   ©T)
rG   rH   rI   rJ   rv   r¬   r¼   rM   rN   Ú__classcell__©rŠ   r#   s   @@r$   rd   rd   ~   s-   ù‡ € ÷jó j÷,'Dð 'D÷R÷ ò r(   rd   c                   óT   a a€ ] tR t^Ñt oV3R lV 3R lltRV3R lR lltRtVtV ;t# )ÚCLIPSegTextEmbeddingsc                ó    <€ V ^8„  d   QhRS[ /# rf   ©r   )r"   r#   s   "€r$   r%   Ú"CLIPSegTextEmbeddings.__annotate__Ò   s   ø€ ÷ vñ vÑ0ñ vr(   c                óh  <€ \         SV `  4        VP                  p\        P                  ! VP
                  V4      V n        \        P                  ! VP                  V4      V n        \        P                  ! \        P                  ! VP                  4      P                  R4      RR7      V n        R# )rs   Frp   Nrr   )ru   rv   rw   r   rƒ   Ú
vocab_sizeÚtoken_embeddingÚmax_position_embeddingsr„   r…   rD   r†   r‡   rˆ   ©r9   rg   rx   rŠ   s   && €r$   rv   ÚCLIPSegTextEmbeddings.__init__Ò   s|   ø€ Ü‰ÑÔØ×&Ñ&ˆ	ä!Ÿ|š|¨F×,=Ñ,=¸yÓIˆÔÜ"$§,¢,¨v×/MÑ/MÈyÓ"YˆÔô ŸIšI¤e§l¢l°6×3QÑ3QÓ&R×&YÑ&YÐZaÓ&bÐotÔuˆÖr(   c                ó¬   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  /# )r   Ú	input_idsNrˆ   Úinputs_embedsr   )rD   Ú
LongTensorrE   r�   )r"   r#   s   "€r$   r%   rÅ   Ü   sX   ø€ ÷ ñ á×#Ñ# dÕ*ðñ ×&Ñ&¨Õ-ðñ ×(Ñ(¨4Õ/ð	ñ
 
�‰ñr(   c                óh  € Ve   VP                   R,          MVP                   R,          pV P                  P                  P                   ^ ,          pWE8”  d   \        RV RV 24      hVf   V P                  RR V13,          pVf   V P                  V4      pV P                  V4      pW6,           pV# )NzRSequence length must be less than max_position_embeddings (got `sequence length`: z and max_position_embeddings: rš   rt   éþÿÿÿ)rœ   r„   r�   r³   rˆ   rÈ   )r9   rÍ   rˆ   rÎ   Ú
seq_lengthÚmax_position_embeddingÚposition_embeddingsr�   s   &&&&    r$   r¼   ÚCLIPSegTextEmbeddings.forwardÜ   sÁ   € ð -6Ò,A�Y—_‘_ RÖ(À}×GZÑGZÐ[]ÕG^ˆ
Ø!%×!8Ñ!8×!?Ñ!?×!EÑ!EÀaÕ!HÐàÔ.ÜØdØ�,Ð<Ð=SÐ<TðVóð ð
 ÒØ×,Ñ,¨Q°°°¨^Õ<ˆLàÒ Ø ×0Ñ0°Ó;ˆMà"×5Ñ5°lÓCÐØ"Õ8ˆ
àÐr(   )r„   rˆ   rÈ   ©NNN©	rG   rH   rI   rJ   rv   r¼   rM   rN   r¿   rÀ   s   @@r$   rÂ   rÂ   Ñ   s    ù‡ € ÷vó v÷÷ ò r(   rÂ   c                ó   € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R\        P                  R\        P                  R,          R\        R\        R	\
        \        ,          /# )
r   ÚmoduleÚqueryÚkeyÚvalueÚattention_maskNÚscalingÚdropoutÚkwargs)r   ÚModulerD   r�   Úfloatr   r   )r"   s   "r$   r%   r%   ÷   sw   € ÷ %ñ %Ü�I‰Ið%ä�<‰<ð%ô 
�‰ð%ô �<‰<ð	%ô
 —L‘L 4Õ'ð%ô ð%ô ð%ô Ô'Õ(ñ%r(   c                 óÎ  € \         P                  ! WP                  RR4      4      V,          pVe	   W„,           p\        P                  P                  VR\         P                  R7      P                  VP                  4      p\        P                  P                  W†V P                  R7      p\         P                  ! Wƒ4      p	V	P                  ^^4      P                  4       p	W˜3# )rs   )r™   r²   )ÚpÚtrainingrt   rÑ   )rD   Úmatmulr¶   r   r£   ÚsoftmaxÚfloat32r´   r²   rß   rå   Ú
contiguous)
rÙ   rÚ   rÛ   rÜ   rÝ   rÞ   rß   rà   Úattn_weightsÚattn_outputs
   &&&&&&&,  r$   Úeager_attention_forwardrì   ÷   s°   € ô —<’< §}¡}°R¸Ó'<Ó=ÀÕG€LØÒ!Ø#Õ4ˆÜ—=‘=×(Ñ(¨¸2ÄUÇ]Á]Ð(ÓS×VÑVÐW\×WbÑWbÓc€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ó[€Lä—,’,˜|Ó3€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KØÐ$Ð$r(   c                   óX   a a€ ] tR tRt oRtV3R lV 3R lltRV3R lR lltRtVtV ;t	# )	ÚCLIPSegAttentioni  z=Multi-headed attention from 'Attention Is All You Need' paperc                ó0   <€ V ^8„  d   QhRS[ S[,          /# rf   ©r   r   )r"   r#   s   "€r$   r%   ÚCLIPSegAttention.__annotate__  s   ø€ ÷ Bñ BÑ2Ñ5FÕFñ Br(   c                ó˜  <€ \         SV `  4        Wn        VP                  V n        VP
                  V n        V P                  V P                  ,          V n        V P                  R,          V n        VP                  V n
        RV n        \        P                  ! V P                  V P                  4      V n        \        P                  ! V P                  V P                  4      V n        \        P                  ! V P                  V P                  4      V n        \        P                  ! V P                  V P                  4      V n        R# )r“   FNç      à¿)ru   rv   rg   rw   rx   Únum_attention_headsÚ	num_headsÚhead_dimÚscaleÚattention_dropoutrß   Ú	is_causalr   ÚLinearÚk_projÚv_projÚq_projÚout_projr‰   s   &&€r$   rv   ÚCLIPSegAttention.__init__  sÍ   ø€ Ü‰ÑÔØŒØ×+Ñ+ˆŒØ×3Ñ3ˆŒØŸ™¨$¯.©.Õ8ˆŒØ—]‘] DÕ(ˆŒ
Ø×/Ñ/ˆŒØˆŒä—i’i §¡°·±Ó?ˆŒÜ—i’i §¡°·±Ó?ˆŒÜ—i’i §¡°·±Ó?ˆŒÜŸ	š	 $§.¡.°$·.±.ÓAˆŽr(   c                óÄ   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          RS[S[ P                  S[ P                  R,          3,          /# )r   rT   rÝ   Nrà   r   )rD   r�   r   r   r!   )r"   r#   s   "€r$   r%   rñ     s]   ø€ ÷ %)ñ %)á—|‘|ð%)ñ Ÿ™ tÕ+ð%)ñ Ñ+Õ,ð	%)ñ
 
‰u�|‰|™UŸ\™\¨DÕ0Ð0Õ	1ñ%)r(   c                ó´  € VP                   RR p. VORNV P                  N5pV P                  V4      pV P                  V4      pV P	                  V4      pVP                  V4      P                  ^^4      pVP                  V4      P                  ^^4      pVP                  V4      P                  ^^4      p\        P                  ! V P                  P                  \        4      p	T	! V VVVV3RV P                  RV P                  '       g   RMV P                  /VB w  r«V
P                  ! . VORN5!  P!                  4       p
V P#                  V
4      p
W«3# )z#Input shape: Batch x Time x ChannelNrÞ   rß   ç        rt   )rœ   rö   rý   rû   rü   r¥   r¶   r   Úget_interfacerg   Ú_attn_implementationrì   r÷   rå   rß   r¡   ré   rþ   )r9   rT   rÝ   rà   Úinput_shapeÚhidden_shapeÚqueriesÚkeysr7   Úattention_interfacerë   rê   s   &&&,        r$   r¼   ÚCLIPSegAttention.forward  sR  € ð $×)Ñ)¨#¨2Ð.ˆà8˜Ð8 bÐ8¨$¯-©-Ñ8ˆØ—+‘+˜mÓ,ˆØ�{‰{˜=Ó)ˆØ—‘˜]Ó+ˆà—,‘,˜|Ó,×6Ñ6°q¸!Ó<ˆØ�y‰y˜Ó&×0Ñ0°°AÓ6ˆØ—‘˜\Ó*×4Ñ4°Q¸Ó:ˆä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØñ	%
ð —J‘Jð	%
ð  $Ÿ}Ÿ}˜}‘C°$·,±,ð	%
ð ñ	%
Ñ!ˆð "×)Ò)Ð;¨;Ð;¸Ó;×FÑFÓHˆØ—m‘m KÓ0ˆàÐ(Ð(r(   )rg   rß   rx   rö   rù   rû   rõ   rþ   rý   r÷   rü   r+   ©
rG   rH   rI   rJ   rK   rv   r¼   rM   rN   r¿   rÀ   s   @@r$   rî   rî     s#   ù‡ € ÙG÷Bó B÷%)÷ %)ò %)r(   rî   c                   óD   a a€ ] tR tRt oV 3R ltV3R lR ltRtVtV ;t# )Ú
CLIPSegMLPiF  c                ó(  <€ \         SV `  4        Wn        \        VP                  ,          V n        \        P                  ! VP                  VP                  4      V n
        \        P                  ! VP                  VP                  4      V n        R # r+   )ru   rv   rg   r   Ú
hidden_actÚactivation_fnr   rú   rw   Úintermediate_sizeÚfc1Úfc2r‰   s   &&€r$   rv   ÚCLIPSegMLP.__init__G  sb   ø€ Ü‰ÑÔØŒÜ# F×$5Ñ$5Õ6ˆÔÜ—9’9˜V×/Ñ/°×1IÑ1IÓJˆŒÜ—9’9˜V×5Ñ5°v×7IÑ7IÓJˆŽr(   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   rT   r   ©rD   r�   )r"   r#   s   "€r$   r%   ÚCLIPSegMLP.__annotate__N  s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r(   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# r+   )r  r  r  )r9   rT   s   &&r$   r¼   ÚCLIPSegMLP.forwardN  s4   € ØŸ™ Ó/ˆØ×*Ñ*¨=Ó9ˆØŸ™ Ó/ˆØÐr(   )r  rg   r  r  r×   rÀ   s   @@r$   r  r  F  s   ù‡ € õK÷÷ ð r(   r  c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚCLIPSegEncoderLayeriU  c                ó0   <€ V ^8„  d   QhRS[ S[,          /# rf   rð   )r"   r#   s   "€r$   r%   Ú CLIPSegEncoderLayer.__annotate__V  ó   ø€ ÷ Sñ SÑ2Ñ5FÕFñ Sr(   c                óJ  <€ \         SV `  4        VP                  V n        \	        V4      V n        \        P                  ! V P                  VP                  R 7      V n	        \        V4      V n        \        P                  ! V P                  VP                  R 7      V n        R# ©)ÚepsN©ru   rv   rw   rx   rî   Ú	self_attnr   Ú	LayerNormÚlayer_norm_epsÚlayer_norm1r  ÚmlpÚlayer_norm2r‰   s   &&€r$   rv   ÚCLIPSegEncoderLayer.__init__V  óm   ø€ Ü‰ÑÔØ×+Ñ+ˆŒÜ)¨&Ó1ˆŒÜŸ<š<¨¯©¸F×<QÑ<QÔRˆÔÜ˜fÓ%ˆŒÜŸ<š<¨¯©¸F×<QÑ<QÔRˆÖr(   c                ó~   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[S[,          RS[ P                  /# )r   rT   rÝ   rà   r   )rD   r�   r   r   rE   )r"   r#   s   "€r$   r%   r  ^  sG   ø€ ÷ ñ á—|‘|ðñ Ÿ™ðñ Ñ+Õ,ð	ñ
 
×	Ñ	ñr(   c                óÄ   € TpV P                  V4      pV P                  ! RR VRV/VB w  rWA,           pTpV P                  V4      pV P                  V4      pWA,           pV# ©rT   rÝ   rF   )r&  r#  r(  r'  ©r9   rT   rÝ   rà   Úresidualr¸   s   &&&,  r$   r¼   ÚCLIPSegEncoderLayer.forward^  s   € ð !ˆà×(Ñ(¨Ó7ˆØŸ>š>ñ 
Ø'ð
à)ð
ð ñ
Ñˆð
 !Õ0ˆà ˆØ×(Ñ(¨Ó7ˆØŸ™ Ó/ˆØ Õ0ˆàÐr(   ©rx   r&  r(  r'  r#  r×   rÀ   s   @@r$   r  r  U  s    ù‡ € ÷Só S÷÷ ð r(   r  c                   óT   a a€ ] tR tRt oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚCLIPSegDecoderLayeriv  z˜
CLIPSeg decoder layer, which is identical to `CLIPSegEncoderLayer`, except that normalization is applied after
self-attention/MLP, rather than before.
c                ó0   <€ V ^8„  d   QhRS[ S[,          /# rf   rð   )r"   r#   s   "€r$   r%   Ú CLIPSegDecoderLayer.__annotate__|  r  r(   c                óJ  <€ \         SV `  4        VP                  V n        \	        V4      V n        \        P                  ! V P                  VP                  R 7      V n	        \        V4      V n        \        P                  ! V P                  VP                  R 7      V n        R# r   r"  r‰   s   &&€r$   rv   ÚCLIPSegDecoderLayer.__init__|  r*  r(   c                óx   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[S[ P                  ,          /# )r   rT   rÝ   r   )rD   r�   r!   rE   )r"   r#   s   "€r$   r%   r5  „  s<   ø€ ÷ ñ á—|‘|ðñ Ÿ™ðñ
 
‰u× Ñ Õ	!ñr(   c                óÄ   € TpV P                   ! RR VRV/VB w  rWA,           pV P                  V4      pTpV P                  V4      pWA,           pV P                  V4      pV# r-  )r#  r&  r'  r(  r.  s   &&&,  r$   r¼   ÚCLIPSegDecoderLayer.forward„  s   € ð !ˆàŸ>š>ñ 
Ø'ð
à)ð
ð ñ
Ñˆð !Õ0ˆØ×(Ñ(¨Ó7ˆà ˆØŸ™ Ó/ˆØ Õ0ˆØ×(Ñ(¨Ó7ˆàÐr(   r1  r  rÀ   s   @@r$   r3  r3  v  s%   ù‡ € ñ÷
Só S÷÷ ð r(   r3  c                   óš   a a€ ] tR tRt oRtR	t. R
OtRtRtRt	Rt
RtR]].R]/t]P"                  ! 4       V 3R l4       tV3R ltRtVtV ;t# )ÚCLIPSegPreTrainedModeli�  ÚclipsegTrT   rU   c                óÌ	  <€ \         SV `  V4       V P                  P                  p\	        V\
        4      '       dÊ   \        P                  ! VP                  P                  RVR,          R7       \        P                  ! VP                  P                  RVR,          R7       \        P                  ! VP                  \        P                  ! VP                  P                  R,          4      P!                  R4      4       R# \	        V\"        4      '       Ed   \        P                  ! VP$                  RVP&                  R,          V,          R7       \        P                  ! VP(                  P                  VP                  P*                  V,          R7       \        P                  ! VP                  P                  VP                  P*                  V,          R7       \        P                  ! VP                  \        P                  ! VP,                  4      P!                  R4      4       R# \	        V\.        4      '       Ed   VP&                  R,          ^VP                  P0                  ,          R,          ,          V,          pVP&                  R,          V,          p\        P                  ! VP2                  P                  VR7       \        P                  ! VP4                  P                  VR7       \        P                  ! VP6                  P                  VR7       \        P                  ! VP8                  P                  VR7       R# \	        V\:        4      '       dÓ   VP                  P<                  R,          ^VP                  P0                  ,          R,          ,          V,          p^VP                  P<                  ,          R,          V,          p\        P                  ! VP>                  P                  VR7       \        P                  ! VP@                  P                  VR7       R# \	        V\B        4      '       d‹   \        P                  ! VPD                  P                  VPF                  R,          V,          R7       \        P                  ! VPH                  P                  VPJ                  R,          V,          R7       R# R# )	zInitialize the weightsr  g{®Gáz”?)ÚmeanÚstd)r@  Nrt   rr   ró   )&ru   Ú_init_weightsrg   Úinitializer_factorr-   rÂ   ÚinitÚnormal_rÈ   r�   r„   Úcopy_rˆ   rD   r†   rœ   r‡   rd   r}   rx   r€   Úinitializer_ranger‚   rî   Únum_hidden_layersrý   rû   rü   rþ   r  rw   r  r  ÚCLIPSegModelÚtext_projectionÚtext_embed_dimÚvisual_projectionÚvision_embed_dim)r9   rÙ   ÚfactorÚin_proj_stdÚout_proj_stdÚfc_stdrŠ   s   &&    €r$   rA  Ú$CLIPSegPreTrainedModel._init_weights®  s  ø€ ô 	‰Ñ˜fÔ%Ø—‘×/Ñ/ˆÜ�fÔ3×4Ò4Ü�LŠL˜×/Ñ/×6Ñ6¸SÀfÈtÅmÕTÜ�LŠL˜×2Ñ2×9Ñ9ÀÈÐRVÍÕWÜ�JŠJ�v×*Ñ*¬E¯LªL¸×9LÑ9L×9RÑ9RÐSUÕ9VÓ,W×,^Ñ,^Ð_fÓ,gÖhÜ˜Ô 7×8Ó8Ü�LŠL˜×/Ñ/°c¸v×?OÑ?OÐQUÕ?UÐX^Õ?^Õ_Ü�LŠL˜×/Ñ/×6Ñ6¸F¿M¹M×<[Ñ<[Ð^dÕ<dÕeÜ�LŠL˜×2Ñ2×9Ñ9¸v¿}¹}×?^Ñ?^ÐagÕ?gÕhÜ�JŠJ�v×*Ñ*¬E¯LªL¸×9MÑ9MÓ,N×,UÑ,UÐV]Ó,^Ö_Ü˜Ô 0×1Ó1Ø!×+Ñ+¨TÕ1°q¸6¿=¹=×;ZÑ;ZÕ7ZÐ_cÕ6cÕdÐgmÕmˆKØ"×,Ñ,¨dÕ2°fÕ<ˆLÜ�LŠL˜Ÿ™×-Ñ-°;Õ?Ü�LŠL˜Ÿ™×-Ñ-°;Õ?Ü�LŠL˜Ÿ™×-Ñ-°;Õ?Ü�LŠL˜Ÿ™×/Ñ/°\×BÜ˜¤
×+Ò+Ø!Ÿ=™=×4Ñ4°dÕ:ÀÀFÇMÁM×DcÑDcÕ@cÐhlÕ?lÕmÐpvÕvˆKØ˜&Ÿ-™-×3Ñ3Õ3¸Õ<¸vÕEˆFÜ�LŠL˜Ÿ™×*Ñ*°Õ7Ü�LŠL˜Ÿ™×*Ñ*°×<Ü˜¤×-Ò-Ü�LŠLØ×&Ñ&×-Ñ-Ø×)Ñ)¨4Õ/°&Õ8õô �LŠLØ×(Ñ(×/Ñ/Ø×+Ñ+¨TÕ1°FÕ:÷ñ .r(   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # rf   ©r   )r"   r#   s   "€r$   r%   Ú#CLIPSegPreTrainedModel.__annotate__�  s   ø‡ ‚ áÑò r(   rF   )ÚimageÚtext)rÂ   r  rd   )rG   rH   rI   rJ   Úbase_model_prefixÚinput_modalitiesÚ_no_split_modulesÚsupports_gradient_checkpointingÚ_supports_sdpaÚ_supports_flash_attnÚ_supports_flex_attnÚ_supports_attention_backendr  r3  rî   Ú_can_record_outputsrD   Úno_gradrA  rL   rM   rN   r¿   rÀ   s   @@r$   r<  r<  �  sq   ù‡ € ð "ÐØ(ÐÚcÐà&*Ð#Ø€NØÐØÐØ"&ÐàÐ-Ð/BÐCØÐ&ðÐð
 ‡]‚]ƒ_ô!ó ð!÷% … r(   r<  c                   óX   a a€ ] tR tRt oRtV3R lV 3R lltRV3R lR lltRtVtV ;t	# )	ÚCLIPSegEncoderiÓ  zŸ
Transformer encoder consisting of `config.num_hidden_layers` self attention layers. Each layer is a
[`CLIPSegEncoderLayer`].

Args:
    config: CLIPSegConfig
c                ó    <€ V ^8„  d   QhRS[ /# rf   rS  )r"   r#   s   "€r$   r%   ÚCLIPSegEncoder.__annotate__Ü  s   ø€ ÷ ,ñ ,™}ñ ,r(   c                óÖ   <€ \         SV `  4        Wn        \        P                  ! \        VP                  4       Uu. uF  p\        V4      NK  	  up4      V n        R V n	        R# u upi )FN)
ru   rv   rg   r   Ú
ModuleListÚrangerG  r  ÚlayersÚgradient_checkpointing)r9   rg   r¸   rŠ   s   && €r$   rv   ÚCLIPSegEncoder.__init__Ü  sT   ø€ Ü‰ÑÔØŒÜ—m’mÌ%ÐPV×PhÑPhÔJiÓ$jÑJiÀQÔ%8¸Ö%@ÑJiÑ$jÓkˆŒØ&+ˆÖ#ùò %ks   ½A&c                ó^   <€ V ^8„  d   QhRS[ P                  R,          RS[S[,          RS[/# )r   rÝ   Nrà   r   )rD   r�   r   r   r   )r"   r#   s   "€r$   r%   rd  â  s:   ø€ ÷ 
ñ 
ñ Ÿ™ tÕ+ð
ñ Ñ+Õ,ð	
ñ
 
ñ
r(   c                óX   € TpV P                    F  pV! VV3/ VB pK  	  \        VR 7      # ))Úlast_hidden_state)rh  r   )r9   rÎ   rÝ   rà   rT   Úencoder_layers   &&&,  r$   r¼   ÚCLIPSegEncoder.forwardâ  sC   € ð &ˆØ!Ÿ[œ[ˆMÙ)ØØñð ñŠMñ )ô Ø+ô
ð 	
r(   )rg   ri  rh  r+   r  rÀ   s   @@r$   rb  rb  Ó  s#   ù‡ € ñ÷,ó ,÷
÷ 
ò 
r(   rb  c                   ón   a a€ ] tR tRt oV3R lV 3R llt]]]V3R lR l4       4       4       tRt	Vt
V ;t# )ÚCLIPSegDecoderiõ  c                ó    <€ V ^8„  d   QhRS[ /# rf   rS  )r"   r#   s   "€r$   r%   ÚCLIPSegDecoder.__annotate__ö  s   ø€ ÷ *ñ *™}ñ *r(   c                ó˜  <€ \         SV `  V4       VP                  V n        \        P                  ! VP
                  VP                  4      V n        \        P                  ! VP
                  VP                  4      V n        VP                  '       Ed%   VP                  P                  ^,          VP                  P                  ^,          3p\        P                  ! \        P                  ! VP                  VP                  ^^R7      \        P                  ! 4       \        P                  ! VP                  VP                  ^,          V^ ,          V^ ,          R7      \        P                  ! 4       \        P                  ! VP                  ^,          ^V^,          V^,          R7      4      V n        MQ\        P                  ! VP                  ^VP                  P                  VP                  P                  R7      V n        \#        VP$                  4      p\        P&                  ! \)        V4       Uu. uF8  p\        P                  ! VP                  P*                  VP                  4      NK:  	  up4      V n        \.        P0                  ! VP                  4      pVP                  Vn        VP2                  Vn        VP6                  Vn        RVn        \        P&                  ! \)        \#        VP$                  4      4       Uu. uF  p\=        V4      NK  	  up4      V n        V PA                  4        R# u upi u upi )é   )rm   Úpadding)rm   rn   )rn   ÚreluN)!ru   rv   Úconditional_layerr   rú   Úprojection_dimÚ
reduce_dimÚfilm_mulÚfilm_addÚ"use_complex_transposed_convolutionÚvision_configrz   Ú
Sequentialr~   ÚReLUÚConvTranspose2dÚtransposed_convolutionÚlenÚextract_layersrf  rg  rw   ÚreducesÚcopyÚdeepcopyÚdecoder_num_attention_headsrô   Údecoder_intermediate_sizer  r  r3  rh  Ú	post_init)r9   rg   Útransposed_kernelsÚdepthr¸   Údecoder_configrŠ   s   &&    €r$   rv   ÚCLIPSegDecoder.__init__ö  sj  ø€ Ü‰Ñ˜Ô à!'×!9Ñ!9ˆÔäŸ	š	 &×"7Ñ"7¸×9JÑ9JÓKˆŒÜŸ	š	 &×"7Ñ"7¸×9JÑ9JÓKˆŒà×4×4Ñ4Ø"(×"6Ñ"6×"AÑ"AÀQÕ"FÈ×H\ÑH\×HgÑHgÐklÕHlÐ!mÐä*,¯-ª-Ü—	’	˜&×+Ñ+¨V×->Ñ->ÈAÐWXÔYÜ—’“	Ü×"Ò"Ø×%Ñ%Ø×%Ñ%¨Õ*Ø 2°1Õ 5Ø-¨aÕ0ô	ô —’“	Ü×"Ò"Ø×%Ñ%¨Õ*¨AÐ;MÈaÕ;PÐYkÐlmÕYnôó+ˆDÕ'ô +-×*<Ò*<Ø×!Ñ! 1 f×&:Ñ&:×&EÑ&EÈf×NbÑNb×NmÑNmô+ˆDÔ'ô �F×)Ñ)Ó*ˆÜ—}’}ÜUZÐ[`ÔUaÓbÑUaÐPQŒR�YŠY�v×+Ñ+×7Ñ7¸×9JÑ9JÖKÑUaÑbó
ˆŒô Ÿš v×';Ñ';Ó<ˆØ%+×%6Ñ%6ˆÔ"Ø-3×-OÑ-OˆÔ*Ø+1×+KÑ+KˆÔ(Ø$*ˆÔ!Ü—m’mÔRWÔX[Ð\b×\qÑ\qÓXrÔRsÓ$tÑRsÈQÔ%8¸Ö%HÑRsÑ$tÓuˆŒà�‰Öùò cùò %us   È<>MÌMc                óz   <€ V ^8„  d   QhRS[ S[P                  ,          RS[P                  RS[S[,          RS[/# )r   rT   r`   rà   r   )r!   rD   r�   r   r   rQ   )r"   r#   s   "€r$   r%   rs  %  sF   ø€ ÷ %3ñ %3á™UŸ\™\Õ*ð%3ñ !&§¡ð%3ñ Ñ+Õ,ð	%3ñ
 
ñ%3r(   c                óò  € VRRR1,          pRp\        \        W@P                  V P                  4      4       F’  w  pw  rxp	Ve   V	! V4      V,           pMV	! V4      pW`P                  8X  dS   V P                  V4      VP                  ^^ ^4      ,          V P                  V4      ,           pVP                  ^^ ^4      pV! V3RR/VB pK”  	  VR,          P                  ^^4      p\        \        P                  ! VP                  ^,          4      4      p
VP                  ^ ,          pVP                  WµP                  ^,          Wª4      pV P                  V4      P                  ^4      p\!        VR7      # )a  
conditional_embeddings (`torch.FloatTensor` of shape `(batch_size, config.projection_dim)`, *optional*):
    The conditional embeddings for the query images. If provided, the model will use this instead of computing
    the embeddings from the conditional_pixel_values.
NrÝ   ©rS   rt   )rš   r›   rš   )Ú	enumerateÚziprh  r…  rx  r{  r¢   r|  r¶   r‘   ÚmathÚsqrtrœ   r¥   r‚  ÚsqueezerQ   )r9   rT   r`   rà   ÚactivationsÚoutputÚiÚ
activationÚlayerÚreducer•   r·   rS   s   &&&,         r$   r¼   ÚCLIPSegDecoder.forward"  sS  € ð $¡D b DÕ)ˆàˆÜ.7¼¸KÏÉÐVZ×VbÑVbÓ8cÖ.dÑ*ˆAÑ*�
 6ØÒ!Ù 
Ó+¨fÕ4‘á 
Ó+�à×*Ñ*Ô*ØŸ™Ð'=Ó>ÀÇÁÐPQÐSTÐVWÓAXÕXÐ[_×[hÑ[hØ*ó\õ �ð  Ÿ™¨¨1¨aÓ0�á˜6ÑA°$ÐA¸&ÑAŠFñ /eð ˜Õ!×+Ñ+¨A¨qÓ1ˆä”4—9’9˜VŸ\™\¨!�_Ó-Ó.ˆà+×1Ñ1°!Õ4ˆ
Ø—‘˜Z¯©°a­¸$ÓEˆà×,Ñ,¨VÓ4×<Ñ<¸QÓ?ˆä#¨6Ô2Ð2r(   )rx  r|  r{  rh  r…  r‚  )rG   rH   rI   rJ   rv   r   r   r   r¼   rM   rN   r¿   rÀ   s   @@r$   rq  rq  õ  s9   ù‡ € ÷*ó *ðX  ØØ÷%3ó ó ó  ÷%3ð %3r(   rq  zL
    The text model from CLIPSEG without any head or projection on top.
    )Úcustom_introc                   ó”   a a€ ] tR tRt oRtRtV3R lV 3R llt]]! RR7      ]	RV3R lR ll4       4       4       t
V3R	 ltR
tVtV ;t# )ÚCLIPSegTextModeliM  rÈ   c                ó    <€ V ^8„  d   QhRS[ /# rf   rÄ   )r"   r#   s   "€r$   r%   ÚCLIPSegTextModel.__annotate__W  s   ø€ ÷ 	ñ 	Ñ0ñ 	r(   c                ó  <€ \         SV `  V4       VP                  p\        V4      V n        \        V4      V n        \        P                  ! W!P                  R 7      V n
        VP                  V n        V P                  4        R# r   )ru   rv   rw   rÂ   r�   rb  Úencoderr   r$  r%  Úfinal_layer_normÚeos_token_idrŠ  rÊ   s   && €r$   rv   ÚCLIPSegTextModel.__init__W  sd   ø€ Ü‰Ñ˜Ô Ø×&Ñ&ˆ	Ü/°Ó7ˆŒÜ% fÓ-ˆŒÜ "§¢¨Y×<QÑ<QÔ RˆÔð #×/Ñ/ˆÔØ�‰Ör(   F©Útie_last_hidden_statesc                ó¾   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[S[,          RS[S[,          /# )r   rÍ   NrÝ   rˆ   rà   r   ©rD   r�   r   r   r!   r   )r"   r#   s   "€r$   r%   r¢  e  sk   ø€ ÷ I
ñ I
á—<‘< $Õ&ðI
ñ Ÿ™ tÕ+ðI
ñ —l‘l TÕ)ð	I
ñ
 Ñ+Õ,ðI
ñ 
Ñ+Õ	+ñI
r(   c           	     óž  € Vf   \        R4      hVP                  4       pVP                  RVR,          4      pV P                  WR7      p\	        V P
                  VVRR7      pVP                  RR4       V P                  ! RRVRVRR/VB pVP                  pV P                  V4      pV P                  ^8X  dw   V\        P                  ! VP                  ^ ,          VP                  R	7      VP                  \        P                   VP                  R
7      P#                  RR7      3,          p	M�V\        P                  ! VP                  ^ ,          VP                  R	7      VP                  \        P                   VP                  R
7      V P                  8H  P!                  4       P#                  RR7      3,          p	\%        VV	R7      # )aë  
Examples:

```python
>>> from transformers import AutoTokenizer, CLIPSegTextModel

>>> tokenizer = AutoTokenizer.from_pretrained("CIDAS/clipseg-rd64-refined")
>>> model = CLIPSegTextModel.from_pretrained("CIDAS/clipseg-rd64-refined")

>>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="pt")

>>> outputs = model(**inputs)
>>> last_hidden_state = outputs.last_hidden_state
>>> pooled_output = outputs.pooler_output  # pooled (EOS token) states
```NzYou have to specify input_ids)rÍ   rˆ   )rg   rÎ   rÝ   Úpast_key_valuesrù   rÎ   rÝ   T©Údevice)r²   r¯  r˜   ©rm  Úpooler_outputrt   rF   )r³   r•   r¥   r�   r	   rg   Úpopr¤  rm  r¥  r¦  rD   r†   rœ   r¯  r´   r‘   Úargmaxr   )
r9   rÍ   rÝ   rˆ   rà   r  rT   Úencoder_outputsrm  ra   s
   &&&&,     r$   r¼   ÚCLIPSegTextModel.forwardb  s¯  € ð2 ÒÜÐ<Ó=Ð=à—n‘nÓ&ˆØ—N‘N 2 {°2¥Ó7ˆ	àŸ™°)˜ÓWˆä+Ø—;‘;Ø'Ø)Ø ô	
ˆð 	�
‰
�; Ô%Ø+/¯<ª<ñ ,
Ø'ð,
à)ð,
ð ð,
ð ñ	,
ˆð ,×=Ñ=ÐØ ×1Ñ1Ð2CÓDÐà×Ñ Ô!ð .Ü—’Ð.×4Ñ4°QÕ7Ð@Q×@XÑ@XÔYØ—‘¤5§9¡9Ð5F×5MÑ5M�ÓN×UÑUÐZ\ÐUÓ]ð_õ‰Mð .Ü—’Ð.×4Ñ4°QÕ7Ð@Q×@XÑ@XÔYð —‘¤E§I¡IÐ6G×6NÑ6N�ÓOÐSW×SdÑSdÑdß‘“ß‘˜B�“ð!õˆMô *Ø/Ø'ô
ð 	
r(   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # rf   rÄ   )r"   r#   s   "€r$   r%   r¢  M  s   ø‡ ‚ ñ Ñò r(   )r�   r¤  r¦  r¥  )rV  rÖ   )rG   rH   rI   rJ   rX  Ú_input_embed_layerrv   r   r   r   r¼   rL   rM   rN   r¿   rÀ   s   @@r$   r   r   M  sU   ù‡ € ð !ÐØ*Ð÷	ó 	ð  Ù¨EÔ2Ø÷I
ñ I
ó ó 3ó  ðI
÷1 … r(   r   zN
    The vision model from CLIPSEG without any head or projection on top.
    c                   ó˜   a a€ ] tR tRt oRtRtRtV3R lV 3R llt]]	! RR7      ]
RV3R lR	 ll4       4       4       tV3R
 ltRtVtV ;t# )ÚCLIPSegVisionModeli±  r¯   r€   c                ó    <€ V ^8„  d   QhRS[ /# rf   rh   )r"   r#   s   "€r$   r%   ÚCLIPSegVisionModel.__annotate__¼  s   ø€ ÷ ñ Ñ2ñ r(   c                ó6  <€ \         SV `  V4       VP                  p\        V4      V n        \
        P                  ! W!P                  R 7      V n        \        V4      V n
        \
        P                  ! W!P                  R 7      V n        V P                  4        R# r   )ru   rv   rw   rd   r�   r   r$  r%  Úpre_layrnormrb  r¤  Úpost_layernormrŠ  rÊ   s   && €r$   rv   ÚCLIPSegVisionModel.__init__¼  sk   ø€ Ü‰Ñ˜Ô Ø×&Ñ&ˆ	ä1°&Ó9ˆŒÜŸLšL¨×8MÑ8MÔNˆÔÜ% fÓ-ˆŒÜ Ÿlšl¨9×:OÑ:OÔPˆÔØ�‰Ör(   Fr¨  c          	      ó‚   <€ V ^8„  d   QhRS[ P                  R,          RS[R,          RS[S[,          RS[S[,          /# )r   r¯   Nr¬   rà   r   ©rD   rE   Úboolr   r   r!   r   )r"   r#   s   "€r$   r%   r»  É  sN   ø€ ÷ +
ñ +
á×'Ñ'¨$Õ.ð+
ñ #'¨¥+ð+
ñ Ñ+Õ,ð	+
ñ
 
Ñ+Õ	+ñ+
r(   c                óÖ   € V P                  WR7      pV P                  V4      pV P                  ! RRV/VB pVP                  pVR,          pV P	                  V4      p\        VVR7      # )a«  
Examples:

```python
>>> import httpx
>>> from io import BytesIO
>>> from PIL import Image
>>> from transformers import AutoProcessor, CLIPSegVisionModel

>>> processor = AutoProcessor.from_pretrained("CIDAS/clipseg-rd64-refined")
>>> model = CLIPSegVisionModel.from_pretrained("CIDAS/clipseg-rd64-refined")

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> inputs = processor(images=image, return_tensors="pt")

>>> outputs = model(**inputs)
>>> last_hidden_state = outputs.last_hidden_state
>>> pooled_output = outputs.pooler_output  # pooled CLS states
```)r¬   rÎ   r°  rF   )rš   r   rš   )r�   r½  r¤  rm  r¾  r   )r9   r¯   r¬   rà   rT   r´  rm  ra   s   &&&,    r$   r¼   ÚCLIPSegVisionModel.forwardÆ  s}   € ð> Ÿ™¨˜ÓhˆØ×)Ñ)¨-Ó8ˆà+/¯<ª<ñ ,
Ø'ð,
àñ,
ˆð
 ,×=Ñ=ÐØ)¨'Õ2ˆØ×+Ñ+¨MÓ:ˆä)Ø/Ø'ô
ð 	
r(   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # rf   rh   )r"   r#   s   "€r$   r%   r»  ±  s   ø‡ ‚ ñ  Ñò r(   )r�   r¤  r¾  r½  )rU  r¾   )rG   rH   rI   rJ   Úmain_input_namerX  r·  rv   r   r   r   r¼   rL   rM   rN   r¿   rÀ   s   @@r$   r¹  r¹  ±  sW   ù‡ € ð %€OØ!ÐØ*Ð÷ó ð  Ù¨EÔ2Ø÷+
ñ +
ó ó 3ó  ð+
÷1 … r(   r¹  c                óX   € V ^8„  d   QhR\         P                  R\         P                  /# )r   rS   r   r  )r"   s   "r$   r%   r%   ù  s&   € ÷ `ñ `œUŸ\™\ð `¬e¯l©lñ `r(   c                 ó”   € \         P                  P                  V \        P                  ! \        V 4      V P                  R 7      4      # )r®  )r   r£   Úcross_entropyrD   r†   rƒ  r¯  r‘  s   &r$   Úcontrastive_lossrÊ  ù  s/   € Ü�=‰=×&Ñ& v¬u¯|ª|¼CÀ»KÐPV×P]ÑP]Ô/^Ó_Ð_r(   c                óX   € V ^8„  d   QhR\         P                  R\         P                  /# )r   Ú
similarityr   r  )r"   s   "r$   r%   r%   ý  s"   € ÷ -ñ -¬E¯L©Lð -¼U¿\¹\ñ -r(   c                 ó`   € \        V 4      p\        V P                  4      pW,           R ,          # )g       @)rÊ  ÚT)rÌ  Úcaption_lossÚ
image_losss   &  r$   Úimage_text_contrastive_lossrÑ  ý  s(   € Ü# JÓ/€LÜ! *§,¡,Ó/€JØÕ%¨Õ,Ð,r(   c                óX   € V ^8„  d   QhR\         P                  R\         P                  /# )r   Útensorr   r  )r"   s   "r$   r%   r%     s"   € ÷ ñ œUŸ\™\ð ¬e¯l©lñ r(   c                ó”   € \         P                  ! V ^4      p\         P                  ! VRRR7      p\         P                  ! VR4      pV# )z±
This method is equivalent to tensor.norm(p=2, dim=-1, keepdim=True) and used to make
model `executorch` exportable. See issue https://github.com/pytorch/executorch/issues/3566
T)r™   Úkeepdimr“   rt   )rD   ÚpowÚsum)rÓ  Úsquare_tensorÚ
sum_tensorÚnormed_tensors   &   r$   Ú_get_vector_normrÛ    s<   € ô
 —I’I˜f aÓ(€MÜ—’˜=¨b¸$Ô?€JÜ—I’I˜j¨#Ó.€MØÐr(   c                   ó¼   a a€ ] tR tRt oV3R lV 3R llt]]RV3R lR ll4       4       t]]RV3R lR ll4       4       t]]RV3R lR	 ll4       4       t	R
t
VtV ;t# )rH  i  c                ó    <€ V ^8„  d   QhRS[ /# rf   rS  )r"   r#   s   "€r$   r%   ÚCLIPSegModel.__annotate__  s   ø€ ÷ ñ ™}ñ r(   c                ó’  <€ \         SV `  V4       VP                  pVP                  pVP                  V n        VP
                  V n        VP
                  V n        \        P                  V4      V n
        \        P                  V4      V n        \        P                  ! V P                  V P                  R R7      V n        \        P                  ! V P                  V P                  R R7      V n        \        P"                  ! \$        P&                  ! V P(                  P*                  4      4      V n        V P/                  4        R# )F)ro   N)ru   rv   Útext_configr~  ry  rw   rJ  rL  r   Ú_from_configÚ
text_modelr¹  Úvision_modelr   rú   rK  rI  r{   rD   rÓ  rg   Úlogit_scale_init_valueÚlogit_scalerŠ  )r9   rg   rà  r~  rŠ   s   &&  €r$   rv   ÚCLIPSegModel.__init__  sé   ø€ Ü‰Ñ˜Ô à×(Ñ(ˆØ×,Ñ,ˆà$×3Ñ3ˆÔØ)×5Ñ5ˆÔØ -× 9Ñ 9ˆÔä*×7Ñ7¸ÓDˆŒÜ.×;Ñ;¸MÓJˆÔä!#§¢¨4×+@Ñ+@À$×BUÑBUÐ\aÔ!bˆÔÜ!Ÿyšy¨×)<Ñ)<¸d×>QÑ>QÐX]Ô^ˆÔÜŸ<š<¬¯ª°T·[±[×5WÑ5WÓ(XÓYˆÔð 	�‰Ör(   c                ó°   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[S[,          RS[S[,          /# )r   rÍ   rÝ   Nrˆ   rà   r   r«  )r"   r#   s   "€r$   r%   rÞ  &  s_   ø€ ÷ ñ á—<‘<ðñ Ÿ™ tÕ+ðñ —l‘l TÕ)ð	ñ
 Ñ+Õ,ðñ 
Ñ+Õ	+ñr(   c                ó~   € V P                   ! RRVRVRVRR/VB pVP                  pV P                  V4      Vn        V# )a·  
Examples:

```python
>>> import torch
>>> from transformers import AutoTokenizer, CLIPSegModel

>>> tokenizer = AutoTokenizer.from_pretrained("CIDAS/clipseg-rd64-refined")
>>> model = CLIPSegModel.from_pretrained("CIDAS/clipseg-rd64-refined")

>>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="pt")
>>> with torch.inference_mode():
...     text_features = model.get_text_features(**inputs)
```rÍ   rÝ   rˆ   Úreturn_dictTrF   )râ  r±  rI  )r9   rÍ   rÝ   rˆ   rà   Útext_outputsra   s   &&&&,  r$   Úget_text_featuresÚCLIPSegModel.get_text_features$  sf   € ð. 48·?²?ñ 4
Øð4
à)ð4
ð &ð4
ð ð	4
ð
 ñ4
ˆð %×2Ñ2ˆØ%)×%9Ñ%9¸-Ó%HˆÔ"àÐr(   c          	      óf   <€ V ^8„  d   QhRS[ P                  RS[RS[S[,          RS[S[,          /# )r   r¯   r¬   rà   r   rÁ  )r"   r#   s   "€r$   r%   rÞ  I  sE   ø€ ÷ "ñ "á×'Ñ'ð"ñ #'ð"ñ Ñ+Õ,ð	"ñ
 
Ñ+Õ	+ñ"r(   c           	     óz   € V P                   ! RRVRVRR/VB pVP                  pV P                  V4      Vn        V# )a$  
Examples:

```python
>>> import torch
>>> from transformers import AutoProcessor, CLIPSegModel
>>> from transformers.image_utils import load_image

>>> processor = AutoProcessor.from_pretrained("CIDAS/clipseg-rd64-refined")
>>> model = CLIPSegModel.from_pretrained("CIDAS/clipseg-rd64-refined")

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = load_image(url)

>>> inputs = processor(images=image, return_tensors="pt")

>>> with torch.inference_mode():
...     image_features = model.get_image_features(**inputs)
```r¯   r¬   ré  TrF   )rã  r±  rK  )r9   r¯   r¬   rà   Úvision_outputsra   s   &&&,  r$   Úget_image_featuresÚCLIPSegModel.get_image_featuresG  s^   € ð6 6:×5FÒ5Fñ 6
Ø%ð6
à%=ð6
ð ð6
ð ñ	6
ˆð '×4Ñ4ˆØ'+×'=Ñ'=¸mÓ'LˆÔ$àÐr(   c                óð   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[RS[S[,          R	S[/# )
r   rÍ   Nr¯   rÝ   rˆ   Úreturn_lossr¬   rà   r   )rD   rÏ   rE   r�   rÂ  r   r   r   )r"   r#   s   "€r$   r%   rÞ  o  s™   ø€ ÷ J
ñ J
á×#Ñ# dÕ*ðJ
ñ ×'Ñ'¨$Õ.ðJ
ñ Ÿ™ tÕ+ð	J
ñ
 ×&Ñ&¨Õ-ðJ
ñ ˜D•[ðJ
ñ #'ðJ
ñ Ñ+Õ,ðJ
ñ 
ñJ
r(   c           
     ó0  € V P                   ! RRVRV/VB pV P                  ! RRVRVRV/VB p	VP                  p
V	P                  pV
\        V
4      ,          p
V\        V4      ,          p\        P
                  ! WºP                  4       P                  VP                  4      4      pWÀP                  P                  4       P                  VP                  4      ,          pVP                  4       pRpV'       d   \        V4      p\        VVVVV
V	VR7      # )	al  
return_loss (`bool`, *optional*):
    Whether or not to return the contrastive loss.

Examples:

```python
>>> import torch
>>> from transformers import AutoProcessor, CLIPSegModel
>>> from transformers.image_utils import load_image

>>> processor = AutoProcessor.from_pretrained("CIDAS/clipseg-rd64-refined")
>>> model = CLIPSegModel.from_pretrained("CIDAS/clipseg-rd64-refined")

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = load_image(url)

>>> inputs = processor(
...     text=["a photo of a cat", "a photo of a dog"], images=image, return_tensors="pt", padding=True
... )

>>> with torch.inference_mode():
...     outputs = model(**inputs)
>>> logits_per_image = outputs.logits_per_image  # this is the image-text similarity score
>>> probs = logits_per_image.softmax(dim=1)  # we can take the softmax to get the label probabilities
```r¯   r¬   rÍ   rÝ   rˆ   N)r=   r>   r?   r@   rA   rB   rC   rF   )rð  rë  r±  rÛ  rD   ræ   Útr´   r¯  rå  ÚexprÑ  r   )r9   rÍ   r¯   rÝ   rˆ   ró  r¬   rà   rï  rê  rA   r@   r?   r>   r=   s   &&&&&&&,       r$   r¼   ÚCLIPSegModel.forwardm  s2  € ðL 6:×5LÒ5Lñ 6
Ø%ð6
à%=ð6
ð ñ6
ˆð 48×3IÒ3Iñ 4
Øð4
à)ð4
ð &ð4
ð ñ	4
ˆð &×3Ñ3ˆØ"×0Ñ0ˆð $Ô&6°|Ó&DÕDˆØ!Ô$4°[Ó$AÕAˆô  Ÿ,š, {·N±NÓ4D×4GÑ4GÈ×HZÑHZÓ4[Ó\ˆØ)×,<Ñ,<×,@Ñ,@Ó,B×,EÑ,EÀk×FXÑFXÓ,YÕYˆà*×,Ñ,Ó.ÐàˆßÜ.¨Ó?ˆDäØØ-Ø+Ø#Ø%Ø*Ø .ô
ð 	
r(   )rå  ry  rJ  râ  rI  rL  rã  rK  )NNr¾   )NNNNNT)rG   rH   rI   rJ   rv   r   r   rë  rð  r¼   rM   rN   r¿   rÀ   s   @@r$   rH  rH    s}   ù‡ € ÷ó ð( Ø÷ñ ó ó ððB Ø÷"ñ "ó ó ð"ðH Ø÷J
ñ J
ó ó ÷J
ð J
r(   rH  zn
    CLIPSeg model with a Transformer-based decoder on top for zero-shot and one-shot image segmentation.
    c                   óŠ   a a€ ] tR tRt oV3R lV 3R lltR
V3R lR llt]]RV3R lR ll4       4       tV3R lt	R	t
VtV ;t# )ÚCLIPSegForImageSegmentationi¼  c                ó    <€ V ^8„  d   QhRS[ /# rf   rS  )r"   r#   s   "€r$   r%   Ú(CLIPSegForImageSegmentation.__annotate__Ä  s   ø€ ÷ ñ ™}ñ r(   c                ó¨   <€ \         SV `  V4       \        V4      V n        VP                  V n        \        V4      V n        V P                  4        R # r+   )ru   rv   rH  Úclipr„  rq  ÚdecoderrŠ  r‰   s   &&€r$   rv   Ú$CLIPSegForImageSegmentation.__init__Ä  s@   ø€ Ü‰Ñ˜Ô Ü  Ó(ˆŒ	Ø$×3Ñ3ˆÔÜ% fÓ-ˆŒà�‰Ör(   c                óè   <€ V ^8„  d   QhRS[ R,          RS[P                  R,          RS[P                  R,          RS[P                  R,          RS[P                  R,          RS[P                  /# )r   r·   NrÍ   rÝ   rˆ   Úconditional_pixel_valuesr   )r‘   rD   r�   rE   )r"   r#   s   "€r$   r%   rû  Ì  su   ø€ ÷ &ñ &á˜$•Jð&ñ —<‘< $Õ&ð&ñ Ÿ™ tÕ+ð	&ñ
 —l‘l TÕ)ð&ñ #(§,¡,°Õ"5ð&ñ 
×	Ñ	ñ&r(   c                ó  € Vek   \        V4      V8w  d   \        R4      h\        P                  ! 4       ;_uu_ 4        V P                  P                  W#VR7      P                  pR R R 4       V# Vei   \        V4      V8w  d   \        R4      h\        P                  ! 4       ;_uu_ 4        V P                  P                  V4      P                  pR R R 4       V# \        R4      h  + '       g   i     X# ; i  + '       g   i     X# ; i)Nz@Make sure to pass as many prompt texts as there are query images)rÝ   rˆ   zAMake sure to pass as many prompt images as there are query imagesz[Invalid conditional, should be either provided as `input_ids` or `conditional_pixel_values`)rƒ  r³   rD   r`  rý  rë  r±  rð  )r9   r·   rÍ   rÝ   rˆ   r  r`   s   &&&&&& r$   Úget_conditional_embeddingsÚ6CLIPSegForImageSegmentation.get_conditional_embeddingsÌ  sé   € ð Ò ä�9‹~ Ô+Ü Ð!cÓdÐdÜ—’—•Ø)-¯©×)DÑ)DØÈ<ð *Eó *ç‘-ð '÷ !ð &Ð%ð &Ò1äÐ+Ó,°
Ô:Ü Ð!dÓeÐeÜ—’—•Ø)-¯©×)EÑ)EÐF^Ó)_×)mÑ)mÐ&÷ !ð &Ð%ô	 Ømóð ÷ !–ð &Ð%ú÷ !–ð &Ð%ús   ½(C&Â+&C:Ã&C7	Ã:D	c                ód  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          R	S[R
S[S[,          RS[S[,          /
# )r   rÍ   Nr¯   r  r`   rÝ   rˆ   Úlabelsr¬   rà   r   )	rD   rE   r�   rÏ   rÂ  r   r   r!   r   )r"   r#   s   "€r$   r%   rû  ë  sÑ   ø€ ÷ n
ñ n
á×$Ñ$ tÕ+ðn
ñ ×'Ñ'¨$Õ.ðn
ñ #(×"3Ñ"3°dÕ":ð	n
ñ
 !&× 1Ñ 1°DÕ 8ðn
ñ Ÿ™ tÕ+ðn
ñ ×&Ñ&¨Õ-ðn
ñ × Ñ  4Õ'ðn
ñ #'ðn
ñ Ñ+Õ,ðn
ñ 
‘Õ	ñn
r(   c	           	     óÆ  € \         P                  ! 4       ;_uu_ 4        RV	R&   V P                  P                  ! RRVRV/V	B p
V
P                  pV
P
                  pV P                   Uu. uF  qÜV^,           ,          NK  	  pp\        V
P                  V
P                  V
P
                  V
P                  R7      p
RRR4       Vf)   V P                  VP                  ^ ,          VVVVR7      pMkVP                  ^ ,          VP                  ^ ,          8w  d   \        R4      hVP                  ^,          V P                  P                  8w  d   \        R	4      hV P                  ! XV3/ V	B pVP                   pRpVe:   VP#                  VP$                  4      p\&        P(                  ! 4       pV! VV4      p\+        VVVXX
VR
7      # u upi   + '       g   i     EL; i)a®  
conditional_pixel_values (`torch.FloatTensor`, *optional*):
    The pixel values of the conditional images.
conditional_embeddings (`torch.FloatTensor` of shape `(batch_size, config.projection_dim)`, *optional*):
    The conditional embeddings for the query images. If provided, the model will use this instead of computing
    the embeddings from the conditional_pixel_values.
labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
    Labels for computing the sequence classification/regression loss. Indices should be in `[0, ...,
    config.num_labels - 1]`. If `config.num_labels == 1` a regression loss is computed (Mean-Square loss), If
    `config.num_labels > 1` a classification loss is computed (Cross-Entropy).

Examples:

```python
>>> import torch
>>> from transformers import AutoProcessor, CLIPSegForImageSegmentation
>>> from transformers.image_utils import load_image

>>> processor = AutoProcessor.from_pretrained("CIDAS/clipseg-rd64-refined")
>>> model = CLIPSegForImageSegmentation.from_pretrained("CIDAS/clipseg-rd64-refined")

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = load_image(url)

>>> texts = ["a cat", "a remote", "a blanket"]
>>> inputs = processor(text=texts, images=[image] * len(texts), padding=True, return_tensors="pt")

>>> with torch.inference_mode():
...     outputs = model(**inputs)

>>> logits = outputs.logits
>>> print(logits.shape)
torch.Size([3, 352, 352])
```TÚoutput_hidden_statesr¯   r¬   )rm  r±  rT   rU   N)r·   rÍ   rÝ   rˆ   r  zWMake sure to pass as many conditional embeddings as there are query images in the batchzcMake sure that the feature dimension of the conditional embeddings matches `config.projection_dim`.)r=   rS   r`   ra   rC   rb   rF   )rD   r`  rý  rð  r±  rT   r„  r   rm  rU   r  rœ   r³   rg   ry  rþ  rS   r´   r¯  r   ÚBCEWithLogitsLossrX   )r9   rÍ   r¯   r  r`   rÝ   rˆ   r  r¬   rà   rï  ra   rT   r™  r—  Údecoder_outputsrS   r=   Úloss_fns   &&&&&&&&&,         r$   r¼   Ú#CLIPSegForImageSegmentation.forwardé  sê  € ôb �]Š]�_�_Ø-1ˆFÐ)Ñ*Ø!ŸY™Y×9Ò9ñ Ø)ðà)Aðð ñˆNð
 +×8Ñ8ˆMà*×8Ñ8ˆMà9=×9LÒ9LÓMÑ9L°A¨¨Q­×/Ð/Ñ9LˆKÐMô 8Ø"0×"BÑ"BØ,×:Ñ:Ø,×:Ñ:Ø)×4Ñ4ô	ˆN÷ ð, "Ò)Ø%)×%DÑ%DØ'×-Ñ-¨aÕ0Ø#Ø-Ø)Ø)Að &Eó &Ñ"ð &×+Ñ+¨AÕ.°,×2DÑ2DÀQÕ2GÔGÜ Ømóð ð &×+Ñ+¨AÕ.°$·+±+×2LÑ2LÔLÜ ð0óð ð Ÿ,š,ØØ"ñ
ð ñ
ˆð
 !×'Ñ'ˆàˆØÒà—Y‘Y˜vŸ}™}Ó-ˆFÜ×*Ò*Ó,ˆGÙ˜6 6Ó*ˆDä-ØØØ#9Ø'Ø .Ø*ô
ð 	
ùò[ N÷ �_ˆ_ús   žAGÁ*G
Â9GÇ
GÇG 	c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # rf   rS  )r"   r#   s   "€r$   r%   rû  ¼  s   ø‡ ‚ ñ Ñò r(   )rý  rþ  r„  )NNNNN)NNNNNNNT)rG   rH   rI   rJ   rv   r  r   r   r¼   rL   rM   rN   r¿   rÀ   s   @@r$   rù  rù  ¼  sE   ù‡ € ÷ó ÷&ò &ð: Ø÷n
ñ n
ó ó ðn
÷_ … r(   rù  )r  )rH  r<  r   r¹  rù  )?r†  r”  Úcollections.abcr   Údataclassesr   Útypingr   rD   r   Ú r   rC  r—  r   Úmasking_utilsr	   Úmodeling_layersr
   Úmodeling_outputsr   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   Úutils.genericr   r   Úutils.output_capturingr   Úconfiguration_clipsegr   r   r   r   rQ   rX   rá   rd   rÂ   rì   rî   r  r  r3  r<  rb  rq  r   r¹  rÊ  rÑ  rÛ  rH  rù  Ú__all__rF   r(   r$   Ú<module>r     s  ðó* Û Ý $Ý !Ý ã Ý å &Ý !Ý /Ý 9ß Kß FÝ &ß OÓ Oß IÝ 5ß XÑ Xð Ø
ô_�Kó _ó ó ð_ð@ Ø
ô<˜;ó <ó ó ð<ð$ Ø
ô_ [ó _ó ó ð_ô6P˜bŸi™iô Pôf#˜BŸI™Iô #÷L%ô*7)�r—y‘yô 7)ôt�—‘ô ôÐ4ô ôB$Ð4ô $ðN ô2˜_ó 2ó ð2ôj
�R—Y‘Yô 
ôDU3Ð+ô U3ñp ðôô
\
Ð-ó \
óð
\
ñ~ ðôô
>
Ð/ó >
óð
>
õF`õ-õð ôj
Ð)ó j
ó ðj
ñZ ðôô
X
Ð"8ó X
óð
X
òv‚r(   