MCPcopy Create free account
hub / github.com/NVIDIA/TensorRT / GridAnchorGenerator

Method GridAnchorGenerator

plugin/gridAnchorPlugin/gridAnchorPlugin.cpp:41–128  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

39std::vector<PluginField> GridAnchorBasePluginCreator::mPluginAttributes;
40
41GridAnchorGenerator::GridAnchorGenerator(GridAnchorParameters const* paramIn, int32_t numLayers, char const* name)
42 : mPluginName(name)
43 , mNumLayers(numLayers)
44{
45 PLUGIN_CUASSERT(cudaMallocHost((void**) &mNumPriors, mNumLayers * sizeof(int32_t)));
46 PLUGIN_CUASSERT(cudaMallocHost((void**) &mDeviceWidths, mNumLayers * sizeof(Weights)));
47 PLUGIN_CUASSERT(cudaMallocHost((void**) &mDeviceHeights, mNumLayers * sizeof(Weights)));
48
49 mParam.resize(mNumLayers);
50 for (int32_t id = 0; id < mNumLayers; id++)
51 {
52 mParam[id] = paramIn[id];
53 PLUGIN_VALIDATE(mParam[id].numAspectRatios >= 0 && mParam[id].aspectRatios != nullptr);
54
55 mParam[id].aspectRatios = (float*) malloc(sizeof(float) * mParam[id].numAspectRatios);
56
57 for (int32_t i = 0; i < paramIn[id].numAspectRatios; ++i)
58 {
59 mParam[id].aspectRatios[i] = paramIn[id].aspectRatios[i];
60 }
61
62 for (int32_t i = 0; i < 4; ++i)
63 {
64 mParam[id].variance[i] = paramIn[id].variance[i];
65 }
66
67 std::vector<float> tmpScales(mNumLayers + 1);
68
69 // Calculate the scales of SSD model for each layer
70 for (int32_t i = 0; i < mNumLayers; i++)
71 {
72 tmpScales[i] = (mParam[id].minSize + (mParam[id].maxSize - mParam[id].minSize) * id / (mNumLayers - 1));
73 }
74 // Add another 1.0f to tmpScales to prevent going out side of the vector in calculating the scale_next.
75 tmpScales.push_back(1.0F); // has 7 entries
76 // scale0 are for the first layer specifically
77 std::vector<float> scale0 = {0.1F, tmpScales[0], tmpScales[0]};
78
79 std::vector<float> aspect_ratios;
80 std::vector<float> scales;
81
82 // The first layer is different
83 if (id == 0)
84 {
85 for (int32_t i = 0; i < mParam[id].numAspectRatios; i++)
86 {
87 aspect_ratios.push_back(mParam[id].aspectRatios[i]);
88 scales.push_back(scale0[i]);
89 }
90 mNumPriors[id] = mParam[id].numAspectRatios;
91 }
92
93 else
94 {
95 for (int32_t i = 0; i < mParam[id].numAspectRatios; i++)
96 {
97 aspect_ratios.push_back(mParam[id].aspectRatios[i]);
98 }

Callers

nothing calls this directly

Calls 4

copyToDeviceFunction · 0.85
sqrtFunction · 0.50
resizeMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected