Speed Estimation

Estimates speeds of objects in a ROI and sets triggers based on low/high thresholds.

Overview

The Speed Estimation node estimates speeds of objects in a ROI and sets triggers based on low/high thresholds. This node makes it easy to build common use cases such as No running zones, traffic jams, etc.

This node requires a AI Model Node and a Track Objects Node before it in order to function properly.

Inputs & Outputs

  • Inputs : 1, Media Format : Raw Video
  • Outputs : 1, Media Format: Raw Video
  • Output Metadata : Speed Information

Properties

PropertyDescriptionTypeDefaultRequired
roisRegion of interests in the video within which the Speed Estimation tracks objects. Format: x1,y1,x2,y2,x3,y3; X1,Y1,X2,Y2,X3,Y3,X4,Y4.polygonnullYes
roi_labelsRegion of interests labels for each ROI in the rois list. Conditional on rois. Format: table,roomhidden-Yes
object_typesComma separated list of object types to measure speed. Ex. car,person Accepted formats: object_label: any object of this type, with or without a classifier attribute. Example: car, object_label.class_type: any object of this type that
has a specific classifier attribute. Example: car.red, object_label.*: any object of this type that has at least one classifier attribute. Example: car.* (this will match car.red, car.yellow, etc)model-labelnullYes
speed_unitUnit of speed measurement. Options: mph (Requires Camera Calibration node), kmph (Requires Camera Calibration node), pph (Pixels per hour. Deprecated. Use pixels per second instead), pps (Pixels per second).enumppsNo
speed_trigger_threshold_highClassify as High speed above this threshold.float100.0Yes
speed_trigger_threshold_lowClassify as Low Speed below this threshold.float20.0Yes
speed_trigger_threshold_stationaryClassify as Stationary below this threshold.float0Yes
objects_to_flagObjects to flag for triggering downstream events. Options: low, medium, high, stationary, regular, stop_and_go, hover.enum-multinullNo
display_objects_modeDisplay objects on video based on criteria. Options: none, triggered (Speed Above/Below Thresholds), regular, irregular (Stop-and-go or Hover Motion), stationary, all.enumtriggeredNo
display_roiDisplay ROI on video?booltrueNo
tracking_modeWhich point of the object to track. Options: centroid, top-center, bottom-center, left-center, right-center.enumbottom-centerNo
analysis_windowAnalyze the last n seconds of an object's motion to determine motion type.float10.0No
sensitivitySensitivity for motion type detection. Higher sensitivity counts smaller movements as motion. Lower sensitivity counts only larger movements as motion. Range: 0-100.slider-optional50No
speed_labels_to_addAdd motion class to objects. Options: none, speed_category (speed_stationary/speed_low/speed_medium/speed_high), motion_type (motion_hover/motion_stop_and_go/motion_regular), all.enumallNo

Metadata

Metadata PropertyDescription
nodes.<node_id>Describes the ROIs monitored by this node, and their properties. Format : as defined in the table below. <node_id> for Speed Estimation Nodes is of the form annotate_speedX (ex. annotate_speed1)

Example

"nodes": {
    "annotate_speed1": {
        "type": "annotate_speed",
        "rois": {
            "<roi_label>": {
                "coords": [[<point1_x>, <point1_y>], 
                           [<point2_x>, <point2_y>], 
                           [<point3_x>, <point3_y>]],
                "average_speed": <int>,
                "objects_stationary_count": <int>,
                "objects_stationary_delta": <int>,              
                "objects_low_speed_count": <int>,
                "objects_low_speed_delta": <int>,
                "objects_medium_speed_count": <int>,
                "objects_medium_speed_delta": <int>,
                "objects_high_speed_count": <int>,
                "objects_high_speed_delta": <int>,   
                "objects_flagged_count": <int>,
                "objects_flagged_delta": <int>,   
                "objects_stationary": [object_id1, object_id2...],              
                "objects_low_speed": [object_id1, object_id2...],
                "objects_medium_speed": [object_id1, object_id2...],
                "objects_high_speed": [object_id1, object_id2...],
                "objects_flagged": [object_id1, object_id2...]
            }
        }
    }
}

Format

KeyTypeDescription
<roi_label>Array of dictionariesContains information about this specific ROI
<roi_label>.coordsArray of ArraysContains the bounding box coordinates that represent this ROI
<roi_label>.objects_low_speed_countIntegerNumber of objects currently in this ROI below thespeed_trigger_threshold_low_mph
<roi_label>.objects_low_speed_deltaIntegerNumber of new objects in the ROI whose speed was below speed_trigger_threshold_low_mph between last frame and this frame
<roi_label>.objects_medium_speed_countIntegerNumber of objects currently in this ROI between thespeed_trigger_threshold_low_mph and speed_trigger_threshold_high_mph
<roi_label>.objects_medium_speed_deltaIntegerNumber of new objects in the ROI whose speed was between speed_trigger_threshold_low_mph and speed_trigger_threshold_high_mph between last frame and this frame
<roi_label>.objects_high_speed_countIntegerNumber of objects currently in this ROI above thespeed_trigger_threshold_high_mph
<roi_label>.objects_high_speed_deltaIntegerNumber of new objects in the ROI whose speed was above speed_trigger_threshold_high_mph between last frame and this frame
<roi_label>.objects_flagged_countIntegerNumber of objects currently in this ROI that meet the objects_to_flag criteria.
<roi_label>.objects_flagged_deltaIntegerNumber of new objects in the ROI which met the objects_to_flag criteria between last frame and this frame
<roi_label>.objects_low_speedList of long integersList of object IDs of low speed objects
<roi_label>.objects_medium_speedList of long integersList of object IDs of medium speed objects
<roi_label>.objects_high_speedList of long integersList of object IDs of high speed objects
<roi_label>.objects_flaggedList of long integersList of object IDs of flagged objects