NVIDIA DeepStream SDK API Reference

9.2 Release
sources/libs/nvmultiobjecttracker/include/modules/ReID/EnsembleReID.hpp
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2023-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3  * SPDX-License-Identifier: Apache-2.0
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 #ifndef REIDLIB_ENSEMBLEREID_HPP_
19 #define REIDLIB_ENSEMBLEREID_HPP_
20 
21 #include "modules/ReID/IReID.hpp"
22 #include "modules/ReID/ReID.hpp"
23 #include "modules/VisualTracker/IVisualTracker.hpp"
24 #include "modules/NvMultiObjectTracker/NvTrackerParams.hpp"
25 #include "modules/NvMultiObjectTracker/NvTrackedObject.hpp"
26 
29 {
30 public:
33 
39  EnsembleReIDConfigParams(const std::string &configFilePath, const std::string moduleName);
40 
45  EnsembleReIDConfigParams(const YAML::Node &fn);
46 
51  void read(const YAML::Node &fn) override;
52 
55  std::set<std::string> m_modelNameList;
57 };
58 
60 class EnsembleReID : public IReID
61 {
62 public:
63 
68  EnsembleReID(const std::string &configFilePath);
69 
71  virtual ~EnsembleReID();
72 
79  void initializeRuntime(
80  const SourceFrameInfo &frameInfo, const uint maxTargetsPerStream,
81  const std::shared_ptr<NvTrackedObjectManager> &targetManager
82  ) override;
83 
85  void initializeModel() override;
86 
91  void queryParams(NvMOTQuery &paramsQuery);
92 
99  void doInference(
100  const std::map<NvMOTStreamId, NvMOTFrame *>& inputMeta,
101  std::map<NvMOTStreamId, std::deque<DetectedObjInfo>> &detectedObjects, const bool isForReAssoc
102  ) override;
103 
105  void update() override;
106 
111  void removeStream(const NvMOTStreamId videoStreamId) override;
112 
117  void outputReIDTensor(NvDsReidTensorBatch& reidTensorBatch) override;
118 
125  int outputTargetReIDInd(NvMOTStreamId streamId, uint targetInd) override;
126 
134  void outputTargetReIDObj(
135  NvMOTStreamId streamId, uint targetInd, NvDsReidTensorBatch& reidTensorBatch, NvDsObjReid& reidObj
136  ) override;
137 
139  bool isModelInitialized() override { return m_isModelInit; }
140 
142  bool isRuntimeInitialized() override { return m_isRuntimeInit; }
143 
145  const REID_TYPES getReIDType() override { return m_params.m_reidType; }
146 
147 protected:
153  void fuseReIDSimilarity(
154  const std::map<NvMOTStreamId, NvMOTFrame *>& inputMeta,
155  std::map<NvMOTStreamId, std::deque<DetectedObjInfo>> &detectedObjects
156  );
157 
164  std::vector<float> reidSimilarityFunc(
165  const std::vector<std::vector<float>> & confidenceListReidDets, const uint numDets
166  );
167 
171  std::vector<ReID> m_reidList;
172  std::shared_ptr<NvTrackedObjectManager> m_targetManager;
174 };
175 
176 #endif // REIDLIB_ENSEMBLEREID_HPP_
EnsembleReID::getReIDType
const REID_TYPES getReIDType() override
Get the configured ReID implementation type.
Definition: sources/libs/nvmultiobjecttracker/include/modules/ReID/EnsembleReID.hpp:145
EnsembleReIDConfigParams::m_enableModelId
int m_enableModelId
The id of the enabled model, -1 is to enable all.
Definition: sources/libs/nvmultiobjecttracker/include/modules/ReID/EnsembleReID.hpp:54
EnsembleReIDConfigParams::m_debugVerboseLevel
int m_debugVerboseLevel
Debug message verbose mode level.
Definition: sources/libs/nvmultiobjecttracker/include/modules/ReID/EnsembleReID.hpp:53
EnsembleReID::m_isRuntimeInit
bool m_isRuntimeInit
Reid status if runtime variables initialized.
Definition: sources/libs/nvmultiobjecttracker/include/modules/ReID/EnsembleReID.hpp:169
EnsembleReID::outputTargetReIDInd
int outputTargetReIDInd(NvMOTStreamId streamId, uint targetInd) override
Output a target's ReID vector index in the batch tensor.
EnsembleReIDConfigParams::m_reidType
REID_TYPES m_reidType
The type of reid.
Definition: sources/libs/nvmultiobjecttracker/include/modules/ReID/EnsembleReID.hpp:56
EnsembleReID::m_maxTargetsPerStream
uint m_maxTargetsPerStream
Max targets per stream.
Definition: sources/libs/nvmultiobjecttracker/include/modules/ReID/EnsembleReID.hpp:173
EnsembleReID::initializeModel
void initializeModel() override
Create TensorRT inference engine; if engine does not exist, serialize from model file.
EnsembleReID::removeStream
void removeStream(const NvMOTStreamId videoStreamId) override
Remove a stream's reid features.
EnsembleReID
Combines feature extraction from multiple ReID models.
Definition: sources/libs/nvmultiobjecttracker/include/modules/ReID/EnsembleReID.hpp:60
EnsembleReID::queryParams
void queryParams(NvMOTQuery &paramsQuery)
Populate the capabilities reported to the tracker.
REID_TYPES
REID_TYPES
Types of ReID usage.
Definition: sources/libs/nvmultiobjecttracker/include/modules/ReID/IReID.hpp:27
_NvDsObjReid
Holds Reid Vector information for an object.
Definition: includes/nvds_tracker_meta.h:164
EnsembleReID::m_isModelInit
bool m_isModelInit
Reid status if reid model initialized.
Definition: sources/libs/nvmultiobjecttracker/include/modules/ReID/EnsembleReID.hpp:168
uint
unsigned int uint
Definition: sources/libs/nvmultiobjecttracker/include/modules/cuDCFv2/helper_math.h:25
EnsembleReID::initializeRuntime
void initializeRuntime(const SourceFrameInfo &frameInfo, const uint maxTargetsPerStream, const std::shared_ptr< NvTrackedObjectManager > &targetManager) override
Initialize variables and allocate memories.
EnsembleReID::m_params
EnsembleReIDConfigParams m_params
Config params for reid module.
Definition: sources/libs/nvmultiobjecttracker/include/modules/ReID/EnsembleReID.hpp:170
EnsembleReIDConfigParams::m_modelNameList
std::set< std::string > m_modelNameList
List of reid model names.
Definition: sources/libs/nvmultiobjecttracker/include/modules/ReID/EnsembleReID.hpp:55
EnsembleReID::update
void update() override
Update ReID feature gallery after data association.
EnsembleReIDConfigParams::read
void read(const YAML::Node &fn) override
Load configuration values from a YAML node.
EnsembleReID::outputReIDTensor
void outputReIDTensor(NvDsReidTensorBatch &reidTensorBatch) override
Output the ReID tensor of a batch.
EnsembleReIDConfigParams
Stores configuration for a ReID implementation.
Definition: sources/libs/nvmultiobjecttracker/include/modules/ReID/EnsembleReID.hpp:28
EnsembleReID::outputTargetReIDObj
void outputTargetReIDObj(NvMOTStreamId streamId, uint targetInd, NvDsReidTensorBatch &reidTensorBatch, NvDsObjReid &reidObj) override
Output a target's ReID vector information.
EnsembleReID::doInference
void doInference(const std::map< NvMOTStreamId, NvMOTFrame * > &inputMeta, std::map< NvMOTStreamId, std::deque< DetectedObjInfo >> &detectedObjects, const bool isForReAssoc) override
Crop and rescale detected objects to create input batch to reid model.
EnsembleReIDConfigParams::EnsembleReIDConfigParams
EnsembleReIDConfigParams()
Construct a EnsembleReIDConfigParams instance.
NvTrackerParams
Provides common loading helpers for tracker configuration parameters.
Definition: sources/libs/nvmultiobjecttracker/include/modules/NvMultiObjectTracker/NvTrackerParams.hpp:35
NvMOTStreamId
uint64_t NvMOTStreamId
Definition: includes/nvdstracker.h:53
EnsembleReID::m_targetManager
std::shared_ptr< NvTrackedObjectManager > m_targetManager
Target manager providing target status to update feature gallery.
Definition: sources/libs/nvmultiobjecttracker/include/modules/ReID/EnsembleReID.hpp:172
EnsembleReID::~EnsembleReID
virtual ~EnsembleReID()
Release resources owned by the EnsembleReID instance.
_NvMOTQuery
Holds the capabilities and requirements reported by the tracker library.
Definition: includes/nvdstracker.h:420
EnsembleReID::EnsembleReID
EnsembleReID(const std::string &configFilePath)
Construct a EnsembleReID instance from configuration.
EnsembleReID::isModelInitialized
bool isModelInitialized() override
Report whether the inference model is initialized.
Definition: sources/libs/nvmultiobjecttracker/include/modules/ReID/EnsembleReID.hpp:139
IReID
Defines the interface for extracting and managing ReID features.
Definition: sources/libs/nvmultiobjecttracker/include/modules/ReID/IReID.hpp:36
EnsembleReID::reidSimilarityFunc
std::vector< float > reidSimilarityFunc(const std::vector< std::vector< float >> &confidenceListReidDets, const uint numDets)
Combine per-model detection similarities into one score vector.
SourceFrameInfo
Information about the input source frames for the input frame batch.
Definition: sources/libs/nvmultiobjecttracker/include/modules/NvMultiObjectTracker/NvMultiObjectTracker_common.hpp:49
EnsembleReID::isRuntimeInitialized
bool isRuntimeInitialized() override
Report whether runtime resources are initialized.
Definition: sources/libs/nvmultiobjecttracker/include/modules/ReID/EnsembleReID.hpp:142
EnsembleReID::m_reidList
std::vector< ReID > m_reidList
List of ensemble methods.
Definition: sources/libs/nvmultiobjecttracker/include/modules/ReID/EnsembleReID.hpp:171
_NvDsReidTensorBatch
ReID tensor of the batch.
Definition: includes/nvds_tracker_meta.h:128
EnsembleReID::fuseReIDSimilarity
void fuseReIDSimilarity(const std::map< NvMOTStreamId, NvMOTFrame * > &inputMeta, std::map< NvMOTStreamId, std::deque< DetectedObjInfo >> &detectedObjects)
Combine similarity scores produced by the ensemble models.