# pillarScatter Plugin [DEPRECATED]

**This plugin is deprecated since TensorRT 10.12 and will be removed in a future release. No alternatives are planned to be provided.**

**Table Of Contents**
- [Description](#description)
    * [Structure](#structure)
- [Parameters](#parameters)
- [Additional resources](#additional-resources)
- [License](#license)
- [Changelog](#changelog)
- [Known issues](#known-issues)

## Description

The `pillarScatterPlugin` performs scatter of voxels for PointPillars model. This operation is roughly a sparse to dense conversion and similar to ordinary scatter operation. The difference is `pillarScatterPlugin` will only scatter voxels that are marked as valid and do nothing for invalid voxels.

`pillarScatterPlugin` implements a sparse to dense conversion of voxels. The plugin takes sparse voxel values and their corresponding indices and produces a dense representation of the voxels(pillars).

This plugin is optimized for the above steps and it allows you to do PointPillars inference in TensorRT.


### Structure

The `pillarScatterPlugin` takes 3 inputs; `voxels`, `voxel_coords`, and `num_pillar`.

`voxels`
The tensor of voxel values. The shape of this tensor is `[N, P, C]`, where `N` is the batch size, `P` is the maximum number of pillars per frame, and `C` is the number of features for each pillar.


`voxel_coords`
The dense coordinates of `voxels`. This tensor contains the coordinate of each voxel in `voxels`. The coordinates will determine which voxel goes to which index in the output dense tensor. This tensor has a shape of `[N, P, 4]`, where `N, P` are as above and `4` is the length of the coordinates encoded as `(frame_id, z, y, x)`.


`num_pillar`
The number of valid pillars. For each frame, the number of voxels(pillars) can be lower than the maximum pillar number `P`. Only valid pillars will be considered in this operation. Invalid pillars will simply be ignored. The dimension of this tensor is simply `[N]`.


The `pillarScatterPlugin` generates the following 1 output:

`dense_feature_map`
The result of this operation is a dense feature map with the shape `[N, C, H, W]`, where `N, C` are as above and `H, W` are the height and width of the dense feature map. This tensor usually is a highly sparse tensor.


## Parameters

`pillarScatterPlugin` has plugin creator class `pillarScatterPluginCreator` and plugin class `pillarScatterPlugin`.

The parameters are defined below and consists of the following attributes:

| Type     | Parameter                | Description
|----------|--------------------------|--------------------------------------------------------
|`list of ints` | `dense_shape` | The shape(h, w) of the dense feature map that will be generated by this operation.

## Additional resources

The following resources provide a deeper understanding of the `pillarScatterPlugin` plugin:

**Networks:**
-   [PointPillars](https://arxiv.org/pdf/1812.05784)

**Documentation:**
-   [PointPillars](https://arxiv.org/pdf/1812.05784)

## 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

May 2025
Add deprecation note.

Feb 2023
Fixed a bug where PillarScatter would incorrectly report support for `HWC8` formats.

Dec 2021
This is the first release of this `README.md` file.


## Known issues

There are no known issues in this plugin.
