From ca10ac3b3984357aab84b3c6319d35c82d49e836 Mon Sep 17 00:00:00 2001 From: Joy D'Souza Date: Fri, 6 Jan 2023 10:03:38 -0800 Subject: [PATCH] v0.8.2.0 Release v0.8.2.0 Release --- CHANGELOG | 29 +- nvar/include/nvAR_defs.h | 47 +- nvar/include/nvCVImage.h | 48 +- nvar/include/nvCVStatus.h | 4 + samples/BodyTrack/BodyEngine.cpp | 94 +-- samples/BodyTrack/BodyEngine.h | 8 +- samples/BodyTrack/BodyTrack.cpp | 646 +++++++++--------- samples/BodyTrack/BodyTrack.exe | Bin 125480 -> 126008 bytes .../BackEndOpenGL/OpenGLMeshRenderer.cpp | 68 +- samples/ExpressionApp/ExpressionApp.cpp | 74 +- samples/ExpressionApp/ExpressionApp.exe | Bin 774696 -> 777784 bytes samples/ExpressionApp/MeshRenderer.cpp | 4 +- samples/ExpressionApp/MeshRenderer.h | 10 +- samples/FaceTrack/FaceEngine.cpp | 65 +- samples/FaceTrack/FaceEngine.h | 12 +- samples/FaceTrack/FaceTrack.cpp | 89 ++- samples/FaceTrack/FaceTrack.exe | Bin 132648 -> 133160 bytes samples/GazeRedirect/GazeEngine.cpp | 7 + samples/GazeRedirect/GazeEngine.h | 3 + samples/GazeRedirect/GazeRedirect.cpp | 25 +- samples/GazeRedirect/GazeRedirect.exe | Bin 105512 -> 106552 bytes .../example_glfw_vulkan/CMakeLists.txt | 2 +- version.h | 8 +- 23 files changed, 690 insertions(+), 553 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 48619ae..fd387df 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,16 +1,15 @@ -Changelog (v0.8.1.0) +Changelog (v0.8.2.0) -------------------- - - NEW! Eye Contact feature: an AI algorithm to help users keep their gaze engaged in video communication. The feature jointly estimates a user’s gaze direction and redirects it to frontal in video sequences. - - NEW! Face Expression Estimation (Beta) feature estimates facial expression coefficients From the video or the provided facial landmarks. ExpressionApp is added to demonstrate the new Face Expressions feature. - - NEW! Default face model for the Face 3D mesh and tracking feature, face_model2.nvf, now ships with the SDK. The old SFM based face_model0.nvf is no longer required. - - 3D Body Pose Estimation: - - NEW! Added the support for Multi Person Tracking. This feature is supported by the Windows SDK only. - - FocalLength is now a NvAR_Parameter_Input. Users can now change FocalLength at every NvAR_Run() without having to call NvAR_Load(). - - The reference pose returned by the feature has been updated - - Facial landmark estimation - - NEW! There are now 2 modalities for facial landmark tracking: {0,1} -> {performance, quality}. Make sure to choose the preferred mode for your application. The default for face mesh fitting and expression estimation are 1, and the others are 0. - - Head Pose output from the NvAR_Feature_LandmarkDetection feature is now in the OpenGL convention. Changed from X-back(towards the camera), Y-right, Z-down to X-right, Y-up, Z-back(towards the camera). - - The sample apps now show the headpose in the OpenGL convention. The color coding of the axes is Red - X , Green - Y, Blue - Z - - NvCVImage_Transfer() now sets alpha to 255 or 1.0f when doing RGB -> RGBA. NvCVImage_CompositeRect() has a premultiplied alpha mode added - - Migrated to TensorRT 8.4.2.2 - - Migrated to CUDA 11.6u1 + - Face Expression Estimation + - 6DOF head pose now available. + - Enable by setting NvAR_Parameter_Config(PoseMode) to 1. Default is 0. + - Get the pose translation using NvAR_Parameter_Output(PoseTranslation). + - Camera intrinsics can be set using NvAR_Parameter_Input(CameraIntrinsicParams). + - Expression estimation model updated. The new model is more accurate, and enables subtle expressions such as asymmetric brows, inner/outer brow separation, asymmetric smile and frown, jaw left/right, squint shapes, crossing eye gaze, cheek puff, and more. + - Enable cheek puff shapes by setting NvAR_Parameter_Config(EnableCheekPuff) to 1. + - New face model for visualization recommended for FaceExpressions feature. The model has updated blendshapes, and face area partitioning. + - Enable using --render_model=face_model3.nvf in ExpressionApp. + - Eye Contact + - Performance improvements + - CUDA graphs functionality to enable CUDA optimization now available for Eye contact feature. + - Use the parameter NvAR_Parameter_Config(UseCudaGraph) to enable/disable CUDA graphs. Default is OFF diff --git a/nvar/include/nvAR_defs.h b/nvar/include/nvAR_defs.h index 5d8b169..80bcd89 100644 --- a/nvar/include/nvAR_defs.h +++ b/nvar/include/nvAR_defs.h @@ -117,20 +117,19 @@ typedef const char* NvAR_FeatureID; #define NvAR_Feature_BodyPoseEstimation "BodyPoseEstimation" // #define NvAR_Feature_GazeRedirection "GazeRedirection" // #define NvAR_Feature_FaceExpressions "FaceExpressions" // -#define NvAR_Feature_LivePortrait "LivePortrait" // -#define NvAR_Feature_FrameSelection "FrameSelection" // !FrameSelection! #define NvAR_Parameter_Input(Name) "NvAR_Parameter_Input_" #Name #define NvAR_Parameter_Output(Name) "NvAR_Parameter_Output_" #Name #define NvAR_Parameter_Config(Name) "NvAR_Parameter_Config_" #Name #define NvAR_Parameter_InOut(Name) "NvAR_Parameter_InOut_" #Name -#define NVAR_TEMPORAL_FILTER_FACE_BOX (1 << 0) // 0x001 -#define NVAR_TEMPORAL_FILTER_FACIAL_LANDMARKS (1 << 1) // 0x002 -#define NVAR_TEMPORAL_FILTER_FACE_ROTATIONAL_POSE (1 << 2) // 0x004 -#define NVAR_TEMPORAL_FILTER_FACIAL_EXPRESSIONS (1 << 4) // 0x010 -#define NVAR_TEMPORAL_FILTER_FACIAL_GAZE (1 << 5) // 0x020 -#define NVAR_TEMPORAL_FILTER_ENHANCE_EXPRESSIONS (1 << 8) // 0x100 +#define NVAR_TEMPORAL_FILTER_FACE_BOX (1U << 0) // 0x001 +#define NVAR_TEMPORAL_FILTER_FACIAL_LANDMARKS (1U << 1) // 0x002 +#define NVAR_TEMPORAL_FILTER_FACE_ROTATIONAL_POSE (1U << 2) // 0x004 +#define NVAR_TEMPORAL_FILTER_FACIAL_EXPRESSIONS (1U << 4) // 0x010 +#define NVAR_TEMPORAL_FILTER_FACIAL_GAZE (1U << 5) // 0x020 +#define NVAR_TEMPORAL_FILTER_ENHANCE_EXPRESSIONS (1U << 8) // 0x100 + /* Parameters supported by each NvAR_FeatureID @@ -178,6 +177,7 @@ NvAR_Parameter_Config(CUDAStream) - OPTIONAL // NvAR_Parameter_Config(Temporal) - OPTIONAL // NvAR_Parameter_Config(GazeMode) - OPTIONAL // NvAR_Parameter_Config(ModelName) - OPTIONAL // +NvAR_Parameter_Config(Mode) - OPTIONAL // NvAR_Parameter_Config(GPU) - OPTIONAL // NvAR_Parameter_Config(VertexCount) - QUERY // NvAR_Parameter_Config(TriangleCount) - QUERY // @@ -286,45 +286,20 @@ NvAR_Parameter_Config(ExpressionCount) - QUERY // Input: // NvAR_Parameter_Input(Image) // NvAR_Parameter_Input(Landmarks) - OPTIONAL // +NvAR_Parameter_Input(PoseMode) - OPTIONAL // +NvAR_Parameter_Input(CameraIntrinsicParams) - OPTIONAL // // Output: // NvAR_Parameter_Output(ExpressionCoefficients) // NvAR_Parameter_Output(Landmarks) - OPTIONAL // NvAR_Parameter_Output(LandmarksConfidence) - OPTIONAL // NvAR_Parameter_Output(Pose) - OPTIONAL // +NvAR_Parameter_Output(PoseTranslation) - OPTIONAL // NvAR_Parameter_Output(BoundingBoxes) - OPTIONAL // NvAR_Parameter_Output(BoundingBoxesConfidence) - OPTIONAL // -*******NvAR_Feature_LivePortrait******* // -Config: // -NvAR_Parameter_Config(FeatureDescription) // -NvAR_Parameter_Config(CUDAStream) // -NvAR_Parameter_Config(ModelDir) // -NvAR_Parameter_Config(Temporal) // -NvAR_Parameter_Config(Mode) // - // -Input: // -NvAR_Parameter_Input(SourceImage) // -NvAR_Parameter_Input(DriveImage) // -NvAR_Parameter_Input(BackgroundImage) // -Output: // -NvAR_Parameter_Output(GeneratedImage) // -*******NvAR_Feature_FrameSelection******* // !FrameSelection! -Config: // !FrameSelection! -NvAR_Parameter_Config(FeatureDescription) // !FrameSelection! -NvAR_Parameter_Config(CUDAStream) // !FrameSelection! -NvAR_Parameter_Config(ModelDir) // !FrameSelection! -NvAR_Parameter_Config(Mode) // !FrameSelection! - // !FrameSelection! -Input: // !FrameSelection! -NvAR_Parameter_Input(Image) // !FrameSelection! - // !FrameSelection! -Output: // !FrameSelection! -NvAR_Parameter_Output(FrameSelected) // !FrameSelection! */ - - #endif // NvAR_DEFS_H diff --git a/nvar/include/nvCVImage.h b/nvar/include/nvCVImage.h index 543df6e..3906119 100644 --- a/nvar/include/nvCVImage.h +++ b/nvar/include/nvCVImage.h @@ -538,6 +538,7 @@ NvCV_Status NvCV_API NvCVImage_TransferToYUV( //! Composite one source image over another using the given matte. //! This accommodates all RGB and RGBA formats, with u8 and f32 components. +//! If the bg has alpha, then the dst alpha is updated for use in subsequent composition. //! \param[in] fg the foreground source image. //! \param[in] bg the background source image. //! \param[in] mat the matte Yu8 (or Au8) image, indicating where the src should come through. @@ -547,7 +548,6 @@ NvCV_Status NvCV_API NvCVImage_TransferToYUV( //! \return NVCV_ERR_PIXELFORMAT if the pixel format is not accommodated. //! \return NVCV_ERR_MISMATCH if either the fg & bg & dst formats do not match, or if fg & bg & dst & mat are not //! in the same address space (CPU or GPU). -//! \bug Though RGBA destinations are accommodated, the A channel is not updated at all. #if RTX_CAMERA_IMAGE == 0 NvCV_Status NvCV_API NvCVImage_Composite(const NvCVImage *fg, const NvCVImage *bg, const NvCVImage *mat, NvCVImage *dst, struct CUstream_st *stream); @@ -556,8 +556,11 @@ NvCV_Status NvCV_API NvCVImage_Composite(const NvCVImage *fg, const NvCVImage *b #endif // RTX_CAMERA_IMAGE == 1 -//! Composite one source image over another using the given matte. +//! Composite one source image rectangular region over another using the given matte. //! This accommodates all RGB and RGBA formats, with u8 and f32 components. +//! If the bg has alpha, then the dst alpha is updated for use in subsequent composition. +//! If the background is not opaque, it is recommended that all images be premultiplied by alpha, +//! and mode 1 composition be used, to yield the most meaningful composite matte. //! \param[in] fg the foreground source image. //! \param[in] fgOrg the upper-left corner of the fg image to be composited (NULL implies (0,0)). //! \param[in] bg the background source image. @@ -570,14 +573,11 @@ NvCV_Status NvCV_API NvCVImage_Composite(const NvCVImage *fg, const NvCVImage *b //! \param[in] dstOrg the upper-left corner of the dst image to be updated (NULL implies (0,0)). //! \param[in] stream the CUDA stream on which the composition is to be performed. //! \note If a smaller region of a matte is desired, a window can be created using -//! NvCVImage_InitView() for chunky or NvCVImage_Init() for planar pixels. +//! NvCVImage_InitView() for chunky pixels, as illustrated below in NvCVImage_CompositeRectA(). //! \return NVCV_SUCCESS if the operation was successful. //! \return NVCV_ERR_PIXELFORMAT if the pixel format is not accommodated. //! \return NVCV_ERR_MISMATCH if either the fg & bg & dst formats do not match, or if fg & bg & dst & mat are not //! in the same address space (CPU or GPU). -//! \bug Though RGBA destinations are accommodated, the A channel is not updated at all. -//! \todo Accommodate premultiplied alpha, either as a flag in NvCVImage or as a different mode. -//! \todo If the destination has an A channel, update it as per Adobe and Pixar. NvCV_Status NvCV_API NvCVImage_CompositeRect( const NvCVImage *fg, const NvCVPoint2i *fgOrg, const NvCVImage *bg, const NvCVPoint2i *bgOrg, @@ -586,6 +586,41 @@ NvCV_Status NvCV_API NvCVImage_CompositeRect( struct CUstream_st *stream); +//! Composite one RGBA or BGRA source image rectangular region over another RGB, BGR, RGBA or BGRA region. +//! This accommodates all RGB and RGBA formats, with u8 and f32 components. +//! If the bg has alpha, then the dst alpha is updated for use in subsequent composition. +//! If the background is not opaque, it is recommended that all images be premultiplied by alpha, +//! and mode 1 composition be used, to yield the most meaningful composite matte. +//! \param[in] fg the foreground RGBA or BGRA source image. +//! \param[in] fgRect a sub-rectangle of the fg image (NULL implies the whole image). +//! \param[in] bg the background source image. +//! \param[in] bgOrg the upper-left corner of the bg image to be composited (NULL implies (0,0)). +//! \param[in] mode the composition mode: 0 (straight alpha over) or 1 (premultiplied alpha over). +//! \param[out] dst the destination image. This can be the same as fg or bg. +//! \param[in] dstOrg the upper-left corner of the dst image to be updated (NULL implies (0,0)). +//! \param[in] stream the CUDA stream on which the composition is to be performed. +//! \return NVCV_SUCCESS if the operation was successful. +//! \return NVCV_ERR_PIXELFORMAT if the pixel format is not accommodated. +//! \return NVCV_ERR_MISMATCH if either the fg & bg & dst formats do not match, or if fg & bg & dst & mat are not +//! in the same address space (CPU or GPU). +//! \bug fgRect will only work for chunky images, not planar. +#ifdef __cplusplus +inline NvCV_Status NvCVImage_CompositeRectA( + const NvCVImage *fg, const NvCVRect2i *fgRect, + const NvCVImage *bg, const NvCVPoint2i *bgOrg, + unsigned mode, + NvCVImage *dst, const NvCVPoint2i *dstOrg, + struct CUstream_st *stream +) { + if (fgRect) { + NvCVImage fgView(const_cast(fg), fgRect->x, fgRect->y, fgRect->width, fgRect->height); + return NvCVImage_CompositeRect(&fgView, nullptr, bg, bgOrg, &fgView, mode, dst, dstOrg, stream); + } + return NvCVImage_CompositeRect(fg, nullptr, bg, bgOrg, fg, mode, dst, dstOrg, stream); +} +#endif // __cplusplus + + //! Composite a source image over a constant color field using the given matte. //! \param[in] src the source image. //! \param[in] mat the matte image, indicating where the src should come through. @@ -598,7 +633,6 @@ NvCV_Status NvCV_API NvCVImage_CompositeRect( //! \return NVCV_ERR_MISMATCH if fg & mat & dst & bgColor are not in the same address space (CPU or GPU). //! \note The bgColor must remain valid until complete; this is an important consideration especially if //! the buffers are on the GPU and NvCVImage_CompositeOverConstant() runs asynchronously. -//! \bug Though RGBA destinations are accommodated, the A channel is not updated at all. NvCV_Status NvCV_API NvCVImage_CompositeOverConstant( #if RTX_CAMERA_IMAGE == 0 const NvCVImage *src, const NvCVImage *mat, const void *bgColor, NvCVImage *dst, struct CUstream_st *stream diff --git a/nvar/include/nvCVStatus.h b/nvar/include/nvCVStatus.h index 4b6dfa6..f560edc 100644 --- a/nvar/include/nvCVStatus.h +++ b/nvar/include/nvCVStatus.h @@ -80,6 +80,10 @@ typedef enum NvCV_Status { NVCV_ERR_TOOSMALL = -33, //!< A supplied parameter or buffer is not large enough. NVCV_ERR_TOOBIG = -34, //!< A supplied parameter is too big. NVCV_ERR_WRONGSIZE = -35, //!< A supplied parameter is not the expected size. + NVCV_ERR_OBJECTNOTFOUND = -36, //!< The specified object was not found. + NVCV_ERR_SINGULAR = -37, //!< A mathematical singularity has been encountered. + NVCV_ERR_NOTHINGRENDERED = -38, //!< Nothing was rendered in the specified region. + NVCV_ERR_CONVERGENCE = -39, //!< An iteration did not converge satisfactorily. NVCV_ERR_OPENGL = -98, //!< An OpenGL error has occurred. NVCV_ERR_DIRECT3D = -99, //!< A Direct3D error has occurred. diff --git a/samples/BodyTrack/BodyEngine.cpp b/samples/BodyTrack/BodyEngine.cpp index c94e536..e34824c 100644 --- a/samples/BodyTrack/BodyEngine.cpp +++ b/samples/BodyTrack/BodyEngine.cpp @@ -222,32 +222,32 @@ BodyEngine::Err BodyEngine::initKeyPointDetectionIOParams(NvCVImage* inBuf) { BAIL_IF_CVERR(nvErr, err, BodyEngine::Err::errParameter); nvErr = NvAR_SetF32Array(keyPointDetectHandle, NvAR_Parameter_Output(KeyPointsConfidence), - keypoints_confidence.data(), sizeof(float)); + keypoints_confidence.data(), sizeof(float)); BAIL_IF_CVERR(nvErr, err, BodyEngine::Err::errParameter); #if NV_MULTI_OBJECT_TRACKER if (bEnablePeopleTracking) { - output_tracking_bbox_size = maxTargetsTracked; - output_tracking_bbox_data.assign(output_tracking_bbox_size, { 0.f, 0.f, 0.f, 0.f, 0 }); - output_tracking_bboxes.boxes = output_tracking_bbox_data.data(); - output_tracking_bboxes.max_boxes = (uint8_t)output_tracking_bbox_size; - output_tracking_bboxes.num_boxes = 0; - nvErr = - NvAR_SetObject(keyPointDetectHandle, NvAR_Parameter_Output(TrackingBoundingBoxes), &output_tracking_bboxes, sizeof(NvAR_TrackingBBoxes)); - BAIL_IF_CVERR(nvErr, err, BodyEngine::Err::errParameter); + output_tracking_bbox_size = maxTargetsTracked; + output_tracking_bbox_data.assign(output_tracking_bbox_size, { 0.f, 0.f, 0.f, 0.f, 0 }); + output_tracking_bboxes.boxes = output_tracking_bbox_data.data(); + output_tracking_bboxes.max_boxes = (uint8_t)output_tracking_bbox_size; + output_tracking_bboxes.num_boxes = 0; + nvErr = + NvAR_SetObject(keyPointDetectHandle, NvAR_Parameter_Output(TrackingBoundingBoxes), &output_tracking_bboxes, sizeof(NvAR_TrackingBBoxes)); + BAIL_IF_CVERR(nvErr, err, BodyEngine::Err::errParameter); } else { - output_bbox_data.assign(25, { 0.f, 0.f, 0.f, 0.f }); - output_bbox_conf_data.assign(25, 0.f); - output_bboxes.boxes = output_bbox_data.data(); - output_bboxes.max_boxes = (uint8_t)output_bbox_data.size(); - output_bboxes.num_boxes = 0; - nvErr = NvAR_SetObject(keyPointDetectHandle, NvAR_Parameter_Output(BoundingBoxes), &output_bboxes, sizeof(NvAR_BBoxes)); - BAIL_IF_CVERR(nvErr, err, BodyEngine::Err::errParameter); + output_bbox_data.assign(25, { 0.f, 0.f, 0.f, 0.f }); + output_bbox_conf_data.assign(25, 0.f); + output_bboxes.boxes = output_bbox_data.data(); + output_bboxes.max_boxes = (uint8_t)output_bbox_data.size(); + output_bboxes.num_boxes = 0; + nvErr = NvAR_SetObject(keyPointDetectHandle, NvAR_Parameter_Output(BoundingBoxes), &output_bboxes, sizeof(NvAR_BBoxes)); + BAIL_IF_CVERR(nvErr, err, BodyEngine::Err::errParameter); - nvErr = NvAR_SetF32Array(keyPointDetectHandle, NvAR_Parameter_Output(BoundingBoxesConfidence), - output_bbox_conf_data.data(), output_bboxes.max_boxes); - BAIL_IF_CVERR(nvErr, err, BodyEngine::Err::errParameter); + nvErr = NvAR_SetF32Array(keyPointDetectHandle, NvAR_Parameter_Output(BoundingBoxesConfidence), + output_bbox_conf_data.data(), output_bboxes.max_boxes); + BAIL_IF_CVERR(nvErr, err, BodyEngine::Err::errParameter); } #else output_bbox_data.assign(25, { 0.f, 0.f, 0.f, 0.f }); @@ -407,7 +407,7 @@ NvAR_TrackingBBoxes* BodyEngine::getTrackingBBoxes() { return &output_tracking_b float average_confidence = 0.0f; float* keypoints_confidence_all = getKeyPointsConfidence(); for (int i = 0; i < output_bboxes.num_boxes; i++) { - for (unsigned int j = 0; j < numKeyPoints; j++) { + for (unsigned int j = 0; j < numKeyPoints; j++) { average_confidence += keypoints_confidence_all[i * numKeyPoints + j]; } } @@ -483,39 +483,39 @@ unsigned BodyEngine::acquireBodyBoxAndKeyPoints(cv::Mat& src, NvAR_Point2f* refM } #if NV_MULTI_OBJECT_TRACKER unsigned BodyEngine::acquireBodyBoxAndKeyPoints(cv::Mat& src, NvAR_Point2f* refMarks, NvAR_Point3f* refKeyPoints3D, - NvAR_Quaternion* refJointAngles, NvAR_TrackingBBoxes* refBodyBoxes, int /*variant*/) { - unsigned n = 0; - NvCVImage fxSrcChunkyCPU; - (void)NVWrapperForCVMat(&src, &fxSrcChunkyCPU); - NvCV_Status cvErr = NvCVImage_Transfer(&fxSrcChunkyCPU, &inputImageBuffer, 1.0f, stream, &tmpImage); + NvAR_Quaternion* refJointAngles, NvAR_TrackingBBoxes* refBodyBoxes, int /*variant*/) { + unsigned n = 0; + NvCVImage fxSrcChunkyCPU; + (void)NVWrapperForCVMat(&src, &fxSrcChunkyCPU); + NvCV_Status cvErr = NvCVImage_Transfer(&fxSrcChunkyCPU, &inputImageBuffer, 1.0f, stream, &tmpImage); - if (NVCV_SUCCESS != cvErr) { - return n; - } + if (NVCV_SUCCESS != cvErr) { + return n; + } #ifdef DEBUG_PERF_RUNTIME - auto start = std::chrono::high_resolution_clock::now(); + auto start = std::chrono::high_resolution_clock::now(); #endif - if (findKeyPoints() != NVCV_SUCCESS) return 0; - memcpy(refBodyBoxes, getTrackingBBoxes(), sizeof(NvAR_TrackingBBoxes)); - n = 1; + if (findKeyPoints() != NVCV_SUCCESS) return 0; + memcpy(refBodyBoxes, getTrackingBBoxes(), sizeof(NvAR_TrackingBBoxes)); + n = 1; #ifdef DEBUG_PERF_RUNTIME - auto start2 = std::chrono::high_resolution_clock::now(); + auto start2 = std::chrono::high_resolution_clock::now(); #endif - memcpy(refMarks, getKeyPoints(), sizeof(NvAR_Point2f) * numKeyPoints * batchSize); - memcpy(refKeyPoints3D, getKeyPoints3D(), sizeof(NvAR_Point3f) * numKeyPoints * batchSize); - memcpy(refJointAngles, getJointAngles(), sizeof(NvAR_Quaternion) * numKeyPoints * batchSize); + memcpy(refMarks, getKeyPoints(), sizeof(NvAR_Point2f) * numKeyPoints * batchSize); + memcpy(refKeyPoints3D, getKeyPoints3D(), sizeof(NvAR_Point3f) * numKeyPoints * batchSize); + memcpy(refJointAngles, getJointAngles(), sizeof(NvAR_Quaternion) * numKeyPoints * batchSize); #ifdef DEBUG_PERF_RUNTIME - auto end = std::chrono::high_resolution_clock::now(); - auto duration3 = std::chrono::duration_cast(start2 - start); - std::cout << "[bodypose] run findKeyPoints(): " << duration3.count() << " microseconds" << std::endl; - auto duration2 = std::chrono::duration_cast(end - start2); - std::cout << "[bodypose] keypoint copy time: " << duration2.count() << " microseconds" << std::endl; - auto duration = std::chrono::duration_cast(end - start); - std::cout << "[bodypose] end-to-end time: " << duration.count() << " microseconds" << std::endl; + auto end = std::chrono::high_resolution_clock::now(); + auto duration3 = std::chrono::duration_cast(start2 - start); + std::cout << "[bodypose] run findKeyPoints(): " << duration3.count() << " microseconds" << std::endl; + auto duration2 = std::chrono::duration_cast(end - start2); + std::cout << "[bodypose] keypoint copy time: " << duration2.count() << " microseconds" << std::endl; + auto duration = std::chrono::duration_cast(end - start); + std::cout << "[bodypose] end-to-end time: " << duration.count() << " microseconds" << std::endl; #endif - return n; + return n; } #endif void BodyEngine::setBodyStabilization(bool _bStabilizeBody) { bStabilizeBody = _bStabilizeBody; } @@ -534,10 +534,10 @@ BodyEngine::Err BodyEngine::setFocalLength(float _bFocalLength) { void BodyEngine::useCudaGraph(bool _bUseCudaGraph) { bUseCudaGraph = _bUseCudaGraph; } #if NV_MULTI_OBJECT_TRACKER void BodyEngine::enablePeopleTracking(bool _bEnablePeopleTracking, unsigned int _shadowTrackingAge, unsigned int _probationAge, unsigned int _maxTargetsTracked) { - bEnablePeopleTracking = _bEnablePeopleTracking; - shadowTrackingAge = _shadowTrackingAge; + bEnablePeopleTracking = _bEnablePeopleTracking; + shadowTrackingAge = _shadowTrackingAge; probationAge = _probationAge; - maxTargetsTracked = _maxTargetsTracked; + maxTargetsTracked = _maxTargetsTracked; } #endif void BodyEngine::setAppMode(BodyEngine::mode _mode) { appMode = _mode; } diff --git a/samples/BodyTrack/BodyEngine.h b/samples/BodyTrack/BodyEngine.h index a1669f0..fb3dc63 100644 --- a/samples/BodyTrack/BodyEngine.h +++ b/samples/BodyTrack/BodyEngine.h @@ -154,7 +154,7 @@ class BodyEngine { NvAR_Quaternion* refJointAngles, NvAR_BBoxes* refBodyBoxes, int variant = 0); #if NV_MULTI_OBJECT_TRACKER unsigned acquireBodyBoxAndKeyPoints(cv::Mat& src, NvAR_Point2f* refMarks, NvAR_Point3f* refKeyPoints3D, - NvAR_Quaternion* refJointAngles, NvAR_TrackingBBoxes* refBodyBoxes, int variant = 0); + NvAR_Quaternion* refJointAngles, NvAR_TrackingBBoxes* refBodyBoxes, int variant = 0); #endif void setBodyStabilization(bool); void setMode(int); @@ -206,10 +206,10 @@ class BodyEngine { bStabilizeBody = true; bUseCudaGraph = true; #if NV_MULTI_OBJECT_TRACKER - bEnablePeopleTracking = false; - shadowTrackingAge = 90; + bEnablePeopleTracking = false; + shadowTrackingAge = 90; probationAge = 10; - maxTargetsTracked = 30; + maxTargetsTracked = 30; #endif bFocalLength = FOCAL_LENGTH_DEFAULT; confidenceThreshold = 0.f; diff --git a/samples/BodyTrack/BodyTrack.cpp b/samples/BodyTrack/BodyTrack.cpp index b3d3eed..2966e61 100644 --- a/samples/BodyTrack/BodyTrack.cpp +++ b/samples/BodyTrack/BodyTrack.cpp @@ -108,10 +108,10 @@ static void Usage() { " --mode[=0|1] Model Mode. 0: High Quality, 1: High Performance\n" " --app_mode[=(0|1)] App mode. 0: Body detection, 1: Keypoint detection " #if NV_MULTI_OBJECT_TRACKER - " --enable_people_tracking[=(0|1)] Enables people tracking " - " --shadow_tracking_age Shadow Tracking Age after which tracking information of a person is removed. Measured in frames" + " --enable_people_tracking[=(0|1)] Enables people tracking " + " --shadow_tracking_age Shadow Tracking Age after which tracking information of a person is removed. Measured in frames" " --probation_age Length of probationary period. Measured in frames" - " --max_targets_tracked Maximum number of targets to be tracked " + " --max_targets_tracked Maximum number of targets to be tracked " #endif "(Default).\n" " --benchmarks[=] run benchmarks\n"); @@ -213,10 +213,10 @@ static int ParseMyArgs(int argc, char **argv) { GetFlagArgVal("camindex", arg, &FLAG_camindex) || GetFlagArgVal("use_cuda_graph", arg, &FLAG_useCudaGraph) || #if NV_MULTI_OBJECT_TRACKER - GetFlagArgVal("enable_people_tracking", arg, &FLAG_enablePeopleTracking) || - GetFlagArgVal("shadow_tracking_age", arg, &FLAG_shadowTrackingAge) || + GetFlagArgVal("enable_people_tracking", arg, &FLAG_enablePeopleTracking) || + GetFlagArgVal("shadow_tracking_age", arg, &FLAG_shadowTrackingAge) || GetFlagArgVal("probation_age", arg, &FLAG_probationAge) || - GetFlagArgVal("max_targets_tracked", arg, &FLAG_maxTargetsTracked) || + GetFlagArgVal("max_targets_tracked", arg, &FLAG_maxTargetsTracked) || #endif GetFlagArgVal("temporal", arg, &FLAG_temporal))) { continue; @@ -389,7 +389,7 @@ void DoApp::processKey(int key) { if (FLAG_enablePeopleTracking) body_ar_engine.createFeatures(FLAG_modelPath.c_str()); else #endif - body_ar_engine.createFeatures(FLAG_modelPath.c_str(), 1); + body_ar_engine.createFeatures(FLAG_modelPath.c_str(), 1); body_ar_engine.initFeatureIOParams(); break; case '1': @@ -471,48 +471,48 @@ void DoApp::DrawBBoxes(const cv::Mat &src, NvAR_Rect *output_bbox) { } void DoApp::DrawBBoxes(const cv::Mat &src, NvAR_BBoxes *output_bbox) { - cv::Mat frm; - if (FLAG_offlineMode) - frm = src.clone(); - else - frm = src; + cv::Mat frm; + if (FLAG_offlineMode) + frm = src.clone(); + else + frm = src; - if (output_bbox) { - for (int i = 0; i < output_bbox->num_boxes; i++) { - auto color = cv::Scalar(255, 255, 255); - cv::rectangle(frm, cv::Point(lround(output_bbox->boxes[i].x), lround(output_bbox->boxes[i].y)), - cv::Point(lround(output_bbox->boxes[i].x + output_bbox->boxes[i].width), lround(output_bbox->boxes[i].y + output_bbox->boxes[i].height)), - cv::Scalar(255, 0, 0), 2); - } - - } - - if (FLAG_offlineMode) bodyDetectOutputVideo.write(frm); + if (output_bbox) { + for (int i = 0; i < output_bbox->num_boxes; i++) { + auto color = cv::Scalar(255, 255, 255); + cv::rectangle(frm, cv::Point(lround(output_bbox->boxes[i].x), lround(output_bbox->boxes[i].y)), + cv::Point(lround(output_bbox->boxes[i].x + output_bbox->boxes[i].width), lround(output_bbox->boxes[i].y + output_bbox->boxes[i].height)), + cv::Scalar(255, 0, 0), 2); + } + + } + + if (FLAG_offlineMode) bodyDetectOutputVideo.write(frm); } #if NV_MULTI_OBJECT_TRACKER void DoApp::DrawBBoxes(const cv::Mat &src, NvAR_TrackingBBoxes *output_bbox) { - cv::Mat frm; - if (FLAG_offlineMode) - frm = src.clone(); - else - frm = src; + cv::Mat frm; + if (FLAG_offlineMode) + frm = src.clone(); + else + frm = src; - if (output_bbox) { - for (int i = 0; i < output_bbox->num_boxes; i++) { - if (colorCodes.size() <= output_bbox->boxes[i].tracking_id) - colorCodes.push_back(cv::Scalar(rand() & 0xFF, rand() & 0xFF, rand() & 0xFF)); - auto color = colorCodes[output_bbox->boxes[i].tracking_id]; - std::string text = "ID: " + std::to_string(output_bbox->boxes[i].tracking_id); - - cv::rectangle(frm, cv::Point(lround(output_bbox->boxes[i].bbox.x), lround(output_bbox->boxes[i].bbox.y)), - cv::Point(lround(output_bbox->boxes[i].bbox.x + output_bbox->boxes[i].bbox.width), lround(output_bbox->boxes[i].bbox.y + output_bbox->boxes[i].bbox.height)), - color, 2); - cv::putText(frm, text, cv::Point(lround(output_bbox->boxes[i].bbox.x), lround(output_bbox->boxes[i].bbox.y) - 10), cv::FONT_HERSHEY_SIMPLEX, 0.9, color, 2); - } + if (output_bbox) { + for (int i = 0; i < output_bbox->num_boxes; i++) { + if (colorCodes.size() <= output_bbox->boxes[i].tracking_id) + colorCodes.push_back(cv::Scalar(rand() & 0xFF, rand() & 0xFF, rand() & 0xFF)); + auto color = colorCodes[output_bbox->boxes[i].tracking_id]; + std::string text = "ID: " + std::to_string(output_bbox->boxes[i].tracking_id); + + cv::rectangle(frm, cv::Point(lround(output_bbox->boxes[i].bbox.x), lround(output_bbox->boxes[i].bbox.y)), + cv::Point(lround(output_bbox->boxes[i].bbox.x + output_bbox->boxes[i].bbox.width), lround(output_bbox->boxes[i].bbox.y + output_bbox->boxes[i].bbox.height)), + color, 2); + cv::putText(frm, text, cv::Point(lround(output_bbox->boxes[i].bbox.x), lround(output_bbox->boxes[i].bbox.y) - 10), cv::FONT_HERSHEY_SIMPLEX, 0.9, color, 2); + } - } + } - if (FLAG_offlineMode) bodyDetectOutputVideo.write(frm); + if (FLAG_offlineMode) bodyDetectOutputVideo.write(frm); } #endif void DoApp::writeVideoAndEstResults(const cv::Mat &frm, NvAR_BBoxes output_bboxes, NvAR_Point2f* keypoints) { @@ -561,50 +561,50 @@ void DoApp::writeVideoAndEstResults(const cv::Mat &frm, NvAR_BBoxes output_bboxe } #if NV_MULTI_OBJECT_TRACKER void DoApp::writeVideoAndEstResults(const cv::Mat &frm, NvAR_TrackingBBoxes output_bboxes, NvAR_Point2f* keypoints) { - if (captureVideo) { - if (!capturedVideo.isOpened()) { - const std::string currentCalendarTime = getCalendarTime(); - const std::string capturedOutputFileName = currentCalendarTime + ".mp4"; - getFPS(); - if (frameTime) { - float fps = (float)(1.0 / frameTime); - capturedVideo.open(capturedOutputFileName, StringToFourcc(FLAG_captureCodec), fps, - cv::Size(frm.cols, frm.rows)); - if (!capturedVideo.isOpened()) { - std::cout << "Error: Could not open video: \"" << capturedOutputFileName << "\"\n"; - return; - } - if (FLAG_verbose) { - std::cout << "Capturing video started" << std::endl; - } - } - else { // If frameTime is 0.f, returns without writing the frame to the Video - return; - } - const std::string outputsFileName = currentCalendarTime + ".txt"; - bodyEngineVideoOutputFile.open(outputsFileName, std::ios_base::out); - if (!bodyEngineVideoOutputFile.is_open()) { - std::cout << "Error: Could not open file: \"" << outputsFileName << "\"\n"; - return; - } - std::string keyPointDetectionMode = (keypoints == NULL) ? "Off" : "On"; - bodyEngineVideoOutputFile << "// BodyDetectOn, KeyPointDetect" << keyPointDetectionMode << "\n "; - bodyEngineVideoOutputFile - << "// kNumPeople, (bbox_x, bbox_y, bbox_w, bbox_h){ kNumPeople}, kNumLMs, [lm_x, lm_y]{kNumLMs}\n"; - } - // Write each frame to the Video - capturedVideo << frm; - writeEstResults(bodyEngineVideoOutputFile, output_bboxes, keypoints); - } - else { - if (capturedVideo.isOpened()) { - if (FLAG_verbose) { - std::cout << "Capturing video ended" << std::endl; - } - capturedVideo.release(); - if (bodyEngineVideoOutputFile.is_open()) bodyEngineVideoOutputFile.close(); - } - } + if (captureVideo) { + if (!capturedVideo.isOpened()) { + const std::string currentCalendarTime = getCalendarTime(); + const std::string capturedOutputFileName = currentCalendarTime + ".mp4"; + getFPS(); + if (frameTime) { + float fps = (float)(1.0 / frameTime); + capturedVideo.open(capturedOutputFileName, StringToFourcc(FLAG_captureCodec), fps, + cv::Size(frm.cols, frm.rows)); + if (!capturedVideo.isOpened()) { + std::cout << "Error: Could not open video: \"" << capturedOutputFileName << "\"\n"; + return; + } + if (FLAG_verbose) { + std::cout << "Capturing video started" << std::endl; + } + } + else { // If frameTime is 0.f, returns without writing the frame to the Video + return; + } + const std::string outputsFileName = currentCalendarTime + ".txt"; + bodyEngineVideoOutputFile.open(outputsFileName, std::ios_base::out); + if (!bodyEngineVideoOutputFile.is_open()) { + std::cout << "Error: Could not open file: \"" << outputsFileName << "\"\n"; + return; + } + std::string keyPointDetectionMode = (keypoints == NULL) ? "Off" : "On"; + bodyEngineVideoOutputFile << "// BodyDetectOn, KeyPointDetect" << keyPointDetectionMode << "\n "; + bodyEngineVideoOutputFile + << "// kNumPeople, (bbox_x, bbox_y, bbox_w, bbox_h){ kNumPeople}, kNumLMs, [lm_x, lm_y]{kNumLMs}\n"; + } + // Write each frame to the Video + capturedVideo << frm; + writeEstResults(bodyEngineVideoOutputFile, output_bboxes, keypoints); + } + else { + if (capturedVideo.isOpened()) { + if (FLAG_verbose) { + std::cout << "Capturing video ended" << std::endl; + } + capturedVideo.release(); + if (bodyEngineVideoOutputFile.is_open()) bodyEngineVideoOutputFile.close(); + } + } } #endif void DoApp::writeEstResults(std::ofstream &outputFile, NvAR_BBoxes output_bboxes, NvAR_Point2f* keypoints) { @@ -651,49 +651,49 @@ void DoApp::writeEstResults(std::ofstream &outputFile, NvAR_BBoxes output_bboxes } #if NV_MULTI_OBJECT_TRACKER void DoApp::writeEstResults(std::ofstream &outputFile, NvAR_TrackingBBoxes output_bboxes, NvAR_Point2f* keypoints) { - /** - * Output File Format : - * BodyDetectOn, KeyPointDetectOn - * kNumPeople, (bbox_x, bbox_y, bbox_w, bbox_h){ kNumPeople}, kNumKPs, [j_x, j_y]{kNumKPs} - */ + /** + * Output File Format : + * BodyDetectOn, KeyPointDetectOn + * kNumPeople, (bbox_x, bbox_y, bbox_w, bbox_h){ kNumPeople}, kNumKPs, [j_x, j_y]{kNumKPs} + */ - int bodyDetectOn = (body_ar_engine.appMode == BodyEngine::mode::bodyDetection || - body_ar_engine.appMode == BodyEngine::mode::keyPointDetection) - ? 1 - : 0; - int keyPointDetectOn = (body_ar_engine.appMode == BodyEngine::mode::keyPointDetection) - ? 1 - : 0; - outputFile << bodyDetectOn << "," << keyPointDetectOn << "\n"; + int bodyDetectOn = (body_ar_engine.appMode == BodyEngine::mode::bodyDetection || + body_ar_engine.appMode == BodyEngine::mode::keyPointDetection) + ? 1 + : 0; + int keyPointDetectOn = (body_ar_engine.appMode == BodyEngine::mode::keyPointDetection) + ? 1 + : 0; + outputFile << bodyDetectOn << "," << keyPointDetectOn << "\n"; - if (bodyDetectOn && output_bboxes.num_boxes) { - // Append number of bodies detected in the current frame - outputFile << unsigned(output_bboxes.num_boxes) << ","; - // write outputbboxes to outputFile - for (size_t i = 0; i < output_bboxes.num_boxes; i++) { - int x1 = (int)output_bboxes.boxes[i].bbox.x, y1 = (int)output_bboxes.boxes[i].bbox.y, - width = (int)output_bboxes.boxes[i].bbox.width, height = (int)output_bboxes.boxes[i].bbox.height; - unsigned int tracking_id = output_bboxes.boxes[i].tracking_id; - outputFile << x1 << "," << y1 << "," << width << "," << height << "," << tracking_id << ","; - } - } - else { - outputFile << "0,"; - } - if (keyPointDetectOn && output_bboxes.num_boxes) { - int numKeyPoints = body_ar_engine.getNumKeyPoints(); - // Append number of keypoints - outputFile << numKeyPoints << ","; - // Append 2 * number of keypoint values - NvAR_Point2f *pt, *endPt; - for (endPt = (pt = (NvAR_Point2f *)keypoints) + numKeyPoints; pt < endPt; ++pt) - outputFile << pt->x << "," << pt->y << ","; - } - else { - outputFile << "0,"; - } + if (bodyDetectOn && output_bboxes.num_boxes) { + // Append number of bodies detected in the current frame + outputFile << unsigned(output_bboxes.num_boxes) << ","; + // write outputbboxes to outputFile + for (size_t i = 0; i < output_bboxes.num_boxes; i++) { + int x1 = (int)output_bboxes.boxes[i].bbox.x, y1 = (int)output_bboxes.boxes[i].bbox.y, + width = (int)output_bboxes.boxes[i].bbox.width, height = (int)output_bboxes.boxes[i].bbox.height; + unsigned int tracking_id = output_bboxes.boxes[i].tracking_id; + outputFile << x1 << "," << y1 << "," << width << "," << height << "," << tracking_id << ","; + } + } + else { + outputFile << "0,"; + } + if (keyPointDetectOn && output_bboxes.num_boxes) { + int numKeyPoints = body_ar_engine.getNumKeyPoints(); + // Append number of keypoints + outputFile << numKeyPoints << ","; + // Append 2 * number of keypoint values + NvAR_Point2f *pt, *endPt; + for (endPt = (pt = (NvAR_Point2f *)keypoints) + numKeyPoints; pt < endPt; ++pt) + outputFile << pt->x << "," << pt->y << ","; + } + else { + outputFile << "0,"; + } - outputFile << "\n"; + outputFile << "\n"; } #endif void DoApp::writeFrameAndEstResults(const cv::Mat &frm, NvAR_BBoxes output_bboxes, NvAR_Point2f* keypoints) { @@ -722,28 +722,28 @@ void DoApp::writeFrameAndEstResults(const cv::Mat &frm, NvAR_BBoxes output_bboxe } #if NV_MULTI_OBJECT_TRACKER void DoApp::writeFrameAndEstResults(const cv::Mat &frm, NvAR_TrackingBBoxes output_bboxes, NvAR_Point2f* keypoints) { - if (captureFrame) { - const std::string currentCalendarTime = getCalendarTime(); - const std::string capturedFrame = currentCalendarTime + ".png"; - cv::imwrite(capturedFrame, frm); - if (FLAG_verbose) { - std::cout << "Captured the frame" << std::endl; - } - // Write Body Engine Outputs - const std::string outputFilename = currentCalendarTime + ".txt"; - std::ofstream outputFile; - outputFile.open(outputFilename, std::ios_base::out); - if (!outputFile.is_open()) { - std::cout << "Error: Could not open file: \"" << outputFilename << "\"\n"; - return; - } - std::string keyPointDetectionMode = (keypoints == NULL) ? "Off" : "On"; - outputFile << "// BodyDetectOn, KeyPointDetect" << keyPointDetectionMode << "\n"; - outputFile << "// kNumPeople, (bbox_x, bbox_y, bbox_w, bbox_h){ kNumPeople}, kNumLMs, [lm_x, lm_y]{kNumLMs}\n"; - writeEstResults(outputFile, output_bboxes, keypoints); - if (outputFile.is_open()) outputFile.close(); - captureFrame = false; - } + if (captureFrame) { + const std::string currentCalendarTime = getCalendarTime(); + const std::string capturedFrame = currentCalendarTime + ".png"; + cv::imwrite(capturedFrame, frm); + if (FLAG_verbose) { + std::cout << "Captured the frame" << std::endl; + } + // Write Body Engine Outputs + const std::string outputFilename = currentCalendarTime + ".txt"; + std::ofstream outputFile; + outputFile.open(outputFilename, std::ios_base::out); + if (!outputFile.is_open()) { + std::cout << "Error: Could not open file: \"" << outputFilename << "\"\n"; + return; + } + std::string keyPointDetectionMode = (keypoints == NULL) ? "Off" : "On"; + outputFile << "// BodyDetectOn, KeyPointDetect" << keyPointDetectionMode << "\n"; + outputFile << "// kNumPeople, (bbox_x, bbox_y, bbox_w, bbox_h){ kNumPeople}, kNumLMs, [lm_x, lm_y]{kNumLMs}\n"; + writeEstResults(outputFile, output_bboxes, keypoints); + if (outputFile.is_open()) outputFile.close(); + captureFrame = false; + } } #endif void DoApp::DrawKeyPointLine(const cv::Mat& src, NvAR_Point2f* keypoints, int point1, int point2, int color) { @@ -799,184 +799,184 @@ void DoApp::DrawKeyPointsAndEdges(const cv::Mat& src, NvAR_Point2f* keypoints, i for (int i = 0; i < body_ar_engine.output_tracking_bboxes.num_boxes; i++) { - keypoints = keypointsBatch8 + (i * 34); + keypoints = keypointsBatch8 + (i * 34); - for (endPt = (pt = (NvAR_Point2f*)keypoints) + numKeyPoints; pt < endPt; ++pt) - cv::circle(frm, cv::Point(lround(pt->x), lround(pt->y)), 4, cv::Scalar(180, 180, 180), -1); + for (endPt = (pt = (NvAR_Point2f*)keypoints) + numKeyPoints; pt < endPt; ++pt) + cv::circle(frm, cv::Point(lround(pt->x), lround(pt->y)), 4, cv::Scalar(180, 180, 180), -1); - if (output_bbox) { - while (colorCodes.size()<= output_bbox->boxes[i].tracking_id) - colorCodes.push_back(cv::Scalar(rand() & 0xFF, rand() & 0xFF, rand() & 0xFF)); - auto color = colorCodes[output_bbox->boxes[i].tracking_id]; - std::string text = "ID: "+std::to_string(output_bbox->boxes[i].tracking_id); - cv::rectangle(frm, cv::Point(lround(output_bbox->boxes[i].bbox.x), lround(output_bbox->boxes[i].bbox.y)), - cv::Point(lround(output_bbox->boxes[i].bbox.x + output_bbox->boxes[i].bbox.width), lround(output_bbox->boxes[i].bbox.y + output_bbox->boxes[i].bbox.height)), - color, 2); - cv::putText(frm, text, cv::Point(lround(output_bbox->boxes[i].bbox.x), lround(output_bbox->boxes[i].bbox.y) - 10), cv::FONT_HERSHEY_SIMPLEX, 0.5, color, 2); - } - + if (output_bbox) { + while (colorCodes.size()<= output_bbox->boxes[i].tracking_id) + colorCodes.push_back(cv::Scalar(rand() & 0xFF, rand() & 0xFF, rand() & 0xFF)); + auto color = colorCodes[output_bbox->boxes[i].tracking_id]; + std::string text = "ID: "+std::to_string(output_bbox->boxes[i].tracking_id); + cv::rectangle(frm, cv::Point(lround(output_bbox->boxes[i].bbox.x), lround(output_bbox->boxes[i].bbox.y)), + cv::Point(lround(output_bbox->boxes[i].bbox.x + output_bbox->boxes[i].bbox.width), lround(output_bbox->boxes[i].bbox.y + output_bbox->boxes[i].bbox.height)), + color, 2); + cv::putText(frm, text, cv::Point(lround(output_bbox->boxes[i].bbox.x), lround(output_bbox->boxes[i].bbox.y) - 10), cv::FONT_HERSHEY_SIMPLEX, 0.5, color, 2); + } + - // center body - DrawKeyPointLine(frm, keypoints, pelvis, torso, kColorGreen); - DrawKeyPointLine(frm, keypoints, torso, neck, kColorGreen); - DrawKeyPointLine(frm, keypoints, neck, pelvis, kColorGreen); + // center body + DrawKeyPointLine(frm, keypoints, pelvis, torso, kColorGreen); + DrawKeyPointLine(frm, keypoints, torso, neck, kColorGreen); + DrawKeyPointLine(frm, keypoints, neck, pelvis, kColorGreen); - // right side - DrawKeyPointLine(frm, keypoints, right_ankle, right_knee, kColorRed); - DrawKeyPointLine(frm, keypoints, right_knee, right_hip, kColorRed); - DrawKeyPointLine(frm, keypoints, right_hip, pelvis, kColorRed); - DrawKeyPointLine(frm, keypoints, right_hip, right_shoulder, kColorRed); - DrawKeyPointLine(frm, keypoints, right_shoulder, right_elbow, kColorRed); - DrawKeyPointLine(frm, keypoints, right_elbow, right_wrist, kColorRed); - DrawKeyPointLine(frm, keypoints, right_shoulder, neck, kColorRed); + // right side + DrawKeyPointLine(frm, keypoints, right_ankle, right_knee, kColorRed); + DrawKeyPointLine(frm, keypoints, right_knee, right_hip, kColorRed); + DrawKeyPointLine(frm, keypoints, right_hip, pelvis, kColorRed); + DrawKeyPointLine(frm, keypoints, right_hip, right_shoulder, kColorRed); + DrawKeyPointLine(frm, keypoints, right_shoulder, right_elbow, kColorRed); + DrawKeyPointLine(frm, keypoints, right_elbow, right_wrist, kColorRed); + DrawKeyPointLine(frm, keypoints, right_shoulder, neck, kColorRed); - // right side hand and feet - DrawKeyPointLine(frm, keypoints, right_wrist, right_pinky_knuckle, kColorRed); - DrawKeyPointLine(frm, keypoints, right_wrist, right_middle_tip, kColorRed); - DrawKeyPointLine(frm, keypoints, right_wrist, right_index_knuckle, kColorRed); - DrawKeyPointLine(frm, keypoints, right_wrist, right_thumb_tip, kColorRed); - DrawKeyPointLine(frm, keypoints, right_ankle, right_heel, kColorRed); - DrawKeyPointLine(frm, keypoints, right_ankle, right_big_toe, kColorRed); - DrawKeyPointLine(frm, keypoints, right_big_toe, right_small_toe, kColorRed); + // right side hand and feet + DrawKeyPointLine(frm, keypoints, right_wrist, right_pinky_knuckle, kColorRed); + DrawKeyPointLine(frm, keypoints, right_wrist, right_middle_tip, kColorRed); + DrawKeyPointLine(frm, keypoints, right_wrist, right_index_knuckle, kColorRed); + DrawKeyPointLine(frm, keypoints, right_wrist, right_thumb_tip, kColorRed); + DrawKeyPointLine(frm, keypoints, right_ankle, right_heel, kColorRed); + DrawKeyPointLine(frm, keypoints, right_ankle, right_big_toe, kColorRed); + DrawKeyPointLine(frm, keypoints, right_big_toe, right_small_toe, kColorRed); - //left side - DrawKeyPointLine(frm, keypoints, left_ankle, left_knee, kColorBlue); - DrawKeyPointLine(frm, keypoints, left_knee, left_hip, kColorBlue); - DrawKeyPointLine(frm, keypoints, left_hip, pelvis, kColorBlue); - DrawKeyPointLine(frm, keypoints, left_hip, left_shoulder, kColorBlue); - DrawKeyPointLine(frm, keypoints, left_shoulder, left_elbow, kColorBlue); - DrawKeyPointLine(frm, keypoints, left_elbow, left_wrist, kColorBlue); - DrawKeyPointLine(frm, keypoints, left_shoulder, neck, kColorBlue); + //left side + DrawKeyPointLine(frm, keypoints, left_ankle, left_knee, kColorBlue); + DrawKeyPointLine(frm, keypoints, left_knee, left_hip, kColorBlue); + DrawKeyPointLine(frm, keypoints, left_hip, pelvis, kColorBlue); + DrawKeyPointLine(frm, keypoints, left_hip, left_shoulder, kColorBlue); + DrawKeyPointLine(frm, keypoints, left_shoulder, left_elbow, kColorBlue); + DrawKeyPointLine(frm, keypoints, left_elbow, left_wrist, kColorBlue); + DrawKeyPointLine(frm, keypoints, left_shoulder, neck, kColorBlue); - // left side hand and feet - DrawKeyPointLine(frm, keypoints, left_wrist, left_pinky_knuckle, kColorBlue); - DrawKeyPointLine(frm, keypoints, left_wrist, left_middle_tip, kColorBlue); - DrawKeyPointLine(frm, keypoints, left_wrist, left_index_knuckle, kColorBlue); - DrawKeyPointLine(frm, keypoints, left_wrist, left_thumb_tip, kColorBlue); - DrawKeyPointLine(frm, keypoints, left_ankle, left_heel, kColorBlue); - DrawKeyPointLine(frm, keypoints, left_ankle, left_big_toe, kColorBlue); - DrawKeyPointLine(frm, keypoints, left_big_toe, left_small_toe, kColorBlue); + // left side hand and feet + DrawKeyPointLine(frm, keypoints, left_wrist, left_pinky_knuckle, kColorBlue); + DrawKeyPointLine(frm, keypoints, left_wrist, left_middle_tip, kColorBlue); + DrawKeyPointLine(frm, keypoints, left_wrist, left_index_knuckle, kColorBlue); + DrawKeyPointLine(frm, keypoints, left_wrist, left_thumb_tip, kColorBlue); + DrawKeyPointLine(frm, keypoints, left_ankle, left_heel, kColorBlue); + DrawKeyPointLine(frm, keypoints, left_ankle, left_big_toe, kColorBlue); + DrawKeyPointLine(frm, keypoints, left_big_toe, left_small_toe, kColorBlue); - // head - DrawKeyPointLine(frm, keypoints, neck, nose, kColorGreen); - DrawKeyPointLine(frm, keypoints, nose, right_eye, kColorGreen); - DrawKeyPointLine(frm, keypoints, right_eye, right_ear, kColorGreen); - DrawKeyPointLine(frm, keypoints, nose, left_eye, kColorGreen); - DrawKeyPointLine(frm, keypoints, left_eye, left_ear, kColorGreen); + // head + DrawKeyPointLine(frm, keypoints, neck, nose, kColorGreen); + DrawKeyPointLine(frm, keypoints, nose, right_eye, kColorGreen); + DrawKeyPointLine(frm, keypoints, right_eye, right_ear, kColorGreen); + DrawKeyPointLine(frm, keypoints, nose, left_eye, kColorGreen); + DrawKeyPointLine(frm, keypoints, left_eye, left_ear, kColorGreen); } if (FLAG_offlineMode) keyPointsOutputVideo.write(frm); } #endif void DoApp::DrawKeyPointsAndEdges(const cv::Mat& src, NvAR_Point2f* keypoints, int numKeyPoints, NvAR_BBoxes* output_bbox) { - cv::Mat frm; - if (FLAG_offlineMode) - frm = src.clone(); - else - frm = src; - NvAR_Point2f *pt, *endPt; - NvAR_Point2f* keypointsBatch8 = keypoints; + cv::Mat frm; + if (FLAG_offlineMode) + frm = src.clone(); + else + frm = src; + NvAR_Point2f *pt, *endPt; + NvAR_Point2f* keypointsBatch8 = keypoints; - int pelvis = 0; - int left_hip = 1; - int right_hip = 2; - int torso = 3; - int left_knee = 4; - int right_knee = 5; - int neck = 6; - int left_ankle = 7; - int right_ankle = 8; - int left_big_toe = 9; - int right_big_toe = 10; - int left_small_toe = 11; - int right_small_toe = 12; - int left_heel = 13; - int right_heel = 14; - int nose = 15; - int left_eye = 16; - int right_eye = 17; - int left_ear = 18; - int right_ear = 19; - int left_shoulder = 20; - int right_shoulder = 21; - int left_elbow = 22; - int right_elbow = 23; - int left_wrist = 24; - int right_wrist = 25; - int left_pinky_knuckle = 26; - int right_pinky_knuckle = 27; - int left_middle_tip = 28; - int right_middle_tip = 29; - int left_index_knuckle = 30; - int right_index_knuckle = 31; - int left_thumb_tip = 32; - int right_thumb_tip = 33; + int pelvis = 0; + int left_hip = 1; + int right_hip = 2; + int torso = 3; + int left_knee = 4; + int right_knee = 5; + int neck = 6; + int left_ankle = 7; + int right_ankle = 8; + int left_big_toe = 9; + int right_big_toe = 10; + int left_small_toe = 11; + int right_small_toe = 12; + int left_heel = 13; + int right_heel = 14; + int nose = 15; + int left_eye = 16; + int right_eye = 17; + int left_ear = 18; + int right_ear = 19; + int left_shoulder = 20; + int right_shoulder = 21; + int left_elbow = 22; + int right_elbow = 23; + int left_wrist = 24; + int right_wrist = 25; + int left_pinky_knuckle = 26; + int right_pinky_knuckle = 27; + int left_middle_tip = 28; + int right_middle_tip = 29; + int left_index_knuckle = 30; + int right_index_knuckle = 31; + int left_thumb_tip = 32; + int right_thumb_tip = 33; - for (int i = 0; i < body_ar_engine.output_bboxes.num_boxes; i++) { + for (int i = 0; i < body_ar_engine.output_bboxes.num_boxes; i++) { - keypoints = keypointsBatch8 + (i * 34); + keypoints = keypointsBatch8 + (i * 34); - for (endPt = (pt = (NvAR_Point2f*)keypoints) + numKeyPoints; pt < endPt; ++pt) - cv::circle(frm, cv::Point(lround(pt->x), lround(pt->y)), 4, cv::Scalar(180, 180, 180), -1); + for (endPt = (pt = (NvAR_Point2f*)keypoints) + numKeyPoints; pt < endPt; ++pt) + cv::circle(frm, cv::Point(lround(pt->x), lround(pt->y)), 4, cv::Scalar(180, 180, 180), -1); - if (output_bbox) { - cv::rectangle(frm, cv::Point(lround(output_bbox->boxes[i].x), lround(output_bbox->boxes[i].y)), - cv::Point(lround(output_bbox->boxes[i].x + output_bbox->boxes[i].width), lround(output_bbox->boxes[i].y + output_bbox->boxes[i].height)), - cv::Scalar(255, 0, 0), 2); - } + if (output_bbox) { + cv::rectangle(frm, cv::Point(lround(output_bbox->boxes[i].x), lround(output_bbox->boxes[i].y)), + cv::Point(lround(output_bbox->boxes[i].x + output_bbox->boxes[i].width), lround(output_bbox->boxes[i].y + output_bbox->boxes[i].height)), + cv::Scalar(255, 0, 0), 2); + } - // center body - DrawKeyPointLine(frm, keypoints, pelvis, torso, kColorGreen); - DrawKeyPointLine(frm, keypoints, torso, neck, kColorGreen); - DrawKeyPointLine(frm, keypoints, neck, pelvis, kColorGreen); + // center body + DrawKeyPointLine(frm, keypoints, pelvis, torso, kColorGreen); + DrawKeyPointLine(frm, keypoints, torso, neck, kColorGreen); + DrawKeyPointLine(frm, keypoints, neck, pelvis, kColorGreen); - // right side - DrawKeyPointLine(frm, keypoints, right_ankle, right_knee, kColorRed); - DrawKeyPointLine(frm, keypoints, right_knee, right_hip, kColorRed); - DrawKeyPointLine(frm, keypoints, right_hip, pelvis, kColorRed); - DrawKeyPointLine(frm, keypoints, right_hip, right_shoulder, kColorRed); - DrawKeyPointLine(frm, keypoints, right_shoulder, right_elbow, kColorRed); - DrawKeyPointLine(frm, keypoints, right_elbow, right_wrist, kColorRed); - DrawKeyPointLine(frm, keypoints, right_shoulder, neck, kColorRed); + // right side + DrawKeyPointLine(frm, keypoints, right_ankle, right_knee, kColorRed); + DrawKeyPointLine(frm, keypoints, right_knee, right_hip, kColorRed); + DrawKeyPointLine(frm, keypoints, right_hip, pelvis, kColorRed); + DrawKeyPointLine(frm, keypoints, right_hip, right_shoulder, kColorRed); + DrawKeyPointLine(frm, keypoints, right_shoulder, right_elbow, kColorRed); + DrawKeyPointLine(frm, keypoints, right_elbow, right_wrist, kColorRed); + DrawKeyPointLine(frm, keypoints, right_shoulder, neck, kColorRed); - // right side hand and feet - DrawKeyPointLine(frm, keypoints, right_wrist, right_pinky_knuckle, kColorRed); - DrawKeyPointLine(frm, keypoints, right_wrist, right_middle_tip, kColorRed); - DrawKeyPointLine(frm, keypoints, right_wrist, right_index_knuckle, kColorRed); - DrawKeyPointLine(frm, keypoints, right_wrist, right_thumb_tip, kColorRed); - DrawKeyPointLine(frm, keypoints, right_ankle, right_heel, kColorRed); - DrawKeyPointLine(frm, keypoints, right_ankle, right_big_toe, kColorRed); - DrawKeyPointLine(frm, keypoints, right_big_toe, right_small_toe, kColorRed); + // right side hand and feet + DrawKeyPointLine(frm, keypoints, right_wrist, right_pinky_knuckle, kColorRed); + DrawKeyPointLine(frm, keypoints, right_wrist, right_middle_tip, kColorRed); + DrawKeyPointLine(frm, keypoints, right_wrist, right_index_knuckle, kColorRed); + DrawKeyPointLine(frm, keypoints, right_wrist, right_thumb_tip, kColorRed); + DrawKeyPointLine(frm, keypoints, right_ankle, right_heel, kColorRed); + DrawKeyPointLine(frm, keypoints, right_ankle, right_big_toe, kColorRed); + DrawKeyPointLine(frm, keypoints, right_big_toe, right_small_toe, kColorRed); - //left side - DrawKeyPointLine(frm, keypoints, left_ankle, left_knee, kColorBlue); - DrawKeyPointLine(frm, keypoints, left_knee, left_hip, kColorBlue); - DrawKeyPointLine(frm, keypoints, left_hip, pelvis, kColorBlue); - DrawKeyPointLine(frm, keypoints, left_hip, left_shoulder, kColorBlue); - DrawKeyPointLine(frm, keypoints, left_shoulder, left_elbow, kColorBlue); - DrawKeyPointLine(frm, keypoints, left_elbow, left_wrist, kColorBlue); - DrawKeyPointLine(frm, keypoints, left_shoulder, neck, kColorBlue); + //left side + DrawKeyPointLine(frm, keypoints, left_ankle, left_knee, kColorBlue); + DrawKeyPointLine(frm, keypoints, left_knee, left_hip, kColorBlue); + DrawKeyPointLine(frm, keypoints, left_hip, pelvis, kColorBlue); + DrawKeyPointLine(frm, keypoints, left_hip, left_shoulder, kColorBlue); + DrawKeyPointLine(frm, keypoints, left_shoulder, left_elbow, kColorBlue); + DrawKeyPointLine(frm, keypoints, left_elbow, left_wrist, kColorBlue); + DrawKeyPointLine(frm, keypoints, left_shoulder, neck, kColorBlue); - // left side hand and feet - DrawKeyPointLine(frm, keypoints, left_wrist, left_pinky_knuckle, kColorBlue); - DrawKeyPointLine(frm, keypoints, left_wrist, left_middle_tip, kColorBlue); - DrawKeyPointLine(frm, keypoints, left_wrist, left_index_knuckle, kColorBlue); - DrawKeyPointLine(frm, keypoints, left_wrist, left_thumb_tip, kColorBlue); - DrawKeyPointLine(frm, keypoints, left_ankle, left_heel, kColorBlue); - DrawKeyPointLine(frm, keypoints, left_ankle, left_big_toe, kColorBlue); - DrawKeyPointLine(frm, keypoints, left_big_toe, left_small_toe, kColorBlue); + // left side hand and feet + DrawKeyPointLine(frm, keypoints, left_wrist, left_pinky_knuckle, kColorBlue); + DrawKeyPointLine(frm, keypoints, left_wrist, left_middle_tip, kColorBlue); + DrawKeyPointLine(frm, keypoints, left_wrist, left_index_knuckle, kColorBlue); + DrawKeyPointLine(frm, keypoints, left_wrist, left_thumb_tip, kColorBlue); + DrawKeyPointLine(frm, keypoints, left_ankle, left_heel, kColorBlue); + DrawKeyPointLine(frm, keypoints, left_ankle, left_big_toe, kColorBlue); + DrawKeyPointLine(frm, keypoints, left_big_toe, left_small_toe, kColorBlue); - // head - DrawKeyPointLine(frm, keypoints, neck, nose, kColorGreen); - DrawKeyPointLine(frm, keypoints, nose, right_eye, kColorGreen); - DrawKeyPointLine(frm, keypoints, right_eye, right_ear, kColorGreen); - DrawKeyPointLine(frm, keypoints, nose, left_eye, kColorGreen); - DrawKeyPointLine(frm, keypoints, left_eye, left_ear, kColorGreen); + // head + DrawKeyPointLine(frm, keypoints, neck, nose, kColorGreen); + DrawKeyPointLine(frm, keypoints, nose, right_eye, kColorGreen); + DrawKeyPointLine(frm, keypoints, right_eye, right_ear, kColorGreen); + DrawKeyPointLine(frm, keypoints, nose, left_eye, kColorGreen); + DrawKeyPointLine(frm, keypoints, left_eye, left_ear, kColorGreen); - } + } - if (FLAG_offlineMode) keyPointsOutputVideo.write(frm); + if (FLAG_offlineMode) keyPointsOutputVideo.write(frm); } DoApp::Err DoApp::acquireFrame() { @@ -1016,14 +1016,14 @@ DoApp::Err DoApp::acquireBodyBox() { } if (FLAG_captureOutputs) { #if NV_MULTI_OBJECT_TRACKER - if (FLAG_enablePeopleTracking) { - writeFrameAndEstResults(frame, body_ar_engine.output_tracking_bboxes); - writeVideoAndEstResults(frame, body_ar_engine.output_tracking_bboxes); - } - else { - writeFrameAndEstResults(frame, body_ar_engine.output_bboxes); - writeVideoAndEstResults(frame, body_ar_engine.output_bboxes); - } + if (FLAG_enablePeopleTracking) { + writeFrameAndEstResults(frame, body_ar_engine.output_tracking_bboxes); + writeVideoAndEstResults(frame, body_ar_engine.output_tracking_bboxes); + } + else { + writeFrameAndEstResults(frame, body_ar_engine.output_bboxes); + writeVideoAndEstResults(frame, body_ar_engine.output_bboxes); + } #else writeFrameAndEstResults(frame, body_ar_engine.output_bboxes); writeVideoAndEstResults(frame, body_ar_engine.output_bboxes); @@ -1061,13 +1061,13 @@ DoApp::Err DoApp::acquireBodyBoxAndKeyPoints() { // get keypoints in original image resolution coordinate space #if NV_MULTI_OBJECT_TRACKER if (FLAG_enablePeopleTracking) - n = body_ar_engine.acquireBodyBoxAndKeyPoints(frame, keypoints2D.data(), keypoints3D.data(), - jointAngles.data(), &output_tracking_bbox, 0); + n = body_ar_engine.acquireBodyBoxAndKeyPoints(frame, keypoints2D.data(), keypoints3D.data(), + jointAngles.data(), &output_tracking_bbox, 0); else #endif - n = body_ar_engine.acquireBodyBoxAndKeyPoints(frame, keypoints2D.data(), keypoints3D.data(), - jointAngles.data(), &output_bbox, 0); + n = body_ar_engine.acquireBodyBoxAndKeyPoints(frame, keypoints2D.data(), keypoints3D.data(), + jointAngles.data(), &output_bbox, 0); #ifdef DEBUG_PERF_RUNTIME @@ -1091,14 +1091,14 @@ DoApp::Err DoApp::acquireBodyBoxAndKeyPoints() { } if (FLAG_captureOutputs) { #if NV_MULTI_OBJECT_TRACKER - if (FLAG_enablePeopleTracking) { - writeFrameAndEstResults(frame, body_ar_engine.output_tracking_bboxes, keypoints2D.data()); - writeVideoAndEstResults(frame, body_ar_engine.output_tracking_bboxes, keypoints2D.data()); - } - else { - writeFrameAndEstResults(frame, body_ar_engine.output_bboxes, keypoints2D.data()); - writeVideoAndEstResults(frame, body_ar_engine.output_bboxes, keypoints2D.data()); - } + if (FLAG_enablePeopleTracking) { + writeFrameAndEstResults(frame, body_ar_engine.output_tracking_bboxes, keypoints2D.data()); + writeVideoAndEstResults(frame, body_ar_engine.output_tracking_bboxes, keypoints2D.data()); + } + else { + writeFrameAndEstResults(frame, body_ar_engine.output_bboxes, keypoints2D.data()); + writeVideoAndEstResults(frame, body_ar_engine.output_bboxes, keypoints2D.data()); + } #else writeFrameAndEstResults(frame, body_ar_engine.output_bboxes, keypoints2D.data()); writeVideoAndEstResults(frame, body_ar_engine.output_bboxes, keypoints2D.data()); @@ -1111,14 +1111,14 @@ DoApp::Err DoApp::acquireBodyBoxAndKeyPoints() { if (drawVisualization) { #if NV_MULTI_OBJECT_TRACKER - if (FLAG_enablePeopleTracking) DrawKeyPointsAndEdges(frame, keypoints2D.data(), numKeyPoints, &output_tracking_bbox); - else + if (FLAG_enablePeopleTracking) DrawKeyPointsAndEdges(frame, keypoints2D.data(), numKeyPoints, &output_tracking_bbox); + else #endif DrawKeyPointsAndEdges(frame, keypoints2D.data(), numKeyPoints, &output_bbox); if (FLAG_offlineMode) { #if NV_MULTI_OBJECT_TRACKER - if (FLAG_enablePeopleTracking) DrawBBoxes(frame, &output_tracking_bbox); - else + if (FLAG_enablePeopleTracking) DrawBBoxes(frame, &output_tracking_bbox); + else #endif DrawBBoxes(frame, &output_bbox); } @@ -1296,7 +1296,7 @@ DoApp::Err DoApp::run() { } cv::imshow(windowTitle, frame); } - + if (!FLAG_offlineMode) { diff --git a/samples/BodyTrack/BodyTrack.exe b/samples/BodyTrack/BodyTrack.exe index cf24b32d8b32bf695cea74fb2e63b64d213a3863..0021362fad86f21eb5b6e0572efeaef1585536ba 100644 GIT binary patch delta 5766 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 delta 6039 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 SxuZ9!iS3Sl$5 #include "GLMaterial.h" #include "GLMesh.h" #include "GLShaders.h" @@ -305,17 +306,21 @@ public: } void setViewOfBound(const GLMesh::BoundingSphere& bsph, const glm::vec3& lookAt, const glm::vec3& up, float vfov, - float fracFill, float yDir = 1.f) { + float fracFill, float yDir = 1.f, float z_near = 0.0f, float z_far = 0.0f) { float r = bsph.radius() / fracFill, aspect = (float)m_width / (float)m_height, signZ = -yDir, dist; - if (vfov > 0) { // Perspective + if (vfov > 0) { // Perspective dist = r * .5f / tanf(vfov * .5f); - m_P = glm::perspective(vfov, aspect, (dist - r) * 0.2f, (dist + r) * 2.0f); - } - else { // Orthographic + if (z_near == 0.0f && z_far == 0.0f) { + // If z_near and z_far are both 0, use default values + z_near = (dist - r) * 0.2f; + z_far = (dist + r) * 2.0f; + } + m_P = glm::perspective(vfov, aspect, z_near, z_far); + } else { // Orthographic float w = r, h = r; if (aspect < 1.f) h /= aspect; // Wide @@ -329,7 +334,7 @@ public: } void setViewOfBound(const GLMesh::BoundingBox& bbox, const glm::vec3& lookAt, const glm::vec3& up, float vfov, - float fracFill, float yDir = 1.f, float yOff = 0.f) { + float fracFill, float yDir = 1.f, float yOff = 0.f, float z_near = 0.0f, float z_far = 0.0f) { glm::vec3 boxSize = bbox.max() - bbox.min(); glm::vec3 boxCenter = bbox.center(); float borderFrac = ((1.f - fracFill) / fracFill), @@ -341,11 +346,15 @@ public: signZ = -yDir, dist; - if (vfov > 0) { // Perspective + if (vfov > 0) { // Perspective dist = r * .5f / tanf(vfov * .5f); - m_P = glm::perspective(vfov, aspectWind, dist - r, dist + r); - } - else { // Orthographic + if (z_near == 0.0f && z_far == 0.0f) { + // If z_near and z_far are both 0, use default values + z_near = dist - r; + z_far = dist + r; + } + m_P = glm::perspective(vfov, aspectWind, z_near, z_far); + } else { // Orthographic if (aspectGeom > aspectWind) dy *= aspectGeom / aspectWind; else dx *= aspectWind / aspectGeom; dist = r * 2.f; @@ -447,11 +456,11 @@ private: static NvCV_Status info(const char **str); static NvCV_Status read(MeshRenderer *han, const char *modelFile); static NvCV_Status init(MeshRenderer *han, unsigned width, unsigned height, const char *windowName); - static NvCV_Status setCamera(MeshRenderer *han, - const float locPt[3], const float lookVec[3], const float upVec[3], float vfov); + static NvCV_Status setCamera(MeshRenderer *han, const float locPt[3], const float lookVec[3], const float upVec[3], + float vfov, float near_z = 0.0f, float far_z = 0.0f); static NvCV_Status render(MeshRenderer *han, const float exprs[53], const float qrot[4], const float tran[3], NvCVImage *result); - NvCV_Status setFOV(float radians); + NvCV_Status setFOV(float radians, float near_z = 0.0, float far_z = 0.0f); }; NvCV_Status OpenGLMeshRenderer_InitDispatch(MeshRenderer::Dispatch *dispatch) { @@ -575,7 +584,7 @@ NvCV_Status OpenGLMeshRenderer::init(MeshRenderer *han, return NVCV_SUCCESS; } -NvCV_Status OpenGLMeshRenderer::setFOV(float fov) { +NvCV_Status OpenGLMeshRenderer::setFOV(float fov, float near_z, float far_z) { if (0 == _mesh.numVertices()) return NVCV_ERR_MODEL; GLMesh::BoundingBox bbox; @@ -583,18 +592,26 @@ NvCV_Status OpenGLMeshRenderer::setFOV(float fov) { _ctrRot = bbox.center(); _ctrRot.y = bbox.min().y; // Assume that assets are designed with Y-up. float vShift = (_mesh.numVertices() > 10000) ? 0.15f : 0.0f; // Heuristic to determine whether there is a neck - _ctx.setViewOfBound(bbox, glm::vec3(0.f, 0.f, -1.f), glm::vec3(0.f, +1.f, 0.f), fov, .9f, +1, vShift); + _ctx.setViewOfBound(bbox, glm::vec3(0.f, 0.f, -1.f), glm::vec3(0.f, +1.f, 0.f), fov, .7f, +1, vShift, near_z, far_z); return NVCV_SUCCESS; } -NvCV_Status OpenGLMeshRenderer::setCamera(MeshRenderer *han, - const float locPt[3], const float lookVec[3], const float upVec[3], float vfov) { - if (locPt || lookVec || upVec) {} // We don't accommodate these yet - return static_cast(han)->setFOV(vfov); +NvCV_Status OpenGLMeshRenderer::setCamera(MeshRenderer *han, const float locPt[3], const float lookVec[3], + const float upVec[3], float vfov, float near_z, float far_z) { + if (locPt || lookVec || upVec) { + if (!locPt || !lookVec || !upVec || vfov <= 0.0f || (near_z == 0.0f && far_z == 0.0f)) return NVCV_ERR_PARAMETER; + auto &ctx = static_cast(han)->_ctx; + const float aspect = static_cast(ctx.m_width) / static_cast(ctx.m_height); + ctx.m_P = glm::perspective(vfov, aspect, near_z, far_z); + ctx.setViewMatrix(glm::lookAt(glm::make_vec3(locPt), glm::make_vec3(lookVec), glm::make_vec3(upVec))); + return NVCV_SUCCESS; + } + // Default to camera based on bounding box if not enough input arguments are provided + return static_cast(han)->setFOV(vfov, near_z, far_z); } NvCV_Status OpenGLMeshRenderer::render(MeshRenderer *han, - const float exprs[53], const float qrot[4], const float* /*tran*/, NvCVImage *result) { + const float exprs[53], const float qrot[4], const float* trans, NvCVImage *result) { OpenGLMeshRenderer *ren = static_cast(han); NvCV_Status nvErr; glm::mat4x4 M; @@ -606,15 +623,14 @@ NvCV_Status OpenGLMeshRenderer::render(MeshRenderer *han, if (qrot) { q.x = qrot[0]; q.y = qrot[1]; q.z = qrot[2]; q.w = qrot[3]; } else { q.x = 0.0f; q.y = 0.0f; q.z = 0.0f; q.w = 1.0f; } - #ifndef TRANSLATE_POSE + M = glm::mat4_cast(q); + if (trans) { + M = glm::translate(glm::mat4x4(1.f), *((const glm::vec3 *)(trans))) * M; + } else { M = glm::translate(glm::mat4x4(1.f), -ren->_ctrRot); M = glm::mat4_cast(q) * M; M = glm::translate(M, ren->_ctrRot); - #else // TRANSLATE_POSE - M = glm::mat4_cast(q); - if (tran) - M = glm::translate(M, *((const glm::vec3*)(trans))); - #endif // TRANSLATE_POSE + } nvErr = DeformModel(ren->_sfma.fm, nullptr, exprs, &ren->_mesh); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); diff --git a/samples/ExpressionApp/ExpressionApp.cpp b/samples/ExpressionApp/ExpressionApp.cpp index 367ffde..6100cbe 100644 --- a/samples/ExpressionApp/ExpressionApp.cpp +++ b/samples/ExpressionApp/ExpressionApp.cpp @@ -84,6 +84,7 @@ #define DEFAULT_CODEC "avc1" #define DEFAULT_FACE_MODEL "face_model2.nvf" #define DEFAULT_RENDER_MODEL "face_model2.nvf" +#define NUM_CAMERA_INTRINSIC_PARAMS 3 /******************************************************************************** * Command-line arguments @@ -113,6 +114,8 @@ int //| NVAR_TEMPORAL_FILTER_ENHANCE_EXPRESSIONS, FLAG_viewMode = 0xF, // VIEW_MESH | VIEW_IMAGE | VIEW_PLOT | VIEW_LM FLAG_exprMode = 2, // 1=mesh, 2=MLP + FLAG_poseMode = 0, + FLAG_cheekPuff = 0, FLAG_gaze = 0; double FLAG_fov = 0.0; // Orthographic by default @@ -130,6 +133,8 @@ static void Usage() { " --codec= FOURCC code for the desired codec (default avc1)\n" " --debug[=(true|false)] report debugging info (default false)\n" " --expr_mode= SDK feature used for generation expressions: 1=Face3DReconstruction, 2=FaceExpressions (default 2)\n" + " --pose_mode= Pose mode used for the FaceExpressions feature only: 0:3DOF, 1:6DOF (default 0)\n" + " --cheekpuff[=(true|false)] (Experimental) Enable cheek puff blendshapes (default=false)\n" " --face_model= specify the face model to be used for fitting (default " DEFAULT_FACE_MODEL ")\n" " --filter= 1: face box, 2: landmarks, 4: pose, 16: expressions, 32: gaze,\n" " 256: eye and mouth closure\n" @@ -266,6 +271,8 @@ static int ParseMyArgs(int argc, char **argv) { GetFlagArgVal("codec", arg, &FLAG_codec) || GetFlagArgVal("debug", arg, &FLAG_debug) || GetFlagArgVal("expr_mode", arg, &FLAG_exprMode) || + GetFlagArgVal("pose_mode", arg, &FLAG_poseMode) || + GetFlagArgVal("cheekpuff", arg, &FLAG_cheekPuff) || GetFlagArgVal("face_model", arg, &FLAG_fitModel) || GetFlagArgVal("filter", arg, &FLAG_filter) || GetFlagArgVal("gaze", arg, &FLAG_gaze) || @@ -375,12 +382,14 @@ public: NvCV_Status calibrateExpressionWeights(); NvCV_Status unCalibrateExpressionWeights(); NvCV_Status normalizeExpressionsWeights(); + NvCV_Status updateCamera(); NvCV_Status toggleFaceBoxFiltering(); NvCV_Status toggleLandmarkFiltering(); NvCV_Status togglePoseFiltering(); NvCV_Status toggleExpressionFiltering(); NvCV_Status toggleGazeFiltering(); NvCV_Status toggleClosureEnhancement(); + NvCV_Status togglePoseMode(); NvCV_Status overlayLandmarks(const float landmarks[126 * 2], unsigned screenHeight, NvCVImage *im); void getFPS(); void drawFPS(cv::Mat& img); @@ -405,6 +414,7 @@ public: NvAR_RenderingParams _renderParams; NvCVImage _srcImg, _compImg, _srcGpu, _renderImg; // wrapper, alloced, alloced, alloced Pose _pose; + float _cameraIntrinsicParams[NUM_CAMERA_INTRINSIC_PARAMS]; std::string _inFile, _outFile; std::vector _outputBboxData; NvAR_BBoxes _outputBboxes; @@ -416,12 +426,15 @@ public: unsigned _videoWidth, _videoHeight, _miniWidth, _miniHeight, _renderWidth, _renderHeight, _plotWidth, _plotHeight, _compWidth, _compHeight, _eigenCount, _exprCount, _landmarkCount, _viewMode, _exprMode, _filtering; + unsigned _poseMode = 0; + bool _enableCheekPuff; MeshRendererBroker _broker; MeshRenderer *_renderer = nullptr; static const char _windowTitle[], *_exprAbbr[][4], *_sfmExprAbbr[][4]; MyTimer _timer; bool _showFPS; bool _performCalibration; + bool _cameraNeedsUpdate; double _frameTime; float _globalExpressionParam; #ifdef _ENABLE_UI @@ -735,6 +748,8 @@ NvCV_Status App::initMLPExpressions() { BAIL_IF_ERR(err = NvAR_SetString(_featureHan, NvAR_Parameter_Config(ModelDir), FLAG_modelDir.c_str())); BAIL_IF_ERR(err = NvAR_SetCudaStream(_featureHan, NvAR_Parameter_Config(CUDAStream), _stream)); BAIL_IF_ERR(err = NvAR_SetU32(_featureHan, NvAR_Parameter_Config(Temporal), _filtering)); + BAIL_IF_ERR(err = NvAR_SetU32(_featureHan, NvAR_Parameter_Config(PoseMode), _poseMode)); + BAIL_IF_ERR(err = NvAR_SetU32(_featureHan, NvAR_Parameter_Config(EnableCheekPuff), _enableCheekPuff)); BAIL_IF_ERR(err = NvAR_Load(_featureHan)); _outputBboxData.assign(25, { 0.f, 0.f, 0.f, 0.f }); _outputBboxes.boxes = _outputBboxData.data(); @@ -752,7 +767,15 @@ NvCV_Status App::initMLPExpressions() { _expressionExponent.resize(_exprCount, 1.0f); BAIL_IF_ERR(err = NvAR_SetF32Array(_featureHan, NvAR_Parameter_Output(ExpressionCoefficients), _expressions.data(), _exprCount)); BAIL_IF_ERR(err = NvAR_SetObject(_featureHan, NvAR_Parameter_Input(Image), &_srcGpu, sizeof(NvCVImage))); - BAIL_IF_ERR(err = NvAR_SetObject(_featureHan, NvAR_Parameter_Output(Pose), &_pose, sizeof(NvAR_Quaternion))); + // Heuristic for focal length if it is not known + _cameraIntrinsicParams[0] = static_cast(_srcGpu.height); // focal length + _cameraIntrinsicParams[1] = static_cast(_srcGpu.width) / 2.0f; // cx + _cameraIntrinsicParams[2] = static_cast(_srcGpu.height) / 2.0f; // cy + BAIL_IF_ERR(err = NvAR_SetF32Array(_featureHan, NvAR_Parameter_Input(CameraIntrinsicParams), _cameraIntrinsicParams, + NUM_CAMERA_INTRINSIC_PARAMS)); + BAIL_IF_ERR(err = NvAR_SetObject(_featureHan, NvAR_Parameter_Output(Pose), &_pose.rotation, sizeof(NvAR_Quaternion))); + BAIL_IF_ERR(err = NvAR_SetObject(_featureHan, NvAR_Parameter_Output(PoseTranslation), &_pose.translation, sizeof(NvAR_Vector3f))); + _exprMode = EXPR_MODE_MLP; bail: @@ -792,6 +815,22 @@ NvCV_Status App::normalizeExpressionsWeights() { return NVCV_SUCCESS; } +NvCV_Status App::updateCamera() { + NvCV_Status err; + if (_poseMode == 1) { + const NvAR_Vector3f cam_loc = {0, 0, 0}; + const NvAR_Vector3f cam_dir = {0, 0, -1}; + const NvAR_Vector3f cam_up = {0, 1, 0}; + const float focal_length = _cameraIntrinsicParams[0]; + const float v_fov = focal_length == 0.0f ? 0.0f : 2.0f * atan(_videoHeight / (2 * focal_length)); + err = _renderer->setCamera(&cam_loc.vec[0], &cam_dir.vec[0], &cam_up.vec[0], v_fov, 0.01f, 1000.0f); + } else { + err = _renderer->setCamera(nullptr, nullptr, nullptr, 0.0f); + } + _cameraNeedsUpdate = false; + return err; +} + NvCV_Status App::init() { NvCV_Status err; std::string path; @@ -816,9 +855,15 @@ NvCV_Status App::init() { _performCalibration = false; _frameTime = 0.f; _exprMode = 0; + _poseMode = FLAG_poseMode; + _enableCheekPuff = FLAG_cheekPuff; _featureHan = nullptr; _filtering = FLAG_filter; _globalExpressionParam = 1.0f; + _cameraIntrinsicParams[0] = 0.0f; + _cameraIntrinsicParams[1] = 0.0f; + _cameraIntrinsicParams[2] = 0.0f; + _cameraNeedsUpdate = true; err = _broker.getMeshRendererList(rendererList); if (NVCV_SUCCESS != err) { @@ -855,16 +900,13 @@ NvCV_Status App::init() { printf("renderer init: %s\n", NvCV_GetErrorStringFromCode(err)); return err; } - err = _renderer->setCamera(nullptr, nullptr, nullptr, (float)(FLAG_fov * D_RADIANS_PER_DEGREE)); - if (NVCV_SUCCESS != err) { - printf("renderer setCamera: %s\n", NvCV_GetErrorStringFromCode(err)); - return err; - } BAIL_IF_ERR(err = NvCVImage_Alloc(&_srcGpu, _videoWidth, _videoHeight, NVCV_BGR, NVCV_U8, NVCV_CHUNKY, NVCV_GPU, 1)); + BAIL_IF_ERR(err = NvCVImage_Alloc(&_srcImg, _videoWidth, _videoHeight, NVCV_BGR, NVCV_U8, NVCV_CHUNKY, NVCV_CPU_PINNED, 0)); BAIL_IF_ERR(err = NvCVImage_Alloc(&_compImg, _compWidth, _compHeight, NVCV_BGR, NVCV_U8, NVCV_CHUNKY, NVCV_CPU, 0)); BAIL_IF_ERR(err = NvCVImage_Alloc(&_renderImg, _renderWidth, _renderHeight, NVCV_RGBA, NVCV_U8, NVCV_CHUNKY, NVCV_CPU, 0)); CVWrapperForNvCVImage(&_compImg, &_ocvDstImg); + CVWrapperForNvCVImage(&_srcImg, &_ocvSrcImg); resizeDst(); if (!FLAG_outFile.empty() || !FLAG_show) { @@ -912,7 +954,6 @@ NvCV_Status App::overlayLandmarks(const float landmarks[126 * 2], unsigned scree return NVCV_SUCCESS; } - NvCV_Status App::run() { NvCV_Status err = NVCV_SUCCESS; NvCVImage tmpImg, view; @@ -925,7 +966,6 @@ NvCV_Status App::run() { --frameCount; // Account for the wasted frame continue; // Read the first frame again } - NVWrapperForCVMat(&_ocvSrcImg, &_srcImg); // We probably don't need to do this every frame #ifdef _ENABLE_UI unsigned int exprMode = 0; @@ -986,6 +1026,13 @@ NvCV_Status App::run() { BAIL_IF_ERR(err = NvCVImage_Transfer(&_srcImg, &_srcGpu, 1.f, _stream, nullptr)); BAIL_IF_ERR(err = NvAR_Run(_featureHan)); unsigned isFaceDetected = (_outputBboxes.num_boxes > 0) ? 0xFF : 0; + if (_cameraNeedsUpdate) { + err = updateCamera(); + if (NVCV_SUCCESS != err) { + printf("renderer setCamera: %s\n", NvCV_GetErrorStringFromCode(err)); + return err; + } + } if (_performCalibration) { calibrateExpressionWeights(); } @@ -1003,7 +1050,8 @@ NvCV_Status App::run() { } if (_viewMode & VIEW_MESH) { if (isFaceDetected) { - BAIL_IF_ERR(err = _renderer->render(_expressions.data(), &_pose.rotation.x, nullptr, &_renderImg)); // GL _renderImg is upside down + float* head_translation = _poseMode == 1 ? &_pose.translation.vec[0] : nullptr; + BAIL_IF_ERR(err = _renderer->render(_expressions.data(), &_pose.rotation.x, head_translation, &_renderImg)); // GL _renderImg is upside down NvCVImage_InitView(&view, &_compImg, _renderX, _renderY, _renderWidth, _renderHeight); NvCVImage_FlipY(&view, &view); // Since OpenGL renderImg is upside-down, we copy it to a flipped dst NvCVImage_Transfer(&_renderImg, &view, 1.0f, _stream, nullptr); // VFlip RGBA --> BGR @@ -1047,6 +1095,7 @@ NvCV_Status App::run() { case 'E': case CTL('E'): toggleExpressionFiltering(); break; case 'G': case CTL('G'): toggleGazeFiltering(); break; case 'C': case CTL('C'): toggleClosureEnhancement(); break; + case 'M': case CTL('M'): togglePoseMode(); break; default: if (key < 0) continue; // No key break; // Non-mapped key @@ -1208,6 +1257,13 @@ NvCV_Status App::toggleClosureEnhancement() { return err; } +NvCV_Status App::togglePoseMode() { + _poseMode = !_poseMode; + NvCV_Status err = NvAR_SetU32(_featureHan, NvAR_Parameter_Config(PoseMode), _poseMode); + if (NVCV_SUCCESS == err) err = NvAR_Load(_featureHan); + _cameraNeedsUpdate = true; + return err; +} /******************************************************************************** * main diff --git a/samples/ExpressionApp/ExpressionApp.exe b/samples/ExpressionApp/ExpressionApp.exe index 9ab42f4684b287b218dcca77811d584173aa2b7b..1815c003160296425d212eb8347451efe7450d1b 100644 GIT binary patch delta 210110 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�J^|CXTJM>AM9Zo{N;{J7vja={&c^Q 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 F{|8o5cU=Gg delta 208375 zcmagH34Baf*grn^#>faUgN!V)VUS1=Vu>YWBqMi7h&}e$X>DzjmX=O55=pO#aByj9 zwYt#O(o%ahu_d;OJ*ZOE_C|`J)o9iHzt6c7+xx!%pU)?A&Uw!BJm)#jdCqg5bMCp< z&b@8cf6}HP)A85u7T>RPdM8x>?Rcho^SiH$3fUTf);mwr`O(z0=pW z4{7&1eQaBietN5qZ7@)>riffr?+hjPbHoXm^yw6wWZVkEeWf~ zOoE}w``zo0cY}15x+c2XVqKGNlR>BZN95pH@3JmJi&~*|bh;WkU8hgkOG4`oYpc9; zm4Z%J@Q;_S0I5z_N4JgAg4(*3laYQ^TNlsC&JI6%@(LHZ3FB8Jq8s;z^( zI$Z#JTMVenn?>`wDFAh2p8)|v>8KN*updx@D7u;`eYW+1=q)(rY%u7`%VrsL$MH{c zdh>G03+0_Jl-IvdUim^f_l5H87s^wflpR`wsZRh}S*k8){Sju}35Dw^urEjhTA4Jk zi^?TW%l==Yyz^;!4wctem!EC$WDysziW(fRHMkeZT);Op0!cnNSaPmUt#Y}f`G2f6 zuuQ$L(1xwlM|53PvlhCPWRcW6NwAFK1j`h%j7i3s`VYzsNFBD!+>w@93C?&EwDFD` zeU@67#2)KIJI&yLlfYzcX9H>=)mR%w9cu1UeK zo0VOoBZxY&HydV%?A1a8%_dNU#%d+=;=6 zT7zq*gh0FOTq+g$dTv&e+^lF~=dP)I%Ic6tM-X+soyFFQw5`)Xen3?dHC8dmH*mB1 z^Qh zqOOrxW3R}@AsT2WfyQgB%8>VUvof7!GrWB3x;(fRt`Sy*#25 nZuTfLjeWe7vw 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�F&){Vj~q>~H-V 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 /= batchSize; } } - return NVCV_SUCCESS; + return FaceEngine::Err::errNone; } NvAR_Point2f* FaceEngine::getLandmarks() { return facial_landmarks.data(); } @@ -644,12 +646,16 @@ float FaceEngine::getAverageLandmarksConfidence() { NvAR_Quaternion* FaceEngine::getPose() { return facial_pose.data(); } -unsigned FaceEngine::findLargestFaceBox(NvAR_Rect& faceBox, int variant) { - unsigned n; +FaceEngine::Err FaceEngine::findLargestFaceBox(NvAR_Rect& faceBox, int variant) { NvAR_Rect* pFaceBox; + unsigned num_boxes; - n = findFaceBoxes(); - if (n >= 1) { + NvCV_Status nv_err = findFaceBoxes(num_boxes); + if (NVCV_SUCCESS != nv_err) { + return FaceEngine::Err::errRun; + } + + if (num_boxes >= 1) { pFaceBox = getLargestBox(); if (nullptr == pFaceBox) { faceBox.x = faceBox.y = faceBox.width = faceBox.height = 0.0f; @@ -658,40 +664,41 @@ unsigned FaceEngine::findLargestFaceBox(NvAR_Rect& faceBox, int variant) { } enlargeAndSquarifyImageBox(.2f, faceBox, variant); } - return n; + else return FaceEngine::Err::errNoFaceDetected; + + return FaceEngine::Err::errNone; } -unsigned FaceEngine::acquireFaceBox(cv::Mat& src, NvAR_Rect& faceBox, int variant) { - unsigned n = 0; +FaceEngine::Err FaceEngine::acquireFaceBox(cv::Mat& src, NvAR_Rect& faceBox, int variant) { NvCVImage fxSrcChunkyCPU; (void)NVWrapperForCVMat(&src, &fxSrcChunkyCPU); NvCV_Status cvErr = NvCVImage_Transfer(&fxSrcChunkyCPU, &inputImageBuffer, 1.0f, stream, &tmpImage); if (NVCV_SUCCESS != cvErr) { - return n; + return FaceEngine::Err::errRun; } - - n = findLargestFaceBox(faceBox, variant); - return n; + FaceEngine::Err nv_err = findLargestFaceBox(faceBox, variant); + + return nv_err; } -unsigned FaceEngine::acquireFaceBoxAndLandmarks(cv::Mat& src, NvAR_Point2f* refMarks, NvAR_Rect& faceBox, int /*variant*/) { - unsigned n = 0; +FaceEngine::Err FaceEngine::acquireFaceBoxAndLandmarks(cv::Mat& src, NvAR_Point2f* refMarks, NvAR_Rect& faceBox, int /*variant*/) { NvCVImage fxSrcChunkyCPU; (void)NVWrapperForCVMat(&src, &fxSrcChunkyCPU); NvCV_Status cvErr = NvCVImage_Transfer(&fxSrcChunkyCPU, &inputImageBuffer, 1.0f, stream, &tmpImage); if (NVCV_SUCCESS != cvErr) { - return n; + return FaceEngine::Err::errRun; } - - if (findLandmarks() != NVCV_SUCCESS) return 0; - faceBox = output_bboxes.boxes[0]; - n = 1; - memcpy(refMarks, getLandmarks(), sizeof(NvAR_Point2f) * numLandmarks); - - return n; + FaceEngine::Err nv_err = findLandmarks(); + + if(nv_err == FaceEngine::Err::errNone){ + faceBox = output_bboxes.boxes[0]; + memcpy(refMarks, getLandmarks(), sizeof(NvAR_Point2f) * numLandmarks); + } + + return nv_err; } void FaceEngine::setFaceStabilization(bool _bStabilizeFace) { bStabilizeFace = _bStabilizeFace; } diff --git a/samples/FaceTrack/FaceEngine.h b/samples/FaceTrack/FaceEngine.h index 27932b9..33b5873 100644 --- a/samples/FaceTrack/FaceEngine.h +++ b/samples/FaceTrack/FaceEngine.h @@ -107,7 +107,7 @@ typedef struct LandmarksProperties { class FaceEngine { public: - enum Err { errNone, errGeneral, errRun, errInitialization, errRead, errEffect, errParameter }; + enum Err { errNone, errGeneral, errRun, errInitialization, errRead, errEffect, errParameter, errNoFaceDetected }; int input_image_width, input_image_height, input_image_pitch; const LandmarksProperties LANDMARKS_INFO[2] = { { 68, 15.0f }, // number of landmark points, confidence threshold value @@ -144,9 +144,9 @@ class FaceEngine { void releaseLandmarkDetectionIOParams(); void releaseFaceFittingIOParams(); - unsigned findFaceBoxes(); + NvCV_Status findFaceBoxes(unsigned &num_boxes); NvAR_Rect* getLargestBox(); - NvCV_Status findLandmarks(); + FaceEngine::Err findLandmarks(); NvAR_BBoxes* getBoundingBoxes(); NvAR_Point2f* getLandmarks(); NvAR_Quaternion* getPose(); @@ -154,9 +154,9 @@ class FaceEngine { float getAverageLandmarksConfidence(); void enlargeAndSquarifyImageBox(float enlarge, NvAR_Rect& box, int FLAG_variant); static void jiggleBox(std::mt19937& ran, float minMag, float maxMag, const NvAR_Rect& cleanBox, NvAR_Rect& noisyBox); - unsigned findLargestFaceBox(NvAR_Rect& faceBox, int variant = 0); - unsigned acquireFaceBox(cv::Mat& src, NvAR_Rect& faceBox, int variant = 0); - unsigned acquireFaceBoxAndLandmarks(cv::Mat& src, NvAR_Point2f* refMarks, NvAR_Rect& faceBox, int variant = 0); + FaceEngine::Err findLargestFaceBox(NvAR_Rect& faceBox, int variant = 0); + FaceEngine::Err acquireFaceBox(cv::Mat& src, NvAR_Rect& faceBox,int variant = 0); + FaceEngine::Err acquireFaceBoxAndLandmarks(cv::Mat& src, NvAR_Point2f* refMarks, NvAR_Rect& faceBox, int variant = 0); Err fitFaceModel(cv::Mat& frame); NvAR_FaceMesh* getFaceMesh(); NvAR_RenderingParams* getRenderingParams(); diff --git a/samples/FaceTrack/FaceTrack.cpp b/samples/FaceTrack/FaceTrack.cpp index c78c87e..57b76c0 100644 --- a/samples/FaceTrack/FaceTrack.cpp +++ b/samples/FaceTrack/FaceTrack.cpp @@ -598,8 +598,10 @@ void DoApp::DrawLandmarkPoints(const cv::Mat &src, NvAR_Point2f *facial_landmark else frm = src; NvAR_Point2f *pt, *endPt; + // Draw larger keypoints if input frame is greater than 720p resolution + int circle_radius = (frm.rows <= 720) ? 1 : 2; for (endPt = (pt = (NvAR_Point2f *)facial_landmarks) + numLandmarks; pt < endPt; ++pt) - cv::circle(frm, cv::Point(lround(pt->x), lround(pt->y)), 1, cv::Scalar(0, 0, 255), -1); + cv::circle(frm, cv::Point(lround(pt->x), lround(pt->y)), circle_radius, cv::Scalar(0, 0, 255), -1); NvAR_Quaternion *pose = face_ar_engine.getPose(); if (pose) face_ar_engine.DrawPose(frm, pose); @@ -664,34 +666,36 @@ DoApp::Err DoApp::acquireFaceBox() { NvAR_Rect output_bbox; // get landmarks in original image resolution coordinate space - unsigned n = face_ar_engine.acquireFaceBox(frame, output_bbox, 0); + nvErr = face_ar_engine.acquireFaceBox(frame, output_bbox, 0); - if (n && FLAG_verbose) { + if (nvErr==FaceEngine::Err::errNone) { + if (FLAG_verbose) { printf("FaceBox: [\n"); printf("%7.1f%7.1f%7.1f%7.1f\n", output_bbox.x, output_bbox.y, output_bbox.x + output_bbox.width, output_bbox.y + output_bbox.height); printf("]\n"); - } - if (FLAG_captureOutputs) { - writeFrameAndEstResults(frame, face_ar_engine.output_bboxes); - writeVideoAndEstResults(frame, face_ar_engine.output_bboxes); - } - + } + + if (FLAG_captureOutputs) { + writeFrameAndEstResults(frame, face_ar_engine.output_bboxes); + writeVideoAndEstResults(frame, face_ar_engine.output_bboxes); + } + #ifdef VISUALIZE - if (n > 0) { // At least one face was found if (drawVisualization) { DrawBBoxes(frame, &output_bbox); // This will write a frame if in offlineMode } +#endif // VISUALIZE } else { // No faces found +#ifdef VISUALIZE if (FLAG_offlineMode) { faceDetectOutputVideo.write(frame); // This will write a frame if in offlineMode } - err = errNoFace; +#endif // !VISUALIZE + if (nvErr==FaceEngine::Err::errNoFaceDetected) err = errNoFace; + else {err = errGeneral;} } -#else // !VISUALIZE - if (0 == n) err = errNoFace; -#endif // VISUALIZE frameIndex++; return err; @@ -704,38 +708,51 @@ DoApp::Err DoApp::acquireFaceBoxAndLandmarks() { std::vector facial_landmarks(numLandmarks); // get landmarks in original image resolution coordinate space - unsigned n = face_ar_engine.acquireFaceBoxAndLandmarks(frame, facial_landmarks.data(), output_bbox, 0); + nvErr = face_ar_engine.acquireFaceBoxAndLandmarks(frame, facial_landmarks.data(), output_bbox, 0); - if (n && FLAG_verbose && face_ar_engine.appMode != FaceEngine::mode::faceDetection) { - printf("Landmarks: [\n"); - for (const auto &pt : facial_landmarks) { - printf("%7.1f%7.1f\n", pt.x, pt.y); + if (nvErr == FaceEngine::Err::errNone) + { + if (FLAG_verbose && face_ar_engine.appMode != FaceEngine::mode::faceDetection) + { + printf("Landmarks: [\n"); + for (const auto &pt : facial_landmarks) + { + printf("%7.1f%7.1f\n", pt.x, pt.y); + } + printf("]\n"); + } + if (FLAG_captureOutputs) + { + writeFrameAndEstResults(frame, face_ar_engine.output_bboxes, facial_landmarks.data()); + writeVideoAndEstResults(frame, face_ar_engine.output_bboxes, facial_landmarks.data()); } - printf("]\n"); - } - if (FLAG_captureOutputs) { - writeFrameAndEstResults(frame, face_ar_engine.output_bboxes, facial_landmarks.data()); - writeVideoAndEstResults(frame, face_ar_engine.output_bboxes, facial_landmarks.data()); - } - #ifdef VISUALIZE - if (n > 0) { // At least one face found - if (drawVisualization) { + if (drawVisualization) + { DrawLandmarkPoints(frame, facial_landmarks.data(), numLandmarks); // Writes frame in offline mode - if (FLAG_offlineMode) { - DrawBBoxes(frame, &output_bbox); // Writes frame in offline mode + if (FLAG_offlineMode) + { + DrawBBoxes(frame, &output_bbox); // Writes frame in offline mode } } +#endif // VISUALIZE } - else { // No faces found - if (FLAG_offlineMode) { - faceDetectOutputVideo.write(frame); // These two wrtite frames if a face was not detected + else + { // No faces found +#ifdef VISUALIZE + if (FLAG_offlineMode) + { + faceDetectOutputVideo.write(frame); // These two write frames if a face was not detected landMarkOutputVideo.write(frame); } +#endif // !VISUALIZE + if (nvErr == FaceEngine::Err::errNoFaceDetected) + err = errNoFace; + else + { + err = errGeneral; + } } -#else // !VISUALIZE - if (0 == n) err = errNoFace; -#endif // VISUALIZE frameIndex++; return err; diff --git a/samples/FaceTrack/FaceTrack.exe b/samples/FaceTrack/FaceTrack.exe index a8e7877f3f680fcfc6fd87609301322f48af148e..4b26e4039df1bfc1417eab3d6292a6d9aff6ee23 100644 GIT binary patch delta 50381 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 Y^FPD7_SsqUy6+s1jBD8y(^oO}e+JT3l>h($ delta 50221 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 diff --git a/samples/GazeRedirect/GazeEngine.cpp b/samples/GazeRedirect/GazeEngine.cpp index bbbffe7..9928d82 100644 --- a/samples/GazeRedirect/GazeEngine.cpp +++ b/samples/GazeRedirect/GazeEngine.cpp @@ -91,6 +91,8 @@ GazeEngine::Err GazeEngine::createGazeRedirectionFeature(const char* modelPath, BAIL_IF_NVERR(nvErr, err, GazeEngine::Err::errParameter); nvErr = NvAR_SetCudaStream(gazeRedirectHandle, NvAR_Parameter_Config(CUDAStream), stream); BAIL_IF_NVERR(nvErr, err, GazeEngine::Err::errParameter); + nvErr = NvAR_SetU32(gazeRedirectHandle, NvAR_Parameter_Config(UseCudaGraph), bUseCudaGraph); + BAIL_IF_NVERR(nvErr, err, GazeEngine::Err::errParameter); nvErr = NvAR_SetU32(gazeRedirectHandle, NvAR_Parameter_Config(EyeSizeSensitivity), eyeSizeSensitivity); BAIL_IF_NVERR(nvErr, err, GazeEngine::Err::errParameter); nvErr = NvAR_Load(gazeRedirectHandle); @@ -437,6 +439,11 @@ void GazeEngine::setGazeRedirect(bool _bGazeRedirect) { bGazeRedirect = _bGazeRedirect; } +void GazeEngine::setUseCudaGraph(bool _bUseCudaGraph) { + // If this variable is set, gaze redirection occurs in addition to estimation. + bUseCudaGraph = _bUseCudaGraph; +} + GazeEngine::Err GazeEngine::setNumLandmarks(int n) { GazeEngine::Err err = errNone; for (auto const& info : LANDMARKS_INFO) { diff --git a/samples/GazeRedirect/GazeEngine.h b/samples/GazeRedirect/GazeEngine.h index 6e1cda8..a9614f5 100644 --- a/samples/GazeRedirect/GazeEngine.h +++ b/samples/GazeRedirect/GazeEngine.h @@ -150,6 +150,7 @@ class GazeEngine { void setFaceStabilization(bool); Err setNumLandmarks(int); void setGazeRedirect(bool _bGazeRedirect); + void setUseCudaGraph(bool _bUseCudaGraph); void setEyeSizeSensitivity(unsigned); int getNumLandmarks() { return numLandmarks; } int getNumGazeOutputLandmarks() { return num_output_landmarks; } @@ -184,12 +185,14 @@ class GazeEngine { bool bStabilizeFace; bool bUseOTAU; bool bGazeRedirect; + bool bUseCudaGraph; char *fdOTAModelPath, *ldOTAModelPath; GazeEngine() { batchSize = 1; bStabilizeFace = true; bGazeRedirect = true; + bUseCudaGraph = true; numLandmarks = LANDMARKS_INFO[0].numPoints; num_output_landmarks = 12; confidenceThreshold = LANDMARKS_INFO[0].confidence_threshold; diff --git a/samples/GazeRedirect/GazeRedirect.cpp b/samples/GazeRedirect/GazeRedirect.cpp index 7db6058..89b47e7 100644 --- a/samples/GazeRedirect/GazeRedirect.cpp +++ b/samples/GazeRedirect/GazeRedirect.cpp @@ -75,7 +75,8 @@ bool FLAG_debug = false, FLAG_verbose = false, FLAG_temporal = true, FLAG_captureOutputs = false, FLAG_drawVisualization = true, FLAG_offlineMode = false, FLAG_isNumLandmarks126 = false, - FLAG_splitScreenView = true, FLAG_displayLandmarks = false, FLAG_gazeRedirect=true; + FLAG_splitScreenView = true, FLAG_displayLandmarks = false, FLAG_gazeRedirect = true, FLAG_useCudaGraph = false; +; std::string FLAG_outDir, FLAG_inFile, FLAG_outFile, FLAG_modelPath, FLAG_landmarks, FLAG_captureCodec = "avc1", FLAG_camRes = "480"; unsigned FLAG_camID = 0; @@ -106,6 +107,7 @@ static void Usage() { " --draw_visualization draw the landmarks, display gaze estimation and head rotation, default to true\n" " --redirect_gaze redirection of the eyes in addition to estimating gaze, default to true\n" "(Default)." + " --use_cuda_graph use cuda graph to optimize computations " " --benchmarks[=] run benchmarks\n"); } @@ -211,7 +213,8 @@ static int ParseMyArgs(int argc, char **argv) { GetFlagArgVal("split_screen_view", arg, &FLAG_splitScreenView) || GetFlagArgVal("temporal", arg, &FLAG_temporal) || GetFlagArgVal("draw_visualization", arg, &FLAG_drawVisualization) || - GetFlagArgVal("redirect_gaze", arg, &FLAG_gazeRedirect))) { + GetFlagArgVal("redirect_gaze", arg, &FLAG_gazeRedirect) || + GetFlagArgVal("use_cuda_graph", arg, &FLAG_useCudaGraph))) { continue; } else if (GetFlagArgVal("help", arg, &help)) { Usage(); @@ -312,7 +315,8 @@ class DoApp { ~DoApp(); void stop(); - Err initGazeEngine(const char *modelPath = nullptr, bool isLandmarks126 = false, bool gazeRedirect=true, unsigned eyeSizeSensitivity=3); + Err initGazeEngine(const char *modelPath = nullptr, bool isLandmarks126 = false, bool gazeRedirect = true, + unsigned eyeSizeSensitivity = 3, bool useCudaGraph = false); Err initCamera(const char *camRes = nullptr, unsigned int camID = 0); Err initOfflineMode(const char *inputFilename = nullptr, const char *outputFilename = nullptr); Err acquireFrame(); @@ -383,12 +387,14 @@ void DoApp::processKey(int key) { } } -DoApp::Err DoApp::initGazeEngine(const char *modelPath, bool isNumLandmarks126, bool gazeRedirect, unsigned eyeSizeSensitivity) { +DoApp::Err DoApp::initGazeEngine(const char *modelPath, bool isNumLandmarks126, bool gazeRedirect, + unsigned eyeSizeSensitivity, bool useCudaGraph) { if (!cap.isOpened()) return errVideo; int numLandmarkPoints = isNumLandmarks126 ? 126 : 68; gaze_ar_engine.setNumLandmarks(numLandmarkPoints); gaze_ar_engine.setGazeRedirect(gazeRedirect); + gaze_ar_engine.setUseCudaGraph(useCudaGraph); gaze_ar_engine.setEyeSizeSensitivity(eyeSizeSensitivity); nvErr = gaze_ar_engine.createGazeRedirectionFeature(modelPath); @@ -613,6 +619,15 @@ DoApp::Err DoApp::initCamera(const char *camRes, unsigned int camID) { inputWidth = (int)cap.get(CV_CAP_PROP_FRAME_WIDTH); inputHeight = (int)cap.get(CV_CAP_PROP_FRAME_HEIGHT); + // openCV API(CAP_PROP_FRAME_WIDTH) to get camera resolution is not always reliable with some cameras + cap >> frame; + if (frame.empty()) return errCamera; + if (inputWidth != frame.cols || inputHeight != frame.rows) { + std::cout << "!!! warning: openCV API(CAP_PROP_FRAME_WIDTH/CV_CAP_PROP_FRAME_HEIGHT) to get camera resolution is not trustable. Using the resolution from the actual frame" << std::endl; + inputWidth = frame.cols; + inputHeight = frame.rows; + } + gaze_ar_engine.setInputImageWidth(inputWidth); gaze_ar_engine.setInputImageHeight(inputHeight); } @@ -844,7 +859,7 @@ int main(int argc, char **argv) { } BAIL_IF_ERR(doErr); - doErr = app.initGazeEngine(FLAG_modelPath.c_str(), FLAG_isNumLandmarks126, FLAG_gazeRedirect, FLAG_eyeSizeSensitivity); + doErr = app.initGazeEngine(FLAG_modelPath.c_str(), FLAG_isNumLandmarks126, FLAG_gazeRedirect, FLAG_eyeSizeSensitivity, FLAG_useCudaGraph); BAIL_IF_ERR(doErr); doErr = app.run(); diff --git a/samples/GazeRedirect/GazeRedirect.exe b/samples/GazeRedirect/GazeRedirect.exe index 57fb30b93d2217b71352fd6a6f0d5b0979cbf3f8..3c949499828d7776a565569c55802d5fbcdc18f4 100644 GIT binary patch delta 44365 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
*$dW;R$t<5iR+jCA3wp| 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%0DOT;ED4TM8oYT&BPw0I)YK>voa5U93eRo&G zb3>jj2gbQ=X0Q(*1q(>AjKo-m?e?CP^lZb}2Ar&-B&J%ozBKjB$9yjmf7pECT2&mY z+?B6merhB!)vrV4Jk?_3BEOxX9&m=+i6W_xC=nA4@f-XZrkc)NyZPnPV**yyHnp@= zGJi3!lk1MOc@9VY($jCzbipRsf|RGGIE<1Yhi-e>#u+`6gJ(6X?MXp zVZB0~!tIHg#40>^1pD8*$6+2s7emhqGsBFG^gu-Y8B2gUgeE{Be^%IJ?Cvfrk5FPvy;pXm; zcJfn^jsEv=mSgc(Pd<8$N!Ricr9(f)R8n0EISst`JtRrBRJ(q44Cs-k91nkbQd;#( z+$n$Q0IBsYbq=cXaf5n8^EFA?KMp)|rwTr>x*Adom0xwfaZus?-ApV29S#%F!E_J= zM{GWRd;K>7)PH`)|05w$c;*=~kOV&B@JFfuRz{K(n>h+PcC08Y41-4>dcMUZDXT;c z!X>Tp%!bAb+0#EoV?toHzf&J9^jIl+Ov0Sj?ZWoT$wua9(w4pP9G^VqB2LV)o>gES zV6giHDZtu)wyuU%faPEr7zeKG`10<)xxoEFRi9o!>9gdu;B>!y-KW;auGL<}~YX^=u#cyA6C&XCB?@p>SQZ zw8}ibTQgLeSlk%la@N&%*t;T%o^H!uY3|>??1&bQ6_CT_$cQ!-^6BZ%6C>BO%j9L- zq|Svr@ye;PtaV2*)I9yF@4u!Y^xU=1?U^^D$nB03@{Kx6pZQ!or1Cuen!IFk(0RUt zfH`UIjGG?!8;vzs($Ttc*?P@oRAk)#E%=_|t2g$sa$5EexfPwMq(u*VFRLs&mJ3$`g#|DGxnGv-ErUQW$sK!{bxX7a70R?h{hZpI>B@T3w~X zXXV;B$T8S_{1I?O@qYA5FQ;CUdbcFaF4a7)`trjI(t{7uHD|1J)ADGOD641W)VZd^ zOLhr%x2Rocj#B<0TJ2Q$R$2Deb+Py>Vp(S=CGPt@3prjK$~t$;EBrPJZ|^EUR6_J6 zvrnDu+CisPvtP|U2yJuo;vDVa8IP#UBTjpKKe;z}<-JtFjy4HWmrwJl3o&9lt|)6e SlzzM#)5B%i&?7jVjQSU=>xo(b delta 44204 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 L!vnex)1mw?_t51Y diff --git a/samples/external/Imgui/imgui-docking/examples/example_glfw_vulkan/CMakeLists.txt b/samples/external/Imgui/imgui-docking/examples/example_glfw_vulkan/CMakeLists.txt index 05eab3b..e026b62 100644 --- a/samples/external/Imgui/imgui-docking/examples/example_glfw_vulkan/CMakeLists.txt +++ b/samples/external/Imgui/imgui-docking/examples/example_glfw_vulkan/CMakeLists.txt @@ -7,7 +7,7 @@ cmake_minimum_required(VERSION 2.8) project(imgui_example_glfw_vulkan C CXX) if(NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE Debug CACHE STRING "" FORCE) + set(CMAKE_BUILD_TYPE Release CACHE STRING "" FORCE) endif() set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DVK_PROTOTYPES") diff --git a/version.h b/version.h index 7400d35..14cd8f1 100644 --- a/version.h +++ b/version.h @@ -23,12 +23,12 @@ #define NVIDIA_AR_SDK_VERSION_MAJOR 0 #define NVIDIA_AR_SDK_VERSION_MINOR 8 -#define NVIDIA_AR_SDK_VERSION_RELEASE 1 +#define NVIDIA_AR_SDK_VERSION_RELEASE 2 #define NVIDIA_AR_SDK_VERSION_BUILD 0 -#define NVIDIA_AR_SDK_VERSION 0,8,1,0 +#define NVIDIA_AR_SDK_VERSION 0,8,2,0 #define NVIDIA_AR_SDK_VERSION_MAJOR_MINOR 0,8 -#define NVIDIA_AR_SDK_VERSION_STRING "0.8.1.0" -#define NVIDIA_AR_SDK_VERSION_STRING_SHORT "0.8.1" +#define NVIDIA_AR_SDK_VERSION_STRING "0.8.2.0" +#define NVIDIA_AR_SDK_VERSION_STRING_SHORT "0.8.2" #define NVIDIA_AR_SDK_VERSION_STRING_MAJOR_MINOR "0.8"