Apollo 11.0
自动驾驶开放平台
apollo::perception::radar4d::FusedClassifier类 参考

#include <fused_classifier.h>

类 apollo::perception::radar4d::FusedClassifier 继承关系图:
apollo::perception::radar4d::FusedClassifier 的协作图:

Public 成员函数

 FusedClassifier ()=default
 
 ~FusedClassifier ()=default
 
bool Init (const ClassifierInitOptions &options=ClassifierInitOptions()) override
 Init fused classifier
 
bool Classify (const ClassifierOptions &options, RadarFrame *frame) override
 Classify objects and update type info
 
std::string Name () const override
 Get class name
 
- Public 成员函数 继承自 apollo::perception::radar4d::BaseClassifier
 BaseClassifier ()=default
 
virtual ~BaseClassifier ()=default
 

详细描述

在文件 fused_classifier.h35 行定义.

构造及析构函数说明

◆ FusedClassifier()

apollo::perception::radar4d::FusedClassifier::FusedClassifier ( )
default

◆ ~FusedClassifier()

apollo::perception::radar4d::FusedClassifier::~FusedClassifier ( )
default

成员函数说明

◆ Classify()

bool apollo::perception::radar4d::FusedClassifier::Classify ( const ClassifierOptions options,
RadarFrame frame 
)
overridevirtual

Classify objects and update type info

参数
options
frameradar frame
返回
true
false

实现了 apollo::perception::radar4d::BaseClassifier.

在文件 fused_classifier.cc56 行定义.

57 {
58 if (frame == nullptr) {
59 return false;
60 }
61 std::vector<ObjectPtr>* objects = use_tracked_objects_
62 ? &(frame->tracked_objects)
63 : &(frame->segmented_objects);
64 if (enable_temporal_fusion_ && frame->timestamp > 0.0) {
65 // sequence fusion
66 AINFO << "Combined classifier, temporal fusion";
67 sequence_.AddTrackedFrameObjects(*objects, frame->timestamp);
68 ObjectSequence::TrackedObjects tracked_objects;
69 for (auto& object : *objects) {
70 if (object->radar4d_supplement.is_background) {
71 object->type_probs.assign(static_cast<int>(ObjectType::MAX_OBJECT_TYPE),
72 0);
73 object->type = ObjectType::UNKNOWN_UNMOVABLE;
74 object->type_probs[static_cast<int>(ObjectType::UNKNOWN_UNMOVABLE)] =
75 1.0;
76 continue;
77 }
78 const int track_id = object->track_id;
79 sequence_.GetTrackInTemporalWindow(track_id, &tracked_objects,
80 temporal_window_);
81 if (tracked_objects.empty()) {
82 AERROR << "Find zero-length track, so skip.";
83 continue;
84 }
85 if (object != tracked_objects.rbegin()->second) {
86 AERROR << "There must exist some timestamp in disorder, so skip.";
87 continue;
88 }
89 if (!sequence_fuser_->TypeFusion(option_, &tracked_objects)) {
90 AERROR << "Failed to fuse types, so break.";
91 break;
92 }
93 }
94 } else {
95 // one shot fusion
96 AINFO << "Combined classifier, one shot fusion";
97 for (auto& object : *objects) {
98 if (object->radar4d_supplement.is_background) {
99 object->type_probs.assign(static_cast<int>(ObjectType::MAX_OBJECT_TYPE),
100 0);
101 object->type = ObjectType::UNKNOWN_UNMOVABLE;
102 object->type_probs[static_cast<int>(ObjectType::UNKNOWN_UNMOVABLE)] =
103 1.0;
104 continue;
105 }
106 if (!one_shot_fuser_->TypeFusion(option_, object)) {
107 AERROR << "Failed to fuse types, so continue.";
108 }
109 }
110 }
111 return true;
112}
virtual bool TypeFusion(const TypeFusionOption &option, std::shared_ptr< perception::base::Object > object)=0
Type fusion
virtual bool TypeFusion(const TypeFusionOption &option, TrackedObjects *tracked_objects)=0
Type fusion
bool AddTrackedFrameObjects(const std::vector< std::shared_ptr< perception::base::Object > > &objects, TimeStampKey timestamp)
std::map< TimeStampKey, std::shared_ptr< apollo::perception::base::Object > > TrackedObjects
bool GetTrackInTemporalWindow(TrackIdKey track_id, TrackedObjects *track, TimeStampKey window_time)
#define AERROR
Definition log.h:44
#define AINFO
Definition log.h:42

◆ Init()

bool apollo::perception::radar4d::FusedClassifier::Init ( const ClassifierInitOptions options = ClassifierInitOptions())
overridevirtual

Init fused classifier

参数
options
返回
true
false

实现了 apollo::perception::radar4d::BaseClassifier.

在文件 fused_classifier.cc32 行定义.

32 {
33 std::string config_file =
34 GetConfigFile(options.config_path, options.config_file);
35 FusedClassifierConfig config;
36 ACHECK(cyber::common::GetProtoFromFile(config_file, &config));
37 temporal_window_ = config.temporal_window();
38 enable_temporal_fusion_ = config.enable_temporal_fusion();
39 use_tracked_objects_ = config.use_tracked_objects();
40 one_shot_fusion_method_ = config.one_shot_fusion_method();
41 sequence_fusion_method_ = config.sequence_fusion_method();
42 one_shot_fuser_ = BaseOneShotTypeFusionRegisterer::GetInstanceByName(
43 one_shot_fusion_method_);
44
45 bool init_success = true;
46 init_option_.config_path = options.config_path;
47 CHECK_NOTNULL(one_shot_fuser_);
48 ACHECK(one_shot_fuser_->Init(init_option_));
49 sequence_fuser_ = BaseSequenceTypeFusionRegisterer::GetInstanceByName(
50 sequence_fusion_method_);
51 CHECK_NOTNULL(sequence_fuser_);
52 ACHECK(sequence_fuser_->Init(init_option_));
53 return init_success;
54}
virtual bool Init(const TypeFusionInitOption &option)=0
Init type fusion
virtual bool Init(const TypeFusionInitOption &option)=0
Init type fusion
#define ACHECK(cond)
Definition log.h:80
bool GetProtoFromFile(const std::string &file_name, google::protobuf::Message *message)
Parses the content of the file specified by the file_name as a representation of protobufs,...
Definition file.cc:132
std::string GetConfigFile(const std::string &config_path, const std::string &config_file)
Definition util.cc:80

◆ Name()

std::string apollo::perception::radar4d::FusedClassifier::Name ( ) const
inlineoverridevirtual

Get class name

返回
std::string

实现了 apollo::perception::radar4d::BaseClassifier.

在文件 fused_classifier.h62 行定义.

62{ return "FusedClassifier"; }

该类的文档由以下文件生成: