57 lines
1.6 KiB
Plaintext
57 lines
1.6 KiB
Plaintext
|
# MediaPipe object tracking subgraph.
|
||
|
|
||
|
type: "ObjectTrackingSubgraphCpu"
|
||
|
|
||
|
input_stream: "VIDEO:input_video"
|
||
|
input_stream: "DETECTIONS:new_detections"
|
||
|
output_stream: "DETECTIONS:tracked_detections"
|
||
|
|
||
|
# Assigns an unique id for each new detection.
|
||
|
node {
|
||
|
calculator: "DetectionUniqueIdCalculator"
|
||
|
input_stream: "DETECTIONS:new_detections"
|
||
|
output_stream: "DETECTIONS:detections_with_id"
|
||
|
}
|
||
|
|
||
|
# Converts detections to TimedBox protos which are used as initial location
|
||
|
# for tracking.
|
||
|
node {
|
||
|
calculator: "DetectionsToTimedBoxListCalculator"
|
||
|
input_stream: "DETECTIONS:detections_with_id"
|
||
|
output_stream: "BOXES:start_pos"
|
||
|
}
|
||
|
|
||
|
# Subgraph that tracks boxes (see box_tracking_cpu.pbtxt).
|
||
|
node {
|
||
|
calculator: "BoxTrackingSubgraphCpu"
|
||
|
input_stream: "VIDEO:input_video"
|
||
|
input_stream: "BOXES:start_pos"
|
||
|
input_stream: "CANCEL_ID:cancel_object_id"
|
||
|
output_stream: "BOXES:boxes"
|
||
|
}
|
||
|
|
||
|
# Managers new detected objects and objects that are being tracked.
|
||
|
# It associates the duplicated detections and updates the locations of
|
||
|
# detections from tracking.
|
||
|
node: {
|
||
|
calculator: "TrackedDetectionManagerCalculator"
|
||
|
input_stream: "DETECTIONS:detections_with_id"
|
||
|
input_stream: "TRACKING_BOXES:boxes"
|
||
|
output_stream: "DETECTIONS:tracked_detections"
|
||
|
output_stream: "CANCEL_OBJECT_ID:cancel_object_id"
|
||
|
|
||
|
input_stream_handler {
|
||
|
input_stream_handler: "SyncSetInputStreamHandler"
|
||
|
options {
|
||
|
[mediapipe.SyncSetInputStreamHandlerOptions.ext] {
|
||
|
sync_set {
|
||
|
tag_index: "TRACKING_BOXES"
|
||
|
}
|
||
|
sync_set {
|
||
|
tag_index: "DETECTIONS"
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|