23 namespace perception {
34 const DFMBPSROIAlignParameter &dfmb_psroi_align_parameter,
35 nvinfer1::Dims *in_dims,
int nbInputs) {
36 heat_map_a_ = dfmb_psroi_align_parameter.heat_map_a();
37 output_channel_ = dfmb_psroi_align_parameter.output_dim();
38 group_height_ = dfmb_psroi_align_parameter.group_height();
39 group_width_ = dfmb_psroi_align_parameter.group_width();
40 pooled_height_ = dfmb_psroi_align_parameter.pooled_height();
41 pooled_width_ = dfmb_psroi_align_parameter.pooled_width();
42 pad_ratio_ = dfmb_psroi_align_parameter.pad_ratio();
43 sample_per_part_ = dfmb_psroi_align_parameter.sample_per_part();
45 trans_std_ = dfmb_psroi_align_parameter.trans_std();
46 part_height_ = dfmb_psroi_align_parameter.part_height();
47 part_width_ = dfmb_psroi_align_parameter.part_width();
48 heat_map_b_ = dfmb_psroi_align_parameter.heat_map_b();
49 no_trans_ = (nbInputs < 3);
50 num_classes_ = no_trans_ ? 1 : in_dims[2].d[1];
52 CHECK_GT(heat_map_a_, 0);
53 CHECK_GE(heat_map_b_, 0);
54 CHECK_GE(pad_ratio_, 0);
55 CHECK_GT(output_channel_, 0);
56 CHECK_GT(sample_per_part_, 0);
57 CHECK_GT(group_height_, 0);
58 CHECK_GT(group_width_, 0);
59 CHECK_GT(pooled_height_, 0);
60 CHECK_GT(pooled_width_, 0);
61 CHECK_GE(part_height_, 0);
62 CHECK_GE(part_width_, 0);
64 channels_ = in_dims[0].d[0];
65 height_ = in_dims[0].d[1];
66 width_ = in_dims[0].d[2];
67 output_dims_ = nvinfer1::Dims4(in_dims[1].d[0], output_channel_,
68 pooled_height_, pooled_width_);
70 in_dims[1].d[0] * output_channel_ * pooled_height_ * pooled_width_;
72 CHECK_EQ(channels_, output_channel_ * group_height_ * group_width_);
73 CHECK_EQ(in_dims[1].d[1], 5);
75 CHECK_EQ(in_dims[2].d[1] % 2, 0);
76 int num_classes = in_dims[2].d[1] / 2;
77 CHECK_EQ(output_channel_ % num_classes, 0);
78 CHECK_EQ(part_height_, in_dims[2].d[2]);
79 CHECK_EQ(part_width_, in_dims[2].d[3]);
90 int nbInputDims)
override {
95 void configure(
const nvinfer1::Dims *inputDims,
int nbInputs,
96 const nvinfer1::Dims *outputDims,
int nbOutputs,
97 int maxBatchSize)
override {}
101 virtual int enqueue(
int batchSize,
const void *
const *inputs,
void **outputs,
102 void *workspace, cudaStream_t stream);
107 char *d =
reinterpret_cast<char *
>(buffer), *a = d;
109 CHECK_EQ(d, a + size);
113 const int thread_size_ = 512;
121 int sample_per_part_;
135 nvinfer1::Dims output_dims_;
size_t getSerializationSize() override
Definition: dfmb_psroi_align_plugin.h:104
virtual int enqueue(int batchSize, const void *const *inputs, void **outputs, void *workspace, cudaStream_t stream)
int getNbOutputs() const override
Definition: dfmb_psroi_align_plugin.h:87
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
virtual int initialize()
Definition: dfmb_psroi_align_plugin.h:85
void serialize(void *buffer) override
Definition: dfmb_psroi_align_plugin.h:106
virtual void terminate()
Definition: dfmb_psroi_align_plugin.h:86
size_t getWorkspaceSize(int maxBatchSize) const override
Definition: dfmb_psroi_align_plugin.h:99
void configure(const nvinfer1::Dims *inputDims, int nbInputs, const nvinfer1::Dims *outputDims, int nbOutputs, int maxBatchSize) override
Definition: dfmb_psroi_align_plugin.h:95
virtual ~DFMBPSROIAlignPlugin()
Definition: dfmb_psroi_align_plugin.h:83
Definition: dfmb_psroi_align_plugin.h:31
nvinfer1::Dims getOutputDimensions(int index, const nvinfer1::Dims *inputs, int nbInputDims) override
Definition: dfmb_psroi_align_plugin.h:89
DFMBPSROIAlignPlugin(const DFMBPSROIAlignParameter &dfmb_psroi_align_parameter, nvinfer1::Dims *in_dims, int nbInputs)
Definition: dfmb_psroi_align_plugin.h:33