
    h6                         S SK r S SKr S SK JrJr  S SKJr  S SKJr  SSKJ	r	  SSK
JrJr  \ R                  R                   SS	\S
\S\S\S\4
S jj5       r " S S\R$                  5      rg)    N)nnTensor)_pair)_assert_has_ops   )_log_api_usage_once   )check_roi_boxes_shapeconvert_boxes_to_roi_formatinputboxesoutput_sizespatial_scalereturnc                    [         R                  R                  5       (       d2  [         R                  R                  5       (       d  [	        [
        5        [        5         [        U5        Un[        U5      n[        U[         R                  5      (       d  [        U5      n[         R                  R                  R                  XX2S   US   5      u  pVU$ )aK  
Performs Position-Sensitive Region of Interest (RoI) Pool operator
described in R-FCN

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

Returns:
    Tensor[K, C / (output_size[0] * output_size[1]), output_size[0], output_size[1]]: The pooled RoIs.
r   r	   )torchjitis_scripting
is_tracingr   ps_roi_poolr   r
   r   
isinstancer   r   opstorchvision)r   r   r   r   roisoutput_s          S/var/www/auris/envauris/lib/python3.13/site-packages/torchvision/ops/ps_roi_pool.pyr   r      s    > 99!!##EII,@,@,B,BK(% D$KdELL))*40		%%11%}Z[n^ijk^lmIFM    c                   \   ^  \ rS rSrSrS\S\4U 4S jjrS\S\S\4S	 jr	S\
4S
 jrSrU =r$ )	PSRoIPool6   z
See :func:`ps_roi_pool`.
r   r   c                 P   > [         TU ]  5         [        U 5        Xl        X l        g N)super__init__r   r   r   )selfr   r   	__class__s      r   r%   PSRoIPool.__init__;   s"    D!&*r   r   r   r   c                 D    [        XU R                  U R                  5      $ r#   )r   r   r   )r&   r   r   s      r   forwardPSRoIPool.forwardA   s    5(8(8$:L:LMMr   c                 l    U R                   R                   SU R                   SU R                   S3nU$ )Nz(output_size=z, spatial_scale=))r'   __name__r   r   )r&   ss     r   __repr__PSRoIPool.__repr__D   s;    ~~&&'}T5E5E4FFVW[WiWiVjjklr   )r   r   )r.   
__module____qualname____firstlineno____doc__intfloatr%   r   r*   strr0   __static_attributes____classcell__)r'   s   @r   r    r    6   sJ    +C + +NV N6 Nf N#  r   r    )g      ?)r   torch.fxr   r   torch.nn.modules.utilsr   torchvision.extensionr   utilsr   _utilsr
   r   fxwrapr6   r7   r   Moduler     r   r   <module>rD      sz       ( 1 ' F 
 	''' ' 	'
 ' 'T		 r   