
    3j,                        S SK r S SKr S SKrS rS rS rS rS rS r	S r
S	 rS
 rS rS r\ R                  R!                  \ R                  R"                  R$                  5      \ R                  R!                  \ R                  R"                  R&                  5      -  \ R                  R!                  \ R                  R"                  R(                  5      -  rS rS rS rS rS rS rS r\R:                  R=                  5       (       Ga  \ R>                  RA                  S\\S9  \ R>                  RA                  S\\S9  \ R>                  RA                  S\	\S9  \ R>                  RA                  S\\
S9  \ R>                  RA                  S\\S9  \ R>                  RA                  S\" S5      5        \ R>                  RA                  S\" S5      5        \ R>                  RA                  S\" S5      5        \ R>                  RA                  S \" S!5      5        \ R>                  RA                  S"\" S#5      5        \ R>                  RC                  S$S%5      r"S& H)  r#\"RI                  S'\\#5        \"RI                  S\\#5        M+     \"RI                  S\S(5        \"RI                  S\S(5        \"RI                  S!\S(5        \"RI                  S#\S(5        gg))    Nc                     Uu  p4pVpxn	U R                  U5        UR                  U l        XPl        X`l        Xpl        Xl        Xl        g N)save_for_backwardshapeinput_shapespatial_scalepooled_heightpooled_widthsampling_ratioaligned)
ctxinputsoutputinputroisr   r	   r
   r   r   s
             ]/home/wildlama/miniconda3/lib/python3.13/site-packages/torchvision/_autograd_registrations.py_roi_align_setup_contextr      sF    W]TE|W$kkCO%%#'K    c                    U R                   u  nU R                  u  p4pV[        R                  R                  R                  UUU R                  U R                  U R                  UUUUU R                  U R                  5      nUS S S S S S 4$ r   )saved_tensorsr   torchopstorchvision_roi_align_backwardr   r	   r
   r   r   )r   grad_outputr   
batch_sizechannelsheightwidth
grad_inputs           r   r   r      s    GT*-//'J&&&::J tT4tT99r   c                     Uu  p4pVnUu  pU R                  XI5        UR                  U l        XPl        X`l        Xpl        g r   r   r   r   r   r	   r
   )
r   r   r   r   r   r   r	   r
   pooledargmaxs
             r   _roi_pool_setup_contextr%   -   s@    >D;E|NF$'kkCO%%#r   c                     U R                   u  p4U R                  u  pVpx[        R                  R                  R                  UUUU R                  U R                  U R                  UUUU5
      n	U	S S S S 4$ r   )	r   r   r   r   r   _roi_pool_backwardr   r	   r
   )
r   r   _grad_argmaxr   r$   r   r   r   r   r    s
             r   r'   r'   7   sz    $$LD*-//'J&&&99J tT4--r   c                     Uu  p4pVpxUu  pU R                  XJ5        UR                  U l        XPl        X`l        Xpl        Xl        g r   )r   r   r   r   r	   r
   r   )r   r   r   r   r   r   r	   r
   r   r#   channel_mappings              r   _ps_roi_align_setup_contextr+   J   sG    NTKE|$F$0kkCO%%#'r   c                    U R                   u  p4U R                  u  pVpx[        R                  R                  R                  UUUU R                  U R                  U R                  U R                  UUUU5      n	U	S S S S S 4$ r   )
r   r   r   r   r   _ps_roi_align_backwardr   r	   r
   r   
r   r   _grad_channel_mappingr   r*   r   r   r   r   r    s
             r   r-   r-   U   s    --D*-//'J&&&==J tT4t33r   c                     Uu  p4pVnUu  pU R                  XI5        UR                  U l        XPl        X`l        Xpl        g r   r"   )
r   r   r   r   r   r   r	   r
   r#   r*   s
             r   _ps_roi_pool_setup_contextr1   i   sA    >D;E|$F$0kkCO%%#r   c                     U R                   u  p4U R                  u  pVpx[        R                  R                  R                  UUUU R                  U R                  U R                  UUUU5
      n	U	S S S S 4$ r   )	r   r   r   r   r   _ps_roi_pool_backwardr   r	   r
   r.   s
             r   r3   r3   s   s{    --D*-//'J&&&<<J tT4--r   c                     Uu  nnnnnnn	n
nnnnnnU R                  X4XVU5        Xl        Xl        Xl        Xl        Xl        Xl        Xl        Xl        UU l	        g r   )
r   stride_hstride_wpad_hpad_w
dilation_h
dilation_wgroupsoffset_groupsuse_mask)r   r   r   r   weightoffsetmaskbiasr5   r6   r7   r8   r9   r:   r;   r<   r=   s                    r   _deform_conv2d_setup_contextrB      sx      	%t<LLIINNJ%CLr   c                 l   U R                   u  p#pEn[        R                  R                  R	                  UUUUUUU R
                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  5      u  pxpnUUU	U
US S S S S S S S S 4$ r   )r   r   r   r   _deform_conv2d_backwardr5   r6   r7   r8   r9   r:   r;   r<   r=   )r   r   r   r>   r?   r@   rA   r    grad_weightgrad_offset	grad_mask	grad_biass               r   rD   rD      s    (+(9(9%E6AFAVAVAnAn				

B>J[Y$ 	 r   c                    ^  U 4S jnU$ )Nc                 "   > [        ST S35      e)Nzdouble backwards on z not supported)RuntimeError)r   gradsop_names     r   backward%_no_double_backward.<locals>.backward   s    1'.IJJr    )rM   rN   s   ` r   _no_double_backwardrQ      s    K Or   c                     U R                  5       (       a-  U R                  [        R                  La  U R	                  5       $ U $ )zCast to float32 matching at::autocast::cached_cast(at::kFloat, ...) behavior.

Skips non-floating-point tensors and float64 tensors.
)is_floating_pointdtyper   float64float)tensors    r   _autocast_castrX      s3    
 !!fll%--&G||~Mr   c                     [         R                  R                  [        5         [         R                  R
                  R                  [        U 5      [        U5      U5      sS S S 5        $ ! , (       d  f       g = fr   )r   _C_ExcludeDispatchKeyGuard_all_autocast_keysr   r   nmsrX   )detsscoresiou_thresholds      r   _autocast_nmsra      sL    		*	*+=	>yy$$((4 6"
 
?	>	>s   =A++
A9c           
      6   U R                   n[        R                  R                  [        5         [        R
                  R                  R                  [        U 5      [        U5      UUUUU5      R                  U5      sS S S 5        $ ! , (       d  f       g = fr   )
rT   r   rZ   r[   r\   r   r   	roi_alignrX   to)r   r   r   r	   r
   r   r   
orig_dtypes           r   _autocast_roi_alignrf      sl    J		*	*+=	>yy$$..5!4 
 "Z. 
?	>	>s   AB


Bc                 \   U R                   n[        R                  R                  [        5         [        R
                  R                  R                  [        U 5      [        U5      UUU5      u  pgUR                  U5      UR                  U5      4sS S S 5        $ ! , (       d  f       g = fr   )
rT   r   rZ   r[   r\   r   r   roi_poolrX   rd   )r   r   r   r	   r
   re   r   r$   s           r   _autocast_roi_poolri      s{    J		*	*+=	>..775!4 
 yy$fii
&;; 
?	>	>   A#B
B+c           	      ^   U R                   n[        R                  R                  [        5         [        R
                  R                  R                  [        U 5      [        U5      UUUU5      u  pxUR                  U5      UR                  U5      4sS S S 5        $ ! , (       d  f       g = fr   )
rT   r   rZ   r[   r\   r   r   ps_roi_alignrX   rd   )	r   r   r   r	   r
   r   re   r   r*   s	            r   _autocast_ps_roi_alignrm   	  s    J		*	*+=	>"'))"7"7"D"D5!4 #
 yy$o&8&8&DD 
?	>	>s   A$B
B,c                 \   U R                   n[        R                  R                  [        5         [        R
                  R                  R                  [        U 5      [        U5      UUU5      u  pgUR                  U5      UR                  U5      4sS S S 5        $ ! , (       d  f       g = fr   )
rT   r   rZ   r[   r\   r   r   ps_roi_poolrX   rd   )r   r   r   r	   r
   re   r   r*   s           r   _autocast_ps_roi_poolrp     s~    J		*	*+=	>"'))"7"7"C"C5!4 #
 yy$o&8&8&DD 
?	>	>rj   c                 z   U R                   n[        R                  R                  [        5         [        R
                  R                  R                  [        U 5      [        U5      [        U5      [        U5      [        U5      UUUUU	U
UUU5      R                  U5      sS S S 5        $ ! , (       d  f       g = fr   )
rT   r   rZ   r[   r\   r   r   deform_conv2drX   rd   )r   r>   r?   r@   rA   r5   r6   r7   r8   r9   r:   r;   r<   r=   re   s                  r   _autocast_deform_conv2drs   $  s      J		*	*+=	>yy$$225!6"6"4 4 
 "Z.! 
?	>	>s   A2B,,
B:ztorchvision::roi_align)setup_contextztorchvision::roi_poolztorchvision::ps_roi_alignztorchvision::ps_roi_poolztorchvision::deform_conv2dz torchvision::_roi_align_backwardrc   ztorchvision::_roi_pool_backwardrh   z#torchvision::_ps_roi_align_backwardrl   z"torchvision::_ps_roi_pool_backwardro   z$torchvision::_deform_conv2d_backwardrr   r   IMPL)AutocastCUDAAutocastCPUAutocastXPUr]   rv   )%r   torch.librarytorchvision.extensionr   r   r   r%   r'   r+   r-   r1   r3   rB   rD   rQ   rZ   DispatchKeySetDispatchKeyrw   rv   rx   r\   rX   ra   rf   ri   rm   rp   rs   	extension_has_opslibraryregister_autogradLibrary_autocast_lib_keyimplrP   r   r   <module>r      s     :($.&(4($.&:"L 
HHEHH00<<=hhehh22??@Ahhehh22>>?@ 

<E
E!P !!##	MM## "5E] $  
MM##$;=O_v#w	MM###%;Kf $  
MM##"$9Ic $  
MM##$&=Mi $ 
 
MM##$FH[\gHhi	MM##$EGZ[eGfg	MM##$IK^_mKno	MM##$HJ]^kJlm	MM##$JL_`oLpq MM))-@M ?5-6;(;TB ?
 z#5~F~'=~N}&;^L(?PG $r   