95 {
96 if (frame == nullptr) {
97 return false;
98 }
99 if (frame->detected_objects.empty()) {
100 return true;
101 }
102 if (!options.normalized) {
103
105 }
106 auto feat_blob = frame->feature_blob;
108 feature_extractor_layer_ptr->rois_blob->Reshape(
109 {static_cast<int>(frame->detected_objects.size()), 5});
110 float *rois_data =
111 feature_extractor_layer_ptr->rois_blob->mutable_cpu_data();
112 for (const auto &obj : frame->detected_objects) {
113 rois_data[0] = 0;
114 rois_data[1] =
115 obj->camera_supplement.box.xmin *
static_cast<float>(
feat_width_);
116 rois_data[2] =
117 obj->camera_supplement.box.ymin *
static_cast<float>(
feat_height_);
118 rois_data[3] =
119 obj->camera_supplement.box.xmax *
static_cast<float>(
feat_width_);
120 rois_data[4] =
121 obj->camera_supplement.box.ymax *
static_cast<float>(
feat_height_);
122 ADEBUG << rois_data[0] <<
" " << rois_data[1] <<
" " << rois_data[2]
123 << " " << rois_data[3] << " " << rois_data[4];
124 rois_data += feature_extractor_layer_ptr->rois_blob->offset(1);
125 }
126
127
128 feature_extractor_layer_ptr->pooling_layer->ForwardGPU(
129 {feat_blob, feature_extractor_layer_ptr->rois_blob},
130 {frame->track_feature_blob});
131
132 if (!options.normalized) {
133
135 }
136 }
138 return true;
139}
void L2Norm(base::Blob< float > *input_data)