Ë
    þÍ:jy  ã                   ó  — d dl mZ d dlZd dlZd dlmZmZ d dlmZ d dlm	Z	 d dl
mZ ddlmZ d	d
lmZmZ ej"                  j$                  	 ddedeeee   f   dee   dedef
d„«       Z G d„ dej.                  «      Zy)é    )ÚUnionN)ÚnnÚTensor)ÚBroadcastingList2)Ú_pair)Ú_assert_has_opsé   )Ú_log_api_usage_onceé   )Úcheck_roi_boxes_shapeÚconvert_boxes_to_roi_formatÚinputÚboxesÚoutput_sizeÚspatial_scaleÚreturnc                 ó–  — t         j                  j                  «       s-t         j                  j                  «       st	        t
        «       t        «        t        |«       |}t        |«      }t        |t         j                  «      st        |«      }t         j                  j                  j                  | |||d   |d   «      \  }}|S )aU  
    Performs Region of Interest (RoI) Pool operator described in Fast 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 after the cropping
            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]]: The pooled RoIs.
    r   r   )ÚtorchÚjitÚis_scriptingÚ
is_tracingr
   Úroi_poolr   r   r   Ú
isinstancer   r   ÚopsÚtorchvision)r   r   r   r   ÚroisÚoutputÚ_s          úm/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/torchvision/ops/roi_pool.pyr   r      s—   € ô< �9‰9×!Ñ!Ô#¬E¯I©I×,@Ñ,@Ô,BÜœHÔ%ÜÔÜ˜%Ô Ø€DÜ˜Ó$€KÜ�dœEŸL™LÔ)Ü*¨4Ó0ˆÜ—	‘	×%Ñ%×.Ñ.¨u°d¸MÈ;ÐWXÉ>Ð[fÐghÑ[iÓj�I€FˆAØ€Mó    c                   ób   ‡ — e Zd ZdZdee   defˆ fd„Zdede	ee
e   f   defd„Zdefd	„Zˆ xZS )
ÚRoIPoolz
    See :func:`roi_pool`.
    r   r   c                 óT   •— t         ‰| �  «        t        | «       || _        || _        y ©N)ÚsuperÚ__init__r
   r   r   )Úselfr   r   Ú	__class__s      €r   r&   zRoIPool.__init__=   s&   ø€ Ü‰ÑÔÜ˜DÔ!Ø&ˆÔØ*ˆÕr    r   r   r   c                 óF   — t        ||| j                  | j                  «      S r$   )r   r   r   )r'   r   r   s      r   ÚforwardzRoIPool.forwardC   s   € Ü˜˜t T×%5Ñ%5°t×7IÑ7IÓJÐJr    c                 ól   — | j                   j                  › d| j                  › d| j                  › d�}|S )Nz(output_size=z, spatial_scale=ú))r(   Ú__name__r   r   )r'   Úss     r   Ú__repr__zRoIPool.__repr__F   s;   € Ø�~‰~×&Ñ&Ð' }°T×5EÑ5EÐ4FÐFVÐW[×WiÑWiÐVjÐjkÐlˆØˆr    )r-   Ú
__module__Ú__qualname__Ú__doc__r   ÚintÚfloatr&   r   r   Úlistr*   Ústrr/   Ú__classcell__)r(   s   @r   r"   r"   8   sY   ø„ ñð+Ð$5°cÑ$:ð +È5õ +ðK˜Vð K¨5°¸¸f¹Ð1EÑ+Fð KÈ6ó Kð˜#÷ r    r"   )g      ð?)Útypingr   r   Útorch.fxr   r   Útorch.jit.annotationsr   Útorch.nn.modules.utilsr   Útorchvision.extensionr   Úutilsr
   Ú_utilsr   r   ÚfxÚwrapr5   r3   r4   r   ÚModuler"   © r    r   ú<module>rC      s“   ðÝ ã Û ß Ý 3Ý (Ý 1å 'ß Fð ‡�‡�ð
 ñ	&Øð&à�˜˜f™Ð%Ñ&ð&ð # 3Ñ'ð&ð ð	&ð
 ò&ó ð&ôRˆb�i‰iõ r    