+
    œ°³j–î  ã                   ó\  € ^ RI t ^ RIHtHt ^ RIHt ^ RIt^ RIt^ RI	H
u Ht ^ RIHtH
t
 ^RIHt ^RIHt ^RIHtHt ^RIHt ^R	IHt ^R
IHtHtHtHtHt ^RI H!t!H"t" ^RI#H$t$ ^RI%H&t& ^RI'H(t(H)t) ^RI*H+t+H,t,H-t- ^RI.H/t/ ^RI0H1t1 ])! RR7      ] ! R R]4      4       4       t2])! RR7      ] ! R R]4      4       4       t3])! RR7      ] ! R R]4      4       4       t4])! RR7      ] ! R R]4      4       4       t5])! RR7      ] ! R  R!]4      4       4       t6 ! R" R#]
Pn                  4      t8]&! ^ R$7      R% R& l4       t9RiR' R( llt: ! R) R*]
Pn                  4      t;]! R+4       ! R, R-]
Pn                  4      4       t<R. t=RjR/ R0 llt>R1 R2 lt?R3 R4 lt@ ! R5 R6]
Pn                  4      tA ! R7 R8]
Pn                  4      tB ! R9 R:]
Pn                  4      tC ! R; R<]
Pn                  4      tD ! R= R>]
Pn                  4      tE ! R? R@]4      tF ! RA RB]
Pn                  4      tG ! RC RD]
Pn                  4      tH ! RE RF]
Pn                  4      tI ! RG RH]
Pn                  4      tJ ! RI RJ]
Pn                  4      tK]) ! RK RL]"4      4       tL ! RM RN]L4      tM]) ! RO RP]L4      4       tN]) ! RQ RR]]L4      4       tO])! RSRT7       ! RU RV]L4      4       tPRkRW ltQ])! RXRYRZ7       ! R[ R\]L4      4       tR])! R]R^RZ7       ! R_ R`]L4      4       tS])! RaRbRZ7       ! Rc Rd]L4      4       tT])! ReRfRZ7       ! Rg Rh]L4      4       tU. RlOtVR# )mé    N)ÚCallableÚIterable)Ú	dataclass)ÚTensorÚnn)Úinitialization)ÚACT2FN)ÚBackboneMixinÚfilter_output_hidden_states)Úuse_kernel_forward_from_hub)ÚGradientCheckpointingLayer)ÚBackboneOutputÚBaseModelOutputÚBaseModelOutputWithPoolingÚModelOutputÚSemanticSegmenterOutput)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)Ú#compile_compatible_method_lru_cache)ÚTransformersKwargsÚauto_docstring)Úcan_return_tupleÚmaybe_autocastÚmerge_with_config_defaults)Úcapture_outputs©ÚSapiens2Configz·
    Output type of [`Sapiens2Backbone`], extending [`BackboneOutput`] with optional CLS tokens from
    each selected feature stage (used when `config.return_class_token=True`).
    )Úcustom_introc                   ó4   a € ] tR t^1t o RtRtV 3R ltRtV tR# )ÚSapiens2BackboneOutputzÉ
cls_tokens (`tuple(torch.FloatTensor)`, *optional*):
    CLS token from each selected feature stage, each of shape `(batch_size, hidden_size)`.
    Only present when `config.return_class_token=True`.
Nc                óX   <€ V ^8„  d   Qh/ S[ S[P                  ,          R,          ;R&   # )é   NÚ
cls_tokens)ÚtupleÚtorchÚFloatTensor)ÚformatÚ__classdict__s   "€Úo/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/sapiens2/modeling_sapiens2.pyÚ__annotate__Ú#Sapiens2BackboneOutput.__annotate__1   s"   ø‡ ‚ ñ ‘e×'Ñ'Õ(¨4Õ/Ñ6ò ó    © )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r$   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r)   s   @r*   r!   r!   1   s   ø‡ € ñð 37€J÷ ƒ r-   r!   z6
    Class for outputs of pose estimation models.
    c                   ó@   a € ] tR t^Et o RtRtRtRtRtV 3R lt	Rt
V tR# )ÚSapiens2PoseEstimatorOutputa°  
loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `labels` is provided):
    Pose estimation loss.
heatmaps (`torch.FloatTensor` of shape `(batch_size, num_keypoints, height, width)`):
    Heatmaps as predicted by the model.
hidden_states (`tuple(torch.FloatTensor)`, *optional*, returned when `output_hidden_states=True` is passed or when `config.output_hidden_states=True`):
    Tuple of `torch.FloatTensor` (one for the output of the embeddings, if the model has an embedding layer, +
    one for the output of each stage) of shape `(batch_size, sequence_length, hidden_size)`. Hidden-states
    (also called feature maps) of the model at the output of each stage.
Nc                óú   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[S[ P                  R3,          R,          ;R&   S[S[ P                  R3,          R,          ;R&   # )r#   NÚlossÚheatmaps.Úhidden_statesÚ
attentions©r&   r'   r%   )r(   r)   s   "€r*   r+   Ú(Sapiens2PoseEstimatorOutput.__annotate__E   sy   ø‡ ‚ ñ$ ×
Ñ
˜dÕ
"Ñ)ñ% ñ& ×Ñ $Õ&Ñ-ñ' ñ( ™×*Ñ*¨CÐ/Õ0°4Õ7Ñ>ñ) ñ* ‘e×'Ñ'¨Ð,Õ-°Õ4Ñ;ò+ r-   r.   )r/   r0   r1   r2   r3   r;   r<   r=   r>   r4   r5   r6   r7   s   @r*   r9   r9   E   s'   ø‡ € ñ	ð &*€DØ)-€HØ:>€MØ7;€J÷+ ƒ r-   r9   z8
    Class for outputs of normal estimation models.
    c                   ó@   a € ] tR t^]t o RtRtRtRtRtV 3R lt	Rt
V tR# )ÚSapiens2NormalEstimatorOutputaè  
loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `labels` is provided):
    Normal estimation loss.
normals (`torch.FloatTensor` of shape `(batch_size, num_labels, height, width)`):
    Raw normal map predictions as output by the model (unnormalized).
hidden_states (`tuple(torch.FloatTensor)`, *optional*, returned when `output_hidden_states=True` is passed or when `config.output_hidden_states=True`):
    Tuple of `torch.FloatTensor` (one for the output of the embeddings + one for the output of each stage)
    of shape `(batch_size, sequence_length, hidden_size)`. Hidden-states of the model at the output of
    each layer plus the initial embedding outputs.
attentions (`tuple(torch.FloatTensor)`, *optional*, returned when `output_attentions=True` is passed or when `config.output_attentions=True`):
    Tuple of `torch.FloatTensor` (one per layer) of shape `(batch_size, num_heads, sequence_length,
    sequence_length)`. Attentions weights after the attention softmax.
Nc                óú   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[S[ P                  R3,          R,          ;R&   S[S[ P                  R3,          R,          ;R&   # )r#   Nr;   Únormals.r=   r>   r?   )r(   r)   s   "€r*   r+   Ú*Sapiens2NormalEstimatorOutput.__annotate__]   sy   ø‡ ‚ ñ* ×
Ñ
˜dÕ
"Ñ)ñ+ ñ, ×Ñ Õ%Ñ,ñ- ñ. ™×*Ñ*¨CÐ/Õ0°4Õ7Ñ>ñ/ ñ0 ‘e×'Ñ'¨Ð,Õ-°Õ4Ñ;ò1 r-   r.   )r/   r0   r1   r2   r3   r;   rD   r=   r>   r4   r5   r6   r7   s   @r*   rB   rB   ]   s'   ø‡ € ñð &*€DØ(,€GØ:>€MØ7;€J÷1 ƒ r-   rB   z:
    Class for outputs of pointmap estimation models.
    c                   óD   a € ] tR t^xt o RtRtRtRtRtRt	V 3R lt
RtV tR# )ÚSapiens2PointmapEstimatorOutputaŒ  
loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `labels` is provided):
    Pointmap estimation loss.
pointmaps (`torch.FloatTensor` of shape `(batch_size, 3, height, width)`):
    Per-pixel 3D XYZ coordinate predictions in canonical camera space.
scales (`torch.FloatTensor` of shape `(batch_size, 1)`, *optional*):
    Canonical focal length / actual focal length ratio. `None` when no scale branch is configured.
hidden_states (`tuple(torch.FloatTensor)`, *optional*, returned when `output_hidden_states=True` is passed or when `config.output_hidden_states=True`):
    Tuple of `torch.FloatTensor` (one for the output of the embeddings + one for the output of each stage)
    of shape `(batch_size, sequence_length, hidden_size)`. Hidden-states of the model at the output of
    each layer plus the initial embedding outputs.
attentions (`tuple(torch.FloatTensor)`, *optional*, returned when `output_attentions=True` is passed or when `config.output_attentions=True`):
    Tuple of `torch.FloatTensor` (one per layer) of shape `(batch_size, num_heads, sequence_length,
    sequence_length)`. Attentions weights after the attention softmax.
Nc                ó(  <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[S[ P                  R3,          R,          ;R&   S[S[ P                  R3,          R,          ;R&   # )r#   Nr;   Ú	pointmapsÚscales.r=   r>   r?   )r(   r)   s   "€r*   r+   Ú,Sapiens2PointmapEstimatorOutput.__annotate__x   s‘   ø‡ ‚ ñ. ×
Ñ
˜dÕ
"Ñ)ñ/ ñ0 × Ñ  4Õ'Ñ.ñ1 ñ2 ×Ñ Õ$Ñ+ñ3 ñ4 ™×*Ñ*¨CÐ/Õ0°4Õ7Ñ>ñ5 ñ6 ‘e×'Ñ'¨Ð,Õ-°Õ4Ñ;ò7 r-   r.   )r/   r0   r1   r2   r3   r;   rI   rJ   r=   r>   r4   r5   r6   r7   s   @r*   rG   rG   x   s,   ø‡ € ñð  &*€DØ*.€IØ'+€FØ:>€MØ7;€J÷7 ƒ r-   rG   z4
    Class for outputs of image matting models.
    c                   óD   a € ] tR t^–t o RtRtRtRtRtRt	V 3R lt
RtV tR# )ÚSapiens2ImageMattingOutputa"  
loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `labels` is provided):
    Loss.
alphas (`torch.FloatTensor` of shape `(batch_size, 1, height, width)`):
    Estimated alpha values.
hidden_states (`tuple(torch.FloatTensor)`, *optional*, returned when `output_hidden_states=True` is passed or when `config.output_hidden_states=True`):
    Tuple of `torch.FloatTensor` (one for the output of the embeddings, if the model has an embedding layer, +
    one for the output of each stage) of shape `(batch_size, sequence_length, hidden_size)`. Hidden-states
    (also called feature maps) of the model at the output of each stage.
foregrounds (`torch.FloatTensor` of shape `(batch_size, 3, height, width)`):
    Pre-multiplied RGB foreground predictions in `[0, 1]` (sigmoid-activated).
Nc                ó   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   S[ P                  R,          ;R&   # )r#   Nr;   Úalphasr=   r>   Úforegroundsr?   )r(   r)   s   "€r*   r+   Ú'Sapiens2ImageMattingOutput.__annotate__–   s‡   ø‡ ‚ ñ( ×
Ñ
˜dÕ
"Ñ)ñ) ñ* ×Ñ Õ$Ñ+ñ+ ñ, ™×*Ñ*Õ+¨dÕ2Ñ9ñ- ñ. ‘e×'Ñ'Õ(¨4Õ/Ñ6ñ/ ñ2 ×"Ñ" TÕ)Ñ0ò3 r-   r.   )r/   r0   r1   r2   r3   r;   rO   r=   r>   rP   r4   r5   r6   r7   s   @r*   rM   rM   –   s,   ø‡ € ñð &*€DØ'+€FØ59€MØ26€Jà,0€K÷3 ƒ r-   rM   c                   óX   a a€ ] tR t^²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	# )ÚSapiens2EmbeddingszE
Construct the CLS token, mask token, position and patch embeddings.
c                ó    <€ V ^8„  d   QhRS[ /# ©r#   Úconfigr   )r(   r)   s   "€r*   r+   ÚSapiens2Embeddings.__annotate__·   s   ø€ ÷ 
ñ 
™~ñ 
r-   c                ó\  <€ \         SV `  4        Wn        \        P                  ! \
        P                  ! ^^VP                  4      4      V n        VP                  '       d7   \        P                  ! \
        P                  ! ^^VP                  4      4      MRV n        \        P                  ! \
        P                  ! ^VP                  VP                  4      4      V n        \        P                  ! VP                   VP                  VP"                  VP"                  R7      V n        R# )é   N)Úkernel_sizeÚstride)ÚsuperÚ__init__rV   r   Ú	Parameterr&   ÚrandnÚhidden_sizeÚ	cls_tokenÚuse_mask_tokenÚzerosÚ
mask_tokenÚemptyÚnum_register_tokensÚregister_tokensÚConv2dÚnum_channelsÚ
patch_sizeÚpatch_embeddings©ÚselfrV   Ú	__class__s   &&€r*   r]   ÚSapiens2Embeddings.__init__·   sÅ   ø€ Ü‰ÑÔØŒÜŸš¤e§k¢k°!°Q¸×8JÑ8JÓ&KÓLˆŒØQW×Qf×QfÐQfœ"Ÿ,š,¤u§{¢{°1°a¸×9KÑ9KÓ'LÔMÐlpˆŒÜ!Ÿ|š|¬E¯KªK¸¸6×;UÑ;UÐW]×WiÑWiÓ,jÓkˆÔÜ "§	¢	Ø×Ñ ×!3Ñ!3À×ARÑARÐ[a×[lÑ[lô!
ˆÖr-   c                óv   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  /# )r#   Úpixel_valuesÚbool_masked_posNÚreturn©r&   r   )r(   r)   s   "€r*   r+   rW   Á   s7   ø€ ÷ ñ ¡E§L¡Lð Á5Ç<Á<ÐRVÕCVð Ñbg×bnÑbnñ r-   c                óp  € Ve   V P                   f   \        R4      hVP                  ^ ,          pV P                  P                  P
                  pV P                  VP                  VR7      4      pVP                  ^4      P                  ^^4      pVeL   V P                   P                  VP
                  4      p\        P                  ! VP                  R4      We4      pV P                  P                  VRR4      pV P                  P                  VRR4      p\        P                  ! WxV.^R7      p	V	# )Nz:bool_masked_pos requires use_mask_token=True in the config©Údtype©Údiméÿÿÿÿ)rd   Ú
ValueErrorÚshaperk   Úweightrw   ÚtoÚflattenÚ	transposer&   ÚwhereÚ	unsqueezera   Úexpandrg   Úcat)
rm   rq   rr   Ú
batch_sizeÚtarget_dtyperk   rd   ra   rg   Ú
embeddingss
   &&&       r*   ÚforwardÚSapiens2Embeddings.forwardÁ   s  € ØÒ&¨4¯?©?Ò+BÜÐYÓZÐZØ!×'Ñ'¨Õ*ˆ
Ø×,Ñ,×3Ñ3×9Ñ9ˆð  ×0Ñ0°·±À|°Ó1TÓUÐØ+×3Ñ3°AÓ6×@Ñ@ÀÀAÓFÐàÒ&ØŸ™×+Ñ+Ð,<×,BÑ,BÓCˆJÜ$Ÿ{š{¨?×+DÑ+DÀRÓ+HÈ*ÓgÐð —N‘N×)Ñ)¨*°b¸"Ó=ˆ	Ø×.Ñ.×5Ñ5°jÀ"ÀbÓIˆÜ—Y’Y 	Ð<LÐMÐSTÔUˆ
àÐr-   )ra   rV   rd   rk   rg   ©N©
r/   r0   r1   r2   r3   r]   rˆ   r5   r6   Ú__classcell__©rn   r)   s   @@r*   rS   rS   ²   s#   ù‡ € ñ÷
ó 
÷÷ ò r-   rS   )Úmaxsizec          
      ó�   € V ^8„  d   QhR\         R\         R\        P                  R\        P                  R\        P                  /# )r#   Únum_patches_hÚnum_patches_wrw   Údevicers   )Úintr&   rw   r’   r   )r(   s   "r*   r+   r+   Ø   s@   € ÷ ñ ÜðÜ'*ðÜ38·;±;ðÜHMÏÉðä
‡\�\ñr-   c                ó*  € \         P                  ! RWVR7      p\         P                  ! RWVR7      pW@,          pWQ,          p\         P                  ! \         P                  ! WERR7      RR7      pVP	                  ^ ^4      pRV,          R,
          pV# )	aI  
Computes the 2D coordinates of the centers of image patches, normalized to the range [-1, +1].
The center of each patch is exactly halfway between its top-left and bottom-right corners.

Args:
    num_patches_h (int): Number of patches along the vertical (height) axis.
    num_patches_w (int): Number of patches along the horizontal (width) axis.
    dtype (torch.dtype): The desired data type of the returned tensor.

Returns:
    torch.Tensor: A tensor of shape (height * width, 2), where each row contains the (y, x)
        coordinates of a patch center, normalized to [-1, +1].
g      à?©rw   r’   Úij)Úindexingrx   g       @g      ð?rz   )r&   ÚarangeÚstackÚmeshgridr   )r�   r‘   rw   r’   Úcoords_hÚcoords_wÚcoordss   &&&&   r*   Úget_patches_center_coordinatesrž   ×   sw   € ô" �|Š|˜C ÀFÔK€HÜ�|Š|˜C ÀFÔK€HØÕ'€HØÕ'€Hä�[Š[œŸš¨ÀTÔJÐPRÔS€FØ�^‰^˜A˜qÓ!€Fà�6�\˜CÕ€FØ€Mr-   c          
      ó¦   € V ^8„  d   QhR\         P                  R\        R,          R\        R,          R\        R,          R\         P                  /# )r#   r�   ÚshiftNÚjitterÚrescalers   )r&   r   Úfloat)r(   s   "r*   r+   r+   ô   sN   € ÷ ñ Ü�L‰Lðä�4�<ðô �D�Lðô �T�\ð	ô
 ‡\�\ñr-   c                 ó^  € VeI   \         P                  ! RV P                  V P                  R7      pVP	                  V) V4      pW,           p Vem   \
        P                  ! V4      p\         P                  ! RV P                  V P                  R7      pVP	                  V) V4      P                  4       pW,          p Vem   \
        P                  ! V4      p\         P                  ! ^V P                  V P                  R7      pVP	                  V) V4      P                  4       pW,          p V # )N)r’   rw   )rY   r#   )r&   re   r’   rw   Úuniform_ÚnpÚlogÚexp)	r�   r    r¡   r¢   Úshift_hwÚjitter_rangeÚ	jitter_hwÚrescale_rangeÚ
rescale_hws	   &&&&     r*   Ú"augment_patches_center_coordinatesr®   ô   sí   € ð ÒÜ—;’;˜v¨f¯m©mÀ6Ç<Á<ÔPˆØ×$Ñ$ e V¨UÓ3ˆØÕ"ˆð ÒÜ—v’v˜f“~ˆÜ—K’K ¨v¯}©}ÀFÇLÁLÔQˆ	Ø×&Ñ&¨ }°lÓC×GÑGÓIˆ	ØÕ#ˆð ÒÜŸš˜w›ˆÜ—[’[ ¨6¯=©=ÀÇÁÔMˆ
Ø×(Ñ(¨-¨¸ÓG×KÑKÓMˆ
ØÕ$ˆà€Mr-   c                   ó\   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V3R ltRtVtV ;t	# )ÚSapiens2RopePositionEmbeddingi  c                ó    <€ V ^8„  d   QhRS[ /# rU   r   )r(   r)   s   "€r*   r+   Ú*Sapiens2RopePositionEmbedding.__annotate__  s   ø€ ÷ 5ñ 5™~ñ 5r-   c           	     ó”  <€ \         S	V `  4        Wn        VP                  V n        VP
                  VP                  ,          V n        ^V P                  \        P                  ! ^ ^^V P                  ,          \        P                  R7      ,          ,          p\        P                  ! VRR7      V n        VP                  p\        V\         4      '       d   TMW33w  rEVP"                  p\        V\$        4      '       d   TMV^ ,          p\        V\$        4      '       d   TMV^,          pWG,          V n        WX,          V n        R# )rY   rv   F)Ú
persistentN)r\   r]   rV   Ú
rope_thetaÚbaser`   Únum_attention_headsÚhead_dimr&   r˜   Úfloat32r   ÚBufferÚinv_freqÚ
image_sizeÚ
isinstancer   rj   r“   r�   r‘   )
rm   rV   r»   r¼   Úimage_hÚimage_wrj   Úpatch_size_hÚpatch_size_wrn   s
   &&       €r*   r]   Ú&Sapiens2RopePositionEmbedding.__init__  sò   ø€ Ü‰ÑÔàŒØ×%Ñ%ˆŒ	Ø×*Ñ*¨f×.HÑ.HÕHˆŒà�t—y‘y¤E§L¢L°°A°q¸4¿=¹=Õ7HÔPU×P]ÑP]Ô$^Õ^Õ^ˆÜŸ	š	 (°uÔ=ˆŒØ×&Ñ&ˆ
Ü)3°JÄ×)IÒ)I™:ÐPZÐOgÑˆØ×&Ñ&ˆ
Ü%/°
¼C×%@Ò%@‘zÀjÐQRÅmˆÜ%/°
¼C×%@Ò%@‘zÀjÐQRÅmˆØ$Õ4ˆÔØ$Õ4ˆÖr-   c                óx   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  S[ P                  3,          /# )r#   rq   rs   ©r&   r   r%   )r(   r)   s   "€r*   r+   r²   %  s1   ø€ ÷  8ñ  8¡E§L¡Lð  8±U¹5¿<¹<ÉÏÉÐ;UÕ5Vñ  8r-   c           	     óô  € VP                   w   r#pW0P                  P                  ,          pW@P                  P                  ,          pVP                  p\	        VP
                  \        4      '       d   VP
                  R 8w  d   VP
                  MRp\        VRR7      ;_uu_ 4        \        WV\        P                  VR7      p	V P                  '       dL   \        V	V P                  P                  V P                  P                  V P                  P                  R7      p	^\         P"                  ,          V	R,          ,          V P$                  R	,          ,          p
V
P'                  ^^4      p
V
P)                  ^4      p
\        P*                  ! V
4      p\        P,                  ! V
4      pRRR4       VP.                  pXP1                  VR7      XP1                  VR7      3#   + '       g   i     L@; i)
ÚmpsÚcpuF)Údevice_typeÚenabledr•   )r    r¡   r¢   Nrv   )ºNNNrÊ   N)NNrÊ   )r|   rV   rj   r’   r½   ÚtypeÚstrr   rž   r&   r¹   Útrainingr®   Úpos_embed_shiftÚpos_embed_jitterÚpos_embed_rescaleÚmathÚpir»   r   ÚtileÚcosÚsinrw   r~   )rm   rq   Ú_ÚheightÚwidthr�   r‘   r’   rÈ   Úpatch_coordsÚanglesrÔ   rÕ   rw   s   &&            r*   rˆ   Ú%Sapiens2RopePositionEmbedding.forward%  sl  € Ø*×0Ñ0Ñˆˆ1�eØ§+¡+×"8Ñ"8Õ8ˆØ§¡×!7Ñ!7Õ7ˆà×$Ñ$ˆÜ%/°·±¼S×%AÒ%AÀfÇkÁkÐUZÔFZ�f—k’kÐ`eˆä¨¸U×CÖCô :Ø´E·M±MÈ&ôˆLð �}�}ˆ}ÜAØ ØŸ+™+×5Ñ5ØŸ;™;×7Ñ7Ø ŸK™K×9Ñ9ô	 �ð œŸ™•[ <°
Õ#;Õ;¸d¿m¹mÈMÕ>ZÕZˆFØ—^‘^ A qÓ)ˆFØ—[‘[ “^ˆFä—)’)˜FÓ#ˆCÜ—)’)˜FÓ#ˆC÷+ Dð. ×"Ñ"ˆØ�v‰v˜EˆvÓ" C§F¡F° FÓ$7Ð7Ð7÷1 D×Cús   Â)DG'Ç'G7	c                ó:   <€ V ^8„  d   Qh/ S[ P                  ;R&   # )r#   r»   rt   )r(   r)   s   "€r*   r+   r²     s   ø‡ ‚ Ù�l‰lÑò r-   )r¶   rV   r¸   r»   r�   r‘   )
r/   r0   r1   r2   r]   rˆ   r4   r5   r6   rŒ   r�   s   @@r*   r°   r°     s    ù‡ € ÷5ó 5÷" 8ð  8÷) … r-   r°   ÚRMSNormc                   óZ   a a€ ] tR tRt oRV3R lV 3R llltV3R lR ltR tRtVtV ;t	# )	ÚSapiens2RMSNormiH  c                ó$   <€ V ^8„  d   QhRS[ RR/# )r#   Úepsrs   N©r£   )r(   r)   s   "€r*   r+   ÚSapiens2RMSNorm.__annotate__J  s   ø€ ÷ $ñ $©ð $¸$ñ $r-   c                óŽ   <€ \         SV `  4        \        P                  ! \        P
                  ! V4      4      V n        W n        R# )z.
Sapiens2RMSNorm is equivalent to T5LayerNorm
N)r\   r]   r   r^   r&   Úonesr}   Úvariance_epsilon)rm   r`   rá   rn   s   &&&€r*   r]   ÚSapiens2RMSNorm.__init__J  s/   ø€ ô 	‰ÑÔÜ—l’l¤5§:¢:¨kÓ#:Ó;ˆŒØ #Ör-   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r#   r=   rs   rt   )r(   r)   s   "€r*   r+   rã   R  s#   ø€ ÷ ;ñ ;¡U§\¡\ð ;±e·l±lñ ;r-   c                ó:  € VP                   pVP                  \        P                  4      pVP	                  ^4      P                  RRR7      pV\        P                  ! W0P                  ,           4      ,          pV P                  VP                  V4      ,          # )r#   T)Úkeepdimrz   )	rw   r~   r&   r¹   ÚpowÚmeanÚrsqrtræ   r}   )rm   r=   Úinput_dtypeÚvariances   &&  r*   rˆ   ÚSapiens2RMSNorm.forwardR  sw   € Ø#×)Ñ)ˆØ%×(Ñ(¬¯©Ó7ˆØ ×$Ñ$ QÓ'×,Ñ,¨R¸Ð,Ó>ˆØ%¬¯ª°H×?TÑ?TÕ4TÓ(UÕUˆØ�{‰{˜]×-Ñ-¨kÓ:Õ:Ð:r-   c                ó^   € \        V P                  P                  4       R V P                   2# )z, eps=)r%   r}   r|   ræ   ©rm   s   &r*   Ú
extra_reprÚSapiens2RMSNorm.extra_reprY  s*   € Ü˜Ÿ™×)Ñ)Ó*Ð+¨6°$×2GÑ2GÐ1HÐIÐIr-   )ræ   r}   )g�íµ ÷Æ°>)
r/   r0   r1   r2   r]   rˆ   rô   r5   r6   rŒ   r�   s   @@r*   rß   rß   H  s%   ù‡ € ÷$õ $÷;ð ;÷Jò Jr-   rß   c                óÌ   € V RRV P                   R,          ^,          13,          pV RV P                   R,          ^,          R13,          p\        P                  ! V) V3RR7      # )z*Rotates half the hidden dims of the input..Nrx   rz   )r|   r&   r„   )ÚxÚx1Úx2s   &  r*   Úrotate_halfrú   ]  sZ   € à	
ˆ3Ð"�!—'‘'˜"•+ Õ"Ð"Ð"Õ	#€BØ	
ˆ3�—‘˜•˜qÕ Ñ"Ð"Õ	#€BÜ�9Š9�r�c˜2�Y BÔ'Ð'r-   c                ór  € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R\        P                  R\        P                  R,          R\        \
        ,          R\        R,          R	\        R,          R
\        \        P                  \        P                  3,          /	# )r#   ÚmoduleÚqueryÚkeyÚvalueÚattention_maskNÚdropoutÚscalingÚsoftcaprs   )r   ÚModuler&   r   r£   r“   r%   )r(   s   "r*   r+   r+   d  s™   € ÷ %ñ %Ü�I‰Ið%ä�<‰<ð%ô 
�‰ð%ô �<‰<ð	%ô
 —L‘L 4Õ'ð%ô ”S�[ð%ô �T�\ð%ô �T�\ð%ô Œ5�<‰<œŸ™Ð%Õ&ñ%r-   c                 ó¤  € Vf   V P                   R,          p\        W P                  4      p	\        W0P                  4      p
\        P                  ! WP                  ^^4      4      V,          pVe'   W·,          p\        P                  ! V4      pW·,          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# )N)ry   rw   )ÚprÍ   ç      à¿rz   )r¸   Ú	repeat_kvÚnum_key_value_groupsr&   Úmatmulr€   Útanhr   Ú
functionalÚsoftmaxr¹   r~   rw   r  rÍ   Ú
contiguous)rü   rý   rþ   rÿ   r   r  r  r  ÚkwargsÚ
key_statesÚvalue_statesÚattn_weightsÚattn_outputs   &&&&&&&&,    r*   Úeager_attention_forwardr  d  s  € ð ‚Ø—/‘/ 4Õ'ˆä˜3× ;Ñ ;Ó<€JÜ˜U×$?Ñ$?Ó@€Lä—<’< ×';Ñ';¸A¸qÓ'AÓBÀWÕL€LàÒØ#Õ-ˆÜ—z’z ,Ó/ˆØ#Õ-ˆØÒ!Ø#Õ4ˆô —=‘=×(Ñ(¨¸2ÄUÇ]Á]Ð(ÓS×VÑVÐW\×WbÑWbÓc€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ó[€LÜ—,’,˜|Ó:€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KØÐ$Ð$r-   c                óî   € V ^8„  d   QhR\         P                  R\         P                  R\         P                  R\         P                  R\        \         P                  \         P                  3,          /# )r#   ÚqÚkrÔ   rÕ   rs   rÄ   )r(   s   "r*   r+   r+   †  sV   € ÷ ñ Ü‡|�|ðÜŸ™ðÜ+0¯<©<ðÜ>C¿l¹lðä
Œ5�<‰<œŸ™Ð%Õ&ñr-   c                óœ  € V P                   R,          pVP                   R,          pWV,
          pV P                  Wv3RR7      w  r‰VP                  Wv3RR7      w  r«W’,          \        V	4      V,          ,           p	W²,          \        V4      V,          ,           p\        P                  ! W‰3RR7      p \        P                  ! W«3RR7      pW3# )að  Applies Rotary Position Embedding to the query and key tensors, but only to the patch tokens,
ignoring the prefix tokens (cls token and register tokens).

Args:
    q (`torch.Tensor`): The query tensor.
    k (`torch.Tensor`): The key tensor.
    cos (`torch.Tensor`): The cosine part of the rotary embedding.
    sin (`torch.Tensor`): The sine part of the rotary embedding.

Returns:
    `tuple(torch.Tensor)` comprising of the query and key tensors rotated using the Rotary Position Embedding.
rx   éþÿÿÿ)r|   Úsplitrú   r&   r„   )r  r  rÔ   rÕ   r  Ú
num_tokensÚnum_patchesÚnum_prefix_tokensÚq_prefix_tokensÚ	q_patchesÚk_prefix_tokensÚ	k_patchess   &&&&,       r*   Úapply_rotary_pos_embr"  †  s´   € ð  —‘˜•€JØ—)‘)˜B•-€KØ"Õ0Ðà!"§¡Ð*;Ð)IÈr Ó!RÑ€OØ!"§¡Ð*;Ð)IÈr Ó!RÑ€Oð •¤[°Ó%;¸cÕ%AÕB€IØ•¤[°Ó%;¸cÕ%AÕB€Iä�	Š	�?Ð.°BÔ7€AÜ�	Š	�?Ð.°BÔ7€Aàˆ4€Kr-   c                ód   € V ^8„  d   QhR\         P                  R\        R\         P                  /# )r#   r=   Ún_reprs   )r&   r   r“   )r(   s   "r*   r+   r+   §  s.   € ÷ 	Uñ 	UœUŸ\™\ð 	U´#ð 	U¼%¿,¹,ñ 	Ur-   c                ó˜   € V P                   w  r#rEV^8X  d   V # V R,          P                  W#WV4      p V P                  W#V,          WE4      # )zÈ
This is the equivalent of torch.repeat_interleave(x, dim=1, repeats=n_rep). The hidden states go from (batch,
num_key_value_heads, seqlen, head_dim) to (batch, num_attention_heads, seqlen, head_dim)
)rÊ   rÊ   NrÊ   rÊ   )r|   rƒ   Úreshape)r=   r$  ÚbatchÚnum_key_value_headsÚslenr¸   s   &&    r*   r  r  §  sU   € ð
 2?×1DÑ1DÑ.€E Ø�„zØÐØ!Ð"2Õ3×:Ñ:¸5ÐW\ÐdlÓm€MØ× Ñ  ¸eÕ(CÀTÓTÐTr-   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	# )	ÚSapiens2Attentioni³  zA
Multi-headed attention compatible with ALL_ATTENTION_FUNCTIONS.
c                ó&   <€ V ^8„  d   QhRS[ RS[/# ©r#   rV   Ú	layer_idx©r   r“   )r(   r)   s   "€r*   r+   ÚSapiens2Attention.__annotate__¸  s   ø€ ÷ wñ w™~ð w¹#ñ wr-   c                ó   <€ \         SV `  4        Wn        VP                  V n        VP
                  V n        V P                  V P                  ,          V n        R V n        V P                  R,          V n	        R V n        VP                  V n        \        P                  ! V P                  V P                  VP                  R7      V n        \        P                  ! V P                  V P                  VP                   R7      V n        VP$                  V,          V n        V P                  V P&                  ,          V n        \        P                  ! V P                  V P&                  V P                  ,          VP*                  R7      V n        \        P                  ! V P                  V P&                  V P                  ,          VP.                  R7      V n        VP2                  '       d"   \5        V P                  VP6                  R7      M\        P8                  ! 4       V n        VP2                  '       d)   \5        V P                  VP6                  R7      V n        R# \        P8                  ! 4       V n        R# )F©Úbias©rá   Nr  )r\   r]   rV   r`   Ú	embed_dimr·   Ú	num_headsr¸   Ú	is_causalr  Úattention_dropoutr  r   ÚLinearÚ
query_biasÚq_projÚ	proj_biasÚo_projÚnum_key_value_heads_per_layerr(  r	  Úkey_biasÚk_projÚ
value_biasÚv_projÚuse_qk_normrß   Úrms_norm_epsÚIdentityÚq_normÚk_norm©rm   rV   r.  rn   s   &&&€r*   r]   ÚSapiens2Attention.__init__¸  s˜  ø€ Ü‰ÑÔØŒØ×+Ñ+ˆŒØ×3Ñ3ˆŒØŸ™¨$¯.©.Õ8ˆŒØˆŒà—}‘} dÕ*ˆŒØˆŒà×/Ñ/ˆŒä—i’i §¡°·±ÀV×EVÑEVÔWˆŒÜ—i’i §¡°·±ÀV×EUÑEUÔVˆŒØ#)×#GÑ#GÈ	Õ#RˆÔ Ø$(§N¡N°d×6NÑ6NÕ$NˆÔ!Ü—i’i §¡°×0HÑ0HÈ4Ï=É=Õ0XÐ_e×_nÑ_nÔoˆŒÜ—i’i §¡°×0HÑ0HÈ4Ï=É=Õ0XÐ_e×_pÑ_pÔqˆŒØQW×Qc×QcÐQc”o d§m¡m¸×9LÑ9LÕMÔik×itÒitÓivˆŒØQW×Qc×QcÐQc”o d§m¡m¸×9LÑ9LÔMˆŽÔik×itÒitÓivˆŽr-   c                ó  <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[ P                  S[ P                  3,          R,          RS[S[,          RS[S[ P                  S[ P                  R,          3,          /# ©r#   r=   r   NÚposition_embeddingsr  rs   ©r&   r   r%   r   r   )r(   r)   s   "€r*   r+   r0  Î  s~   ø€ ÷ $)ñ $)á—|‘|ð$)ñ Ÿ™ tÕ+ð$)ñ #¡5§<¡<±·±Ð#=Õ>ÀÕEð	$)ñ
 Ñ+Õ,ð$)ñ 
‰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4      P	                  ^^4      pV P                  V4      P                  V4      P	                  ^^4      pV P                  V4      P                  V4      P	                  ^^4      p	V P                  V4      pV P                  V4      pVw  r«\        WxW«4      w  rx\        P                  ! V P                  P                  \        4      pT! V VVV	V3RV P                  '       g   RMV P                   R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  rz   )r|   r¸   r;  Úviewr€   r@  rB  rF  rG  r"  r   Úget_interfacerV   Ú_attn_implementationr  rÍ   r  r  r&  r  r=  )rm   r=   r   rL  r  Úinput_shapeÚhidden_shapeÚquery_statesr  r  rÔ   rÕ   Úattention_interfacer  r  s   &&&&,          r*   rˆ   ÚSapiens2Attention.forwardÎ  s  € ð $×)Ñ)¨#¨2Ð.ˆØ8˜Ð8 bÐ8¨$¯-©-Ñ8ˆà—{‘{ =Ó1×6Ñ6°|ÓD×NÑNÈqÐRSÓTˆØ—[‘[ Ó/×4Ñ4°\ÓB×LÑLÈQÐPQÓRˆ
Ø—{‘{ =Ó1×6Ñ6°|ÓD×NÑNÈqÐRSÓTˆØ—{‘{ <Ó0ˆØ—[‘[ Ó,ˆ
à&‰ˆÜ#7¸ÐRUÓ#[Ñ ˆä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØñ	%
ð  $Ÿ}Ÿ}˜}‘C°$·,±,ð	%
ð —L‘Lð	%
ð ñ	%
Ñ!ˆð "×)Ò)Ð;¨;Ð;¸Ó;×FÑFÓHˆØ—k‘k +Ó.ˆØÐ(Ð(r-   )rV   r  r5  r¸   r7  rG  r@  r6  r	  r(  r=  rF  r;  r  rB  ©NNr‹   r�   s   @@r*   r+  r+  ³  s%   ù‡ € ñ÷wó w÷,$)÷ $)ò $)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# )ÚSapiens2LayerScaleiõ  c                ó   <€ V ^8„  d   QhRR/# ©r#   rs   Nr.   )r(   r)   s   "€r*   r+   ÚSapiens2LayerScale.__annotate__ö  s   ø€ ÷ ^ñ ^ $ñ ^r-   c                ó¸   <€ \         SV `  4        \        P                  ! VP                  \
        P                  ! VP                  4      ,          4      V n        R # rŠ   )	r\   r]   r   r^   Úlayerscale_valuer&   rå   r`   Úlambda1rl   s   &&€r*   r]   ÚSapiens2LayerScale.__init__ö  s8   ø€ Ü‰ÑÔÜ—|’| F×$;Ñ$;¼e¿jºjÈ×I[ÑI[Ó>\Õ$\Ó]ˆŽr-   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r#   Úhidden_staters   rt   )r(   r)   s   "€r*   r+   r]  ú  s#   ø€ ÷ +ñ +¡E§L¡Lð +±U·\±\ñ +r-   c                ó&   € WP                   ,          # rŠ   ©r`  )rm   rc  s   &&r*   rˆ   ÚSapiens2LayerScale.forwardú  s   € ØŸl™lÕ*Ð*r-   re  ©	r/   r0   r1   r2   r]   rˆ   r5   r6   rŒ   r�   s   @@r*   rZ  rZ  õ  s    ù‡ € ÷^ó ^÷+÷ +ð +r-   rZ  c                   ó8   a a€ ] tR tRt oV 3R ltR tRtVtV ;t# )ÚSapiens2MLPiþ  c                óœ  <€ \         SV `  4        Wn        VP                  V n        VP                  V n        \
        P                  ! V P                  V P                  VP                  R 7      V n        \
        P                  ! V P                  V P                  VP                  R 7      V n	        \        VP                  ,          V n        R# ©r2  N)r\   r]   rV   r`   Úintermediate_sizer   r9  Úmlp_biasÚup_projÚ	down_projr	   Ú
hidden_actÚact_fnrl   s   &&€r*   r]   ÚSapiens2MLP.__init__ÿ  s�   ø€ Ü‰ÑÔØŒØ!×-Ñ-ˆÔØ!'×!9Ñ!9ˆÔÜ—y’y ×!1Ñ!1°4×3IÑ3IÐPV×P_ÑP_Ô`ˆŒÜŸš 4×#9Ñ#9¸4×;KÑ;KÐRX×RaÑRaÔbˆŒÜ˜V×.Ñ.Õ/ˆŽr-   c                ó`   € V P                  V P                  V P                  V4      4      4      # rŠ   )ro  rq  rn  )rm   r÷   s   &&r*   rˆ   ÚSapiens2MLP.forward  s"   € Ø�~‰~˜dŸk™k¨$¯,©,°q«/Ó:Ó;Ð;r-   )rq  rV   ro  r`   rl  rn  rg  r�   s   @@r*   ri  ri  þ  s   ù‡ € õ0÷<ò <r-   ri  c                   ó8   a a€ ] tR tRt oV 3R ltR tRtVtV ;t# )ÚSapiens2GatedMLPi  c                ó  <€ \         SV `  4        Wn        VP                  V n        VP                  V n        \
        P                  ! V P                  V P                  VP                  R 7      V n        \
        P                  ! V P                  V P                  VP                  R 7      V n	        \
        P                  ! V P                  V P                  VP                  R 7      V n
        \        VP                  ,          V n        R# rk  )r\   r]   rV   r`   rl  r   r9  rm  Ú	gate_projrn  ro  r	   rp  rq  rl   s   &&€r*   r]   ÚSapiens2GatedMLP.__init__  s¶   ø€ Ü‰ÑÔØŒØ!×-Ñ-ˆÔØ!'×!9Ñ!9ˆÔÜŸš 4×#3Ñ#3°T×5KÑ5KÐRX×RaÑRaÔbˆŒÜ—y’y ×!1Ñ!1°4×3IÑ3IÐPV×P_ÑP_Ô`ˆŒÜŸš 4×#9Ñ#9¸4×;KÑ;KÐRX×RaÑRaÔbˆŒÜ˜V×.Ñ.Õ/ˆŽr-   c                ó�   € V P                  V P                  V P                  V4      4      V P                  V4      ,          4      pV# rŠ   )ro  rq  rx  rn  )rm   r÷   ro  s   && r*   rˆ   ÚSapiens2GatedMLP.forward  s6   € Ø—N‘N 4§;¡;¨t¯~©~¸aÓ/@Ó#AÀDÇLÁLÐQRÃOÕ#SÓTˆ	ØÐr-   )rq  rV   ro  rx  r`   rl  rn  rg  r�   s   @@r*   rv  rv    s   ù‡ € õ0÷ò r-   rv  c                   ój   a a€ ] tR tRt oRtR
V3R lV 3R llltV3R lR ltV3R lR ltR	tVt	V ;t
# )ÚSapiens2DropPathi  zÃStochastic depth (DropPath) per sample, for residual blocks.

Identity when ``drop_prob`` is 0 or outside training. See `Deep Networks with Stochastic Depth
<https://arxiv.org/abs/1603.09382>`_.
c                ó$   <€ V ^8„  d   QhRS[ RR/# )r#   Ú	drop_probrs   Nrâ   )r(   r)   s   "€r*   r+   ÚSapiens2DropPath.__annotate__#  s   ø€ ÷ #ñ #¡%ð #°$ñ #r-   c                ó0   <€ \         SV `  4        Wn        R # rŠ   )r\   r]   r  )rm   r  rn   s   &&€r*   r]   ÚSapiens2DropPath.__init__#  s   ø€ Ü‰ÑÔØ"Žr-   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ré   rt   )r(   r)   s   "€r*   r+   r€  '  s#   ø€ ÷ <ñ <¡U§\¡\ð <±e·l±lñ <r-   c                ó˜  € V P                   R 8X  g   V P                  '       g   V# ^V P                   ,
          pVP                  ^ ,          3RVP                  ^,
          ,          ,           p\        P
                  ! W1P                  VP                  R7      p\        P                  ! WB,           4      pVP                  V4      V,          # )rO  r•   )rY   )
r  rÍ   r|   Úndimr&   Úrandrw   r’   ÚfloorÚdiv)rm   r=   Ú	keep_probr|   Úrandom_tensors   &&   r*   rˆ   ÚSapiens2DropPath.forward'  s•   € Ø�>‰>˜SÔ ¨¯¯¨Ø Ð Ø˜Ÿ™Õ&ˆ	Ø×$Ñ$ QÕ'Ð)¨D°M×4FÑ4FÈÕ4JÕ,KÕKˆÜŸ
š
 5×0CÑ0CÈM×L`ÑL`ÔaˆÜŸš MÕ$=Ó>ˆØ× Ñ  Ó+¨mÕ;Ð;r-   c                ó    <€ V ^8„  d   QhRS[ /# )r#   rs   )rÌ   )r(   r)   s   "€r*   r+   r€  0  s   ø€ ÷ %ñ %™Cñ %r-   c                ó    € R V P                    2# )zp=©r  ró   s   &r*   rô   ÚSapiens2DropPath.extra_repr0  s   € Ø�D—N‘NÐ#Ð$Ð$r-   rŽ  )rO  )r/   r0   r1   r2   r3   r]   rˆ   rô   r5   r6   rŒ   r�   s   @@r*   r}  r}    s-   ù‡ € ñ÷#õ #÷<ð <÷%÷ %ð %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	# )	ÚSapiens2Layeri4  zCThis corresponds to the Block class in the original implementation.c                ó&   <€ V ^8„  d   QhRS[ RS[/# r-  r/  )r(   r)   s   "€r*   r+   ÚSapiens2Layer.__annotate__7  s   ø€ ÷ *ñ *™~ð *¹#ñ *r-   c                ó  <€ \         SV `  4        \        VP                  VP                  R 7      V n        \        WR7      V n        \        V4      V n	        VP                  R8”  d   \        VP                  4      M\        P                  ! 4       V n        \        VP                  VP                  R 7      V n        VP                   '       d   \#        V4      V n        M\'        V4      V n        \        P                  ! 4       V n        R# )r4  ©r.  rO  N)r\   r]   rß   r`   rD  Únorm1r+  Ú	attentionrZ  Úlayer_scale1Údrop_path_rater}  r   rE  Ú	drop_pathÚnorm2Úuse_gated_mlprv  Úmlpri  Úlayer_scale2rH  s   &&&€r*   r]   ÚSapiens2Layer.__init__7  sº   ø€ Ü‰ÑÔÜ$ V×%7Ñ%7¸V×=PÑ=PÔQˆŒ
Ü*¨6ÔGˆŒÜ.¨vÓ6ˆÔØDJ×DYÑDYÐ\_ÔD_Ô)¨&×*?Ñ*?Ô@Ôeg×epÒepÓerˆŒÜ$ V×%7Ñ%7¸V×=PÑ=PÔQˆŒ
à××ÐÜ'¨Ó/ˆD�Hä" 6Ó*ˆDŒHÜŸKšK›MˆÖr-   c          
      óÞ   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[ P                  S[ P                  3,          R,          RS[S[,          RS[ P                  /# rK  rM  )r(   r)   s   "€r*   r+   r“  E  sk   ø€ ÷ ñ á—|‘|ðñ Ÿ™ tÕ+ðñ #¡5§<¡<±·±Ð#=Õ>ÀÕEð	ñ
 Ñ+Õ,ðñ 
�‰ñr-   c                óJ  € TpV P                  V4      pV P                  ! V3R VRV/VB w  rV P                  V4      pV P                  V4      V,           pTpV P	                  V4      pV P                  V4      pV P                  V4      pV P                  V4      V,           pV# )r   rL  )r–  r—  r˜  rš  r›  r�  rž  )rm   r=   r   rL  r  ÚresidualrÖ   s   &&&&,  r*   rˆ   ÚSapiens2Layer.forwardE  s¸   € ð !ˆØŸ
™
 =Ó1ˆØŸ>š>Øñ
à)ð
ð !4ð
ð ñ	
Ñˆð ×)Ñ)¨-Ó8ˆØŸ™ }Ó5¸Õ@ˆð !ˆØŸ
™
 =Ó1ˆØŸ™ Ó/ˆØ×)Ñ)¨-Ó8ˆØŸ™ }Ó5¸Õ@ˆàÐr-   )r—  rš  r˜  rž  r�  r–  r›  rX  r‹   r�   s   @@r*   r‘  r‘  4  s!   ù‡ € ÙM÷*ó *÷÷ ò r-   r‘  c                   óX   a a€ ] tR tRt oRtRV3R lV 3R llltV3R lR ltRtVtV ;t	# )	ÚSapiens2ConvLayerib  z[
A basic wrapper for Convolution-BatchNorm-Activation, typically used for head components.
c                ó¸   <€ V ^8„  d   QhRS[ RS[ RS[ S[S[ S[ 3,          ,          RS[ RS[ S[S[ S[ 3,          ,          S[,          RS[ RS[RS[R	S[R
S[RS[ /# )r#   Úin_channelsÚout_channelsrZ   r[   ÚpaddingÚgroupsÚ
activationr3  Úconvolution_transposeÚpixel_shuffleÚscale_factor)r“   r%   rÌ   Úbool)r(   r)   s   "€r*   r+   ÚSapiens2ConvLayer.__annotate__g  s¥   ø€ ÷ 6_ñ 6_áð6_ñ ð6_ñ ™5¡¡c �?Õ*ð	6_ñ
 ð6_ñ ‘u™S¡#˜X•Õ&©Õ,ð6_ñ ð6_ñ ð6_ñ ð6_ñ  $ð6_ñ ð6_ñ ñ6_r-   c           
     ó†  <€ \         SV `  4        V	'       d!   \        P                  ! VVVVR 7      V n        M"\        P
                  ! VVVVVVVR7      V n        \        P                  ! V4      V n        \        V,          V n	        V	'       d;   \        P                  ! TV
'       d   W+^,          ,          MTVVVVVR7      V n        M9\        P
                  ! TV
'       d   W+^,          ,          MTVVVVVR7      V n        V
'       d   \        P                  ! V4      V n        R# \        P                  ! 4       V n        R# ))r§  r¨  rZ   r[   )r§  r¨  rZ   r[   r©  rª  r3  )rZ   r[   r©  r3  rª  N)r\   r]   r   ÚConvTranspose2dÚconvolutionrh   ÚInstanceNorm2dÚnormr	   rq  ÚPixelShufflerE  r­  )rm   r§  r¨  rZ   r[   r©  rª  r«  r3  r¬  r­  r®  rn   s   &&&&&&&&&&&&€r*   r]   ÚSapiens2ConvLayer.__init__g  s
  ø€ ô 	‰ÑÔß Ü!×1Ò1Ø'Ø)Ø'Øô	 ˆDÕô  "ŸyšyØ'Ø)Ø'ØØØØô ˆDÔô ×%Ò% lÓ3ˆŒ	Ü˜ZÕ(ˆŒß Ü!×1Ò1Øß2?�¨Q�Ö.À\Ø'ØØØØô ˆDÕô  "ŸyšyØß2?�¨Q�Ö.À\Ø'ØØØØô ˆDÔ÷ ?LœRŸ_š_¨\Ó:ˆÖÔQS×Q\ÒQ\ÓQ^ˆÖr-   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ré   rt   )r(   r)   s   "€r*   r+   r°  Ÿ  s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r-   c                óŽ   € V P                  V4      pV P                  V4      pV P                  V4      pV P                  V4      pV# rŠ   )r³  r­  rµ  rq  ©rm   r=   s   &&r*   rˆ   ÚSapiens2ConvLayer.forwardŸ  sD   € Ø×(Ñ(¨Ó7ˆØ×*Ñ*¨=Ó9ˆØŸ	™	 -Ó0ˆØŸ™ MÓ2ˆØÐr-   )rq  r³  rµ  r­  )	rY   rY   r   rY   ÚsiluTFFr#   r‹   r�   s   @@r*   r¥  r¥  b  s&   ù‡ € ñ÷6_õ 6_÷p÷ ð 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# )ÚSapiens2Headi§  c                ó    <€ V ^8„  d   QhRS[ /# rU   r   )r(   r)   s   "€r*   r+   ÚSapiens2Head.__annotate__¨  s   ø€ ÷ ,Sñ ,S™~ñ ,Sr-   c                óR  <a€ \         SV `  4        SP                  P                  '       d$   \	        SP
                  SP
                  ^^R7      M\        P                  ! 4       V n        SP
                  .SP                  P                  RR ,           p\        P                  ! V3R l\        VSP                  P                  SP                  P                  4       4       4      V n        SP                  P                  R,          .SP                  P                  RR ,           p\        P                  ! V3R l\        VSP                  P                  SP                  P                  4       4       4      V n        SP                  P                  '       d   SP                  P                  R,          MDSP                  P                  '       d   SP                  P                  R,          MSP
                  p\        P"                  ! VSP$                  ^R7      V n        R# )é   ©rZ   r©  Nc              3   óŠ  <"  € T F¸  w  rp\        TTTSP                  P                  '       d   ^M^SP                  P                  '       d   V^,
          ^,          M^\        SP                  P                  4      \        SP                  P                  4      SP                  P                  '       * R7      x € Kº  	  R# 5i)rY   )rZ   r[   r©  r3  r­  r¬  N)r¥  Úhead_configÚuse_pixel_shuffler¯  ©Ú.0Úin_chÚout_chrZ   rV   s   &   €r*   Ú	<genexpr>Ú(Sapiens2Head.__init__.<locals>.<genexpr>°  s¤   øé € ð -
ñ/Ñ*�˜{ô ØØØ'Ø"×.Ñ.×@×@Ð@‘qÀaØ28×2DÑ2D×2V×2VÐ2V˜ q�¨QÖ.Ð\]Ü˜&×,Ñ,×>Ñ>Ó?Ü" 6×#5Ñ#5×#GÑ#GÓHØ*0×*<Ñ*<×*NÑ*NÔ&N÷	ñ 	ó/ùs   ƒA
CÁA5Cc              3   ó    <"  € T FC  w  rp\        TTTSP                  P                  '       d   V^,
          ^,          M^ R7      x € KE  	  R# 5i)rY   rÃ  N)r¥  rÅ  rÆ  rÇ  s   &   €r*   rË  rÌ  Â  sT   øé € ð 
)
ñ/Ñ*�˜{ô ØØØ'Ø28×2DÑ2D×2V×2VÐ2V˜ q�¨QÖ.Ð\]÷	ñ ó/ùs   ƒAA)rZ   rz   )r\   r]   rÅ  rÆ  r¥  r`   r   rE  Ú
input_convÚupsample_out_channelsÚ
ModuleListÚzipÚupsample_kernel_sizesÚupsample_layersÚconv_out_channelsÚconv_kernel_sizesÚconv_layersrh   Ú
num_labelsÚ	predictor)rm   rV   Úupsample_in_channelsÚconv_in_channelsÚpredictor_inrn   s   &f   €r*   r]   ÚSapiens2Head.__init__¨  sº  ù€ Ü‰ÑÔð ×!Ñ!×3×3Ð3ô ˜f×0Ñ0°&×2DÑ2DÐRSÐ]^Õ_ä—’“ð 	Œð
 !'× 2Ñ 2Ð3°f×6HÑ6H×6^Ñ6^Ð_bÐ`bÐ6cÕcÐÜ!Ÿ}š}ô -
ô /2Ø$Ø×"Ñ"×8Ñ8Ø×"Ñ"×8Ñ8ô/ó-
ó  
ˆÔð" #×.Ñ.×DÑDÀRÕHÐIÈF×L^ÑL^×LpÑLpÐqtÐrtÐLuÕuÐÜŸ=š=ô 
)
ô /2Ø  &×"4Ñ"4×"FÑ"FÈ×HZÑHZ×HlÑHlô/ó
)
ó 

ˆÔð ×!Ñ!×3×3Ð3ð ×Ñ×0Ñ0°Ö4ð ×!Ñ!×7×7Ð7ð ×#Ñ#×9Ñ9¸"Ö=à×#Ñ#ð 	ô Ÿš <°×1BÑ1BÐPQÔRˆŽr-   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ré   rt   )r(   r)   s   "€r*   r+   rÀ  Ö  s#   ø€ ÷ -ñ -¡U§\¡\ð -±e·l±lñ -r-   c                ó²   € V P                  V4      pV P                   F  pV! V4      pK  	  V P                   F  pV! V4      pK  	  V P                  V4      # rŠ   )rÎ  rÓ  rÖ  rØ  ©rm   r=   Úlayers   && r*   rˆ   ÚSapiens2Head.forwardÖ  sS   € ØŸ™¨Ó6ˆØ×)Ô)ˆEÙ! -Ó0ŠMñ *à×%Ô%ˆEÙ! -Ó0ŠMñ &à�~‰~˜mÓ,Ð,r-   )rÖ  rÎ  rØ  rÓ  rg  r�   s   @@r*   r¾  r¾  §  s!   ù‡ € ÷,Só ,S÷\-÷ -ð -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# )ÚSapiens2PointmapFinalLayerBlockiß  c                óD   <€ V ^8„  d   QhRS[ RS[ RS[P                  RR/# )r#   Úin_dimÚout_dimr«  rs   N)r“   r   r  )r(   r)   s   "€r*   r+   Ú,Sapiens2PointmapFinalLayerBlock.__annotate__à  s3   ø€ ÷ Nñ N™sð N©Sð N¹b¿i¹ið NÈDñ Nr-   c                ó†   <€ \         SV `  4        \        P                  ! \        P                  ! W4      V.4      V n        R # rŠ   )r\   r]   r   rÐ  r9  Úlayers)rm   rå  ræ  r«  rn   s   &&&&€r*   r]   Ú(Sapiens2PointmapFinalLayerBlock.__init__à  s,   ø€ Ü‰ÑÔÜ—m’m¤R§Y¢Y¨vÓ%?ÀÐ$LÓMˆŽr-   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# )r#   Úinputrs   )r   )r(   r)   s   "€r*   r+   rç  ä  s   ø€ ÷ ñ ™Vð ©ñ r-   c                ó@   € TpV P                    F  pV! V4      pK  	  V# rŠ   ©ré  )rm   rì  rc  rà  s   &&  r*   rˆ   Ú'Sapiens2PointmapFinalLayerBlock.forwardä  s%   € ØˆØ—[”[ˆEÙ  Ó.ŠLñ !àÐr-   rî  rg  r�   s   @@r*   rã  rã  ß  s    ù‡ € ÷Nó N÷÷ ð r-   rã  c                   óT   a a€ ] tR tRt oRV3R lV 3R llltV3R lR ltRtVtV ;t# )ÚSapiens2PointmapFinalLayerië  c                óH   <€ V ^8„  d   QhRS[ RS[S[ S[ 3,          RS[ RS[/# )r#   rå  Úhidden_sizesræ  r«  )r“   r%   rÌ   )r(   r)   s   "€r*   r+   Ú'Sapiens2PointmapFinalLayer.__annotate__ì  s2   ø€ ÷ 	8ñ 	8™sð 	8±%¹¹S¸µ/ð 	8ÉCð 	8Ñadñ 	8r-   c                ó>  <€ \         SV `  4        \        P                  ! 4       V n        \        W^ ,          \        V,          R7      V n        \        V^ ,          V^,          \        V,          R7      V n        \        P                  ! V^,          V4      V n
        R# )r   )rå  ræ  r«  N)r\   r]   r   ÚFlattenr   rã  r	   Úblock1Úblock2r9  Úproj)rm   rå  ró  ræ  r«  rn   s   &&&&&€r*   r]   Ú#Sapiens2PointmapFinalLayer.__init__ì  so   ø€ Ü‰ÑÔÜ—z’z“|ˆŒÜ5Ø°¥?¼vÀjÕ?Qô
ˆŒô 6Ø •?¨L¸­OÌÈzÕHZô
ˆŒô —I’I˜l¨1�o¨wÓ7ˆŽ	r-   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ré   rt   )r(   r)   s   "€r*   r+   rô  ÷  s#   ø€ ÷ (ñ (¡U§\¡\ð (±e·l±lñ (r-   c                óŠ   € V P                  V4      pV P                  V4      pV P                  V4      pV P                  V4      # rŠ   )r   r÷  rø  rù  rº  s   &&r*   rˆ   Ú"Sapiens2PointmapFinalLayer.forward÷  s;   € ØŸ™ ]Ó3ˆØŸ™ MÓ2ˆØŸ™ MÓ2ˆØ�y‰y˜Ó'Ð'r-   )r÷  rø  r   rù  )rY   r¼  rg  r�   s   @@r*   rñ  rñ  ë  s   ù‡ € ÷	8õ 	8÷(÷ (ð (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# )ÚSapiens2PointmapScaleHeadiþ  c                ó    <€ V ^8„  d   QhRS[ /# rU   r   )r(   r)   s   "€r*   r+   Ú&Sapiens2PointmapScaleHead.__annotate__ÿ  s   ø€ ÷ 
ñ 
™~ñ 
r-   c                ó"  <€ \         SV `  4        \        P                  ! 4       V n        VP
                  .VP                  P                  R R ,           p\        VVP                  P                  VP                  P                  4       F<  w  r4pV P                  P                  \        W4V^V^,
          ^,          R7      4       K>  	  \        VP                  P                  VP                  P                  VP                  R7      V n        R # )N)rZ   r[   r©  )r«  rz   )r\   r]   r   rÐ  rÖ  r`   rÅ  Úscale_conv_out_channelsrÑ  Úscale_conv_kernel_sizesÚappendr¥  rñ  Úscale_final_input_sizeÚscale_final_hidden_sizesrp  rØ  )rm   rV   Úscale_in_channelsrÉ  rÊ  rZ   rn   s   &&    €r*   r]   Ú"Sapiens2PointmapScaleHead.__init__ÿ  sá   ø€ Ü‰ÑÔÜŸ=š=›?ˆÔØ#×/Ñ/Ð0°6×3EÑ3E×3]Ñ3]Ð^aÐ_aÐ3bÕbÐÜ*-ØØ×Ñ×6Ñ6Ø×Ñ×6Ñ6ö+
Ñ&ˆE˜;ð
 ×Ñ×#Ñ#Ü! %¸[ÐQRÐ]hÐklÕ]lÐqrÕ\rÔsöñ+
ô 4Ø×Ñ×5Ñ5Ø×Ñ×7Ñ7Ø×(Ñ(ô
ˆŽr-   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ré   rt   )r(   r)   s   "€r*   r+   r    s#   ø€ ÷ -ñ -¡U§\¡\ð -±e·l±lñ -r-   c                óZ   € V P                    F  pV! V4      pK  	  V P                  V4      # rŠ   ©rÖ  rØ  rß  s   && r*   rˆ   Ú!Sapiens2PointmapScaleHead.forward  s+   € Ø×%Ô%ˆEÙ! -Ó0ŠMñ &à�~‰~˜mÓ,Ð,r-   r  rg  r�   s   @@r*   rÿ  rÿ  þ  s   ù‡ € ÷
ó 
÷$-÷ -ð -r-   rÿ  c                   ó°   a a€ ] tR tRt oRtRtRtRtR.tRt	Rt
RtRtR]R]/tR.tR	.t]P&                  ! 4       V3R
 lV 3R ll4       tV3R ltRtVtV ;t# )ÚSapiens2PreTrainedModeli  Úmodelrq   Tr‘  r=   r>   Úperiodsrd   c                ó   <€ V ^8„  d   QhRR/# r\  r.   )r(   r)   s   "€r*   r+   Ú$Sapiens2PreTrainedModel.__annotate__.  s   ø€ ÷ cñ c tñ cr-   c           	     ól  <€ \         SV `  V4       \        V\        P                  \        P
                  34      '       d:   \        P                  ! VP                  RV P                  P                  R7       R	# \        V\        P                  4      '       d&   \        P                  ! VP                  RRR7       R	# \        V\        4      '       dÊ   \        P                  ! VP                  RV P                  P                  R7       VP                  P                  ^ 8”  d8   \        P                  ! VP                   RV P                  P                  R7       VP                  P"                  '       d#   \        P$                  ! VP&                  4       R	# R	# \        V\(        4      '       d8   \        P*                  ! VP,                  V P                  P.                  4       R	# \        V\0        4      '       du   ^VP2                  \4        P6                  ! ^ ^^VP8                  ,          \4        P:                  R7      ,          ,          p\        P<                  ! VP>                  V4       R	# \        V\@        \B        34      '       d¤   VPE                  4        F�  p\        V\        P
                  4      '       d&   \        P                  ! VP                  RRR7       KH  \        V\        P                  4      '       g   Kj  \        P                  ! VP                  RRR7       K�  	  R	# R	# )
zInitialize the weightsrO  )rí   ÚstdÚfan_outÚrelu)ÚmodeÚnonlinearityrv   Úfan_inÚlinearN)#r\   Ú_init_weightsr½   r   r9  rh   ÚinitÚtrunc_normal_r}   rV   Úinitializer_ranger²  Úkaiming_normal_rS   ra   rf   rg   rb   Úzeros_rd   rZ  Ú	constant_r`  r_  r°   r¶   r&   r˜   r¸   r¹   Úcopy_r»   r¾  rÿ  Úmodules)rm   rü   r»   Úhead_modulern   s   &&  €r*   r  Ú%Sapiens2PreTrainedModel._init_weights-  sú  ø€ ô 	‰Ñ˜fÔ%Ü�fœrŸy™y¬"¯)©)Ð4×5Ò5Ü×Ò˜vŸ}™}°3¸D¿K¹K×<YÑ<Y×ZÜ˜¤× 2Ñ 2×3Ò3Ü× Ò  §¡°YÈV×TÜ˜Ô 2×3Ò3Ü×Ò˜v×/Ñ/°c¸t¿{¹{×?\Ñ?\Õ]Ø�}‰}×0Ñ0°1Ô4Ü×"Ò" 6×#9Ñ#9ÀÈÏÉ×IfÑIfÕgØ�}‰}×+×+Ð+Ü—’˜F×-Ñ-Ö.ñ ,ä˜Ô 2×3Ò3Ü�NŠN˜6Ÿ>™>¨4¯;©;×+GÑ+GÖHÜ˜Ô =×>Ò>Ø˜6Ÿ;™;¬%¯,ª,°q¸!¸QÀÇÁÕ=PÔX]×XeÑXeÔ*fÕfÕfˆHÜ�JŠJ�v—‘¨Ö1Ü˜¤Ô/HÐ I×JÒJØ%Ÿ~™~Ö/�Ü˜k¬2¯9©9×5Ò5Ü×(Ò(¨×);Ñ);À)ÐZ`×aÜ ¬R¯Y©Y×7Ô7Ü×(Ò(¨×);Ñ);À(ÐYa×bó	  0ñ Kr-   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # rU   r   )r(   r)   s   "€r*   r+   r    s   ø‡ ‚ áÑò r-   r.   )Úimage)r/   r0   r1   r2   Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_supports_sdpaÚ_supports_flash_attnÚ_supports_flex_attnÚ_supports_attention_backendr‘  r+  Ú_can_record_outputsÚ"_keys_to_ignore_on_load_unexpectedÚ_keys_to_ignore_on_load_missingr&   Úno_gradr  r4   r5   r6   rŒ   r�   s   @@r*   r  r    sŠ   ù‡ € ð  ÐØ$€OØ!ÐØ&*Ð#Ø(Ð)ÐØ€NØÐØÐØ"&Ðà˜ØÐ'ðÐð +5¨Ð&à'4 oÐ#à
‡]‚]ƒ_÷cò có ðc÷/ … r-   r  c                   ó€   a a€ ] tR tRt o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Rt	Vt
V ;t# )
ÚSapiens2EncoderiH  c                ó    <€ V ^8„  d   QhRS[ /# rU   r   )r(   r)   s   "€r*   r+   ÚSapiens2Encoder.__annotate__I  s   ø€ ÷ ñ ™~ñ r-   c           
     óà   <€ \         SV `  V4       \        P                  ! \	        VP
                  4       Uu. uF  p\        WR 7      NK  	  up4      V n        V P                  4        R# u upi )r•  N)	r\   r]   r   rÐ  ÚrangeÚnum_hidden_layersr‘  rà  Ú	post_initrH  s   && €r*   r]   ÚSapiens2Encoder.__init__I  sV   ø€ Ü‰Ñ˜Ô Ü—]’]ÜINÈv×OgÑOgÔIhÓiÑIh¸IŒ]˜6×7ÑIhÑió
ˆŒ
ð 	�‰Öùò js   ¸A+F)Útie_last_hidden_statesc                ó¢   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  S[ P                  3,          R,          RS[S[,          RS[/# )r#   r=   rL  Nr  rs   )r&   r   r%   r   r   r   )r(   r)   s   "€r*   r+   r9  T  sZ   ø€ ÷ 	@ñ 	@á—|‘|ð	@ñ #¡5§<¡<±·±Ð#=Õ>ÀÕEð	@ñ Ñ+Õ,ð		@ñ
 
ñ	@r-   c                óV   € V P                    F  pV! V3R V/VB pK  	  \        VR7      # )rL  )Úlast_hidden_state)rà  r   )rm   r=   rL  r  Úlayer_modules   &&&, r*   rˆ   ÚSapiens2Encoder.forwardQ  s5   € ð !ŸJœJˆLÙ(¨ÑjÐL_ÐjÐciÑjŠMñ 'ô °Ô?Ð?r-   )rà  rŠ   )r/   r0   r1   r2   r]   r   r   r   rˆ   r5   r6   rŒ   r�   s   @@r*   r7  r7  H  sF   ù‡ € ÷ó ð  Ù¨EÔ2Ø÷	@ñ 	@ó ó 3ó  ÷	@ð 	@r-   r7  c                   ón   a a€ ] tR tRt oV3R lV 3R lltR t]]RV3R lR ll4       4       tRt	Vt
V ;t# )	ÚSapiens2Modeli`  c                ó    <€ V ^8„  d   QhRS[ /# rU   r   )r(   r)   s   "€r*   r+   ÚSapiens2Model.__annotate__b  s   ø€ ÷ ñ ™~ñ r-   c                ó   <€ \         SV `  V4       \        V4      V n        \	        V4      V n        \        V4      V n        \        VP                  VP                  R 7      V n        RV n        V P                  4        R# ©r4  FN)r\   r]   rS   r‡   r°   Úrope_embeddingsr7  r  rß   r`   rD  rµ  Úgradient_checkpointingr=  rl   s   &&€r*   r]   ÚSapiens2Model.__init__b  sa   ø€ Ü‰Ñ˜Ô Ü,¨VÓ4ˆŒÜ<¸VÓDˆÔÜ$ VÓ,ˆŒ
Ü# F×$6Ñ$6¸F×<OÑ<OÔPˆŒ	Ø&+ˆÔ#à�‰Ör-   c                ó.   € V P                   P                  # rŠ   ©r‡   rk   ró   s   &r*   Úget_input_embeddingsÚ"Sapiens2Model.get_input_embeddingsl  ó   € Ø�‰×/Ñ/Ð/r-   c                óx   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          RS[/# )r#   rq   rr   Nr  rs   )r&   r   r   r   r   )r(   r)   s   "€r*   r+   rH  q  sF   ø€ ÷ -
ñ -
á—l‘lð-
ñ Ÿ™¨Õ,ð-
ñ Ñ+Õ,ð	-
ñ
 
$ñ-
r-   c                ón  € VP                  V P                  P                  P                  P                  4      pV P                  WR7      pV P                  V4      pV P                  ! WE3/ VB pV P                  VP                  4      pVR,          p\        VVVP                  VP                  R7      # )a@  
bool_masked_pos (`torch.BoolTensor` of shape `(batch_size, sequence_length)`, *optional*):
    Boolean masked positions. Indicates which patches are masked (1) and which aren't (0). Only relevant for
    pre-training.

Example:

```python
>>> from transformers import AutoImageProcessor, AutoModel
>>> from transformers.image_utils import load_image
>>> import torch

>>> image = load_image("http://images.cocodataset.org/val2017/000000004016.jpg")
>>> image_processor = AutoImageProcessor.from_pretrained("facebook/sapiens2-pretrain-0.4b")
>>> model = AutoModel.from_pretrained("facebook/sapiens2-pretrain-0.4b")

>>> inputs = image_processor(images=image, return_tensors="pt")
>>> with torch.inference_mode():
...     outputs = model(**inputs)

>>> cls_token = outputs.pooler_output
>>> cls_token.shape
torch.Size([1, 1024])
```
)rr   )rB  Úpooler_outputr=   r>   ©rÊ   r   rÊ   )r~   r‡   rk   r}   rw   rK  r  rµ  rB  r   r=   r>   )	rm   rq   rr   r  r=   rL  ÚoutputÚsequence_outputÚpooled_outputs	   &&&,     r*   rˆ   ÚSapiens2Model.forwardo  s    € ðD $—‘ t§¡×'GÑ'G×'NÑ'N×'TÑ'TÓUˆØŸ™¨˜ÓVˆØ"×2Ñ2°<Ó@Ðà—’˜MÑIÀ&ÑIˆØŸ)™) F×$<Ñ$<Ó=ˆØ'¨Õ0ˆä)Ø-Ø'Ø ×.Ñ.Ø×(Ñ(ô	
ð 	
r-   )r‡   rL  r  rµ  rK  rŠ   )r/   r0   r1   r2   r]   rP  r   r   rˆ   r5   r6   rŒ   r�   s   @@r*   rF  rF  `  s:   ù‡ € ÷ó ò0ð Ø÷-
ñ -
ó ó ÷-
ð -
r-   rF  c                   ót   a a€ ] tR tRt oV3R lV 3R lltR t]]]V3R lR l4       4       4       t	Rt
VtV ;t# )ÚSapiens2Backbonei¡  c                ó    <€ V ^8„  d   QhRS[ /# rU   r   )r(   r)   s   "€r*   r+   ÚSapiens2Backbone.__annotate__£  s   ø€ ÷ 
ñ 
™~ñ 
r-   c                ó~  <€ \         SV `  V4       \        V4      V n        \	        V4      V n        \        V4      V n        \        VP                  VP                  R 7      V n        RV n        \        VP                  ^,           4       Uu. uF  q!P                  NK  	  upV n        V P!                  4        R# u upi rJ  )r\   r]   rS   r‡   r°   rK  r7  r  rß   r`   rD  rµ  rL  r;  r<  Únum_featuresr=  )rm   rV   rÖ   rn   s   && €r*   r]   ÚSapiens2Backbone.__init__£  s•   ø€ Ü‰Ñ˜Ô ä,¨VÓ4ˆŒÜ<¸VÓDˆÔÜ$ VÓ,ˆŒ
Ü# F×$6Ñ$6¸F×<OÑ<OÔPˆŒ	Ø&+ˆÔ#ä9>¸v×?WÑ?WÐZ[Õ?[Ô9\Ó]Ñ9\°A×/Ô/Ñ9\Ñ]ˆÔØ�‰Öùò ^s   ÂB:c                ó.   € V P                   P                  # rŠ   rO  ró   s   &r*   rP  Ú%Sapiens2Backbone.get_input_embeddings¯  rR  r-   c                óP   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[/# )r#   rq   r  rs   )r&   r   r   r   r!   )r(   r)   s   "€r*   r+   r^  µ  s8   ø€ ÷ F
ñ F
á—l‘lðF
ñ Ñ+Õ,ðF
ñ 
 ñ	F
r-   c                óú  € VP                  V P                  P                  P                  P                  4      pV P                  V4      pV P                  V4      pRVR&   V P                  ! W43/ VB pVP                  pVP                  w  rxršV P                  P                  p\        V\        4      '       d   TMV^ ,          p\        V\        4      '       d   TMV^,          pWœ,          pW­,          p^\        V P                  R^ 4      ,           p\        V P                  RR4      p. . pp\        \        V P                   V4      4       Fë  w  pw  ppV P                  P"                  '       d   V P%                  V4      pVV P&                  9   g   KI  V'       d   VP)                  VR	,          4       VRVR1R3,          pV P                  P*                  '       dF   VP-                  W~VVP                  R
,          4      P/                  ^ ^^^4      P1                  4       pMTpVP)                  V4       Kí  	  \3        \5        V4      V'       d   \5        V4      MRVP                  VP6                  R7      # )aª  
Example:

```python
>>> from transformers import AutoBackbone, AutoImageProcessor
>>> from transformers.image_utils import load_image
>>> import torch

>>> image = load_image("http://images.cocodataset.org/val2017/000000004016.jpg")
>>> image_processor = AutoImageProcessor.from_pretrained("facebook/sapiens2-pretrain-0.4b")
>>> model = AutoBackbone.from_pretrained("facebook/sapiens2-pretrain-0.4b")

>>> inputs = image_processor(images=image, return_tensors="pt")
>>> with torch.inference_mode():
...     outputs = model(**inputs, return_class_token=True)

>>> outputs.feature_maps[0].shape
torch.Size([1, 1024, 64, 48])
>>> outputs.cls_tokens[0].shape
torch.Size([1, 1024])
```
TÚoutput_hidden_statesrf   Úreturn_class_tokenFrÊ   N)Úfeature_mapsr$   r=   r>   rV  rz   )r~   r‡   rk   r}   rw   rK  r  r=   r|   rV   rj   r½   r“   ÚgetattrÚ	enumeraterÑ  Ústage_namesÚnormalize_backbone_outputsrµ  Úout_featuresr  Úreshape_hidden_statesr&  Úpermuter  r!   r%   r>   )rm   rq   r  r=   rL  rW  Ústage_hidden_statesr…   rÖ   Úimage_heightÚimage_widthrj   rÀ   rÁ   Únum_patches_heightÚnum_patches_widthÚ
num_prefixrg  rh  r$   ÚidxÚ
stage_namerc  Úpatch_tokensÚfeature_maps   &&,                      r*   rˆ   ÚSapiens2Backbone.forward²  s  € ð< $—‘ t§¡×'GÑ'G×'NÑ'N×'TÑ'TÓUˆØŸ™¨Ó5ˆØ"×2Ñ2°<Ó@Ðà)-ˆÐ%Ñ&Ø—’˜MÑIÀ&ÑIˆØ$×2Ñ2Ðà3?×3EÑ3EÑ0ˆ
�|Ø—[‘[×+Ñ+ˆ
Ü%/°
¼C×%@Ò%@‘zÀjÐQRÅmˆÜ%/°
¼C×%@Ò%@‘zÀjÐQRÅmˆØ)Õ9ÐØ'Õ7Ðàœ §¡Ð.CÀQÓGÕGˆ
Ü$ T§[¡[Ð2FÈÓNÐà#% r�jˆÜ/8¼¸T×=MÑ=MÐObÓ9cÖ/dÑ+ˆCÑ+�*˜lØ�{‰{×5×5Ð5Ø#Ÿy™y¨Ó6�à˜T×.Ñ.Ö.ß%Ø×%Ñ% l°7Õ&;Ô<Ø+¨A¨z©{¸AÐ,=Õ>�Ø—;‘;×4×4Ð4à$×,Ñ,¨ZÐM^Ð`l×`rÑ`rÐsuÕ`vÓwß ™  A q¨!Ó,ß#™›ñ  ð #/�Kà×#Ñ# KÖ0ñ# 0eô& &Ü˜|Ó,ß,>”u˜ZÔ(ÀDØ ×.Ñ.Ø×(Ñ(ô	
ð 	
r-   )r‡   rL  r  rµ  r`  rK  )r/   r0   r1   r2   r]   rP  r   r   r   rˆ   r5   r6   rŒ   r�   s   @@r*   r\  r\  ¡  s@   ù‡ € ÷
ó 
ò0ð Ø Ø÷F
ó ó !ó ÷F
ð F
r-   r\  zfacebook/sapiens2-seg-0.4b)Ú
checkpointc                   óh   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tVt	V ;t
# )ÚSapiens2ForSemanticSegmentationiþ  c                ó    <€ V ^8„  d   QhRS[ /# rU   r   )r(   r)   s   "€r*   r+   Ú,Sapiens2ForSemanticSegmentation.__annotate__   ó   ø€ ÷ ñ ™~ñ r-   c                ó¨   <€ \         SV `  V4       VP                  V n        \        V4      V n        \        V4      V n        V P                  4        R # rŠ   ©r\   r]   r×  rF  r  r¾  Údecode_headr=  rl   s   &&€r*   r]   Ú(Sapiens2ForSemanticSegmentation.__init__   ó@   ø€ Ü‰Ñ˜Ô Ø ×+Ñ+ˆŒÜ" 6Ó*ˆŒ
Ü'¨Ó/ˆÔØ�‰Ör-   c                óx   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          RS[/# ©r#   rq   ÚlabelsNr  rs   )r&   r'   Ú
LongTensorr   r   r   )r(   r)   s   "€r*   r+   r  	  sJ   ø€ ÷ 9
ñ 9
á×'Ñ'ð9
ñ × Ñ  4Õ'ð9
ñ Ñ+Õ,ð	9
ñ
 
!ñ9
r-   c                óÖ  € Ve'   V P                   P                  ^8X  d   \        R4      hV P                  ! V3/ VB pVP                  w  rVrxV P                   P
                  p	\        V	\        4      '       d   T	MV	^ ,          p
\        V	\        4      '       d   T	MV	^,          pWz,          pW‹,          pVP                  R^V P                   P                  ,           R13,          pVP                  ^^4      P                  VRWÍ4      pV P                  V4      pRpVe(   V P                  VW P                   P                  R7      p\        VVVP                   VP"                  R7      # )a`  
labels (`torch.LongTensor` of shape `(batch_size, height, width)`, *optional*):
    Ground truth semantic segmentation maps for computing the loss.
    Indices should be in `[0, ..., config.num_labels - 1]`.
    If `config.num_labels > 1`, a classification loss is computed (Cross-Entropy).

Example:

```python
>>> from transformers import AutoImageProcessor, AutoModel
>>> from transformers.image_utils import load_image
>>> import torch

>>> image = load_image("http://images.cocodataset.org/val2017/000000004016.jpg")
>>> image_processor = AutoImageProcessor.from_pretrained("facebook/sapiens2-seg-0.4b")
>>> model = AutoModel.from_pretrained("facebook/sapiens2-seg-0.4b")

>>> inputs = image_processor(image, return_tensors="pt")
>>> with torch.inference_mode():
...     outputs = model(**inputs)

>>> outputs.logits.shape
torch.Size([1, 29, 1024, 768])
```
Nz/The number of labels should be greater than onerÊ   )Úignore_index)r;   Úlogitsr=   r>   rz   )rV   r×  r{   r  r|   rj   r½   r“   rB  rf   r€   r&  rƒ  Úloss_functionÚsemantic_loss_ignore_indexr   r=   r>   )rm   rq   rˆ  r  Úoutputsr…   rÖ   r×   rØ   rj   rÀ   rÁ   Úpatch_heightÚpatch_widthrx  ry  rŒ  r;   s   &&&,              r*   rˆ   Ú'Sapiens2ForSemanticSegmentation.forward  sA  € ðB Ò $§+¡+×"8Ñ"8¸AÔ"=ÜÐNÓOÐOà—*’*˜\Ñ4¨VÑ4ˆà'3×'9Ñ'9Ñ$ˆ
�vØ—[‘[×+Ñ+ˆ
Ü%/°
¼C×%@Ò%@‘zÀjÐQRÅmˆÜ%/°
¼C×%@Ò%@‘zÀjÐQRÅmˆØÕ-ˆØÕ+ˆà×0Ñ0°°A¸¿¹×8WÑ8WÕ4WÑ4YÐ1YÕZˆØ"×,Ñ,¨Q°Ó2×:Ñ:¸:ÀrÈ<Óeˆà×!Ñ! +Ó.ˆàˆØÒØ×%Ñ% f¨fÇ;Á;×CiÑCiÐ%ÓjˆDä&ØØØ!×/Ñ/Ø×)Ñ)ô	
ð 	
r-   ©rƒ  r  r×  rŠ   ©r/   r0   r1   r2   r]   r   r   rˆ   r5   r6   rŒ   r�   s   @@r*   r}  r}  þ  s5   ù‡ € ÷ó ð Ø÷9
ñ 9
ó ó ÷9
ð 9
r-   r}  c                óÎ  € VR9  d   \        R4      hV P                  ^8w  d   \        R4      hV P                  w  r4rV^pVR8X  d    ^pV P                  4       p V R,          ) V R&   V P	                  VRWuV4      p V P                  4       pVP                  R4      w  ršV RV
R3,          VRV	R3&   V RV	R3,          VRV
R3&   VP	                  W4WV34      pVP                  R4      pV# )	a�  Flip the flipped heatmaps back to the original form.

Args:
    output_flipped (`torch.tensor` of shape `(batch_size, num_keypoints, height, width)`):
        The output heatmaps obtained from the flipped images.
    flip_pairs (`torch.Tensor` of shape `(num_keypoints, 2)`):
        Pairs of keypoints which are mirrored (for example, left ear -- right ear).
    target_type (`str`, *optional*, defaults to `"gaussian-heatmap"`):
        Target type to use. Can be gaussian-heatmap or combined-target.
        gaussian-heatmap: Classification target with gaussian distribution.
        combined-target: The combination of classification target (response map) and regression target (offset map).
        Paper ref: Huang et al. The Devil is in the Details: Delving into Unbiased Data Processing for Human Pose Estimation (CVPR 2020).

Returns:
    torch.Tensor: heatmaps that flipped back to the original image
úcombined-targetz9target_type should be gaussian-heatmap or combined-targetzCoutput_flipped should be [batch_size, num_keypoints, height, width]rÊ   .)úgaussian-heatmapr–  )rÊ   :rY   NrÂ  .rz   )r{   r…  r|   Úcloner&  ÚunbindÚflip)Úoutput_flippedÚ
flip_pairsÚtarget_typer…   Únum_keypointsr×   rØ   ÚchannelsÚoutput_flipped_backÚleft_indicesÚright_indicess   &&&        r*   Ú	flip_backr£  E  s  € ð" ÐAÔAÜÐTÓUÐUà×Ñ˜aÔÜÐ^Ó_Ð_à/=×/CÑ/CÑ,€J˜vØ€HØÐ'Ô'ØˆØ'×-Ñ-Ó/ˆØ(6°|Õ(DÐ'Dˆ�|Ñ$Ø#×+Ñ+¨J¸¸HÈeÓT€NØ(×.Ñ.Ó0Ðð #-×"3Ñ"3°BÓ"7Ñ€LØ0>¸qÀ-ÐQTÐ?TÕ0UÐ˜˜<¨Ð,Ñ-Ø1?ÀÀ<ÐQTÐ@TÕ1UÐ˜˜=¨#Ð-Ñ.Ø-×5Ñ5°zÐRXÐ6`ÓaÐà-×2Ñ2°2Ó6ÐØÐr-   zfacebook/sapiens2-pose-0.4bz�
    The Sapiens2 model with a pose estimation head on top (a set of heatmap predictors on top of the hidden states output).
    )r{  r   c                   óh   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tVt	V ;t
# )ÚSapiens2ForPoseEstimationio  c                ó    <€ V ^8„  d   QhRS[ /# rU   r   )r(   r)   s   "€r*   r+   Ú&Sapiens2ForPoseEstimation.__annotate__v  r€  r-   c                ó¨   <€ \         SV `  V4       VP                  V n        \        V4      V n        \        V4      V n        V P                  4        R # rŠ   r‚  rl   s   &&€r*   r]   Ú"Sapiens2ForPoseEstimation.__init__v  r…  r-   c                óÈ   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[S[,          RS[/# )r#   rq   rœ  Nrˆ  Úlabel_weightsr  rs   )r&   r'   r   r   r   r9   )r(   r)   s   "€r*   r+   r§    sz   ø€ ÷ @
ñ @
á×'Ñ'ð@
ñ —L‘L 4Õ'ð@
ñ ×!Ñ! DÕ(ð	@
ñ
 ×(Ñ(¨4Õ/ð@
ñ Ñ+Õ,ð@
ñ 
%ñ@
r-   c                ó„  € V P                   ! V3/ VB pVP                  w  rxršV P                  P                  p\	        V\
        4      '       d   TMV^ ,          p\	        V\
        4      '       d   TMV^,          pWœ,          pW­,          pVP                  R^V P                  P                  ,           R13,          pVP                  ^^4      P                  VRWï4      pV P                  V4      pVe   \        VV4      pRpVe   \        P                  ! VW4R7      p\        VVVP                  VP                   R7      # )aX  
flip_pairs (`torch.Tensor` of shape `(num_pairs, 2)`, *optional*):
    Pairs of keypoints which are mirrored (for example, left ear -- right ear), used for
    test-time flip augmentation. When provided, the model assumes `pixel_values` contains
    horizontally-flipped images and calls `flip_back` on the output heatmaps to restore the
    original orientation.
labels (`torch.FloatTensor` of shape `(batch_size, num_keypoints, height, width)`, *optional*):
    Heatmap ground truth for computing the loss.
label_weights (`torch.FloatTensor` of shape `(batch_size, num_labels, 1, 1)` or `(batch_size, num_labels, height, width)`, *optional*):
    Visibility weights for each keypoint. Must be broadcastable to the shape of `labels`.

Example:

```python
>>> from transformers import AutoImageProcessor, AutoModel
>>> from transformers.image_utils import load_image
>>> import torch

>>> image = load_image("http://images.cocodataset.org/val2017/000000004016.jpg")
>>> image_processor = AutoImageProcessor.from_pretrained("facebook/sapiens2-pose-0.4b")
>>> model = AutoModel.from_pretrained("facebook/sapiens2-pose-0.4b")

>>> boxes = [[[270.8, 0.6, 294.1, 379.5]]]
>>> inputs = image_processor(image, boxes=boxes, return_tensors="pt")
>>> with torch.inference_mode():
...     outputs = model(**inputs)

>>> outputs.heatmaps.shape
torch.Size([1, 308, 256, 192])
```
rÊ   N)r}   )r;   r<   r=   r>   rz   )r  r|   rV   rj   r½   r“   rB  rf   r€   r&  rƒ  r£  ÚFÚmse_lossr9   r=   r>   )rm   rq   rœ  rˆ  r«  r  r�  r…   rÖ   r×   rØ   rj   rÀ   rÁ   r�  r‘  rx  ry  r<   r;   s   &&&&&,              r*   rˆ   Ú!Sapiens2ForPoseEstimation.forward}  s!  € ðR —*’*˜\Ñ4¨VÑ4ˆà'3×'9Ñ'9Ñ$ˆ
�vØ—[‘[×+Ñ+ˆ
Ü%/°
¼C×%@Ò%@‘zÀjÐQRÅmˆÜ%/°
¼C×%@Ò%@‘zÀjÐQRÅmˆØÕ-ˆØÕ+ˆà×0Ñ0°°A¸¿¹×8WÑ8WÕ4WÑ4YÐ1YÕZˆØ"×,Ñ,¨Q°Ó2×:Ñ:¸:ÀrÈ<Óeˆà×#Ñ# KÓ0ˆØÒ!Ü  ¨:Ó6ˆHàˆØÒÜ—:’:˜h¨ÔEˆDä*ØØØ!×/Ñ/Ø×)Ñ)ô	
ð 	
r-   r“  ©NNNr”  r�   s   @@r*   r¥  r¥  o  s9   ù‡ € ÷ó ð Ø÷@
ñ @
ó ó ÷@
ð @
r-   r¥  zfacebook/sapiens2-normal-0.4bzƒ
    The Sapiens2 model with a normal estimation head on top (a PixelShuffle-based decoder that predicts surface normal maps).
    c                   óh   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tVt	V ;t
# )ÚSapiens2ForNormalEstimationiÂ  c                ó    <€ V ^8„  d   QhRS[ /# rU   r   )r(   r)   s   "€r*   r+   Ú(Sapiens2ForNormalEstimation.__annotate__É  r€  r-   c                ó¨   <€ \         SV `  V4       VP                  V n        \        V4      V n        \        V4      V n        V P                  4        R # rŠ   r‚  rl   s   &&€r*   r]   Ú$Sapiens2ForNormalEstimation.__init__É  r…  r-   c                óx   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          RS[/# r‡  )r&   r'   r   r   rB   )r(   r)   s   "€r*   r+   r´  Ò  sJ   ø€ ÷ 4
ñ 4
á×'Ñ'ð4
ñ ×!Ñ! DÕ(ð4
ñ Ñ+Õ,ð	4
ñ
 
'ñ4
r-   c                óJ  € V P                   ! V3/ VB pVP                  w  rVrxV P                  P                  p	\	        V	\
        4      '       d   T	MV	^ ,          p
\	        V	\
        4      '       d   T	MV	^,          pWz,          pW‹,          pVP                  R^V P                  P                  ,           R13,          pVP                  ^^4      P                  VRWÍ4      pV P                  V4      pRpVe   \        R4      h\        VVVP                  VP                  R7      # )aÝ  
labels (`torch.FloatTensor` of shape `(batch_size, num_labels, height, width)`, *optional*):
    Ground-truth surface normal maps for computing the loss.

Example:

```python
>>> from transformers import AutoImageProcessor, AutoModel
>>> from transformers.image_utils import load_image
>>> import torch

>>> image = load_image("http://images.cocodataset.org/val2017/000000004016.jpg")
>>> image_processor = AutoImageProcessor.from_pretrained("facebook/sapiens2-normal-0.4b")
>>> model = AutoModel.from_pretrained("facebook/sapiens2-normal-0.4b")

>>> inputs = image_processor(image, return_tensors="pt")
>>> with torch.inference_mode():
...     outputs = model(**inputs)

>>> outputs.normals.shape
torch.Size([1, 3, 1024, 768])
```
rÊ   NúTraining is not yet supported)r;   rD   r=   r>   rz   )r  r|   rV   rj   r½   r“   rB  rf   r€   r&  rƒ  ÚNotImplementedErrorrB   r=   r>   )rm   rq   rˆ  r  r�  r…   rÖ   r×   rØ   rj   rÀ   rÁ   r�  r‘  rx  ry  rD   r;   s   &&&,              r*   rˆ   Ú#Sapiens2ForNormalEstimation.forwardÐ  s
  € ð> —*’*˜\Ñ4¨VÑ4ˆà'3×'9Ñ'9Ñ$ˆ
�vØ—[‘[×+Ñ+ˆ
Ü%/°
¼C×%@Ò%@‘zÀjÐQRÅmˆÜ%/°
¼C×%@Ò%@‘zÀjÐQRÅmˆØÕ-ˆØÕ+ˆà×0Ñ0°°A¸¿¹×8WÑ8WÕ4WÑ4YÐ1YÕZˆØ"×,Ñ,¨Q°Ó2×:Ñ:¸:ÀrÈ<Óeˆà×"Ñ" ;Ó/ˆàˆØÒÜ%Ð&EÓFÐFä,ØØØ!×/Ñ/Ø×)Ñ)ô	
ð 	
r-   r“  rŠ   r”  r�   s   @@r*   r²  r²  Â  s5   ù‡ € ÷ó ð Ø÷4
ñ 4
ó ó ÷4
ð 4
r-   r²  zfacebook/sapiens2-pointmap-0.4bzÅ
    The Sapiens2 model with a pointmap head on top (a PixelShuffle-based decoder that predicts per-pixel 3D XYZ
    coordinates, plus an optional scale branch for focal-length normalization).
    c                   óh   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tVt	V ;t
# )ÚSapiens2ForPointmapEstimationi	  c                ó    <€ V ^8„  d   QhRS[ /# rU   r   )r(   r)   s   "€r*   r+   Ú*Sapiens2ForPointmapEstimation.__annotate__  s   ø€ ÷ 	ñ 	™~ñ 	r-   c                ó  <€ \         SV `  V4       \        V4      V n        \	        V4      V n        VP                  e$   VP                  P                  e   \        V4      M\        P                  ! 4       V n        V P                  4        R # rŠ   )r\   r]   rF  r  r¾  rƒ  rÅ  r  rÿ  r   rE  Ú
scale_headr=  rl   s   &&€r*   r]   Ú&Sapiens2ForPointmapEstimation.__init__  sn   ø€ Ü‰Ñ˜Ô Ü" 6Ó*ˆŒ
Ü'¨Ó/ˆÔð ×!Ñ!Ò-°&×2DÑ2D×2\Ñ2\Ò2hô & fÔ-ä—’“ð 	Œð
 	�‰Ör-   c                óx   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          RS[/# r‡  )r&   r'   r   r   rG   )r(   r)   s   "€r*   r+   r¿    sJ   ø€ ÷ 6
ñ 6
á×'Ñ'ð6
ñ ×!Ñ! DÕ(ð6
ñ Ñ+Õ,ð	6
ñ
 
)ñ6
r-   c                óÆ  € V P                   ! V3/ VB pVP                  w  rVrxV P                  P                  p	\	        V	\
        4      '       d   T	MV	^ ,          p
\	        V	\
        4      '       d   T	MV	^,          pWz,          pW‹,          pVP                  R^V P                  P                  ,           R13,          pVP                  ^^4      P                  VRWÍ4      pV P                  V4      p\	        V P                  \        P                  4      '       d   RMV P                  V4      pRpVe   \        R4      h\        VVVVP                   VP"                  R7      # )aÏ  
labels (`torch.FloatTensor` of shape `(batch_size, 3, height, width)`, *optional*):
    Ground-truth pointmap for computing the loss.

Example:

```python
>>> from transformers import AutoImageProcessor, AutoModel
>>> from transformers.image_utils import load_image
>>> import torch

>>> image = load_image("http://images.cocodataset.org/val2017/000000004016.jpg")
>>> image_processor = AutoImageProcessor.from_pretrained("facebook/sapiens2-pointmap-0.4b")
>>> model = AutoModel.from_pretrained("facebook/sapiens2-pointmap-0.4b")

>>> inputs = image_processor(image, return_tensors="pt")
>>> with torch.inference_mode():
...     outputs = model(**inputs)

>>> outputs.pointmaps.shape
torch.Size([1, 3, 1024, 768])
```
rÊ   Nr¹  )r;   rI   rJ   r=   r>   rz   )r  r|   rV   rj   r½   r“   rB  rf   r€   r&  rƒ  rÁ  r   rE  rº  rG   r=   r>   )rm   rq   rˆ  r  r�  r…   rÖ   r×   rØ   rj   rÀ   rÁ   r�  r‘  rx  ry  rI   rJ   r;   s   &&&,               r*   rˆ   Ú%Sapiens2ForPointmapEstimation.forward  s2  € ð> —*’*˜\Ñ4¨VÑ4ˆà'3×'9Ñ'9Ñ$ˆ
�vØ—[‘[×+Ñ+ˆ
Ü%/°
¼C×%@Ò%@‘zÀjÐQRÅmˆÜ%/°
¼C×%@Ò%@‘zÀjÐQRÅmˆØÕ-ˆØÕ+ˆà×0Ñ0°°A¸¿¹×8WÑ8WÕ4WÑ4YÐ1YÕZˆØ"×,Ñ,¨Q°Ó2×:Ñ:¸:ÀrÈ<Óeˆà×$Ñ$ [Ó1ˆ	Ü# D§O¡O´R·[±[×AÒA‘ÀtÇÁÐWbÓGcˆàˆØÒÜ%Ð&EÓFÐFä.ØØØØ!×/Ñ/Ø×)Ñ)ô
ð 	
r-   )rƒ  r  rÁ  rŠ   r”  r�   s   @@r*   r½  r½  	  s5   ù‡ € ÷	ó 	ð Ø÷6
ñ 6
ó ó ÷6
ð 6
r-   r½  zfacebook/sapiens2-matting-1bzœ
    The Sapiens2 model with a matting head on top (a PixelShuffle-based decoder that predicts a
    pre-multiplied RGB foreground and an alpha matte).
    c                   óh   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tVt	V ;t
# )ÚSapiens2ForImageMattingiW  c                ó    <€ V ^8„  d   QhRS[ /# rU   r   )r(   r)   s   "€r*   r+   Ú$Sapiens2ForImageMatting.__annotate___  s   ø€ ÷ ñ ™~ñ r-   c                ó†   <€ \         SV `  V4       \        V4      V n        \	        V4      V n        V P                  4        R # rŠ   )r\   r]   rF  r  r¾  rƒ  r=  rl   s   &&€r*   r]   Ú Sapiens2ForImageMatting.__init___  s3   ø€ Ü‰Ñ˜Ô Ü" 6Ó*ˆŒ
Ü'¨Ó/ˆÔØ�‰Ör-   c                óx   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          RS[/# r‡  )r&   r'   r   r   rM   )r(   r)   s   "€r*   r+   rÉ  g  sJ   ø€ ÷ 9
ñ 9
á×'Ñ'ð9
ñ ×!Ñ! DÕ(ð9
ñ Ñ+Õ,ð	9
ñ
 
$ñ9
r-   c                óŒ  € V P                   ! V3/ VB pVP                  w  rVrxV P                  P                  p	\	        V	\
        4      '       d   T	MV	^ ,          p
\	        V	\
        4      '       d   T	MV	^,          pWz,          pW‹,          pVP                  R^V P                  P                  ,           R13,          pVP                  ^^4      P                  VRWÍ4      pV P                  V4      P                  4       pVR,          pVR,          pRpVe   \        R4      h\        VVVVP                  VP                  R7      # )a	  
labels (`torch.FloatTensor` of shape `(batch_size, 4, height, width)`, *optional*):
    Ground-truth matting targets for computing the loss.

Example:

```python
>>> from transformers import AutoImageProcessor, AutoModel
>>> from transformers.image_utils import load_image
>>> import torch

>>> image = load_image("http://images.cocodataset.org/val2017/000000004016.jpg")
>>> image_processor = AutoImageProcessor.from_pretrained("facebook/sapiens2-matting-1b")
>>> model = AutoModel.from_pretrained("facebook/sapiens2-matting-1b")

>>> inputs = image_processor(image, return_tensors="pt")
>>> with torch.inference_mode():
...     outputs = model(**inputs)

>>> outputs.alphas.shape
torch.Size([1, 1, 1024, 768])
>>> outputs.foregrounds.shape
torch.Size([1, 3, 1024, 768])
```
rÊ   Nr¹  )r;   rO   rP   r=   r>   rz   )rÊ   :NrÂ  N)rÊ   :rÂ  NN)r  r|   rV   rj   r½   r“   rB  rf   r€   r&  rƒ  Úsigmoidrº  rM   r=   r>   )rm   rq   rˆ  r  r�  r…   rÖ   r×   rØ   rj   rÀ   rÁ   r�  r‘  rx  ry  ÚmattingrP   rO   r;   s   &&&,                r*   rˆ   ÚSapiens2ForImageMatting.forwarde  s)  € ðB —*’*˜\Ñ4¨VÑ4ˆà'3×'9Ñ'9Ñ$ˆ
�vØ—[‘[×+Ñ+ˆ
Ü%/°
¼C×%@Ò%@‘zÀjÐQRÅmˆÜ%/°
¼C×%@Ò%@‘zÀjÐQRÅmˆØÕ-ˆØÕ+ˆà×0Ñ0°°A¸¿¹×8WÑ8WÕ4WÑ4YÐ1YÕZˆØ"×,Ñ,¨Q°Ó2×:Ñ:¸:ÀrÈ<Óeˆà×"Ñ" ;Ó/×7Ñ7Ó9ˆØ˜e•nˆØ˜•ˆàˆØÒÜ%Ð&EÓFÐFä)ØØØ#Ø!×/Ñ/Ø×)Ñ)ô
ð 	
r-   )rƒ  r  rŠ   r”  r�   s   @@r*   rÇ  rÇ  W  s5   ù‡ € ÷ó ð Ø÷9
ñ 9
ó ó ÷9
ð 9
r-   rÇ  r°  )rO  NN)r—  )r}  r¥  r²  r½  rÇ  rF  r  r\  )WrÑ   Úcollections.abcr   r   Údataclassesr   Únumpyr¦   r&   Útorch.nn.functionalr   r  r­  r   Ú r   r  Úactivationsr	   Úbackbone_utilsr
   r   Úintegrationsr   Úmodeling_layersr   Úmodeling_outputsr   r   r   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úpytorch_utilsr   Úutilsr   r   Úutils.genericr   r   r   Úutils.output_capturingr   Úconfiguration_sapiens2r   r!   r9   rB   rG   rM   r  rS   rž   r®   r°   rß   rú   r  r"  r  r+  rZ  ri  rv  r}  r‘  r¥  r¾  rã  rñ  rÿ  r  r7  rF  r\  r}  r£  r¥  r²  r½  rÇ  Ú__all__r.   r-   r*   Ú<module>rã     sÀ  ðó& ß .Ý !ã Û ß Ð ß å &Ý !ß HÝ 7Ý 9÷õ ÷ GÝ &Ý @ß 7ß YÑ YÝ 5Ý 2ñ ðôð ô7˜^ó 7ó óð7ñ ðôð
 ô< +ó <ó óð<ñ$ ðôð
 ô< Kó <ó óð<ñ* ðôð
 ô< kó <ó óð<ñ0 ðôð
 ô1 ó 1ó óð1ô,"˜Ÿ™ô "ñJ %¨RÔ0ôó 1ð÷8ô:48 B§I¡Iô 48ñn ˜YÓ'ôJ�b—i‘ió Jó (ðJò((÷%õDõB	Uô?)˜Ÿ	™	ô ?)ôD+˜Ÿ™ô +ô<�"—)‘)ô <ô�r—y‘yô ô %�r—y‘yô %ô0+Ð.ô +ô\B˜Ÿ	™	ô BôJ5-�2—9‘9ô 5-ôp	 b§i¡iô 	ô( §¡ô (ô&- §	¡	ô -ð2 ô-c˜oó -có ð-cô`@Ð-ô @ð0 ô=
Ð+ó =
ó ð=
ð@ ôY
�}Ð&=ó Y
ó ðY
ñx Ð7Ô8ôC
Ð&=ó C
ó 9ðC
ôL'ñT Ø,ðôôJ
Ð 7ó J
óðJ
ñZ Ø.ðôô>
Ð"9ó >
óð>
ñB Ø0ðôôD
Ð$;ó D
óðD
ñN Ø-ðôôB
Ð5ó B
óðB
òJ	‚r-   