
    h*                     N    S SK Jr  S SKrS SKJr   " S S5      r " S S\5      rg)    )TupleN)OpRunc                   ,    \ rS rSrSS jrS\4S jrSrg)PreCalc   c	                 d    Xl         X l        X0l        X@l        XPl        X`l        Xpl        Xl        g )Npos1pos2pos3pos4w1w2w3w4)	selfr
   r   r   r   r   r   r   r   s	            Y/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/reference/ops/op_roi_align.py__init__PreCalc.__init__   s*    				    returnc                     SU R                    SU R                   SU R                   SU R                   SU R                   SU R
                   SU R                   SU R                   S3$ )NzPreCalc(,)r	   )r   s    r   __repr__PreCalc.__repr__   sk    $))Adii[$))Adii[$''RSTXT[T[S\\]^b^e^e]ffghlhohogppqrrr   r	   N)r   r   r   r   r   r   r   r   )__name__
__module____qualname____firstlineno__r   strr   __static_attributes__ r   r   r   r      s    s# sr   r   c                       \ rS rSr\S\S\S\S\S\S\S\S	\4S
 j5       r\S\\\\\4   S\S\S\S\4
S j5       r	      SS jr
Srg)RoiAlign   heightwidthpooled_heightpooled_widthiy_upperix_upperroi_bin_grid_hroi_bin_grid_wc                    Sn[        U5       GH  n[        U5       GH  n[        U5       GH  nUX-  -   US-   U-  U
-  -   n[        U5       GH_  nUX-  -   US-   U	-  U-  -   nUnUnUS:  d  UU :  d  US:  d  UU:  aC  X   nSUl        SUl        SUl        SUl        SUl        SUl        SUl        SUl        US-  nMv  [        US5      n[        US5      n[        U5      n[        U5      nUU S-
  :  a
  U S-
  =nnUnOUS-   nUUS-
  :  a
  US-
  =nnUnOUS-   nUU-
  nUU-
  nSU-
  nSU-
  nUU-  nUU-  n UU-  n!UU-  n"[        5       nUU-  U-   Ul        UU-  U-   Ul        UU-  U-   Ul        UU-  U-   Ul        UUl        U Ul        U!Ul        U"Ul        UX'   US-  nGMb     GM     GM     GM     g )Nr         ?g               ?)ranger
   r   r   r   r   r   r   r   maxintr   )#r'   r(   r)   r*   r+   r,   roi_start_hroi_start_w
bin_size_h
bin_size_wr-   r.   pre_calcpre_calc_indexphpwiyyyixxxxypcy_lowx_lowy_highx_highlylxhyhxr   r   r   r   s#                                      r   !pre_calc_for_bilinear_interpolate*RoiAlign.pre_calc_for_bilinear_interpolate   sA     &BL)/B#/*8z1NBC 
 $Ho' o.!Cx:5FG  t8q6zQXU!)!9B&'BG&'BG&'BG&'BG$%BE$%BE$%BE$%BE*a/N$1I1I #A #A FQJ.-3aZ7FU %A%*QYF EAI--2QY6FU %A%*QYFYY 2X 2X"W"W"W"W %Y"'%-%"7"'%-&"8"(5.5"8"(5.6"9 " " " "350&!+} . * * 'r   output_shapenum_roi_cols
half_pixelc                    U S   nU S   nU S   nU S   n[        U5       GHR  nUU-  U-  U-  nUU-  nUU   nU
(       a  SOSnUUS-      U-  U-
  nUUS-      U-  U-
  nUUS-      U-  U-
  nUUS-      U-  U-
  nUU-
  nUU-
  nU
(       d  [        US5      n[        US5      nUU-  nUU-  nUS:  a  [        U5      O![        [        R                  " UU-  5      5      nUS:  a  [        U5      O![        [        R                  " UU-  5      5      n[        [        UU-  S5      5      n[        UU-  U-  U-  5       V s/ s H  n [        5       PM     n!n [        R                  UUUUUUUUUUUUU!5        [        U5       GH  n"UU"U-  U-  -   n#[        UU-  U"-   U-  U-  5      n$Sn%[        U5       GH  n&[        U5       GH  n'U#U&U-  -   U'-   n(Sn)U	S:X  a  [        U5       H  n*[        U5       H  n+U!U%   n,U)U,R                  UU$U,R                  -      -  U,R                  UU$U,R                  -      -  -   U,R                  UU$U,R                  -      -  -   U,R                  UU$U,R                  -      -  -   -  n)U%S-  n%M     M     U)U-  n)OS	n-[        U5       H  n*[        U5       H  n+U!U%   n,[        U,R                  UU$U,R                  -      -  U,R                  UU$U,R                  -      -  U,R                  UU$U,R                  -      -  U,R                  UU$U,R                  -      -  5      n.U-(       d  U.n)S
n-O[        U)U.5      n)U%S-  n%M     M     U)UU('   GM     GM     GM     GMU     g s  sn f )Nr   r1         r0   g        r2   avgFT)r3   r4   r5   npceilr   r%   rM   r   r
   r   r   r   r   r   r   )/rO   bottom_dataspatial_scaler'   r(   sampling_ratiobottom_roisrP   top_datamoderQ   batch_indices_ptrn_roischannelsr)   r*   nindex_noffset_bottom_roisroi_batch_indoffsetr7   r6   	roi_end_w	roi_end_h	roi_width
roi_heightr8   r9   r-   r.   countir:   c	index_n_coffset_bottom_datar;   r<   r=   index
output_val_iy_ixrD   max_flagvals/                                                  r   roi_align_forwardRoiAlign.roi_align_forwardv   sZ    a?$Q#A vA(l\1MAG "#\!1-a0M 'SCF%&81&<=MPVVK%&81&<=MPVVK#$6$:;mKfTI#$6$:;mKfTI!K/I"[0J	3/	 S1
#m3J"\1J
 "A% N#m!;<=  "A% N#\!9:;  N^;Q?@E "^3lB]RA 	   66  8_#a,&6&FF	%("X-1V;eC&" "#.B#L1 )B,= = B%(
5=',^'<+0+@C)1.)AB$.(**56H2776R*S)T*,%%*56H2776R*S+T)T +-%%*56H2776R*S+T	)T +-%%*56H2776R*S+T)T	%&J %3a$7N ,A (= '%/J',H',^'<+0+@C)1.)AB*-(**56H2776R*S)T(**56H2776R*S)T(**56H2776R*S)T(**56H2776R*S)T	+&C ,458
3758S5I
$2a$7N# ,A (=( +5W 2 / % Rs   M8Nc
                    U=(       d    U R                   nU=(       d    U R                  nU=(       d    U R                  nU=(       d    U R                  nU=(       d    U R                  nU	=(       d    U R
                  n	UR                  S   n
UR                  S   nUR                  S   nXXg4n[        R                  " XR                  S9R                  5       nU R                  UUR                  5       U	UR                  S   UR                  S   UUR                  5       UUUR                  5       UR                  5       S:H  UR                  5       5        UR                  U5      R                  UR                  5      4$ )Nr1   r   )dtyperS   rT   rQ   )coordinate_transformation_moder]   output_heightoutput_widthrZ   rY   shaperV   emptyrx   flattenru   lowerreshapeastype)r   Xroisbatch_indicesry   r]   rz   r{   rZ   rY   num_channelsnum_roisrP   y_dimsYs                  r   _runRoiAlign._run   sA    *H)n4KnKn& tyy%;););#8t'8'8'>4+>+>%;););wwqz &&q)zz!}-FHHV77+335IIKGGAJGGAJLLNJJL*002lB!!#	
 		&!((133r   r#   )NNNNNN)r   r   r   r    staticmethodr5   rM   r   boolru   r   r"   r#   r   r   r%   r%      s    V,V,V, V, 	V,
 V, V, V, V, V,p G5Cc3./G5 	G5
 G5 G5 G5 G5\ (,(4r   r%   )typingr   numpyrV   onnx.reference.op_runr   r   r%   r#   r   r   <module>r      s*      's sL4u L4r   