48 #ifndef GIE_INFERENCE_H_
49 #define GIE_INFERENCE_H_
60 #include <cuda_runtime_api.h>
63 #include "NvCaffeParser.h"
65 #include "opencv2/video/tracking.hpp"
66 #include "opencv2/imgproc/imgproc.hpp"
67 #include "opencv2/highgui/highgui.hpp"
68 #include <opencv2/objdetect/objdetect.hpp>
69 using namespace nvinfer1;
70 using namespace nvcaffeparser1;
73 #define CHECK(status) \
77 std::cout << "Cuda failure: " << status; \
88 void log(Severity severity,
const char* msg)
override
91 if (severity != Severity::kINFO)
92 std::cout << msg << std::endl;
99 typedef std::pair<std::string, float>
Record;
104 auto record = std::find_if(mProfile.begin(), mProfile.end(),
105 [&](
const Record& r){
return r.first == layerName; });
106 if (record == mProfile.end())
107 mProfile.push_back(std::make_pair(layerName, ms));
109 record->second += ms;
115 for (
size_t i = 0; i < mProfile.size(); i++)
117 printf(
"%-40.40s %4.3fms\n", mProfile[i].first.c_str(),
119 totalTime += mProfile[i].second;
138 float helnet_scale[4];
161 unsigned int frame_num;
164 unsigned int force_not_use_fp16;
165 string input_blob_name;
166 string output_blob_name;
167 string output_bbox_name;
168 uint64_t elapsed_frame_num;
169 uint64_t elapsed_time;
170 void parse_bbox(Dims3 outputDims, Dims3 outputDimsBBOX,
171 vector<cv::Rect>& rectList,
int batch_th);
172 void parse_hel_bbox(Dims3 outputDims, Dims3 outputDimsBBOX,
173 vector<cv::Rect>& rectList,
int class_num,
int batch_th);
178 void caffeToGIEModel();
179 void doInference(
float* input, queue< vector<cv::Rect> >& rectList_queue);
unsigned int inference_num
std::vector< Record > mProfile
uint32_t enable_gie_profiler
std::pair< std::string, float > Record
static const int NUM_BINDINGS
unsigned int num_bindings
IExecutionContext * context
virtual void reportLayerTime(const char *layerName, float ms)
unsigned int image_height
static const int TIMING_ITERATIONS
stringstream gieModelStream