|
19 | 19 | #include "object_recognition_utils/object_recognition_utils.hpp"
|
20 | 20 | namespace centerpoint
|
21 | 21 | {
|
| 22 | +using Label = autoware_perception_msgs::msg::ObjectClassification; |
22 | 23 |
|
23 | 24 | void NonMaximumSuppression::setParameters(const NMSParams & params)
|
24 | 25 | {
|
25 | 26 | assert(params.search_distance_2d_ >= 0.0);
|
26 | 27 | assert(params.iou_threshold_ >= 0.0 && params.iou_threshold_ <= 1.0);
|
27 | 28 |
|
28 | 29 | params_ = params;
|
| 30 | + search_distance_2d_sq_ = params.search_distance_2d_ * params.search_distance_2d_; |
29 | 31 | target_class_mask_ = classNamesToBooleanMask(params.target_class_names_);
|
30 | 32 | }
|
31 | 33 |
|
32 |
| -bool NonMaximumSuppression::isTargetLabel(const uint8_t label) |
33 |
| -{ |
34 |
| - if (label >= target_class_mask_.size()) { |
35 |
| - return false; |
36 |
| - } |
37 |
| - return target_class_mask_.at(label); |
38 |
| -} |
39 |
| - |
40 | 34 | bool NonMaximumSuppression::isTargetPairObject(
|
41 | 35 | const DetectedObject & object1, const DetectedObject & object2)
|
42 | 36 | {
|
43 | 37 | const auto label1 = object_recognition_utils::getHighestProbLabel(object1.classification);
|
44 | 38 | const auto label2 = object_recognition_utils::getHighestProbLabel(object2.classification);
|
45 | 39 |
|
46 |
| - if (isTargetLabel(label1) && isTargetLabel(label2)) { |
47 |
| - return true; |
| 40 | + // if labels are not the same, and one of them is pedestrian, do not suppress |
| 41 | + if (label1 != label2 && (label1 == Label::PEDESTRIAN || label2 == Label::PEDESTRIAN)) { |
| 42 | + return false; |
48 | 43 | }
|
49 | 44 |
|
50 |
| - const auto search_sqr_dist_2d = params_.search_distance_2d_ * params_.search_distance_2d_; |
51 | 45 | const auto sqr_dist_2d = autoware::universe_utils::calcSquaredDistance2d(
|
52 | 46 | object_recognition_utils::getPose(object1), object_recognition_utils::getPose(object2));
|
53 |
| - return sqr_dist_2d <= search_sqr_dist_2d; |
| 47 | + return sqr_dist_2d <= search_distance_2d_sq_; |
54 | 48 | }
|
55 | 49 |
|
56 | 50 | Eigen::MatrixXd NonMaximumSuppression::generateIoUMatrix(
|
|
0 commit comments