# ROIAlign **Table Of Contents** - [Description](#description) * [Structure](#structure) - [Parameters](#parameters) - [Additional resources](#additional-resources) - [License](#license) - [Changelog](#changelog) - [Known issues](#known-issues) ## Description > NOTE: Version 1 of this plugin (using IPluginV2DynamicExt interface) is deprecated since TensorRT 10.12. Version 2 (using IPluginV3 interface) is the recommended replacement. The ROIAlign plugin implements the Region of Interest (RoI) align operation described in the [Mask R-CNN paper](https://arxiv.org/abs/1703.06870), in compliance with the [ONNX specification for the same](https://github.com/onnx/onnx/blob/main/docs/Operators.md#RoiAlign) (insofar as TRT limitations allow). ### Structure This plugin has the plugin creator class `ROIAlignPluginCreator` and the plugin class `ROIAlign` which extends `IPluginV2DynamicExt`. The RoiAlign plugin consumes the following inputs: 1. `X` with shape (`batch_size`, `C`, `height`, `width`): An input tensor. 2. `rois` with shape (`num_rois`, `4`): Regions of interest (ROIs). 3. `batch_indices` with shape (`num_rois`,): The set of indices in `X` to apply pooling. i.e. The ROI defined by `rois[i]`, should be used to pool `X[batch_indices[i]]`. The RoiAlign plugin produces the following output: 1. `Y` with shape (`num_rois`, `C`, `output_height`, `output_width`): `Y[i]` is the output produced when pooling is applied over the ROI defined by `rois[i]` on `X[batch_indices[i]]`. ## Parameters The `ROIAlign` plugin has the following parameters: | Type | Parameter | Description |------------------|---------------------------------|-------------------------------------------------------- |`int` |`coordinate_transformation_mode` | Whether or not the input coordinates should be shifted by 0.5 pixels. Allowed values are 0 and 1. Default is 1 and indicates a shift. |`int` |`mode` | The pooling method. Average pooling (indicated by 1) and max pooling (indicated by 0) are supported. Allowed values are 0 and 1. Default is 1. |`int` |`output_height` | Height of the pooled output (`Y`). Allowed values are positive integers. Default is 1. |`int` |`output_width` | Width of the pooled output (`Y`). Allowed values are positive integers. Default is 1. |`int` |`sampling_ratio` | Number of sampling points in the interpolation grid used to compute the output value of each pooled output bin. If positive, then exactly `sampling_ratio` x `sampling_ratio` grid points are used. If zero, then an adaptive number of grid points are used (computed as ceil(roi_width / output_width), and likewise for height). Allowed values are non-negative integers. Default is 0. |`float` |`spatial_scale` | Multiplicative factor used to translate the ROI coordinates from their input spatial scale to the scale used when pooling. Allowed values are positive. Default is 1.0. ## Additional resources The following resources provide a deeper understanding of the `ROIAlign` plugin: - [Mask R-CNN paper](https://arxiv.org/abs/1703.06870) - [ONNX specification for ROIAlign](https://github.com/onnx/onnx/blob/main/docs/Operators.md#RoiAlign) ## License For terms and conditions for use, reproduction, and distribution, see the [TensorRT Software License Agreement](https://docs.nvidia.com/deeplearning/sdk/tensorrt-sla/index.html) documentation. ## Changelog April 2024: Implements `ROIAlignV3` which uses the `IPluginV3` interface. June 2022: This is the first release of this `README.md` file. ## Known issues There are no known issues in this plugin.