o
    pi'                     @   s  d dl Zd dlZd dlmZmZmZmZ d dl	m
Z
 d dlmZ e
jddde
jddde
jd	dde
jd
dde
jddde
jddde
jddde
jddde
jddde
jddde
jddde
jddde
jddde
jddde
jddde
jddde
jddde
jddde
jddde
jddde
jddde
jddde
jddddd  Ze
jd!d"dd#d$ Ze
jd%ddd&d' Ze
jd(d)dd*d+ ZdS ),    N)WithFp16get_trt_pluginset_layer_nameunary_op_converter)converter_registry)TensorRTConstantManagerz
pd_op.sqrtztrt_version_ge=8.0)Ztrt_versionzpd_op.sqrt_zpd_op.floorz	pd_op.expz	pd_op.absz
pd_op.abs_z	pd_op.sinz	pd_op.cosz
pd_op.sinhz
pd_op.coshzpd_op.asinhzpd_op.acoshzpd_op.atanhz
pd_op.ceilz	pd_op.tanz
pd_op.asinz
pd_op.acosz
pd_op.atanzpd_op.reciprocalz	pd_op.erfzpd_op.rsqrtz
pd_op.signztrt_version_ge=8.2zpd_op.roundc                 C   s   t | ||}|S )N)r   )network	paddle_opinputsZlayer_output r   `/home/app/PaddleOCR-VL/.venv_paddleocr/lib/python3.10/site-packages/paddle/tensorrt/impls/ops.pyUnaryOpConverter   s   r   zpd_op.roi_alignz8.xc                 C   sT  |d }|d }|  d}|  d}|  d}|  d}|  d}	tt }
tdtj|
gtjd	tj	j
tdtj|tjd	tj	j
tdtj|tjd	tj	j
tdtj|tjd	tj	jtdtj|tjd	tj	j
tdtj|	tjd	tj	j
g}t|}d
}d}t|||}||g}| ||}t|| |dS )Nr      pooled_heightpooled_widthspatial_scalesampling_ratioalignedtype_idZdtypeZpir_roi_align_plugin_dynamic2)attrsgetintr   trtPluginFieldnparrayint32PluginFieldTypeINT32float32FLOAT32bool_PluginFieldCollectionr   add_plugin_v2r   
get_output)r   r	   r
   xZroisr   r   r   r   r   r   plugin_fieldsplugin_field_collectionplugin_nameplugin_versionpluginZroi_align_inputsZroi_align_layerr   r   r   roi_align_converter<   sb   

 

r-   zpd_op.yolo_boxc                 C   s  |\}}|  d}|  d}|  d}|  d}|  d}	|  d}
|  d}|  d}tt }tj|tjd	}td
tj|gtjd	tj	j
td|tj	j
tdtj|tjd	tj	j
tdtj|tjd	tj	jtdtj|tjd	tj	j
tdtj|	tjd	tj	j
tdtj|
tjd	tj	jtdtj|tjd	tj	j
tdtj|tjd	tj	jg	}t|}d}d}t|||}||g}| ||}t|| |d}|d}||fS )N	class_numanchorsdownsample_ratioconf_thresh	clip_bbox	scale_x_y	iou_awareiou_aware_factorr   r   Zyolo_box_plugin_dynamic1r   r   )r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r   r%   r   r&   )r   r	   r
   r'   ZimgSizer.   r/   r0   r1   r2   r3   r4   r5   r   r(   r)   r*   r+   r,   Zyolo_box_inputsZyolo_box_layerZout0Zout1r   r   r   YoloBoxOpConverterr   s   

/


r7   zpd_op.deformable_convztrt_version_ge=8.5c                 C   s  |d }t  }|d }|d }|d }t|tjr-| d    d }||}n|	 }| 
d}	| 
d}
| 
d}| 
d	}| 
d
}| 
d}| d  j}tdtjdgtjdtjjtd|tjjtdtj|tjdtjjtd	tj|tjdtjjtd
tj|tjdtjjtdtj|tjdtjjtdtj|	tjdtjjtdtj|
tjdtjjtdtj|tjdtjjg	}t|}d}d}t|||}| |d |d |d g|}t|| |dS )Nr   r         Zparameter_namegroupsdeformable_groupsim2col_stepstridespaddings	dilationsZ	with_fp16Fr   weightskernel_dimsZpir_deformable_conv_pluginr6   )r   
isinstancer   ZITensorZoperandssourceZget_defining_opr   Zget_constant_valuenumpyr   shaper   r   r   r#   r   r    r"   r   r$   r   r%   r   r&   )r   r	   r
   inputZconstant_manageroffsetfiltermaskZfilter_namer:   r;   r<   r=   r>   r?   rA   r(   r)   r*   r+   r,   Zdeformable_conv_layerr   r   r   deformable_conv_converter   s   

/

rJ   )rD   r   Ztensorrtr   Zpaddle.tensorrt.converter_utilsr   r   r   r   Zpaddle.tensorrt.registerr   Zpaddle.tensorrt.utilr   registerr   r-   r7   rJ   r   r   r   r   <module>   sN   6
5
J