
    %`iU              	       $   d dl Z d dlZd dlZd dlmZ d dlmZ dZdZ	eZ
 eddd          d             Zd	 Zd
 ZdefdZ eddddddd          d             Z eddddddd          d             Z eddddd          d             Zd ZdS )    N)symbolic_opset11)
parse_args      vfc                    t          j        | |d          }t          j        | t          j        | |d          d          }|                     dt          j        t
          j        gt          j                            }|                     dt          j        |gt          j                            }|                     d|                     d|t          j	        j
        j                  |                     d|t          j	        j
        j                  ||          }t          j        | t          j        | |d|                     dt          j        d	gt          j                                      d          S )
Nr   Constantdtypevalue_tNonMaxSuppressionCastto_i      )opset11	unsqueezeoptorchtensorsysmaxsizelongfloatonnxTensorProtoDataTypeFLOATsqueezeselect)gboxesscoresiou_thresholdmax_output_per_classnms_outs         v/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/torchvision/ops/_register_onnx_ops.pysymbolic_multi_label_nmsr*      s<   a**Eq'"3Avq"A"A1EEF44
EL#+V[V`4a4a4a4bbDDU\=/QVQ\-]-]-]D^^M dd	VU!?!EFF	VV%*"@"FGG G ?	7>!Waj%,PQsZ_ZdBeBeBe)f)fggij      c                    t          j        | t          j        | |d|                     dt	          j        dgt          j                                      d          }|                     d|t          j        j        j	                  S )Nr   r
   r   r   r   r   r   )
r   r!   r"   r   r   r   r   r   r   INT64)r#   roisindicess      r)   $_process_batch_indices_for_roi_alignr0   !   sr    o	7>!T1add:u|QCW\Wa?b?b?bd&c&cddfg G 44ej&D&J4KKKr+   c                     t          j        | |d|                     dt          j        g dt          j                                      S )Nr   r
   )r   r         r   r   )r   r"   r   r   r   r   )r#   r.   s     r)   _process_rois_for_roi_alignr4   (   s?    >!T1add:u|LLL`e`j?k?k?kd&l&lmmmr+   sampling_ratioc                 >    |dk     rt          j        d           d}|S )Nr   zONNX export for RoIAlign with a non-zero sampling_ratio is not supported. The model will be exported with a sampling_ratio of 0.)warningswarn)r#   r5   s     r)   %_process_sampling_ratio_for_roi_alignr9   ,   s4    E	
 	
 	
 r+   ic           
          t          | |          }t          | |          }|rt          j        d           t	          | |          }|                     d|||||||          S )NzyROIAlign with aligned=True is only supported in opset >= 16. Please export with opset 16 or higher, or use aligned=False.RoiAlign)spatial_scale_foutput_height_ioutput_width_isampling_ratio_i)r0   r4   r7   r8   r9   r   )	r#   inputr.   spatial_scalepooled_heightpooled_widthr5   alignedbatch_indicess	            r)   roi_align_opset11rG   6   s    8DAAM&q$//D 
K	
 	
 	
 ;1nMMN44%%#'  	 	 	r+   c                     t          | |          }t          | |          }|rdnd}	t          | |          }|                     d||||	||||	  	        S )N
half_pixeloutput_half_pixelr<   ) coordinate_transformation_mode_sr=   r>   r?   r@   )r0   r4   r9   r   )
r#   rA   r.   rB   rC   rD   r5   rE   rF   coordinate_transformation_modes
             r)   roi_align_opset16rM   L   su    8DAAM&q$//D5<%U\\BU":1nMMN44)G%%#'  
 
 
r+   c                 B    |                      d||||f|          }|d fS )N
MaxRoiPool)pooled_shape_ir=   )r   )r#   rA   r.   rB   rC   rD   roi_pools          r)   rQ   rQ   _   s7    tteT=,2Oan   H T>r+   c                  ^   t           j                            dt          t                     t           j                            dt
          t                     t           j                            dt          t                     t           j                            dt          t                     d S )Nztorchvision::nmsztorchvision::roi_alignztorchvision::roi_pool)	r   r   register_custom_op_symbolicr*   _ONNX_OPSET_VERSION_11rG   rM   _ONNX_OPSET_VERSION_16rQ    r+   r)   _register_custom_oprW   g   s{    	J**+=?WYoppp	J**+CEVXnooo	J**+CEVXnooo	J**+BHNdeeeeer+   )r   r7   r   
torch.onnxr   r   torch.onnx.symbolic_helperr   rT   rU   BASE_ONNX_OPSET_VERSIONr*   r0   r4   intr9   rG   rM   rQ   rW   rV   r+   r)   <module>r\      so   



   2 2 2 2 2 2 1 1 1 1 1 1  0  Cc  &L L Ln n nS     Cc3S#..  /.* Cc3S#..  /.$ Cc3$$  %$f f f f fr+   