NVIDIA DeepStream SDK API Reference

7.0 Release
GazeNet.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_GAZENET_H_
14 #define CVCORE_GAZENET_H_
15 
16 #include <memory>
17 
18 #include <cuda_runtime.h>
19 
20 #include <cv/core/Array.h>
21 #include <cv/core/BBox.h>
22 #include <cv/core/CameraModel.h>
23 #include <cv/core/Core.h>
24 #include <cv/core/Image.h>
25 #include <cv/core/MathTypes.h>
26 #include <cv/core/Model.h>
27 #include <cv/core/Tensor.h>
28 
29 namespace cvcore { namespace gazenet {
30 
35 {
36  std::vector<double> input3DLandmarks;
37  size_t outputLength;
38 };
39 
44 
49 
54 
58 enum class FeatureType
59 {
60  FACEGRID,
61  LANDMARKS
62 };
63 
68 {
69 public:
73  static constexpr size_t NUM_LANDMARKS = 68;
74 
78  static constexpr float BBOX_FACE_SCALE = 1.3f;
79 
83  static constexpr float BBOX_EYE_SCALE = 1.8f;
84 
88  static const float DEFAULT_LANDMARKS_MEAN[];
89 
93  static const float DEFAULT_LANDMARKS_STD[];
94 
98  GazeNetPreProcessor() = delete;
99 
105  GazeNetPreProcessor(const ImagePreProcessingParams &preProcessorParams, const ModelInputParams &modelInputParams);
106 
111 
117  void setLandmarksMeanAndVariance(const Array<Vector2f> &landmarksMean, const Array<Vector2f> &landmarksStd);
118 
131  void execute(Tensor<NHWC, C1, F32> &outputFace, Tensor<NHWC, C1, F32> &outputLeft,
132  Tensor<NHWC, C1, F32> &outputRight, Tensor<CL, CX, F32> &outputFeatures,
133  const Tensor<NHWC, C3, U8> &inputImage, const Array<BBox> &inputBBox,
135  FeatureType type = FeatureType::FACEGRID, cudaStream_t stream = 0);
136 
137 private:
141  struct GazeNetPreProcessorImpl;
142  std::unique_ptr<GazeNetPreProcessorImpl> m_pImpl;
143 };
144 
149 {
150 public:
154  static constexpr size_t OUTPUT_SIZE = 5;
155 
159  static constexpr size_t FACEGRID_WIDTH = 25;
160 
164  static constexpr size_t FACEGRID_HEIGHT = 25;
165 
169  static constexpr size_t LANDMARKS_EYE_LEFT_BEGIN = 42;
170 
174  static constexpr size_t LANDMARKS_EYE_LEFT_END = 48;
175 
179  static constexpr size_t LANDMARKS_EYE_RIGHT_BEGIN = 36;
180 
184  static constexpr size_t LANDMARKS_EYE_RIGHT_END = 42;
185 
189  GazeNet() = delete;
190 
197  GazeNet(const ImagePreProcessingParams &preProcessorParams, const ModelInputParams &modelInputParams,
198  const ModelInferenceParams &inferenceParams);
199 
203  ~GazeNet();
204 
210  void setLandmarksMeanAndVariance(const Array<Vector2f> &landmarksMean, const Array<Vector2f> &landmarksStd);
211 
221  void execute(Array<ArrayN<float, GazeNet::OUTPUT_SIZE>> &outputGaze, const Tensor<NHWC, C3, U8> &inputImage,
222  const Array<BBox> &inputBBox,
224  FeatureType type = FeatureType::FACEGRID, cudaStream_t stream = 0);
225 
226 private:
230  struct GazeNetImpl;
231  std::unique_ptr<GazeNetImpl> m_pImpl;
232 };
233 
238 {
239 public:
244  GazeNetVisualizer(const CameraIntrinsics &cameraParams);
245 
251  GazeNetVisualizer(const GazeNetVisualizerParams &params, const CameraIntrinsics &cameraParams);
252 
257 
267  void execute(Array<Vector2i> &outputGazeLeftEndPt, Array<Vector2i> &outputGazeLeftStartPt,
268  Array<Vector2i> &outputGazeRightEndPt, Array<Vector2i> &outputGazeRightStartPt,
270  const Array<ArrayN<float, GazeNet::OUTPUT_SIZE>> &inputGaze);
271 
272 private:
276  struct GazeNetVisualizerImpl;
277  std::unique_ptr<GazeNetVisualizerImpl> m_pImpl;
278 };
279 
280 }} // namespace cvcore::gazenet
281 
282 #endif
Model.h
cvcore::ModelInferenceParams
Struct to describe the model.
Definition: Model.h:34
cvcore
Definition: PnP.h:20
cvcore::gazenet::defaultPreProcessorParams
const CVCORE_API ImagePreProcessingParams defaultPreProcessorParams
Default parameters for the preprocessing pipeline.
MathTypes.h
cvcore::gazenet::defaultModelInputParams
const CVCORE_API ModelInputParams defaultModelInputParams
Default parameters to describe the input expected for the model.
cvcore::gazenet::defaultInferenceParams
const CVCORE_API ModelInferenceParams defaultInferenceParams
Default parameters to describe the model inference parameters.
Array.h
cvcore::gazenet::FeatureType::FACEGRID
@ FACEGRID
cvcore::gazenet::FeatureType
FeatureType
Describes the type of model for Gazenet.
Definition: GazeNet.h:58
cvcore::gazenet::GazeNet
Interface for loading and running GazeNet.
Definition: GazeNet.h:148
cvcore::gazenet::GazeNetVisualizerParams::outputLength
size_t outputLength
Definition: GazeNet.h:37
cudaStream_t
struct CUstream_st * cudaStream_t
Forward declaration of cudaStream_t.
Definition: nvbufsurftransform.h:34
cvcore::Tensor
Definition: Tensor.h:704
Image.h
cvcore::Array
Implementation of Array class.
Definition: Array.h:133
cvcore::gazenet::GazeNetVisualizerParams::input3DLandmarks
std::vector< double > input3DLandmarks
Definition: GazeNet.h:36
cvcore::CameraIntrinsics
Struct type used to store Camera Intrinsics.
Definition: CameraModel.h:140
cvcore::ImagePreProcessingParams
Struct type for image preprocessing params.
Definition: Image.h:67
cvcore::gazenet::GazeNetPreProcessor
Interface for running pre-processing on GazeNet.
Definition: GazeNet.h:67
CVCORE_API
#define CVCORE_API
Definition: Core.h:24
cvcore::gazenet::GazeNetVisualizer
Interface for visualize the results of GazeNet.
Definition: GazeNet.h:237
Tensor.h
cvcore::gazenet::FeatureType::LANDMARKS
@ LANDMARKS
cvcore::ModelInputParams
Struct to describe input type required by the model.
Definition: Model.h:23
CameraModel.h
BBox.h
cvcore::ArrayN
Implementation of ArrayN class.
Definition: Array.h:258
Core.h
cvcore::gazenet::GazeNetVisualizerParams
Parameters for GazeNetVisualizer.
Definition: GazeNet.h:34