+
     °³j)  ã                   óÆ   € ^ RI t ^ RIt ^ RI HtHt ^ RIHt ^ RIHt ^RIH	t	 ^RI
HtHt ] P                  P                  RR R ll4       t ! R	 R
]P                   4      tR# )é    N)ÚnnÚTensor)Ú_pair)Ú_assert_has_ops)Ú_log_api_usage_once)Úcheck_roi_boxes_shapeÚconvert_boxes_to_roi_formatc                ó`   € V ^8„  d   QhR\         R\         R\        R\        R\        R\         /# )é   ÚinputÚboxesÚoutput_sizeÚspatial_scaleÚsampling_ratioÚreturn)r   ÚintÚfloat)Úformats   "Ú]/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torchvision/ops/ps_roi_align.pyÚ__annotate__r      sD   € ÷ /ñ /Üð/äð/ô ð/ô ð	/ô
 ð/ô ñ/ó    c                óÆ  € \         P                  P                  4       '       g4   \         P                  P                  4       '       g   \	        \
        4       \        4        \        V4       Tp\        V4      p\        V\         P                  4      '       g   \        V4      p\         P                  P                  P                  WW2^ ,          V^,          V4      w  rgV# )aì  
Performs Position-Sensitive Region of Interest (RoI) Align operator
mentioned in Light-Head R-CNN.

Args:
    input (Tensor[N, C, H, W]): The input tensor, i.e. a batch with ``N`` elements. Each element
        contains ``C`` feature maps of dimensions ``H x W``.
    boxes (Tensor[K, 5] or List[Tensor[L, 4]]): the box coordinates in (x1, y1, x2, y2)
        format where the regions will be taken from.
        The coordinate must satisfy ``0 <= x1 < x2`` and ``0 <= y1 < y2``.
        If a single Tensor is passed, then the first column should
        contain the index of the corresponding element in the batch, i.e. a number in ``[0, N - 1]``.
        If a list of Tensors is passed, then each Tensor will correspond to the boxes for an element i
        in the batch.
    output_size (int or Tuple[int, int]): the size of the output (in bins or pixels) after the pooling
        is performed, as (height, width).
    spatial_scale (float): a scaling factor that maps the box coordinates to
        the input coordinates. For example, if your boxes are defined on the scale
        of a 224x224 image and your input is a 112x112 feature map (resulting from a 0.5x scaling of
        the original image), you'll want to set this to 0.5. Default: 1.0
    sampling_ratio (int): number of sampling points in the interpolation grid
        used to compute the output value of each pooled output bin. If > 0,
        then exactly ``sampling_ratio x sampling_ratio`` sampling points per bin are used. If
        <= 0, then an adaptive number of grid points are used (computed as
        ``ceil(roi_width / output_width)``, and likewise for height). Default: -1

Returns:
    Tensor[K, C / (output_size[0] * output_size[1]), output_size[0], output_size[1]]: The pooled RoIs
)ÚtorchÚjitÚis_scriptingÚ
is_tracingr   Úps_roi_alignr   r   r   Ú
isinstancer   r	   ÚopsÚtorchvision)r   r   r   r   r   ÚroisÚoutputÚ_s   &&&&&   r   r   r      sž   € ôJ �9‰9×!Ñ!×#Ò#¬E¯I©I×,@Ñ,@×,BÒ,BÜœLÔ)ÜÔÜ˜%Ô Ø€DÜ˜Ó$€KÜ�dœEŸL™L×)Ò)Ü*¨4Ó0ˆÜ—	‘	×%Ñ%×2Ñ2Ø�]°¥N°KÀµNÀNó�I€Fð €Mr   c                   óf   a a€ ] tR t^>t oRtV3R lV 3R lltV3R lR ltV3R lR ltRtVt	V ;t
# )	Ú
PSRoIAlignz
See :func:`ps_roi_align`.
c                ó,   <€ V ^8„  d   QhRS[ RS[RS[ /# )r   r   r   r   )r   r   )r   Ú__classdict__s   "€r   r   ÚPSRoIAlign.__annotate__C   s)   ø€ ÷ 
-ñ 
-áð
-ñ ð
-ñ ñ	
-r   c                ó^   <€ \         SV `  4        \        V 4       Wn        W n        W0n        R # ©N)ÚsuperÚ__init__r   r   r   r   )Úselfr   r   r   Ú	__class__s   &&&&€r   r,   ÚPSRoIAlign.__init__C   s*   ø€ ô 	‰ÑÔÜ˜DÔ!Ø&ÔØ*ÔØ,Ör   c                ó,   <€ V ^8„  d   QhRS[ RS[ RS[ /# )r   r   r!   r   )r   )r   r'   s   "€r   r   r(   O   s'   ø€ ÷ dñ d™Vð d©6ð d±fñ dr   c                óZ   € \        WV P                  V P                  V P                  4      # r*   )r   r   r   r   )r-   r   r!   s   &&&r   ÚforwardÚPSRoIAlign.forwardO   s%   € Ü˜E¨×)9Ñ)9¸4×;MÑ;MÈt×ObÑObÓcÐcr   c                ó    <€ V ^8„  d   QhRS[ /# )r   r   )Ústr)r   r'   s   "€r   r   r(   R   s   ø€ ÷ ñ ™#ñ r   c                ó†   € V P                   P                   R V P                   RV P                   RV P                   R2pV# )z(output_size=z, spatial_scale=z, sampling_ratio=Ú))r.   Ú__name__r   r   r   )r-   Úss   & r   Ú__repr__ÚPSRoIAlign.__repr__R   sS   € à�~‰~×&Ñ&Ð'ð (Ø×+Ñ+Ð,Ø˜t×1Ñ1Ð2Ø × 3Ñ 3Ð4Øð	ð 	
ð ˆr   )r   r   r   )r8   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r,   r2   r:   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r.   r'   s   @@r   r%   r%   >   s/   ù‡ € ñ÷
-ó 
-÷dð d÷÷ ð r   r%   )g      ð?éÿÿÿÿ)r   Útorch.fxr   r   Útorch.nn.modules.utilsr   Útorchvision.extensionr   Úutilsr   Ú_utilsr   r	   ÚfxÚwrapr   ÚModuler%   © r   r   Ú<module>rM      sG   ðÛ Û ß Ý (Ý 1å 'ß Fð ‡�‡�ö/ó ð/ôd�—‘ö r   