ó
    Eñiy  ã                   ó  • S SK Jr  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  S	S
KJrJr  \R"                  R$                   SS\S\\\\   4   S\\   S\S\4
S jj5       r " S S\R.                  5      rg)é    )Ú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                 ó®  • [         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$ )a  
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          ÚU/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torchvision/ops/roi_pool.pyr   r      sš   € ô< �9‰9×!Ñ!×#Ñ#¬E¯I©I×,@Ñ,@×,BÑ,BÜœHÔ%ÜÔÜ˜%Ô Ø€DÜ˜Ó$€KÜ�dœEŸL™L×)Ñ)Ü*¨4Ó0ˆÜ—	‘	×%Ñ%×.Ñ.¨u¸MÐWXÉ>Ð[fÐghÑ[iÓj�I€FØ€Mó    c                   ór   ^ • \ rS rSrSrS\\   S\4U 4S jjrS\	S\
\	\\	   4   S\	4S	 jrS\4S
 jrSrU =r$ )ÚRoIPoolé8   z
See :func:`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'   ÚRoIPool.__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ÚRoIPool.forwardC   s   € Ü˜ T×%5Ñ%5°t×7IÑ7IÓJÐJr    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__ÚRoIPool.__repr__F   s;   € Ø�~‰~×&Ñ&Ð' }°T×5EÑ5EÐ4FÐFVÐW[×WiÑWiÐVjÐjkÐlˆØˆr    )r   r   )r0   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   ÚintÚfloatr'   r   r   Úlistr,   Ústrr2   Ú__static_attributes__Ú__classcell__)r)   s   @r   r"   r"   8   s^   ø† ñð+Ð$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Úwrapr:   r8   r9   r   ÚModuler"   © r    r   Ú<module>rI      s“   ðÝ ã Û ß Ý 3Ý (Ý 1å 'ß Fð ‡�‡�ð
 ñ	&Øð&à�˜˜f™Ð%Ñ&ð&ð # 3Ñ'ð&ð ð	&ð
 ô&ó ð&ôRˆb�i‰iõ r    