Internal change
PiperOrigin-RevId: 520726897
This commit is contained in:
parent
d43579fe3e
commit
f8f7126bdd
|
@ -65,6 +65,8 @@ constexpr char kTestDataDirectory[] = "/mediapipe/tasks/testdata/vision/";
|
|||
constexpr char kPoseDetectionModel[] = "pose_detection.tflite";
|
||||
constexpr char kPortraitImage[] = "pose.jpg";
|
||||
constexpr char kPoseExpectedDetection[] = "pose_expected_detection.pbtxt";
|
||||
constexpr char kPoseExpectedExpandedRect[] =
|
||||
"pose_expected_expanded_rect.pbtxt";
|
||||
|
||||
constexpr char kImageTag[] = "IMAGE";
|
||||
constexpr char kImageName[] = "image";
|
||||
|
@ -72,8 +74,11 @@ constexpr char kNormRectTag[] = "NORM_RECT";
|
|||
constexpr char kNormRectName[] = "norm_rect";
|
||||
constexpr char kDetectionsTag[] = "DETECTIONS";
|
||||
constexpr char kDetectionsName[] = "detections";
|
||||
constexpr char kExpandedPoseRectsTag[] = "EXPANDED_POSE_RECTS";
|
||||
constexpr char kExpandedPoseRectsName[] = "expanded_pose_rects";
|
||||
|
||||
constexpr float kPoseDetectionMaxDiff = 0.01;
|
||||
constexpr float kExpandedPoseRectMaxDiff = 0.01;
|
||||
|
||||
// Helper function to create a TaskRunner.
|
||||
absl::StatusOr<std::unique_ptr<TaskRunner>> CreateTaskRunner(
|
||||
|
@ -99,6 +104,10 @@ absl::StatusOr<std::unique_ptr<TaskRunner>> CreateTaskRunner(
|
|||
pose_detector_graph.Out(kDetectionsTag).SetName(kDetectionsName) >>
|
||||
graph[Output<std::vector<Detection>>(kDetectionsTag)];
|
||||
|
||||
pose_detector_graph.Out(kExpandedPoseRectsTag)
|
||||
.SetName(kExpandedPoseRectsName) >>
|
||||
graph[Output<std::vector<NormalizedRect>>(kExpandedPoseRectsTag)];
|
||||
|
||||
return TaskRunner::Create(
|
||||
graph.GetConfig(), std::make_unique<core::MediaPipeBuiltinOpResolver>());
|
||||
}
|
||||
|
@ -111,6 +120,14 @@ Detection GetExpectedPoseDetectionResult(absl::string_view file_name) {
|
|||
return detection;
|
||||
}
|
||||
|
||||
NormalizedRect GetExpectedExpandedPoseRect(absl::string_view file_name) {
|
||||
NormalizedRect expanded_rect;
|
||||
CHECK_OK(GetTextProto(file::JoinPath("./", kTestDataDirectory, file_name),
|
||||
&expanded_rect, Defaults()))
|
||||
<< "Expected expanded pose rect does not exist.";
|
||||
return expanded_rect;
|
||||
}
|
||||
|
||||
struct TestParams {
|
||||
// The name of this test, for convenience when displaying test results.
|
||||
std::string test_name;
|
||||
|
@ -119,7 +136,9 @@ struct TestParams {
|
|||
// The filename of test image.
|
||||
std::string test_image_name;
|
||||
// Expected pose detection results.
|
||||
std::vector<Detection> expected_result;
|
||||
std::vector<Detection> expected_detection;
|
||||
// Expected expanded pose rects.
|
||||
std::vector<NormalizedRect> expected_expanded_pose_rect;
|
||||
};
|
||||
|
||||
class PoseDetectorGraphTest : public testing::TestWithParam<TestParams> {};
|
||||
|
@ -144,16 +163,27 @@ TEST_P(PoseDetectorGraphTest, Succeed) {
|
|||
(*output_packets)[kDetectionsName].Get<std::vector<Detection>>();
|
||||
EXPECT_THAT(pose_detections, Pointwise(Approximately(Partially(EqualsProto()),
|
||||
kPoseDetectionMaxDiff),
|
||||
GetParam().expected_result));
|
||||
GetParam().expected_detection));
|
||||
|
||||
const std::vector<NormalizedRect>& expanded_pose_rects =
|
||||
(*output_packets)[kExpandedPoseRectsName]
|
||||
.Get<std::vector<NormalizedRect>>();
|
||||
EXPECT_THAT(expanded_pose_rects,
|
||||
Pointwise(Approximately(Partially(EqualsProto()),
|
||||
kExpandedPoseRectMaxDiff),
|
||||
GetParam().expected_expanded_pose_rect));
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(
|
||||
PoseDetectorGraphTest, PoseDetectorGraphTest,
|
||||
Values(TestParams{.test_name = "DetectPose",
|
||||
.pose_detection_model_name = kPoseDetectionModel,
|
||||
.test_image_name = kPortraitImage,
|
||||
.expected_result = {GetExpectedPoseDetectionResult(
|
||||
kPoseExpectedDetection)}}),
|
||||
Values(TestParams{
|
||||
.test_name = "DetectPose",
|
||||
.pose_detection_model_name = kPoseDetectionModel,
|
||||
.test_image_name = kPortraitImage,
|
||||
.expected_detection = {GetExpectedPoseDetectionResult(
|
||||
kPoseExpectedDetection)},
|
||||
.expected_expanded_pose_rect = {GetExpectedExpandedPoseRect(
|
||||
kPoseExpectedExpandedRect)}}),
|
||||
[](const TestParamInfo<PoseDetectorGraphTest::ParamType>& info) {
|
||||
return info.param.test_name;
|
||||
});
|
||||
|
|
|
@ -319,6 +319,8 @@ TEST_P(MultiPoseLandmarkerTest, Succeeds) {
|
|||
GetParam().expected_landmark_lists));
|
||||
}
|
||||
// TODO: Add additional tests for MP Tasks Pose Graphs.
|
||||
// PoseRects below are based on result from PoseDetectorGraph,
|
||||
// mediapipe/tasks/testdata/vision/pose_expected_expanded_rect.pbtxt.
|
||||
INSTANTIATE_TEST_SUITE_P(
|
||||
PoseLandmarkerTest, PoseLandmarkerTest,
|
||||
Values(
|
||||
|
@ -326,7 +328,8 @@ INSTANTIATE_TEST_SUITE_P(
|
|||
.test_name = "PoseLandmarkerLiteModel",
|
||||
.input_model_name = kPoseLandmarkerLiteModel,
|
||||
.test_image_name = kPoseImage,
|
||||
.pose_rect = MakePoseRect(0.25, 0.5, 0.5, 1.0, 0),
|
||||
.pose_rect = MakePoseRect(0.5450622, 0.31605977, 0.5196669,
|
||||
0.77911085, 0.50149304),
|
||||
.expected_presence = true,
|
||||
.expected_landmarks =
|
||||
GetExpectedLandmarkList(kExpectedPoseLandmarksFilename),
|
||||
|
@ -335,7 +338,8 @@ INSTANTIATE_TEST_SUITE_P(
|
|||
.test_name = "PoseLandmarkerLiteModelNoPose",
|
||||
.input_model_name = kPoseLandmarkerLiteModel,
|
||||
.test_image_name = kBurgerImage,
|
||||
.pose_rect = MakePoseRect(0.25, 0.5, 0.5, 1.0, 0),
|
||||
.pose_rect = MakePoseRect(0.5450622, 0.31605977, 0.5196669,
|
||||
0.77911085, 0.50149304),
|
||||
.expected_presence = false,
|
||||
.expected_landmarks = std::nullopt,
|
||||
.landmarks_diff_threshold = kLiteModelFractionDiff}),
|
||||
|
@ -349,7 +353,8 @@ INSTANTIATE_TEST_SUITE_P(
|
|||
.test_name = "MultiPoseLandmarkerLiteModel",
|
||||
.input_model_name = kPoseLandmarkerLiteModel,
|
||||
.test_image_name = kPoseImage,
|
||||
.pose_rects = {MakePoseRect(0.25, 0.5, 0.5, 1.0, 0)},
|
||||
.pose_rects = {MakePoseRect(0.5450622, 0.31605977, 0.5196669,
|
||||
0.77911085, 0.50149304)},
|
||||
.expected_presences = {true},
|
||||
.expected_landmark_lists = {GetExpectedLandmarkList(
|
||||
kExpectedPoseLandmarksFilename)},
|
||||
|
|
1
mediapipe/tasks/testdata/vision/BUILD
vendored
1
mediapipe/tasks/testdata/vision/BUILD
vendored
|
@ -217,6 +217,7 @@ filegroup(
|
|||
"portrait_expected_face_landmarks_with_attention.pbtxt",
|
||||
"portrait_rotated_expected_detection.pbtxt",
|
||||
"pose_expected_detection.pbtxt",
|
||||
"pose_expected_expanded_rect.pbtxt",
|
||||
"thumb_up_landmarks.pbtxt",
|
||||
"thumb_up_rotated_landmarks.pbtxt",
|
||||
"victory_landmarks.pbtxt",
|
||||
|
|
|
@ -1,231 +1,231 @@
|
|||
landmark {
|
||||
x: 0.5033445
|
||||
y: 0.43453366
|
||||
z: 0.14119335
|
||||
visibility: 0.9981027
|
||||
presence: 0.9992255
|
||||
landmark {
|
||||
x: 0.44039154
|
||||
y: 0.69266146
|
||||
z: -1.0701033
|
||||
visibility: 0.99999785
|
||||
presence: 0.99999964
|
||||
}
|
||||
landmark {
|
||||
x: 0.49945074
|
||||
y: 0.42642897
|
||||
z: 0.1261509
|
||||
visibility: 0.99845314
|
||||
presence: 0.9988668
|
||||
x: 0.4402231
|
||||
y: 0.6729447
|
||||
z: -1.0995388
|
||||
visibility: 0.9999958
|
||||
presence: 0.9999989
|
||||
}
|
||||
landmark {
|
||||
x: 0.49838358
|
||||
y: 0.42594656
|
||||
z: 0.12615599
|
||||
visibility: 0.9983102
|
||||
presence: 0.9988244
|
||||
x: 0.44525078
|
||||
y: 0.67028874
|
||||
z: -1.0994295
|
||||
visibility: 0.9999949
|
||||
presence: 0.9999989
|
||||
}
|
||||
landmark {
|
||||
x: 0.49738216
|
||||
y: 0.42554975
|
||||
z: 0.12622544
|
||||
visibility: 0.99852186
|
||||
presence: 0.99873894
|
||||
x: 0.44974685
|
||||
y: 0.6671066
|
||||
z: -1.099441
|
||||
visibility: 0.9999943
|
||||
presence: 0.9999987
|
||||
}
|
||||
landmark {
|
||||
x: 0.5031697
|
||||
y: 0.42662272
|
||||
z: 0.13347684
|
||||
visibility: 0.9978422
|
||||
presence: 0.9989411
|
||||
x: 0.43495473
|
||||
y: 0.67640877
|
||||
z: -1.0970817
|
||||
visibility: 0.9999975
|
||||
presence: 0.99999917
|
||||
}
|
||||
landmark {
|
||||
x: 0.5052138
|
||||
y: 0.42640454
|
||||
z: 0.13340297
|
||||
visibility: 0.9973635
|
||||
presence: 0.99888366
|
||||
x: 0.43337595
|
||||
y: 0.6775264
|
||||
z: -1.0973414
|
||||
visibility: 0.99999714
|
||||
presence: 0.99999917
|
||||
}
|
||||
landmark {
|
||||
x: 0.50699204
|
||||
y: 0.42618936
|
||||
z: 0.13343208
|
||||
visibility: 0.9977912
|
||||
presence: 0.9987791
|
||||
x: 0.43298554
|
||||
y: 0.6775605
|
||||
z: -1.0972598
|
||||
visibility: 0.99999726
|
||||
presence: 0.99999905
|
||||
}
|
||||
landmark {
|
||||
x: 0.50158876
|
||||
y: 0.42372653
|
||||
z: 0.075136274
|
||||
visibility: 0.9976786
|
||||
presence: 0.99851876
|
||||
x: 0.4708667
|
||||
y: 0.6595806
|
||||
z: -1.0533934
|
||||
visibility: 0.9999908
|
||||
presence: 0.99999905
|
||||
}
|
||||
landmark {
|
||||
x: 0.51374334
|
||||
y: 0.42491674
|
||||
z: 0.10752227
|
||||
visibility: 0.99754214
|
||||
presence: 0.99863297
|
||||
x: 0.44428575
|
||||
y: 0.67323744
|
||||
z: -1.0379978
|
||||
visibility: 0.99999785
|
||||
presence: 0.9999993
|
||||
}
|
||||
landmark {
|
||||
x: 0.5059119
|
||||
y: 0.43917143
|
||||
z: 0.12961307
|
||||
visibility: 0.9958307
|
||||
presence: 0.9977532
|
||||
x: 0.4564836
|
||||
y: 0.6977895
|
||||
z: -1.0333056
|
||||
visibility: 0.9999943
|
||||
presence: 0.9999994
|
||||
}
|
||||
landmark {
|
||||
x: 0.5109223
|
||||
y: 0.43983036
|
||||
z: 0.13892516
|
||||
visibility: 0.99557614
|
||||
presence: 0.9976047
|
||||
x: 0.44782764
|
||||
y: 0.7037028
|
||||
z: -1.0296792
|
||||
visibility: 0.9999962
|
||||
presence: 0.9999994
|
||||
}
|
||||
landmark {
|
||||
x: 0.5023406
|
||||
y: 0.45419085
|
||||
z: 0.045139182
|
||||
visibility: 0.99948055
|
||||
presence: 0.99782556
|
||||
x: 0.5449939
|
||||
y: 0.62528574
|
||||
z: -0.7878126
|
||||
visibility: 0.9999747
|
||||
presence: 0.9999956
|
||||
}
|
||||
landmark {
|
||||
x: 0.5593891
|
||||
y: 0.44672203
|
||||
z: 0.09991482
|
||||
visibility: 0.99833965
|
||||
presence: 0.9977375
|
||||
x: 0.3974144
|
||||
y: 0.68981373
|
||||
z: -0.77783424
|
||||
visibility: 0.99997735
|
||||
presence: 0.99999726
|
||||
}
|
||||
landmark {
|
||||
x: 0.49746004
|
||||
y: 0.4821021
|
||||
z: 0.037247833
|
||||
visibility: 0.80266625
|
||||
presence: 0.9972971
|
||||
x: 0.69353175
|
||||
y: 0.63911355
|
||||
z: -0.69779164
|
||||
visibility: 0.99741924
|
||||
presence: 0.99996626
|
||||
}
|
||||
landmark {
|
||||
x: 0.57370883
|
||||
y: 0.47189793
|
||||
z: 0.13776684
|
||||
visibility: 0.5926873
|
||||
presence: 0.9988753
|
||||
x: 0.32092315
|
||||
y: 0.8199662
|
||||
z: -0.7256159
|
||||
visibility: 0.99759066
|
||||
presence: 0.9999684
|
||||
}
|
||||
landmark {
|
||||
x: 0.5110358
|
||||
y: 0.44240227
|
||||
z: 0.040228914
|
||||
visibility: 0.73293996
|
||||
presence: 0.9983026
|
||||
x: 0.83430344
|
||||
y: 0.5488517
|
||||
z: -0.7037824
|
||||
visibility: 0.9987625
|
||||
presence: 0.99989784
|
||||
}
|
||||
landmark {
|
||||
x: 0.55913407
|
||||
y: 0.45325255
|
||||
z: 0.15570506
|
||||
visibility: 0.6228974
|
||||
presence: 0.998798
|
||||
x: 0.20488566
|
||||
y: 0.8801585
|
||||
z: -0.76772463
|
||||
visibility: 0.99855787
|
||||
presence: 0.99988043
|
||||
}
|
||||
landmark {
|
||||
x: 0.5122394
|
||||
y: 0.42851248
|
||||
z: 0.022895059
|
||||
visibility: 0.67662305
|
||||
presence: 0.9976555
|
||||
x: 0.87126845
|
||||
y: 0.54215115
|
||||
z: -0.7420273
|
||||
visibility: 0.99767953
|
||||
presence: 0.99979395
|
||||
}
|
||||
landmark {
|
||||
x: 0.5534328
|
||||
y: 0.45476273
|
||||
z: 0.13998204
|
||||
visibility: 0.5879434
|
||||
presence: 0.99810314
|
||||
x: 0.21015728
|
||||
y: 0.8867224
|
||||
z: -0.8027822
|
||||
visibility: 0.99664575
|
||||
presence: 0.9997483
|
||||
}
|
||||
landmark {
|
||||
x: 0.5166826
|
||||
y: 0.42873073
|
||||
z: 0.013023325
|
||||
visibility: 0.66849846
|
||||
presence: 0.9973978
|
||||
x: 0.8741963
|
||||
y: 0.5460341
|
||||
z: -0.7887856
|
||||
visibility: 0.9976641
|
||||
presence: 0.9997937
|
||||
}
|
||||
landmark {
|
||||
x: 0.54080456
|
||||
y: 0.45333704
|
||||
z: 0.13224734
|
||||
visibility: 0.58104885
|
||||
presence: 0.99810755
|
||||
x: 0.22013207
|
||||
y: 0.88651013
|
||||
z: -0.85653603
|
||||
visibility: 0.9964618
|
||||
presence: 0.9997515
|
||||
}
|
||||
landmark {
|
||||
x: 0.5170599
|
||||
y: 0.43338987
|
||||
z: 0.03576146
|
||||
visibility: 0.65676475
|
||||
presence: 0.99781895
|
||||
x: 0.8552971
|
||||
y: 0.5635247
|
||||
z: -0.7320286
|
||||
visibility: 0.9979176
|
||||
presence: 0.9998549
|
||||
}
|
||||
landmark {
|
||||
x: 0.550342
|
||||
y: 0.4529801
|
||||
z: 0.15014008
|
||||
visibility: 0.57411015
|
||||
presence: 0.9985139
|
||||
x: 0.23674019
|
||||
y: 0.87909704
|
||||
z: -0.7946802
|
||||
visibility: 0.9968817
|
||||
presence: 0.9998123
|
||||
}
|
||||
landmark {
|
||||
x: 0.5236847
|
||||
y: 0.5765062
|
||||
z: -0.03329975
|
||||
visibility: 0.9998833
|
||||
presence: 0.99935263
|
||||
x: 0.5296566
|
||||
y: 0.583189
|
||||
z: -0.0068905717
|
||||
visibility: 0.99999726
|
||||
presence: 0.99999833
|
||||
}
|
||||
landmark {
|
||||
x: 0.55076087
|
||||
y: 0.57722
|
||||
z: 0.033408616
|
||||
visibility: 0.99978465
|
||||
presence: 0.9994066
|
||||
x: 0.45126596
|
||||
y: 0.610716
|
||||
z: 0.0076607587
|
||||
visibility: 0.9999982
|
||||
presence: 0.9999993
|
||||
}
|
||||
landmark {
|
||||
x: 0.56554604
|
||||
y: 0.68362844
|
||||
z: -0.1572319
|
||||
visibility: 0.8825664
|
||||
presence: 0.99819404
|
||||
x: 0.5673191
|
||||
y: 0.67022914
|
||||
z: -0.012459015
|
||||
visibility: 0.87660104
|
||||
presence: 0.99997973
|
||||
}
|
||||
landmark {
|
||||
x: 0.6127089
|
||||
y: 0.6976384
|
||||
z: 0.034268316
|
||||
visibility: 0.6231058
|
||||
presence: 0.9986853
|
||||
x: 0.40346304
|
||||
y: 0.68889683
|
||||
z: 0.048518207
|
||||
visibility: 0.79370135
|
||||
presence: 0.9999901
|
||||
}
|
||||
landmark {
|
||||
x: 0.63440466
|
||||
y: 0.85055786
|
||||
z: -0.21429145
|
||||
visibility: 0.93542594
|
||||
presence: 0.99297804
|
||||
x: 0.5971223
|
||||
y: 0.7035845
|
||||
z: 0.29914334
|
||||
visibility: 0.9536318
|
||||
presence: 0.9999622
|
||||
}
|
||||
landmark {
|
||||
x: 0.68133575
|
||||
y: 0.8420663
|
||||
z: 0.024820065
|
||||
visibility: 0.8150173
|
||||
presence: 0.994477
|
||||
x: 0.3654526
|
||||
y: 0.7461876
|
||||
z: 0.31222725
|
||||
visibility: 0.9724159
|
||||
presence: 0.99995387
|
||||
}
|
||||
landmark {
|
||||
x: 0.65322053
|
||||
y: 0.8746961
|
||||
z: -0.22213714
|
||||
visibility: 0.89239687
|
||||
presence: 0.986766
|
||||
x: 0.6009192
|
||||
y: 0.711494
|
||||
z: 0.32301757
|
||||
visibility: 0.8800503
|
||||
presence: 0.99994063
|
||||
}
|
||||
landmark {
|
||||
x: 0.69881815
|
||||
y: 0.862424
|
||||
z: 0.018177645
|
||||
visibility: 0.7516772
|
||||
presence: 0.98905355
|
||||
x: 0.3758035
|
||||
y: 0.7603447
|
||||
z: 0.3248874
|
||||
visibility: 0.90657604
|
||||
presence: 0.99992514
|
||||
}
|
||||
landmark {
|
||||
x: 0.62477547
|
||||
y: 0.9208759
|
||||
z: -0.31597853
|
||||
visibility: 0.92574716
|
||||
presence: 0.9792296
|
||||
x: 0.60657954
|
||||
y: 0.71376836
|
||||
z: 0.16594526
|
||||
visibility: 0.94293
|
||||
presence: 0.9998517
|
||||
}
|
||||
landmark {
|
||||
x: 0.6807446
|
||||
y: 0.8746925
|
||||
z: -0.059982482
|
||||
visibility: 0.8126682
|
||||
presence: 0.98336893
|
||||
x: 0.32244906
|
||||
y: 0.75465155
|
||||
z: 0.12916707
|
||||
visibility: 0.95600617
|
||||
presence: 0.9998241
|
||||
}
|
||||
|
|
7
mediapipe/tasks/testdata/vision/pose_expected_expanded_rect.pbtxt
vendored
Normal file
7
mediapipe/tasks/testdata/vision/pose_expected_expanded_rect.pbtxt
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
# proto-file: mediapipe/framework/formats/rect.proto
|
||||
# proto-message: NormalizedRect
|
||||
x_center: 0.5450622
|
||||
y_center: 0.31605977
|
||||
width: 0.5196669
|
||||
height: 0.77911085
|
||||
rotation: 0.50149304
|
Loading…
Reference in New Issue
Block a user