Skip to content

Commit e92b287

Browse files
authored
Merge pull request #513 from Nuzhny007/master
Change default params for very small objects
2 parents bc99eb9 + 0e935b0 commit e92b287

9 files changed

Lines changed: 53 additions & 13 deletions

File tree

data/settings_yolov26m.ini

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ net_type = YOLOV26
4747
# INT8
4848
# FP16
4949
# FP32
50+
# FP8
5051
inference_precision = FP16
5152

5253

example/MotionDetectorExample.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class MotionDetectorExample final : public VideoExample
1717
{
1818
public:
1919
MotionDetectorExample(const cv::CommandLineParser& parser)
20-
: VideoExample(parser), m_minObjWidth(10)
20+
: VideoExample(parser)
2121
{
2222
#ifdef USE_CLIP
2323
std::string clipModel = "C:/work/clip/ruclip_/CLIP/data/ruclip-vit-large-patch14-336";
@@ -38,8 +38,7 @@ class MotionDetectorExample final : public VideoExample
3838
{
3939
m_logger->info("MotionDetectorExample::InitDetector");
4040

41-
//m_minObjWidth = frame.cols / 20;
42-
m_minObjWidth = 4;
41+
m_minObjWidth = 2;
4342

4443
config_t config;
4544
config.emplace("useRotatedRect", "0");
@@ -97,7 +96,7 @@ class MotionDetectorExample final : public VideoExample
9796

9897
if (!m_trackerSettingsLoaded)
9998
{
100-
m_trackerSettings.SetDistance(tracking::DistJaccard);
99+
m_trackerSettings.SetDistance(tracking::DistCenters);
101100
m_trackerSettings.m_kalmanType = tracking::KalmanLinear;
102101
m_trackerSettings.m_filterGoal = tracking::FilterCenter;
103102
m_trackerSettings.m_lostTrackType = tracking::TrackNone; // Use visual objects tracker for collisions resolving. Used if m_filterGoal == tracking::FilterRect

src/Detector/ONNXTensorRTDetector.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ bool ONNXTensorRTDetector::Init(const config_t& config)
7272
dictPrecision["INT8"] = tensor_rt::INT8;
7373
dictPrecision["FP16"] = tensor_rt::FP16;
7474
dictPrecision["FP32"] = tensor_rt::FP32;
75+
dictPrecision["FP8"] = tensor_rt::FP8;
7576
auto precision = dictPrecision.find(inference_precision->second);
7677
if (precision != dictPrecision.end())
7778
m_localConfig.m_inferencePrecision = precision->second;

src/Detector/tensorrt_onnx/YoloONNX.cpp

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ bool YoloONNX::Init(const SampleYoloParams& params)
1919

2020
m_params = params;
2121

22+
sample::setReportableSeverity(sample::Logger::Severity::kINFO);
2223
initLibNvInferPlugins(&sample::gLogger.getTRTLogger(), "");
2324

2425
auto GetBindings = [&]()
@@ -79,15 +80,16 @@ bool YoloONNX::Init(const SampleYoloParams& params)
7980
file.close();
8081
}
8182

82-
nvinfer1::IRuntime* infer = nvinfer1::createInferRuntime(sample::gLogger);
83+
m_inferRuntime = std::shared_ptr<nvinfer1::IRuntime>(nvinfer1::createInferRuntime(sample::gLogger));
8384
if (m_params.m_dlaCore >= 0)
84-
infer->setDLACore(m_params.m_dlaCore);
85+
m_inferRuntime->setDLACore(m_params.m_dlaCore);
8586

86-
m_engine = std::shared_ptr<nvinfer1::ICudaEngine>(infer->deserializeCudaEngine(trtModelStream.data(), size), samplesCommon::InferDeleter());
87+
m_engine = std::shared_ptr<nvinfer1::ICudaEngine>(m_inferRuntime->deserializeCudaEngine(trtModelStream.data(), size), samplesCommon::InferDeleter());
8788
#if (NV_TENSORRT_MAJOR < 8)
88-
infer->destroy();
89+
m_inferRuntime->destroy();
90+
m_inferRuntime.reset();
8991
#else
90-
//delete infer;
92+
//m_inferRuntime.reset();
9193
#endif
9294

9395
if (m_engine)
@@ -233,6 +235,12 @@ bool YoloONNX::ConstructNetwork(YoloONNXUniquePtr<nvinfer1::IBuilder>& builder,
233235
{
234236
case tensor_rt::Precision::FP16:
235237
config->setFlag(nvinfer1::BuilderFlag::kFP16);
238+
sample::gLogInfo << "config->setFlag(nvinfer1::BuilderFlag::kFP16)" << std::endl;
239+
break;
240+
241+
case tensor_rt::Precision::FP8:
242+
config->setFlag(nvinfer1::BuilderFlag::kFP8);
243+
sample::gLogInfo << "config->setFlag(nvinfer1::BuilderFlag::kFP8)" << std::endl;
236244
break;
237245

238246
case tensor_rt::Precision::INT8:
@@ -243,6 +251,7 @@ bool YoloONNX::ConstructNetwork(YoloONNXUniquePtr<nvinfer1::IBuilder>& builder,
243251
BatchStream calibrationStream(m_params.m_explicitBatchSize, m_params.m_nbCalBatches, m_params.m_calibrationBatches, m_params.m_dataDirs);
244252
calibrator.reset(new Int8EntropyCalibrator2<BatchStream>(calibrationStream, 0, "Yolo", m_params.m_inputTensorNames[0].c_str()));
245253
config->setFlag(nvinfer1::BuilderFlag::kINT8);
254+
sample::gLogInfo << "config->setFlag(nvinfer1::BuilderFlag::kINT8)" << std::endl;
246255
config->setInt8Calibrator(calibrator.get());
247256
}
248257
break;

src/Detector/tensorrt_onnx/YoloONNX.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ class YoloONNX
8686

8787
private:
8888
std::shared_ptr<nvinfer1::ICudaEngine> m_engine; //!< The TensorRT engine used to run the network
89+
std::shared_ptr<nvinfer1::IRuntime> m_inferRuntime;
8990

9091
cv::Mat m_resized;
9192
std::vector<cv::Mat> m_resizedBatch;

src/Detector/tensorrt_onnx/class_detector.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,8 @@ namespace tensor_rt
134134
dictprecision[tensor_rt::INT8] = "kINT8";
135135
dictprecision[tensor_rt::FP16] = "kHALF";
136136
dictprecision[tensor_rt::FP32] = "kFLOAT";
137+
dictprecision[tensor_rt::FP8] = "kFP8";
138+
137139
auto precision = dictprecision.find(m_params.m_precision);
138140
if (precision != dictprecision.end())
139141
precisionStr = precision->second;

src/Detector/tensorrt_onnx/class_detector.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@ namespace tensor_rt
7676
{
7777
INT8 = 0,
7878
FP16,
79-
FP32
79+
FP32,
80+
FP8
8081
};
8182

8283
///

src/Detector/tensorrt_onnx/common/sampleInference.cpp

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
#include "sampleOptions.h"
4747
#include "sampleReporting.h"
4848
#include "sampleUtils.h"
49+
#include <cuda_fp8.h>
4950
using namespace nvinfer1;
5051
namespace sample
5152
{
@@ -1320,7 +1321,15 @@ void Binding::fill()
13201321
fillBuffer<uint8_t>(buffer->getHostBuffer(), volume, 0, 255);
13211322
break;
13221323
}
1323-
case nvinfer1::DataType::kFP8: ASSERT(false && "FP8 is not supported");
1324+
case nvinfer1::DataType::kFP8:
1325+
{
1326+
#if 0
1327+
ASSERT(false && "FP8 is not supported");
1328+
#else
1329+
fillBuffer<__nv_fp8_e4m3>(buffer->getHostBuffer(), volume, __nv_fp8_e4m3(- 1.0f), __nv_fp8_e4m3(1.0f));
1330+
#endif
1331+
break;
1332+
}
13241333
#if (NV_TENSORRT_MAJOR > 8)
13251334
case nvinfer1::DataType::kINT4: ASSERT(false && "INT4 is not supported");
13261335
#endif
@@ -1388,7 +1397,15 @@ void Binding::dump(std::ostream& os, Dims dims, Dims strides, int32_t vectorDim,
13881397
break;
13891398
}
13901399
#endif
1391-
case nvinfer1::DataType::kFP8: ASSERT(false && "FP8 is not supported");
1400+
case nvinfer1::DataType::kFP8:
1401+
{
1402+
#if 0
1403+
ASSERT(false && "FP8 is not supported");
1404+
#else
1405+
dumpBuffer<__nv_fp8_e4m3>(outputBuffer, separator, os, dims, strides, vectorDim, spv);
1406+
#endif
1407+
break;
1408+
}
13921409
#if (NV_TENSORRT_MAJOR > 8)
13931410
case nvinfer1::DataType::kINT4: ASSERT(false && "INT4 is not supported");
13941411
#endif

src/Detector/tensorrt_onnx/common/sampleUtils.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include "sampleUtils.h"
1919
#include "bfloat16.h"
2020
#include "half.h"
21+
#include <cuda_fp8.h>
2122

2223
using namespace nvinfer1;
2324

@@ -433,6 +434,11 @@ void print(std::ostream& os, __half v)
433434
os << static_cast<float>(v);
434435
}
435436

437+
void print(std::ostream& os, __nv_fp8_e4m3 v)
438+
{
439+
os << static_cast<float>(v);
440+
}
441+
436442
template <typename T>
437443
void dumpBuffer(void const* buffer, std::string const& separator, std::ostream& os, Dims const& dims,
438444
Dims const& strides, int32_t vectorDim, int32_t spv)
@@ -482,6 +488,8 @@ template void dumpBuffer<uint8_t>(void const* buffer, std::string const& separat
482488
Dims const& strides, int32_t vectorDim, int32_t spv);
483489
template void dumpBuffer<int64_t>(void const* buffer, std::string const& separator, std::ostream& os, Dims const& dims,
484490
Dims const& strides, int32_t vectorDim, int32_t spv);
491+
template void dumpBuffer<__nv_fp8_e4m3>(void const* buffer, std::string const& separator, std::ostream& os, Dims const& dims,
492+
Dims const& strides, int32_t vectorDim, int32_t spv);
485493

486494
template <typename T>
487495
void sparsify(T const* values, int64_t count, int32_t k, int32_t trs, std::vector<int8_t>& sparseWeights)
@@ -566,7 +574,7 @@ void fillBuffer(void* buffer, int64_t volume, T min, T max)
566574
{
567575
T* typedBuffer = static_cast<T*>(buffer);
568576
std::default_random_engine engine;
569-
std::uniform_real_distribution<float> distribution(min, max);
577+
std::uniform_real_distribution<float> distribution((float)min, (float)max);
570578
auto generator = [&engine, &distribution]() { return static_cast<T>(distribution(engine)); };
571579
std::generate(typedBuffer, typedBuffer + volume, generator);
572580
}
@@ -580,6 +588,7 @@ template void fillBuffer<int8_t>(void* buffer, int64_t volume, int8_t min, int8_
580588
template void fillBuffer<__half>(void* buffer, int64_t volume, __half min, __half max);
581589
template void fillBuffer<BFloat16>(void* buffer, int64_t volume, BFloat16 min, BFloat16 max);
582590
template void fillBuffer<uint8_t>(void* buffer, int64_t volume, uint8_t min, uint8_t max);
591+
template void fillBuffer<__nv_fp8_e4m3>(void* buffer, int64_t volume, __nv_fp8_e4m3 min, __nv_fp8_e4m3 max);
583592

584593
bool matchStringWithOneWildcard(std::string const& pattern, std::string const& target)
585594
{

0 commit comments

Comments
 (0)