NVIDIA DeepStream SDK API Reference

6.4 Release
HeartRate.h
Go to the documentation of this file.
1 /*###############################################################################
2 #
3 # Copyright(c) 2021 NVIDIA CORPORATION. All Rights Reserved.
4 #
5 # NVIDIA CORPORATION and its licensors retain all intellectual property
6 # and proprietary rights in and to this software, related documentation
7 # and any modifications thereto. Any use, reproduction, disclosure or
8 # distribution of this software and related documentation without an express
9 # license agreement from NVIDIA CORPORATION is strictly prohibited.
10 #
11 ###############################################################################*/
12 
13 #ifndef CVCORE_HEARTRATE_H_
14 #define CVCORE_HEARTRATE_H_
15 
16 #include <memory>
17 
18 #include <cuda_runtime.h>
19 
20 #include <cv/core/Model.h>
21 #include <cv/core/Array.h>
22 #include <cv/core/Tensor.h>
23 #include <cv/core/BBox.h>
24 
25 namespace cvcore { namespace heartrate {
26 
30 class HeartRate
31 {
32  public:
37 
42 
47 
52  {
53  std::size_t cameraFps; // FPS of the camera to map heart rate to time
54  std::size_t heartRateMax; // Maximum valid heart rate
55  std::size_t heartRateMin; // Minimum valid heart rate
56  std::size_t estimationInterval; // The minimum number of seconds of inference
57  // points to caluclate FFT heart rate
58  std::size_t warmUpInterval; // The minimum number of seconds of inferemence
59  // samples to begin calculation
60  std::size_t fftWindow; // The size of the FFT lookback
61  std::int32_t roiSnrThresh; // The minimum SNR on the FFT window
62  std::size_t maxConfidence; // Maximum clamp confidence of the the inference
63  std::size_t minConfidence; // Minimum FFT confidence to provide a heart rate
64  std::size_t validFpsGap; // Maximum time variation in heart rate estimates
65  float iouThresh; // IoU threshold for determining if a persistent
66  // object is present in frame
67  };
69 
70 
74  HeartRate() = delete;
75 
83  HeartRate(const ImagePreProcessingParams & preProcessorParams,
84  const ModelInputParams & modelInputParams,
85  const ModelInferenceParams & inferenceParams,
86  const HeartRateParams & extraParams);
87 
91  ~HeartRate();
92 
100  void execute(Array<float> & heartRate,
101  const Tensor<NCHW, C3, U8> & faceImage,
102  const Array<BBox> & faceBBox,
103  cudaStream_t stream = 0);
104 
105  void execute(Array<float> & heartRate,
106  const Tensor<NHWC, C3, U8> & faceImage,
107  const Array<BBox> & faceBBox,
108  cudaStream_t stream = 0);
109 
110  private:
111  struct HeartRateImpl;
112 
113  std::unique_ptr<HeartRateImpl> m_pImpl;
114 };
115 
120 {
121  public:
125  HeartRatePreProcessor() = delete;
126 
133  HeartRatePreProcessor(const ImagePreProcessingParams & preProcessorParams,
134  const ModelInputParams & modelInputParams,
135  const HeartRate::HeartRateParams & extraParams);
136 
141 
151  void execute(Tensor<NCHW, C3, F32> & preProcessedFaceImage,
152  Tensor<NCHW, C3, F32> & preProcessedFaceMotion,
153  Array<bool> & entityInFrame,
154  const Tensor<NCHW, C3, U8> & faceImage,
155  const Array<BBox> & faceBBox,
156  cudaStream_t stream = 0);
157 
158  void execute(Tensor<NCHW, C3, F32> & preProcessedFaceImage,
159  Tensor<NCHW, C3, F32> & preProcessedFaceMotion,
160  Array<bool> & entityInFrame,
161  const Tensor<NHWC, C3, U8> & faceImage,
162  const Array<BBox> & faceBBox,
163  cudaStream_t stream = 0);
164 
165  private:
166  struct HeartRatePreProcessorImpl;
167 
168  std::unique_ptr<HeartRatePreProcessorImpl> m_pImpl;
169 };
170 
175 {
176  public:
180  HeartRatePostProcessor() = delete;
181 
187  HeartRatePostProcessor(const ModelInputParams & modelInputParams,
188  const HeartRate::HeartRateParams & extraParams);
189 
194 
202  void execute(Array<float> & heartRate,
203  const Tensor<CL, CX, F32> & rawHeartRate,
204  const Array<bool> & entityInFrame,
205  cudaStream_t stream = 0);
206 
207  private:
208  struct HeartRatePostProcessorImpl;
209 
210  std::unique_ptr<HeartRatePostProcessorImpl> m_pImpl;
211 };
212 
213 }} // namespace cvcore::heartrate
214 
215 #endif // CVCORE_HEARTRATE_H_
cvcore::heartrate::HeartRate::HeartRateParams::minConfidence
std::size_t minConfidence
Definition: HeartRate.h:63
cvcore::heartrate::HeartRatePreProcessor
Interface for running pre-processing for HeartRate.
Definition: HeartRate.h:119
cvcore::heartrate::HeartRate::defaultPreProcessorParams
static const ImagePreProcessingParams defaultPreProcessorParams
Default Image Processing Params for HeartRate.
Definition: HeartRate.h:36
cvcore::heartrate::HeartRatePreProcessor::~HeartRatePreProcessor
~HeartRatePreProcessor()
Destructor for HeartRatePreProcessor.
Model.h
cvcore::ModelInferenceParams
Struct to describe the model.
Definition: Model.h:34
cvcore::heartrate::HeartRate::HeartRateParams::estimationInterval
std::size_t estimationInterval
Definition: HeartRate.h:56
cvcore::heartrate::HeartRate::HeartRateParams::cameraFps
std::size_t cameraFps
Definition: HeartRate.h:53
cvcore
Definition: PnP.h:20
cvcore::heartrate::HeartRate::HeartRateParams::roiSnrThresh
std::int32_t roiSnrThresh
Definition: HeartRate.h:61
cvcore::heartrate::HeartRate::HeartRateParams
HeartRate extra params.
Definition: HeartRate.h:51
cvcore::heartrate::HeartRatePreProcessor::execute
void execute(Tensor< NCHW, C3, F32 > &preProcessedFaceImage, Tensor< NCHW, C3, F32 > &preProcessedFaceMotion, Array< bool > &entityInFrame, const Tensor< NCHW, C3, U8 > &faceImage, const Array< BBox > &faceBBox, cudaStream_t stream=0)
Running preprocessing for a given face image and bounding box.
cvcore::heartrate::HeartRate::defaultExtraParams
static const HeartRateParams defaultExtraParams
Definition: HeartRate.h:68
cvcore::heartrate::HeartRatePostProcessor::HeartRatePostProcessor
HeartRatePostProcessor()=delete
Removing the default constructor for HeartRatePostProcessor.
cvcore::heartrate::HeartRatePreProcessor::HeartRatePreProcessor
HeartRatePreProcessor()=delete
Removing the default constructor for HeartRatePreProcessor.
Array.h
cvcore::heartrate::HeartRate::defaultInferenceParams
static const ModelInferenceParams defaultInferenceParams
Default inference Params for HeartRate.
Definition: HeartRate.h:46
cvcore::heartrate::HeartRatePostProcessor::~HeartRatePostProcessor
~HeartRatePostProcessor()
Destructor for HeartRatePostProcessor.
cvcore::heartrate::HeartRate::HeartRateParams::heartRateMax
std::size_t heartRateMax
Definition: HeartRate.h:54
cvcore::heartrate::HeartRate::HeartRate
HeartRate()=delete
Removing the default constructor for HeartRate.
cvcore::heartrate::HeartRate::HeartRateParams::fftWindow
std::size_t fftWindow
Definition: HeartRate.h:60
cudaStream_t
struct CUstream_st * cudaStream_t
Forward declaration of cudaStream_t.
Definition: nvbufsurftransform.h:29
cvcore::heartrate::HeartRate::defaultModelInputParams
static const ModelInputParams defaultModelInputParams
Default Model Input Params for HeartRate.
Definition: HeartRate.h:41
cvcore::Tensor
Definition: Tensor.h:704
cvcore::heartrate::HeartRate::HeartRateParams::validFpsGap
std::size_t validFpsGap
Definition: HeartRate.h:64
cvcore::heartrate::HeartRate::HeartRateParams::iouThresh
float iouThresh
Definition: HeartRate.h:65
cvcore::Array
Implementation of Array class.
Definition: Array.h:133
cvcore::heartrate::HeartRate::~HeartRate
~HeartRate()
Destructor for HeartRate.
cvcore::heartrate::HeartRate::HeartRateParams::heartRateMin
std::size_t heartRateMin
Definition: HeartRate.h:55
cvcore::heartrate::HeartRate::HeartRateParams::warmUpInterval
std::size_t warmUpInterval
Definition: HeartRate.h:58
cvcore::ImagePreProcessingParams
Struct type for image preprocessing params.
Definition: Image.h:67
cvcore::heartrate::HeartRate::HeartRateParams::maxConfidence
std::size_t maxConfidence
Definition: HeartRate.h:62
Tensor.h
cvcore::heartrate::HeartRate
Interface for loading and running HeartRate.
Definition: HeartRate.h:30
cvcore::heartrate::HeartRatePostProcessor
Interface for running post-processing for HeartRate.
Definition: HeartRate.h:174
cvcore::heartrate::HeartRatePostProcessor::execute
void execute(Array< float > &heartRate, const Tensor< CL, CX, F32 > &rawHeartRate, const Array< bool > &entityInFrame, cudaStream_t stream=0)
Running postprocessing for a given heart rate inference history.
cvcore::ModelInputParams
Struct to describe input type required by the model.
Definition: Model.h:23
cvcore::heartrate::HeartRate::execute
void execute(Array< float > &heartRate, const Tensor< NCHW, C3, U8 > &faceImage, const Array< BBox > &faceBBox, cudaStream_t stream=0)
Running HeartRate for a given image.
BBox.h