25 {
26 auto n = frame1->detected_objects.size();
27 auto m = frame2->detected_objects.size();
28 if ((n && m) == 0) {
29 return false;
30 }
31 sim->Reshape({
static_cast<int>(n),
static_cast<int>(m)});
32 float *sim_data =
sim->mutable_cpu_data();
33 auto dim =
34 frame1->detected_objects[0]->camera_supplement.object_feature.size();
35 for (auto &object1 : frame1->detected_objects) {
36 for (auto &object2 : frame2->detected_objects) {
37 float s = 0.0f;
38 for (size_t k = 0; k < dim; ++k) {
39 s += object1->camera_supplement.object_feature[k] *
40 object2->camera_supplement.object_feature[k];
41 }
42 *sim_data = s;
43 ++sim_data;
44 }
45 }
46 return true;
47}
for dynamic models (perfect model excluded)