255 lines
7.5 KiB
Plaintext
255 lines
7.5 KiB
Plaintext
# MediaPipe iris tracking rendering subgraph.
|
|
|
|
type: "IrisRendererCpu"
|
|
|
|
input_stream: "IMAGE:input_image"
|
|
input_stream: "DETECTIONS:detections"
|
|
input_stream: "FACE_LANDMARKS:face_landmarks"
|
|
input_stream: "EYE_LANDMARKS_LEFT:all_left_eye_contour_landmarks"
|
|
input_stream: "EYE_LANDMARKS_RIGHT:all_right_eye_contour_landmarks"
|
|
input_stream: "IRIS_LANDMARKS_LEFT:left_iris_landmarks"
|
|
input_stream: "IRIS_LANDMARKS_RIGHT:right_iris_landmarks"
|
|
input_stream: "NORM_RECT:rect"
|
|
input_stream: "LEFT_EYE_RECT:left_eye_rect_from_landmarks"
|
|
input_stream: "RIGHT_EYE_RECT:right_eye_rect_from_landmarks"
|
|
output_stream: "IRIS_LANDMARKS:iris_landmarks"
|
|
output_stream: "IMAGE:output_image"
|
|
|
|
node {
|
|
calculator: "SplitNormalizedLandmarkListCalculator"
|
|
input_stream: "all_left_eye_contour_landmarks"
|
|
output_stream: "left_eye_contour_landmarks"
|
|
node_options: {
|
|
[type.googleapis.com/mediapipe.SplitVectorCalculatorOptions] {
|
|
ranges: { begin: 0 end: 15 }
|
|
}
|
|
}
|
|
}
|
|
|
|
node {
|
|
calculator: "SplitNormalizedLandmarkListCalculator"
|
|
input_stream: "all_right_eye_contour_landmarks"
|
|
output_stream: "right_eye_contour_landmarks"
|
|
node_options: {
|
|
[type.googleapis.com/mediapipe.SplitVectorCalculatorOptions] {
|
|
ranges: { begin: 0 end: 15 }
|
|
}
|
|
}
|
|
}
|
|
|
|
# Concatenate iris landmarks from both eyes.
|
|
node {
|
|
calculator: "ConcatenateNormalizedLandmarkListCalculator"
|
|
input_stream: "left_iris_landmarks"
|
|
input_stream: "right_iris_landmarks"
|
|
output_stream: "iris_landmarks"
|
|
}
|
|
|
|
# Converts landmarks to drawing primitives for annotation overlay.
|
|
node {
|
|
calculator: "FaceLandmarksToRenderDataCalculator"
|
|
input_stream: "NORM_LANDMARKS:face_landmarks"
|
|
output_stream: "RENDER_DATA:face_landmarks_render_data"
|
|
node_options: {
|
|
[type.googleapis.com/mediapipe.LandmarksToRenderDataCalculatorOptions] {
|
|
landmark_color { r: 150 g: 0 b: 0 }
|
|
connection_color { r: 0 g: 150 b: 0 }
|
|
thickness: 2
|
|
visualize_landmark_depth: false
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
node {
|
|
calculator: "ImagePropertiesCalculator"
|
|
input_stream: "IMAGE:input_image"
|
|
output_stream: "SIZE:image_size"
|
|
}
|
|
|
|
# Maps detection label IDs to the corresponding label text ("Face").
|
|
node {
|
|
calculator: "DetectionLabelIdToTextCalculator"
|
|
input_stream: "detections"
|
|
output_stream: "labeled_detections"
|
|
node_options: {
|
|
[type.googleapis.com/mediapipe.DetectionLabelIdToTextCalculatorOptions] {
|
|
label: "Face"
|
|
}
|
|
}
|
|
}
|
|
|
|
# Converts detections to drawing primitives for annotation overlay.
|
|
node {
|
|
calculator: "DetectionsToRenderDataCalculator"
|
|
input_stream: "DETECTIONS:labeled_detections"
|
|
output_stream: "RENDER_DATA:detection_render_data"
|
|
node_options: {
|
|
[type.googleapis.com/mediapipe.DetectionsToRenderDataCalculatorOptions] {
|
|
thickness: 4.0
|
|
color { r: 0 g: 255 b: 0 }
|
|
}
|
|
}
|
|
}
|
|
|
|
# Converts landmarks to drawing primitives for annotation overlay.
|
|
node {
|
|
calculator: "LandmarksToRenderDataCalculator"
|
|
input_stream: "NORM_LANDMARKS:left_eye_contour_landmarks"
|
|
output_stream: "RENDER_DATA:left_eye_contour_landmarks_render_data"
|
|
node_options: {
|
|
[type.googleapis.com/mediapipe.LandmarksToRenderDataCalculatorOptions] {
|
|
landmark_connections: 0
|
|
landmark_connections: 1
|
|
landmark_connections: 1
|
|
landmark_connections: 2
|
|
landmark_connections: 2
|
|
landmark_connections: 3
|
|
landmark_connections: 3
|
|
landmark_connections: 4
|
|
landmark_connections: 4
|
|
landmark_connections: 5
|
|
landmark_connections: 5
|
|
landmark_connections: 6
|
|
landmark_connections: 6
|
|
landmark_connections: 7
|
|
landmark_connections: 7
|
|
landmark_connections: 8
|
|
landmark_connections: 9
|
|
landmark_connections: 10
|
|
landmark_connections: 10
|
|
landmark_connections: 11
|
|
landmark_connections: 11
|
|
landmark_connections: 12
|
|
landmark_connections: 12
|
|
landmark_connections: 13
|
|
landmark_connections: 13
|
|
landmark_connections: 14
|
|
landmark_connections: 0
|
|
landmark_connections: 9
|
|
landmark_connections: 8
|
|
landmark_connections: 14
|
|
landmark_color { r: 255 g: 0 b: 0 }
|
|
connection_color { r: 255 g: 0 b: 0 }
|
|
visualize_landmark_depth: false
|
|
thickness: 1.0
|
|
}
|
|
}
|
|
}
|
|
|
|
# Converts landmarks to drawing primitives for annotation overlay.
|
|
node {
|
|
calculator: "LandmarksToRenderDataCalculator"
|
|
input_stream: "NORM_LANDMARKS:right_eye_contour_landmarks"
|
|
output_stream: "RENDER_DATA:right_eye_contour_landmarks_render_data"
|
|
node_options: {
|
|
[type.googleapis.com/mediapipe.LandmarksToRenderDataCalculatorOptions] {
|
|
landmark_connections: 0
|
|
landmark_connections: 1
|
|
landmark_connections: 1
|
|
landmark_connections: 2
|
|
landmark_connections: 2
|
|
landmark_connections: 3
|
|
landmark_connections: 3
|
|
landmark_connections: 4
|
|
landmark_connections: 4
|
|
landmark_connections: 5
|
|
landmark_connections: 5
|
|
landmark_connections: 6
|
|
landmark_connections: 6
|
|
landmark_connections: 7
|
|
landmark_connections: 7
|
|
landmark_connections: 8
|
|
landmark_connections: 9
|
|
landmark_connections: 10
|
|
landmark_connections: 10
|
|
landmark_connections: 11
|
|
landmark_connections: 11
|
|
landmark_connections: 12
|
|
landmark_connections: 12
|
|
landmark_connections: 13
|
|
landmark_connections: 13
|
|
landmark_connections: 14
|
|
landmark_connections: 0
|
|
landmark_connections: 9
|
|
landmark_connections: 8
|
|
landmark_connections: 14
|
|
landmark_color { r: 255 g: 0 b: 0 }
|
|
connection_color { r: 255 g: 0 b: 0 }
|
|
visualize_landmark_depth: false
|
|
thickness: 1.0
|
|
}
|
|
}
|
|
}
|
|
|
|
# Converts normalized rects to drawing primitives for annotation overlay.
|
|
node {
|
|
calculator: "RectToRenderDataCalculator"
|
|
input_stream: "NORM_RECT:rect"
|
|
output_stream: "RENDER_DATA:rect_render_data"
|
|
node_options: {
|
|
[type.googleapis.com/mediapipe.RectToRenderDataCalculatorOptions] {
|
|
filled: false
|
|
color { r: 255 g: 0 b: 0 }
|
|
thickness: 4.0
|
|
}
|
|
}
|
|
}
|
|
|
|
node {
|
|
calculator: "RectToRenderDataCalculator"
|
|
input_stream: "NORM_RECT:right_eye_rect_from_landmarks"
|
|
output_stream: "RENDER_DATA:right_eye_rect_render_data"
|
|
node_options: {
|
|
[type.googleapis.com/mediapipe.RectToRenderDataCalculatorOptions] {
|
|
filled: false
|
|
color { r: 255 g: 0 b: 0 }
|
|
thickness: 4.0
|
|
}
|
|
}
|
|
}
|
|
|
|
node {
|
|
calculator: "RectToRenderDataCalculator"
|
|
input_stream: "NORM_RECT:left_eye_rect_from_landmarks"
|
|
output_stream: "RENDER_DATA:left_eye_rect_render_data"
|
|
node_options: {
|
|
[type.googleapis.com/mediapipe.RectToRenderDataCalculatorOptions] {
|
|
filled: false
|
|
color { r: 255 g: 0 b: 0 }
|
|
thickness: 4.0
|
|
}
|
|
}
|
|
}
|
|
|
|
node {
|
|
calculator: "IrisToRenderDataCalculator"
|
|
input_stream: "IRIS:iris_landmarks"
|
|
input_stream: "IMAGE_SIZE:image_size"
|
|
output_stream: "RENDER_DATA:iris_render_data"
|
|
node_options: {
|
|
[type.googleapis.com/mediapipe.IrisToRenderDataCalculatorOptions] {
|
|
oval_color { r: 0 g: 0 b: 255 }
|
|
landmark_color { r: 0 g: 255 b: 0 }
|
|
oval_thickness: 4.0
|
|
landmark_thickness: 2.0
|
|
font_height_px: 50
|
|
horizontal_offset_px: 200
|
|
vertical_offset_px: 200
|
|
location: TOP_LEFT
|
|
}
|
|
}
|
|
}
|
|
|
|
# Draws annotations and overlays them on top of the input images.
|
|
node {
|
|
calculator: "AnnotationOverlayCalculator"
|
|
input_stream: "IMAGE:input_image"
|
|
input_stream: "detection_render_data"
|
|
input_stream: "face_landmarks_render_data"
|
|
input_stream: "right_eye_contour_landmarks_render_data"
|
|
input_stream: "left_eye_contour_landmarks_render_data"
|
|
input_stream: "iris_render_data"
|
|
output_stream: "IMAGE:output_image"
|
|
}
|