From 1641986a7b0dcf9a6e8dc7bd153b3b4d475b9b3f Mon Sep 17 00:00:00 2001 From: dom607 Date: Thu, 2 Jul 2020 14:42:32 +0900 Subject: [PATCH] Change calculator's behaviour - Now clock input stream is optional - If there are clock stream, always emit count. If not, emit count when vector stream is come in. --- .../calculators/util/counting_vector_size_calculator.h | 7 ++++--- mediapipe/modules/face_landmark/BUILD | 3 ++- .../modules/face_landmark/face_landmark_front_gpu.pbtxt | 9 +++++++++ 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/mediapipe/calculators/util/counting_vector_size_calculator.h b/mediapipe/calculators/util/counting_vector_size_calculator.h index 51628113e..7b49750b4 100644 --- a/mediapipe/calculators/util/counting_vector_size_calculator.h +++ b/mediapipe/calculators/util/counting_vector_size_calculator.h @@ -39,9 +39,10 @@ template class CountingVectorSizeCalculator : public CalculatorBase { public: static ::mediapipe::Status GetContract(CalculatorContract* cc) { - // Check tag. - RET_CHECK(cc->Inputs().HasTag("CLOCK")); - cc->Inputs().Tag("CLOCK").SetAny(); + if (cc->Inputs().HasTag("CLOCK")) { + cc->Inputs().Tag("CLOCK").SetAny(); + } + RET_CHECK(cc->Inputs().HasTag("VECTOR")); cc->Inputs().Tag("VECTOR").Set(); RET_CHECK(cc->Outputs().HasTag("COUNT")); diff --git a/mediapipe/modules/face_landmark/BUILD b/mediapipe/modules/face_landmark/BUILD index 5fff8dab5..88555ad07 100644 --- a/mediapipe/modules/face_landmark/BUILD +++ b/mediapipe/modules/face_landmark/BUILD @@ -74,8 +74,8 @@ mediapipe_simple_subgraph( "//mediapipe/calculators/image:image_properties_calculator", "//mediapipe/calculators/util:association_norm_rect_calculator", "//mediapipe/calculators/util:collection_has_min_size_calculator", - "//mediapipe/modules/face_detection:face_detection_front_cpu", "//mediapipe/calculators/util:counting_vector_size_calculator", + "//mediapipe/modules/face_detection:face_detection_front_cpu", ], ) @@ -96,6 +96,7 @@ mediapipe_simple_subgraph( "//mediapipe/calculators/image:image_properties_calculator", "//mediapipe/calculators/util:association_norm_rect_calculator", "//mediapipe/calculators/util:collection_has_min_size_calculator", + "//mediapipe/calculators/util:counting_vector_size_calculator", "//mediapipe/modules/face_detection:face_detection_front_gpu", ], ) diff --git a/mediapipe/modules/face_landmark/face_landmark_front_gpu.pbtxt b/mediapipe/modules/face_landmark/face_landmark_front_gpu.pbtxt index d06aff1df..dde7048e2 100644 --- a/mediapipe/modules/face_landmark/face_landmark_front_gpu.pbtxt +++ b/mediapipe/modules/face_landmark/face_landmark_front_gpu.pbtxt @@ -43,6 +43,8 @@ output_stream: "ROIS_FROM_LANDMARKS:face_rects_from_landmarks" # Regions of interest calculated based on face detections. # (std::vector) output_stream: "ROIS_FROM_DETECTIONS:face_rects_from_detections" +# (int) +output_stream: "FACE_COUNT_FROM_LANDMARKS:face_count" # Determines if an input vector of NormalizedRect has a size greater than or # equal to the provided num_faces. @@ -189,6 +191,13 @@ node { output_stream: "ITERABLE:multi_face_landmarks" } +node { + calculator: "CountingNormalizedLandmarkListVectorSizeCalculator" + input_stream: "CLOCK:image" + input_stream: "VECTOR:multi_face_landmarks" + output_stream: "COUNT:face_count" +} + # Collects a NormalizedRect for each face into a vector. Upon receiving the # BATCH_END timestamp, outputs the vector of NormalizedRect at the BATCH_END # timestamp.