Skip to content

Commit 3fa5c73

Browse files
committed
Small code refactoring
1 parent 2f24fbf commit 3fa5c73

13 files changed

Lines changed: 68 additions & 39 deletions

example/examples.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -981,8 +981,7 @@ class YoloTensorRTExample final : public VideoExample
981981
std::string pathToModel = "../data/";
982982
#endif
983983

984-
m_trackerSettings.m_embeddings.emplace_back(pathToModel + "reid/osnet_x0_25_msmt17.onnx",
985-
pathToModel + "reid/osnet_x0_25_msmt17.onnx",
984+
m_trackerSettings.m_embeddings.emplace_back(pathToModel + "reid/osnet_x0_25_msmt17.onnx", pathToModel + "reid/osnet_x0_25_msmt17.onnx",
986985
cv::Size(128, 256),
987986
std::vector<objtype_t>{ TypeConverter::Str2Type("person"), TypeConverter::Str2Type("car"), TypeConverter::Str2Type("bus"), TypeConverter::Str2Type("truck"), TypeConverter::Str2Type("vehicle") });
988987

src/Detector/MotionDetector.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
///
77
/// \brief The MotionDetector class
88
///
9-
class MotionDetector : public BaseDetector
9+
class MotionDetector final : public BaseDetector
1010
{
1111
public:
1212
MotionDetector(BackgroundSubtract::BGFG_ALGS algType, const cv::UMat& gray);

src/Detector/OCVDNNDetector.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ bool OCVDNNDetector::Init(const config_t& config)
154154
std::string className;
155155
for (; std::getline(classNamesFile, className); )
156156
{
157+
className.erase(className.find_last_not_of(" \t\n\r\f\v") + 1);
157158
m_classNames.push_back(className);
158159
}
159160
if (!FillTypesMap(m_classNames))
@@ -315,7 +316,7 @@ void OCVDNNDetector::DetectInCrop(const cv::UMat& colorFrame, const cv::Rect& cr
315316
}
316317
else if (m_outLayerType == "Region")
317318
{
318-
for (size_t i = 0; i < detections.size(); ++i) //-V654 //-V621
319+
for (size_t i = 0; i < detections.size(); ++i)
319320
{
320321
// Network produces output blob with a shape NxC where N is a number of detected objects and C is a number of classes + 4 where the first 4
321322
// numbers are [center_x, center_y, width, height]

src/Detector/OCVDNNDetector.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ class OCVDNNDetector final : public BaseDetector
5252
float m_inScaleFactor = 0.003921f;
5353
float m_meanVal = 0.f;
5454
float m_confidenceThreshold = 0.24f;
55-
float m_nmsThreshold = 0.4f;
55+
track_t m_nmsThreshold = static_cast<track_t>(0.4);
5656
bool m_swapRB = false;
5757
float m_maxCropRatio = 2.0f;
5858
ModelType m_netType = ModelType::Unknown;

src/Detector/YoloTensorRTDetector.cpp

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ YoloTensorRTDetector::YoloTensorRTDetector(const cv::UMat& colorFrame)
1717
"sheep", "sofa", "train", "tvmonitor" };
1818

1919
m_localConfig.calibration_image_list_file_txt = "";
20-
m_localConfig.inference_precision = tensor_rt::FP32;
20+
m_localConfig.inference_precision = tensor_rt::FP32;
2121
m_localConfig.net_type = tensor_rt::YOLOV4;
2222
m_localConfig.detect_thresh = 0.5f;
2323
m_localConfig.gpu_id = 0;
@@ -38,7 +38,7 @@ YoloTensorRTDetector::YoloTensorRTDetector(const cv::Mat& colorFrame)
3838
"sheep", "sofa", "train", "tvmonitor" };
3939

4040
m_localConfig.calibration_image_list_file_txt = "";
41-
m_localConfig.inference_precision = tensor_rt::FP32;
41+
m_localConfig.inference_precision = tensor_rt::FP32;
4242
m_localConfig.net_type = tensor_rt::YOLOV4;
4343
m_localConfig.detect_thresh = 0.5f;
4444
m_localConfig.gpu_id = 0;
@@ -79,15 +79,15 @@ bool YoloTensorRTDetector::Init(const config_t& config)
7979

8080
auto inference_precision = config.find("inference_precision");
8181
if (inference_precision != config.end())
82-
{
83-
std::map<std::string, tensor_rt::Precision> dictprecision;
84-
dictprecision["INT8"] = tensor_rt::INT8;
85-
dictprecision["FP16"] = tensor_rt::FP16;
86-
dictprecision["FP32"] = tensor_rt::FP32;
87-
auto precision = dictprecision.find(inference_precision->second);
88-
if (precision != dictprecision.end())
82+
{
83+
std::map<std::string, tensor_rt::Precision> dictPrecision;
84+
dictPrecision["INT8"] = tensor_rt::INT8;
85+
dictPrecision["FP16"] = tensor_rt::FP16;
86+
dictPrecision["FP32"] = tensor_rt::FP32;
87+
auto precision = dictPrecision.find(inference_precision->second);
88+
if (precision != dictPrecision.end())
8989
m_localConfig.inference_precision = precision->second;
90-
}
90+
}
9191

9292
auto net_type = config.find("net_type");
9393
if (net_type != config.end())
@@ -117,6 +117,7 @@ bool YoloTensorRTDetector::Init(const config_t& config)
117117
std::string className;
118118
for (; std::getline(classNamesFile, className); )
119119
{
120+
className.erase(className.find_last_not_of(" \t\n\r\f\v") + 1);
120121
m_classNames.push_back(className);
121122
}
122123
if (!FillTypesMap(m_classNames))
@@ -125,6 +126,11 @@ bool YoloTensorRTDetector::Init(const config_t& config)
125126
assert(0);
126127
}
127128
}
129+
else
130+
{
131+
std::cout << "File with class names can not be opened!" << std::endl;
132+
assert(0);
133+
}
128134
}
129135

130136
m_classesWhiteList.clear();

src/Detector/YoloTensorRTDetector.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class YoloTensorRTDetector final : public BaseDetector
1010
{
1111
public:
1212
YoloTensorRTDetector(const cv::UMat& colorFrame);
13-
YoloTensorRTDetector(const cv::Mat& colorFrame);
13+
YoloTensorRTDetector(const cv::Mat& colorFrame);
1414
~YoloTensorRTDetector(void) = default;
1515

1616
bool Init(const config_t& config) override;

src/Tracker/Ctracker.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ class CTracker final : public BaseTracker
4040

4141
void CreateDistaceMatrix(const regions_t& regions, const std::vector<RegionEmbedding>& regionEmbeddings, distMatrix_t& costMatrix, track_t maxPossibleCost, track_t& maxCost);
4242
void UpdateTrackingState(const regions_t& regions, cv::UMat currFrame, float fps);
43-
void CalcEmbeddins(std::vector<RegionEmbedding>& regionEmbeddings, const regions_t& regions, cv::UMat currFrame) const;
43+
void CalcEmbeddins(std::vector<RegionEmbedding>& regionEmbeddings, const regions_t& regions, cv::UMat currFrame) const;
4444

45-
track_t GetEllipseDist(const CTrack& trackRef, const CRegion& reg);
45+
track_t GetEllipseDist(const CTrack& trackRef, const CRegion& reg);
4646
};
4747
// ----------------------------------------------------------------------
4848

@@ -78,7 +78,7 @@ CTracker::CTracker(const TrackerSettings& settings)
7878
{
7979
for (auto objType : embParam.m_objectTypes)
8080
{
81-
m_embCalculators.try_emplace(objType, embCalc);
81+
m_embCalculators.try_emplace((objtype_t)objType, embCalc);
8282
}
8383
}
8484
}
@@ -221,7 +221,7 @@ void CTracker::UpdateTrackingState(const regions_t& regions,
221221
#endif
222222
for (const auto& reg : regions)
223223
{
224-
DrawRRect(dbgAssignment, reg.m_rrect, cv::Scalar(0, 255, 255), 2);
224+
DrawRRect(dbgAssignment, reg.m_rrect, cv::Scalar(0, 255, 255), 2);
225225
}
226226
}
227227
#endif

src/Tracker/EmbeddingsCalculator.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ class EmbeddingsCalculator
2020
#else
2121
m_net = cv::dnn::readNetFromTorch(weightsName);
2222
#endif
23+
24+
std::cout << "Re-id model " << weightsName << " loaded: " << (!m_net.empty()) << std::endl;
25+
2326
if (!m_net.empty())
2427
{
2528
#if (((CV_VERSION_MAJOR == 4) && (CV_VERSION_MINOR >= 2)) || (CV_VERSION_MAJOR > 4))

src/Tracker/TrackerSettings.h

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -207,23 +207,23 @@ struct TrackerSettings
207207
///
208208
TrackerSettings()
209209
{
210-
m_distType[tracking::DistCenters] = 0.0f;
211-
m_distType[tracking::DistRects] = 0.0f;
212-
m_distType[tracking::DistJaccard] = 0.5f;
213-
m_distType[tracking::DistHist] = 0.5f;
214-
m_distType[tracking::DistFeatureCos] = 0.0f;
215-
m_distType[tracking::DistMahalanobis] = 0.0f;
210+
m_distType[tracking::DistCenters] = static_cast<track_t>(0.0);
211+
m_distType[tracking::DistRects] = static_cast<track_t>(0.0);
212+
m_distType[tracking::DistJaccard] = static_cast<track_t>(0.5);
213+
m_distType[tracking::DistHist] = static_cast<track_t>(0.5);
214+
m_distType[tracking::DistFeatureCos] = static_cast<track_t>(0.0);
215+
m_distType[tracking::DistMahalanobis] = static_cast<track_t>(0.0);
216216

217217
assert(CheckDistance());
218218
}
219219

220220
///
221221
bool CheckDistance() const
222222
{
223-
track_t sum = std::accumulate(m_distType.begin(), m_distType.end(), 0.0f);
224-
track_t maxOne = std::max(1.0f, std::fabs(sum));
223+
track_t sum = std::accumulate(m_distType.begin(), m_distType.end(), static_cast<track_t>(0.0));
224+
track_t maxOne = std::max(static_cast<track_t>(1.0), std::fabs(sum));
225225
//std::cout << "CheckDistance: " << sum << " - " << (std::numeric_limits<track_t>::epsilon() * maxOne) << ", " << std::fabs(sum - 1.0f) << std::endl;
226-
return std::fabs(sum - 1.0f) <= std::numeric_limits<track_t>::epsilon() * maxOne;
226+
return std::fabs(sum - static_cast<track_t>(1.0)) <= std::numeric_limits<track_t>::epsilon() * maxOne;
227227
}
228228

229229
///
@@ -249,7 +249,7 @@ struct TrackerSettings
249249
}
250250

251251
///
252-
void AddNearTypes(objtype_t type1, objtype_t type2, bool sym)
252+
void AddNearTypes(objtype_t type1, objtype_t type2, bool sym)
253253
{
254254
auto AddOne = [&](objtype_t type1, objtype_t type2)
255255
{
@@ -259,9 +259,9 @@ struct TrackerSettings
259259
else
260260
it->second.insert(type2);
261261
};
262-
AddOne(type1, type2);
262+
AddOne(type1, type2);
263263
if (sym)
264-
AddOne(type2, type1);
264+
AddOne(type2, type1);
265265
}
266266

267267
///

src/Tracker/track.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,10 @@ CTrack::CTrack(const CRegion& region,
115115
track_t CTrack::CalcDistCenter(const CRegion& reg) const
116116
{
117117
Point_t diff = m_predictionPoint - reg.m_rrect.center;
118-
return sqrtf(sqr(diff.x) + sqr(diff.y));
118+
if constexpr (sizeof(track_t) == sizeof(float))
119+
return sqrtf(sqr(diff.x) + sqr(diff.y));
120+
else
121+
return sqrt(sqr(diff.x) + sqr(diff.y));
119122
}
120123

121124
///
@@ -137,7 +140,10 @@ track_t CTrack::CalcDistRect(const CRegion& reg) const
137140
{
138141
dist += sqr(diff[i]);
139142
}
140-
return sqrtf(dist);
143+
if constexpr (sizeof(track_t) == sizeof(float))
144+
return sqrtf(dist);
145+
else
146+
return sqrt(dist);
141147
}
142148

143149
///

0 commit comments

Comments
 (0)