mirror of
https://github.com/deepinsight/insightface.git
synced 2026-04-04 06:20:19 +00:00
Update
This commit is contained in:
@@ -48,8 +48,8 @@ TEST_CASE("test_FaceTrack", "[face_track]") {
|
||||
auto cvRect = inspirecv::Rect<int>::Create(rect.x, rect.y, rect.width, rect.height);
|
||||
image.DrawRect(cvRect, {0, 0, 255}, 2);
|
||||
image.Write("ww.jpg");
|
||||
// The iou is allowed to have an error of 25%
|
||||
CHECK(iou == Approx(1.0f).epsilon(0.25));
|
||||
// The iou is allowed to have an error of 50%
|
||||
CHECK(iou == Approx(1.0f).epsilon(0.5));
|
||||
|
||||
ret = HFReleaseImageStream(imgHandle);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
@@ -70,6 +70,7 @@ TEST_CASE("test_FaceTrack", "[face_track]") {
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
}
|
||||
|
||||
// Temporarily shut down the processing of frame related cases to prevent excessive data from occupying the github memory
|
||||
#if 0
|
||||
SECTION("Face tracking stability from frames") {
|
||||
HResult ret;
|
||||
@@ -124,6 +125,7 @@ TEST_CASE("test_FaceTrack", "[face_track]") {
|
||||
SECTION("Head pose estimation") {
|
||||
HResult ret;
|
||||
HFSessionCustomParameter parameter = {0};
|
||||
parameter.enable_face_pose = true;
|
||||
HFDetectMode detMode = HF_DETECT_MODE_ALWAYS_DETECT;
|
||||
HFSession session;
|
||||
ret = HFCreateInspireFaceSession(parameter, detMode, 3, -1, -1, &session);
|
||||
@@ -318,6 +320,12 @@ TEST_CASE("test_MultipleLevelFaceDetect", "[face_detect]") {
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
HFSessionSetTrackPreviewSize(session, detectPixelLevel);
|
||||
HFSessionSetFilterMinimumFacePixelSize(session, 0);
|
||||
|
||||
// Check the preview size
|
||||
HInt32 previewSize;
|
||||
ret = HFSessionGetTrackPreviewSize(session, &previewSize);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
CHECK(previewSize == detectPixelLevel);
|
||||
|
||||
// Get a face picture
|
||||
HFImageStream imgHandle;
|
||||
@@ -351,6 +359,12 @@ TEST_CASE("test_MultipleLevelFaceDetect", "[face_detect]") {
|
||||
HFSessionSetTrackPreviewSize(session, detectPixelLevel);
|
||||
HFSessionSetFilterMinimumFacePixelSize(session, 0);
|
||||
|
||||
// Check the preview size
|
||||
HInt32 previewSize;
|
||||
ret = HFSessionGetTrackPreviewSize(session, &previewSize);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
CHECK(previewSize == detectPixelLevel);
|
||||
|
||||
// Get a face picture
|
||||
HFImageStream imgHandle;
|
||||
auto image = inspirecv::Image::Create(GET_DATA("data/bulk/pedestrian.png"));
|
||||
@@ -383,6 +397,12 @@ TEST_CASE("test_MultipleLevelFaceDetect", "[face_detect]") {
|
||||
HFSessionSetTrackPreviewSize(session, detectPixelLevel);
|
||||
HFSessionSetFilterMinimumFacePixelSize(session, 0);
|
||||
|
||||
// Check the preview size
|
||||
HInt32 previewSize;
|
||||
ret = HFSessionGetTrackPreviewSize(session, &previewSize);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
CHECK(previewSize == detectPixelLevel);
|
||||
|
||||
// Get a face picture
|
||||
HFImageStream imgHandle;
|
||||
auto image = inspirecv::Image::Create(GET_DATA("data/bulk/pedestrian.png"));
|
||||
@@ -403,4 +423,133 @@ TEST_CASE("test_MultipleLevelFaceDetect", "[face_detect]") {
|
||||
ret = HFReleaseInspireFaceSession(session);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("test_FaceTrackPreviewSizeSetting", "[face_track]") {
|
||||
DRAW_SPLIT_LINE
|
||||
TEST_PRINT_OUTPUT(true);
|
||||
|
||||
SECTION("Default preview size and detection level size") {
|
||||
HResult ret;
|
||||
HFSessionCustomParameter parameter = {0};
|
||||
HFDetectMode detMode = HF_DETECT_MODE_ALWAYS_DETECT;
|
||||
HFSession session;
|
||||
HInt32 levelSize = -1;
|
||||
ret = HFCreateInspireFaceSession(parameter, detMode, 20, levelSize, -1, &session);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
|
||||
// Check the preview size
|
||||
HInt32 previewSize;
|
||||
ret = HFSessionGetTrackPreviewSize(session, &previewSize);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
|
||||
CHECK(previewSize == 320);
|
||||
|
||||
// Get a face picture
|
||||
HFImageStream imgHandle;
|
||||
auto image = inspirecv::Image::Create(GET_DATA("data/bulk/pedestrian.png"));
|
||||
ret = CVImageToImageStream(image, imgHandle);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
|
||||
// Extract basic face information from photos
|
||||
HFMultipleFaceData multipleFaceData = {0};
|
||||
ret = HFExecuteFaceTrack(session, imgHandle, &multipleFaceData);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
|
||||
CHECK(multipleFaceData.detectedNum > 0);
|
||||
// Check the preview size
|
||||
HInt32 debugPreviewSize;
|
||||
ret = HFSessionLastFaceDetectionGetDebugPreviewImageSize(session, &debugPreviewSize);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
CHECK(debugPreviewSize == 320);
|
||||
|
||||
ret = HFReleaseImageStream(imgHandle);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
|
||||
ret = HFReleaseInspireFaceSession(session);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
}
|
||||
|
||||
SECTION("Set preview size to 320px") {
|
||||
HResult ret;
|
||||
HFSessionCustomParameter parameter = {0};
|
||||
HFDetectMode detMode = HF_DETECT_MODE_ALWAYS_DETECT;
|
||||
HFSession session;
|
||||
HInt32 levelSize = 320;
|
||||
ret = HFCreateInspireFaceSession(parameter, detMode, 20, levelSize, -1, &session);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
|
||||
// Check the preview size
|
||||
HInt32 previewSize;
|
||||
ret = HFSessionGetTrackPreviewSize(session, &previewSize);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
CHECK(previewSize == levelSize);
|
||||
|
||||
ret = HFReleaseInspireFaceSession(session);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
}
|
||||
|
||||
SECTION("Set the detect level to an invalid value") {
|
||||
HResult ret;
|
||||
HFSessionCustomParameter parameter = {0};
|
||||
HFDetectMode detMode = HF_DETECT_MODE_ALWAYS_DETECT;
|
||||
HFSession session;
|
||||
HInt32 levelSize = 1000;
|
||||
ret = HFCreateInspireFaceSession(parameter, detMode, 20, levelSize, -1, &session);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
|
||||
// Check the preview size
|
||||
HInt32 previewSize;
|
||||
ret = HFSessionGetTrackPreviewSize(session, &previewSize);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
// If the detect level value is invalid, the value will be automatically adjusted to the nearest legal size.
|
||||
// If the default value of preview_size is -1, the value will also be adjusted
|
||||
CHECK(previewSize == 640);
|
||||
|
||||
// Get a face picture
|
||||
HFImageStream imgHandle;
|
||||
auto image = inspirecv::Image::Create(GET_DATA("data/bulk/pedestrian.png"));
|
||||
ret = CVImageToImageStream(image, imgHandle);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
|
||||
// Extract basic face information from photos
|
||||
HFMultipleFaceData multipleFaceData = {0};
|
||||
ret = HFExecuteFaceTrack(session, imgHandle, &multipleFaceData);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
|
||||
CHECK(multipleFaceData.detectedNum > 0);
|
||||
|
||||
// Check the preview size
|
||||
HInt32 debugPreviewSize;
|
||||
ret = HFSessionLastFaceDetectionGetDebugPreviewImageSize(session, &debugPreviewSize);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
CHECK(debugPreviewSize == 640);
|
||||
|
||||
// Set a value manually
|
||||
ret = HFSessionSetTrackPreviewSize(session, 192);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
|
||||
// Check the preview size
|
||||
ret = HFSessionGetTrackPreviewSize(session, &previewSize);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
CHECK(previewSize == 192);
|
||||
|
||||
ret = HFExecuteFaceTrack(session, imgHandle, &multipleFaceData);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
|
||||
CHECK(multipleFaceData.detectedNum > 0);
|
||||
|
||||
// Check the preview size
|
||||
ret = HFSessionLastFaceDetectionGetDebugPreviewImageSize(session, &debugPreviewSize);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
CHECK(debugPreviewSize == 192);
|
||||
|
||||
|
||||
ret = HFReleaseImageStream(imgHandle);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
|
||||
ret = HFReleaseInspireFaceSession(session);
|
||||
REQUIRE(ret == HSUCCEED);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user