
    /j>                    V    d dl mZ d dlZd dlZd dlmZ d dlmZ  G d de          Z	dS )    )annotationsN)Base)expectc                      e Zd Zedd            Zedd            Zedd            Zedd            Zedd            Zedd            Z	edd	            Z
edd
            Zedd            Zedd            ZdS )NonMaxSuppressionreturnNonec            	        t           j                            dg ddg          } t          j        g dg dg dg dg d	g d
gg                              t          j                  }t          j        g dgg                              t          j                  }t          j        dg                              t          j                  }t          j        dg                              t          j                  }t          j        dg                              t          j                  }t          j        g dg dg dg                              t          j                  }t          | |||||g|gd           d S )Nr   boxesscoresmax_output_boxes_per_classiou_thresholdscore_thresholdselected_indicesinputsoutputs        r         ?r   r   g?r   g?r   皙r   ?r   g      $@r   g      &@r   333333$@r   333333&@r         Y@r        @Y@r   g      ?333333?gffffff?      ?g333333?   r%   r   r   r   r&   r   r   r   r   r      &test_nonmaxsuppression_suppress_by_IOUr   r   name	onnxhelper	make_nodenparrayastypefloat32int64r   noder   r   r   r   r   r   s          r/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/onnx/backend/test/case/node/nonmaxsuppression.py(export_nonmaxsuppression_suppress_by_IOUz:NonMaxSuppression.export_nonmaxsuppression_suppress_by_IOU   s   {$$   (( % 

 

  )((((()))******,,,	
 
 &

 	 <<<=>??FFrzRR%'Xqc]]%9%9"(%C%C"#..rz::(C5//00<<8YYY			999$EFFMMbhWW* &&9	
 	
 	
 	
 	
 	
    c            	        t           j                            dg ddg          } t          j        g dg dg dg dg d	g d
gg                              t          j                  }t          j        g dgg                              t          j                  }t          j        dg                              t          j                  }t          j        dg                              t          j                  }t          j        dg                              t          j                  }t          j        g dg dg                              t          j                  }t          | |||||g|gd           d S )Nr   r   r   r   r   r   r   r   r   r    r#   r&   r%   皙?r'   r(   1test_nonmaxsuppression_suppress_by_IOU_and_scoresr,   r.   r7   s          r9   3export_nonmaxsuppression_suppress_by_IOU_and_scoreszENonMaxSuppression.export_nonmaxsuppression_suppress_by_IOU_and_scores:   s   {$$   (( % 

 

  )((((()))******,,,	
 
 &

 	 <<<=>??FFrzRR%'Xqc]]%9%9"(%C%C"#..rz::(C5//00<<8YYY			$:;;BB28LL* &&D	
 	
 	
 	
 	
 	
r;   c            	        t           j                            dg ddg          } t          j        g dg dg dg dg d	g d
gg                              t          j                  }t          j        g dgg                              t          j                  }t          j        dg                              t          j                  }t          j        dg                              t          j                  }t          j        dg                              t          j                  }t          j        g dg dg dg                              t          j                  }t          | |||||g|gd           d S )Nr   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   )r   r"   r   r!   r#   r&   r%   r   r'   r(   r)   *test_nonmaxsuppression_flipped_coordinatesr,   r.   r7   s          r9   ,export_nonmaxsuppression_flipped_coordinatesz>NonMaxSuppression.export_nonmaxsuppression_flipped_coordinatesf   s   {$$   (( % 

 

  )((((()))******,,,	
 
 &

 	 <<<=>??FFrzRR%'Xqc]]%9%9"(%C%C"#..rz::(C5//00<<8YYY			999$EFFMMbhWW* &&=	
 	
 	
 	
 	
 	
r;   c            	        t           j                            dg ddg          } t          j        g dg dg dg dg d	g d
gg                              t          j                  }t          j        g dgg                              t          j                  }t          j        dg                              t          j                  }t          j        dg                              t          j                  }t          j        dg                              t          j                  }t          j        g dg dg                              t          j                  }t          | |||||g|gd           d S )Nr   r   r   r   r   r   r   r   r   r    r#      r%   r   r'   r(   (test_nonmaxsuppression_limit_output_sizer,   r.   r7   s          r9   *export_nonmaxsuppression_limit_output_sizez<NonMaxSuppression.export_nonmaxsuppression_limit_output_size   s   {$$   (( % 

 

  )((((()))******,,,	
 
 &

 	 <<<=>??FFrzRR%'Xqc]]%9%9"(%C%C"#..rz::(C5//00<<8YYY			$:;;BB28LL* &&;	
 	
 	
 	
 	
 	
r;   c                    t           j                            dg ddg          } t          j        g dgg                              t          j                  }t          j        dggg                              t          j                  }t          j        dg                              t          j                  }t          j        dg                              t          j                  }t          j        d	g                              t          j                  }t          j        g d
g                              t          j                  }t          | |||||g|gd           d S )Nr   r   r   r   r   r   r&   r%   r   r(   !test_nonmaxsuppression_single_boxr,   r.   r7   s          r9   #export_nonmaxsuppression_single_boxz5NonMaxSuppression.export_nonmaxsuppression_single_box   sR   {$$   (( % 

 

 ///012299"*EESE7)$$++BJ77%'Xqc]]%9%9"(%C%C"#..rz::(C5//00<<8YYYK0077AA* &&4	
 	
 	
 	
 	
 	
r;   c                     t           j                            dg ddg          } t          j        g dg dg dg dg dg dg dg dg dg dg
g                              t          j                  }t          j        g dgg                              t          j                  }t          j        dg                              t          j                  }t          j        dg                              t          j                  }t          j        d	g                              t          j                  }t          j        g d
g                              t          j                  }t          | |||||g|gd           d S )Nr   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   r&   r%   r   r(   &test_nonmaxsuppression_identical_boxesr,   r.   r7   s          r9   (export_nonmaxsuppression_identical_boxesz:NonMaxSuppression.export_nonmaxsuppression_identical_boxes   s   {$$   (( % 

 

  )(((((((((((((((((((((((((((((
 
 &

 	  @@@AB
 

&

 	 &(Xqc]]%9%9"(%C%C"#..rz::(C5//00<<8YYYK0077AA* &&9	
 	
 	
 	
 	
 	
r;   c            	        t           j                            dg ddgd          } t          j        g dg dg dg d	g d
g dgg                              t          j                  }t          j        g dgg                              t          j                  }t          j        dg                              t          j                  }t          j        dg                              t          j                  }t          j        dg                              t          j                  }t          j        g dg dg dg                              t          j                  }t          | |||||g|gd           d S )Nr   r   r      )r   r   center_point_box)r%   r%   r   r   )r%   r$   r   r   )r%   r=   r   r   )r%   g      %@r   r   )r%   g333333%@r   r   )r%   g      Y@r   r   r#   r&   r%   r   r'   r(   r)   .test_nonmaxsuppression_center_point_box_formatr,   r.   r7   s          r9   0export_nonmaxsuppression_center_point_box_formatzBNonMaxSuppression.export_nonmaxsuppression_center_point_box_format  s   {$$   (( % 
 
  )(((((((())))))***	
 
 &

 	 <<<=>??FFrzRR%'Xqc]]%9%9"(%C%C"#..rz::(C5//00<<8YYY			999$EFFMMbhWW* &&A	
 	
 	
 	
 	
 	
r;   c            	         t           j                            dg ddg          } t          j        g dg dg dg dg d	g d
gg                              t          j                  }t          j        g dg dgg                              t          j                  }t          j        dg                              t          j                  }t          j        dg                              t          j                  }t          j        dg                              t          j                  }t          j        g dg dg dg dg                              t          j                  }t          | |||||g|gd           d S )Nr   r   r   r   r   r   r   r   r   r    r#   rD   r%   r   r'   r(   )r   rN   r&   )r   rN   r   "test_nonmaxsuppression_two_classesr,   r.   r7   s          r9   $export_nonmaxsuppression_two_classesz6NonMaxSuppression.export_nonmaxsuppression_two_classes>  s   {$$   (( % 

 

  )((((()))******,,,	
 
 &

 	 ...0P0P0PQR
 

&

 	 &(Xqc]]%9%9"(%C%C"#..rz::(C5//00<<8YY			999iii8
 

&

 	 	* &&5	
 	
 	
 	
 	
 	
r;   c            
     H   t           j                            dg ddg          } t          j        g dg dg dg dg d	g d
gg dg dg dg dg d	g d
gg                              t          j                  }t          j        g dgg dgg                              t          j                  }t          j        dg                              t          j                  }t          j        dg                              t          j                  }t          j        dg                              t          j                  }t          j        g dg dg dg dg                              t          j                  }t          | |||||g|gd           d S )Nr   r   r   r   r   r   r   r   r   r    r#   rD   r%   r   r'   r(   )rN   r   r&   )rN   r   r   "test_nonmaxsuppression_two_batchesr,   r.   r7   s          r9   $export_nonmaxsuppression_two_batchesz6NonMaxSuppression.export_nonmaxsuppression_two_batchesn  s   {$$   (( % 

 

  )((((()))******,,, )((((()))******,,,
 
& &

' 	( .../2R2R2R1ST
 

&

 	 &(Xqc]]%9%9"(%C%C"#..rz::(C5//00<<8YY			999iii8
 

&

 	 	* &&5	
 	
 	
 	
 	
 	
r;   c                    t           j                            dg ddg          } t          j        g dg dgg                              t          j                  }t          j        ddggg                              t          j                  }t          j        d	g                              t          j                  }t          j        d
          }t          j        |g                              t          j                  }t          j        dg                              t          j                  }t          j        g dg dg                              t          j                  }t          | |||||g|gd           dS )a  Test boundary condition where IoU exactly equals threshold.

        This test verifies that the comparison is strict (>), not inclusive (>=).
        When IoU exactly equals the threshold, boxes should be KEPT, not suppressed.
        This follows PyTorch's NMS implementation.
        r   r   r   r   r   )r%   r%         ?rY   r   g?r&   g$I$I?r   r(   )r   r   rN   -test_nonmaxsuppression_iou_threshold_boundaryr,   Nr.   )r8   r   r   r   	exact_iour   r   r   s           r9   /export_nonmaxsuppression_iou_threshold_boundaryzANonMaxSuppression.export_nonmaxsuppression_iou_threshold_boundary  s    {$$   (( % 

 

   )(((((
 
 &

 	 S#J<.))00<<%'Xqc]]%9%9"(%C%C" J{++	)--44RZ@@(C5//00<<8YYY			$:;;BB28LL* &&@	
 	
 	
 	
 	
 	
r;   N)r   r	   )__name__
__module____qualname__staticmethodr:   r?   rB   rF   rI   rL   rQ   rT   rW   r\    r;   r9   r   r      s[       )
 )
 )
 \)
V )
 )
 )
 \)
V )
 )
 )
 \)
V )
 )
 )
 \)
V 
 
 
 \
@ /
 /
 /
 \/
b *
 *
 *
 \*
X -
 -
 -
 \-
^ 5
 5
 5
 \5
n 4
 4
 4
 \4
 4
 4
r;   r   )

__future__r   numpyr2   r/   onnx.backend.test.case.baser   onnx.backend.test.case.noder   r   ra   r;   r9   <module>rf      s    # " " " " "      , , , , , , . . . . . .N
 N
 N
 N
 N
 N
 N
 N
 N
 N
r;   