Processors
Processors run as separate threads in the pipeline, linked by input-output queues.
Processors define a process(snapshot) method that receives a Snap object
containing both the input image(s) and the results of previous processors,
performs actions on this data, and returns either the same snap or a modified
version of it to be processed by later processors in the pipeline.
Processor shared state
In general, processors don't share state to avoid inter-thread locking.
But a shared database of gathered information is available as a global_scope property on all of them.
This GlobalScope object contains:
- Shared
stagewithActorsdetected in previous frames. - A list of
cameras, with calibration info. - A
media_timelinewith information about playing media to keep track of views and audience.
Available Processors
Module base
Common Processor Parameters
-
display(bool): Show processor on a system window.- default: False.
-
display_extra(bool): Show processor DEBUG output in a window.- default: False.
-
enabled(bool): Enable processor.- default: True.
-
max_fps(float): If processing more than this fps, bypass processor (zero or less disables).- default: -1.0.
-
stream(bool): Show in browser.- default: False.
-
tags(str): Apply this processor only to boxes with the given tags.- default: None.
BoxParallelProcessor
Superclass for a thread-pool parallelizing processor with minimum-interval checking
Parameters
-
number_of_workers(int): Number of worker threads.- default: 2 (1-64).
-
recheck_interval(float): Period of re-measurement (seconds).- default: 1.0 (0.0-60.0).
-
data_updates(bool): Should we send data updates for each new value.- default: False.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
NullProcessor
Pass-through processor: returns the input snap unchanged.
Parameters
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
SampleParametersProcessor
Demo processor for all kinds of parameters. Does nothing.
Parameters
-
area(area): Area as either px x px or % of the image.- default: 0.
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: face.
-
float01(float): Floating point value from 0 to 1.- default: 1.0 (0.0-1.0).
-
float0inf(float): Floating point value from 0 to some large value.- default: 1.0 (0.0-9.9e+99).
-
int0_100(int): Int form 0 to 100.- default: 10 (0-100).
-
line(line): Line selection.- default: [[0, 50], [100, 50]].
-
polygon(polygon): Polygon selection.- default: [[0, 0], [0, 100], [100, 100], [100, 0]].
-
polyline(polyline): Polyline selection.- default: [[0, 80], [100, 80], [80, 60]].
-
selector(value1|value2|value3): Selector.- default: value1.
-
square(square): Square selection.- default: [[0, 0], [0, 100], [100, 100], [100, 0]].
-
string(str): A string value.- default: Some value.
-
toggle(bool): Toggle Parameter.- default: False.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
vector(vector): Vector selection.- default: [[0, 50], [100, 50]].
Module boxfilters
BoxAreaFilterProcessor
Filter boxes between the given min/max areas
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: face.
-
maxarea(area): Maximum area in pixels or percent of the image of the box to be detected (=width x height).- default: 80000 (0-4194304).
-
minarea(area): Minimum area in pixels or percent of the image of the box to be detected (=width x height).- default: 3000 (0-160000).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
BoxCameraZonesFilterProcessor
Filter person+face+upper_body boxes outside of camera defined zones
Person boxes are filtered based on feet position.
Face/upper_body boxes are filtered
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will filter.- default: person.
-
project_head_down(float): Project N heads downwards to guess feet position to filter out heads.- default: 7.0 (0.0-10.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
BoxMergeProcessor
Merges boxes into ComboBox clusters based on their containment.
Parameters
-
box_order(face&person&upper_body&blob&hand&head&skeleton&placeholder&combo): Type of boxes in order of containment for the clusters.- default: person,skeleton,upper_body,head,face.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
BoxRatioFilterProcessor
Discard boxes whose size ratio (height/width) is below the set value
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will filter.- default: person.
-
minratio(float): Minumum ratio (height/width) for the box to be detected (e.g. in a face height > width).- default: 1.2 (0.0-10.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
DistanceFilterProcessor
Discard tracks whose floor distance to the camera is outside the [min, max] range.
Uses the floor distance already computed by SmoothFeetProcessor and stored on
each combo track as _feet_point.dist_ground_to_feet (metres, measured on the
ground plane from the camera to the feet). This processor must run AFTER
SmoothFeetProcessor so the feet point is available.
Boxes that are not tracks (non TYPE_COMBO) are always passed through
unchanged. A track with no valid feet point (distance unknown) is kept unless
drop_unknown is enabled.
Parameters
-
debug_draw_filtered(bool): Draw a red dashed box + measured distance on tracks dropped by this filter, for visual debugging.- default: False.
-
drop_unknown(bool): Drop tracks with no valid feet point (unknown distance). When false, such tracks are kept..- default: False.
-
max_distance(float): Maximum floor distance to the camera (m) for a track to be kept.- default: 100.0 (0.0-1000.0).
-
min_distance(float): Minimum floor distance to the camera (m) for a track to be kept.- default: 0.0 (0.0-1000.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
use_camera_distance(bool): Use straight-line camera-to-feet distance instead of the ground-plane (floor) distance.- default: False.
FocalBoxFilterProcessor
Filter bounding boxes by estimated distance to the camera.
When the camera is calibrated (known height + tilt), distance is the true ground distance obtained by back-projecting the box onto the floor plane. Otherwise it falls back to the pinhole optical-axis depth Z = f_y * H / h_px, assuming an average adult stature (~1.70 m), head crown-to-chin (~0.24 m) or face brow-to-chin (~0.20 m) height.
Supported box types: face, head, person, skeleton, upper_body and combo (a combo delegates to the best contained sub-box). Other types pass through untouched.
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will filter.- default: combo.
-
exp_head_height(float): Expected average height of a face (brow-to-chin) in meters.- default: 0.2 (0.05-0.5).
-
exp_person_height(float): Expected average height of a person in meters.- default: 1.7 (1.0-3.0).
-
max_distance(float): Discard boxes farther than this distance (m).- default: 5.0 (0.0-1000.0).
-
min_distance(float): Discard boxes closer than this distance (m).- default: 0.0 (0.0-1000.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
HeadBoxFilterProcessor
Filter bounding boxes by estimated distance to the camera calculated from the HEAD box only.
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will filter.- default: combo.
-
coast_max_sec(float): Reuse the last head pose for at most this long after the last real measurement (s); 0 disables coasting.- default: 0.34 (0.0-10.0).
-
distance_jump(float): Distance EMA spike-gate: reject jumps larger than this (m).- default: 0.5 (0.0-1000.0).
-
distance_smooth_sec(float): EMA time constant for the distance reading (s); 0 disables distance smoothing.- default: 0.3 (0.0-10.0).
-
filter_args(dict): Filter init arguments.- default: {}.
-
head_box_smooth_sec(float): EMA time constant for pre-calculation head-box smoothing, traced as d_hbox (0 disables).- default: 0.3 (0.0-10.0).
-
max_age(float): Max age of a feature in seconds.- default: 60.0 (0.0-1000.0).
-
max_distance(float): Discard boxes farther than this distance (m).- default: 5.0 (0.0-1000.0).
-
min_distance(float): Discard boxes closer than this distance (m).- default: 0.0 (0.0-1000.0).
-
skeleton_gate(bool): Drop the head-pose correction when the skeleton facing class contradicts the pose yaw (front vs back); fall back to base head height. False applies the pose uncorrected..- default: True.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
SkeletonsToBoxesProcessor
Convert skeletons to face+body boxes, and discard them
Parameters
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
use_face(bool): Use face points to generate a face box.- default: False.
ZoneExclusionProcessor
Discard boxes whose contact point (center, top-center, bottom-center) is inside any "exclude" contour
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo|any): Type of boxes this processor will filter.- default: any.
-
contact_point(center|top_middle|bottom_middle|head|feet): Point to check for presence inside/outside the contour.- default: center.
-
filter_criteria(point_inside|area_intersection): Filter criteria: point inside or area intersection minimum percent.- default: point_inside.
-
min_area_percent(float): Minimum intersection percentage for the box to be considered for exclusion.- default: 0.0 (0.0-100.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Module camera
CameraFloorDrawingProcessor
Draws a projection of the xy camera plane onto the current snapshot.
Parameters
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
CameraIntrinsicCalibrationProcessor
Calibrate a camera intrinsic parameters using a checkerboard pattern.
Parameters
-
grid_x(int): Grid x size.- default: 10 (1-100).
-
grid_y(int): Grid x size.- default: 7 (1-100).
-
max_rms_error(float): Max. RMS error in calibration.- default: 2.0 (0.0-200.0).
-
min_points(int): Minimum number of captured points.- default: 50 (1-500).
-
recalibrate(bool): Recalibrate camera trigger calibration.- default: False.
-
square_size_mm(float): Square size in mm.- default: 30 (0.0-200.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
CameraParametersProcessor
Adjust the camera extrinsic parameters either by a 1 m. square on the ground or manually.
Parameters
-
calculate_square(trigger): Adjust translation and rotation based on the floor square.- default: False.
-
camera_h(float): Height from the camera to the ground where the square lays.- default: 2.0 (-50.0-50.0).
-
meter_square(polygon): A square of 1m sitting at 3m.- default: [].
-
position_x(float): Camera X position.- default: 0.0 (-1000.0-1000.0).
-
position_y(float): Camera Y position.- default: 0.0 (-1000.0-1000.0).
-
position_z(float): Camera Z position.- default: 0.0 (-1000.0-1000.0).
-
rotation_x(float): Camera X angle in degrees.- default: 0.0 (-360.0-360.0).
-
rotation_y(float): Camera Y angle in degrees.- default: 0.0 (-360.0-360.0).
-
rotation_z(float): Camera Z angle in degrees.- default: 0.0 (-360.0-360.0).
-
save_calibration(trigger): Save current calibration parameters.- default: False.
-
save_calibration_file(str): File where to save calibration parameters.- default: calibration.json.
-
square_d(float): Distance to the calibration square.- default: 3.0 (0.1-20.0).
-
square_l(float): Length in meters of the side of the calibration square.- default: 1.0 (0.1-20.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
CameraZonesAnnotatingProcessor
Draws contours and gates on the picture.
Parameters
-
draw_gate_limits(bool): Draw the gate arming (distance_threshold) and bounce_band radial limit rings around each gate for crossing diagnostics..- default: False.
-
gate_arm_radius(int): Arming/working radius in px to draw; match GateProcessor distance_threshold..- default: 70.
-
gate_bounce_radius(int): Bounce-band radius in px to draw; match GateProcessor bounce_band..- default: 28.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Scene3DViewerProcessor
Render a synthetic 3D scene window showing floor contours and tracked feetpoints.
Parameters
-
gaze_cone_half_angle_deg(float): Half-angle in degrees used to render the gaze cone in the synthetic 3D scene.- default: 18.0 (0.0-45.0).
-
gaze_cone_length_m(float): Length in meters of the gaze cone in the synthetic 3D scene.- default: 0.9 (0.1-5.0).
-
gaze_vector_length_m(float): Length in meters of the gaze direction vector in the synthetic 3D scene.- default: 0.9 (0.2-10.0).
-
grid_step_m(float): Spacing of the synthetic ground grid in meters.- default: 0.5 (0.1-5.0).
-
max_actor_height_m(float): Maximum actor height used by the synthetic scene renderer.- default: 2.2 (1.2-3.5).
-
max_world_distance_m(float): Clamp contour/gate backprojection to this floor distance from the camera.- default: 25.0 (1.0-100.0).
-
min_actor_height_m(float): Minimum actor height used by the synthetic scene renderer.- default: 1.0 (0.5-2.5).
-
mirror_coordinates(bool): Mirror synthetic scene coordinates horizontally around the camera center.- default: False.
-
scene_height(int): Height in pixels of the synthetic 3D scene window.- default: 720 (240-2160).
-
scene_margin_px(int): Outer padding for the synthetic 3D scene.- default: 48 (0-400).
-
scene_width(int): Width in pixels of the synthetic 3D scene window.- default: 960 (320-3840).
-
show_camera(bool): Draw the calibrated camera position on the synthetic 3D scene.- default: True.
-
show_gaze(bool): Draw head marker, gaze vector and cone when head pose is available.- default: True.
-
show_grid(bool): Draw a floor grid on the synthetic 3D scene.- default: True.
-
show_labels(bool): Draw labels for actors and contours on the synthetic 3D scene.- default: True.
-
show_screen(bool): Draw the calibrated screen plane on the synthetic 3D scene.- default: True.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
vertical_scale(float): Vertical exaggeration used for actor columns.- default: 1.0 (0.2-3.0).
-
view_iso_deg(float): Isometric projection angle for the synthetic 3D scene.- default: 30.0 (10.0-60.0).
-
view_rotation_deg(float): Rotation of the synthetic 3D scene around the floor plane.- default: 20.0 (-180.0-180.0).
Module comm
BoxToSimulatedMQTTProcessor
Publisher processor that outputs different box events to different MQTT paths
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: blob.
-
send_falloff(float): Seconds of falloff after sending event.- default: 2 (0-100).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
trigger_class(str): Class of the trigger.- default: sensor.
-
trigger_id(str): Id of the trigger.- default: 1.
MQTTPublishingProcessor
Publisher processor that outputs different box events to different MQTT paths
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: person.
-
minimal(bool): Only send box and hands, reducing packet size.- default: False.
-
send_biggest_n(int): Only send N biggest boxes.- default: 0 (0-100).
-
skel_send(str): Comma separated parts to send (hands,feet,chest) or 'none'.- default: hands.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
MessagingProcessor
Send (MQTT) messages for all entering and exiting Boxes. Message payload is of the form:
{
"sent-by": "messaging",
"class": "box",
"action": "in|out",
"boxtype": "face|person|blob|head",
"id": "abcdefg",
"tags": ["tag1", "tag2", "tag3"],
"camera": "camera name"
}
Parameters
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
OSCPublishingProcessor
Publisher processor that outputs different box events to different OSC messages
Parameters
-
box_state(any|entered): Only emit boxes in this stage state.- default: any.
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: face.
-
target_host(str): Target host for OSC messages.- default: 127.0.0.1.
-
target_port(int): Target port of OSC messages.- default: 15000.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
SingleTargetMQTTPublishingProcessor
Publisher processor that outputs different box events to different MQTT paths
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: person.
-
minimal(bool): Only send box and hands, reducing packet size.- default: False.
-
send_criteria(center|biggest): Only send center/biggest box.- default: biggest.
-
skel_send(str): Comma separated parts to send (hands,feet,chest) or 'none'.- default: hands.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
StageOSCPublishingProcessor
Publisher processor that outputs different box events to different OSC messages
Parameters
-
box_state(any|entered|entering|exiting|exited): Only emit boxes in this stage state.- default: entered.
-
target_host(str): Target host for OSC messages.- default: 127.0.0.1.
-
target_port(int): Target port of OSC messages.- default: 15000.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
StageTUIOPublishingProcessor
Publisher processor that outputs different box events to different TUIO messages
Parameters
-
box_state(any|entered|entering|exiting|exited): Only emit boxes in this stage state.- default: entered.
-
max_skeleton_speed(float): Maximum speed accepted to send skeleton hands.- default: 0.2 (0.0-1000.0).
-
skel_send(hands|chest|feet|full): Blob(s) to send for skeletons.- default: hands.
-
target_host(str): Target host for TUIO messages.- default: 127.0.0.1.
-
target_port(int): Target port of TUIO messages.- default: 15000.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
TUIOPublishingProcessor
Publisher processor that outputs different box events to different TUIO messages
Parameters
-
box_state(any|entered): Only emit boxes in this stage state.- default: any.
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: face.
-
image_path(str): Path where to dump snap images as FSEQ.jpg files (if set).- default: .
-
max_skeleton_speed(float): Maximum speed accepted to send skeleton hands.- default: 0.2 (0.0-1000.0).
-
skel_send(hands|chest|feet|full): Blob(s) to send for skeletons.- default: hands.
-
target_host(str): Target host for TUIO messages.- default: 127.0.0.1.
-
target_port(int): Target port of TUIO messages.- default: 15000.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
VirtualCamProcessor
Outputs video frames to a virtual camera device
Parameters
-
annotate(bool): Annotate the image with detection results.- default: False.
-
clip_h(int): Crop height from the center of the image (zero disables).- default: 0 (0-32000).
-
clip_w(int): Crop width from the center of the image (zero disables).- default: 0 (0-32000).
-
device(str): Device parameter for pyvirtualcam (default automatic).- default: None.
-
draw_floor(bool): Draw camera calibration floor on the image.- default: False.
-
virtualcam_driver(auto|v4l2loopback|obs|unitycapture): Force driver for the camera.- default: auto.
-
scale(float): Downscale the frame by this factor before sending (1.0 = full size). Unlike clip_w/clip_h, which crop away the edges, this keeps the whole field of view -- useful because the driver hands consumers a smaller frame anyway, so full-resolution bytes are discarded downstream..- default: 1.0 (0.1-1.0).
-
target_camera(str): For multicamera, camera name to send to the virtual camera.- default: None.
-
target_fps(int): Target FPS rate of the Virtual Camera.- default: 15 (5-60).
-
timecode(bool): Burn a machine-readable frame-number marker into the top-left corner, for measuring end-to-end display latency.- default: False.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
ZContoursProcessor
From the Z buffer, generate a mask between distance ranges. Also, calculate normals at every point and send the resulting mask to virtual camera.
Parameters
-
virtualcam_device(str): Device path (e.g. /dev/video12) for the camera.- default: None.
-
virtualcam_driver(auto|v4l2loopback|obs|unitycapture): Force driver for the camera.- default: auto.
-
max_z_threshold(int): Maximum z if using depth plane (mm).- default: 3000 (0-32768).
-
min_z_threshold(int): Minimum z if using depth plane (mm).- default: 1000 (0-32768).
-
target_fps(int): Target FPS rate of the Virtual Camera.- default: 15 (5-60).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Module detect
BlobsDetectorProcessor
Substract background and detect blobs on the image
Parameters
-
closing_kernel_size(int): Pixel radius for the closing used to reduce small dots (0 disables).- default: 6 (0-100).
-
max_box_area(float): Maximum area of a detected blob.- default: 1000000 (0.0-9.99e+100).
-
max_box_ratio(float): Maximum width/height ratio of a detected blob.- default: 4.0 (0.0-9.99e+100).
-
max_z_threshold(int): Maximum z if using depth plane.- default: 5000 (0-32768).
-
min_box_area(float): Minimum area of a detected blob.- default: 100 (0.0-9.99e+100).
-
min_box_ratio(float): Minimum width/height ratio of a detected blob.- default: 0.0 (0.0-10).
-
min_z_threshold(int): Minimum z if using depth plane.- default: 0 (0-32768).
-
opening_kernel_size(int): Pixel radius for the opening used to reduce small dots (0 disables).- default: 6 (0-100).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
plane(rgb|z): Color plane to use.- default: z.
BoxCounterProcessor
No description
Parameters
-
area_name(str): Name of the counter area.- default: Count Area.
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: face.
-
count_chunk_size(int): Number of samples to accumulate before emitting a count event.- default: 100.
-
outlier_filter_percentile(float): Percentile to filter outliers out (zero disables).- default: 0.1 (0.0-1.0).
-
report_post_url(str): URL where to POST counter updates.- default: None.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
BoxFinderProcessor
Detect bounding boxes for a single class of objects, with optional filtering by area and ratio.
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: face.
-
contour(square): Area of the image where to detect.- default: [].
-
filter_out_iou(float): Filter out boxes overlapping intersection-over-union more than the value (zero disables).- default: 0.4 (0.0-1.0).
-
maxarea(area): Maximum area in pixels of the box to be detected (=width x height).- default: 80000 (0-4194304).
-
minarea(area): Minimum area in pixels of the box to be detected (=width x height).- default: 3000 (0-160000).
-
minratio(float): Minumum ratio (height/width) for the box to be detected (e.g. in a face height > width).- default: 1.2 (0.0-10.0).
-
threshold(float): Threshold of acceptance for the network detection.- default: 0.5 (0.0-1.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
box_finder, defaults to FaceDetectionNetwork.
ClassDetectionProcessor
Run the given multiclass detector on the image, producing boxes filtered by minimum confidence.
Parameters
-
bottom_crop(int): Bottom crop area for detection.- default: 0 (0-4096).
-
classes(str): Classes to accept, comma separated (empty = all).- default: .
-
classes_set(str): Name of the class set (coco, peron-face-hand, yolov8...) or list of comma-separated classes.- default: coco.
-
maxarea(area): Maximum area in percent of the image or pixel area of the box to be detected (=width x height).- default: -1.0 (-1.0-4194304).
-
minarea(area): Minimum area in percent of the image or pixel area of the box to be detected (=width x height).- default: -1.0 (-1.0-160000).
-
policy(nooverlaps|bestofclass|none): Apply a reduction policy of keeping a single item per class, with best score.- default: none.
-
threshold(float): Threshold of acceptance for the network detection.- default: 0.25 (0.0-1.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
class_finder, defaults to SSDLiteObjectDetectionNetwork.
CounterProcessor
No description
Parameters
-
area_name(str): Name of the counter area.- default: Count Area.
-
count_chunk_size(int): Number of samples to accumulate before emitting a count event.- default: 100.
-
outlier_filter_percentile(float): Percentile to filter outliers out (zero disables).- default: 0.1 (0.0-1.0).
-
report_post_url(str): URL where to POST counter updates.- default: None.
-
split_mode(none|full): Wether to use sliding window to split the input image in chunks.- default: none.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
counter_network, defaults to CLIPCounterNetwork.
DepthBlobDetectorProcessor
Detect blobs in depth image.
Parameters
-
blob_area_max(int): Maximum blob area to accept.- default: 2097152 (0-16777216).
-
blob_area_min(int): Minimum blob area to accept.- default: 10 (0-16777216).
-
min_distance_between_blobs(int): Minumum distance between blobs.- default: 1 (0-2048).
-
morph_open_size(int): Size of the opening kernel to filter the depth image.- default: 10 (1-100).
-
threshold_max(int): Maximum distance threshold.- default: 30 (0-255).
-
threshold_min(int): Minumum distance threshold.- default: 10 (0-255).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
PoseHeadProcessor
Unified person-pose + head-bbox detector.
Runs a single 2-class YOLO pose+head model (e.g. person_pose_head_v1.0) and emits two box streams from one inference: - class 0: person box + 17 keypoints → BoxType.TYPE_SKELETON (configurable) - class 1: head bbox → BoxType.TYPE_HEAD
Replaces a SkeletonProcessor + ClassDetectionProcessor (heads) pair.
Parameters
-
emit_heads(bool): Emit class-1 detections as head boxes.- default: True.
-
emit_skeleton(bool): Emit class-0 detections as skeleton boxes.- default: True.
-
head_policy(nooverlaps|none): Reduction policy applied to head detections.- default: none.
-
identify(bool): Identify (assign id) to the skeletons.- default: True.
-
invert_lr(bool): Invert left and right keypoints.- default: True.
-
maxarea_head(area): Maximum area of a head box (-1 = disabled).- default: -1 (-1-4194304).
-
maxarea_person(area): Maximum area of a person/skeleton box.- default: 280000 (-1-4194304).
-
minarea_head(area): Minimum area of a head box (-1 = disabled).- default: -1 (-1-4194304).
-
minarea_person(area): Minimum area of a person/skeleton box.- default: 3000 (-1-4194304).
-
minpercent(float): Minimum percent (0-1) of valid keypoints to accept a skeleton.- default: 0.4 (0.0-1.0).
-
person_box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): BoxType assigned to class-0 (person/skeleton) detections.- default: skeleton.
-
short_raise(bool): Consider wrist higher than elbow a raised hand, else wrist higher than neck.- default: True.
-
threshold(float): Network confidence threshold.- default: 0.3 (0.0-1.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
pose_head_finder, defaults to YOLOV8PoseHeadNetwork.
SkeletonProcessor
Find persons and skeletal keypoints in an image.
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: skeleton.
-
identify(bool): Identify (add id) to the skeletons.- default: True.
-
invert_lr(bool): Invert left and right.- default: True.
-
maxarea(area): Maximum area as percentage of the image or pixel area of the box to be detected (=width x height).- default: 4194304 (-1-4194304).
-
minarea(area): Minimum area as percentage of the image or pixel area of the box to be detected (=width x height).- default: 2500 (-1-160000).
-
minpercent(float): Minumum percent (0-1) of valid keypoints to accept a skeleton.- default: 0.4 (0.0-1.0).
-
short_raise(bool): Consider wrist higher than elbow a raised hand, else wrist higher than neck.- default: True.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
skeleton_finder, defaults to YOLOV8PoseNetwork.
SlidingWindowClassDetectionProcessor
Find classes in the image, as blobs
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will emit.- default: head.
-
classes(str): Classes to accept, comma separated (empty = all).- default: .
-
classes_set(str): Name of the class set (coco, peron-face-hand, yolov8...) or list of comma-separated classes.- default: coco.
-
threshold(float): Threshold of acceptance for the network detection.- default: 0.25 (0.0-1.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
class_finder, defaults to SSDLiteObjectDetectionNetwork.
TopDepthBlobProcessor
Scan depth images for blobs between given distances. Used for person detection from a top-mounted looking straight down 3D camera.
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: person.
-
calibrated(bool): Check for recalibration.- default: False.
-
kernelsize(int): Kernel size for opening the detected image.- default: 5 (1-255).
-
maxarea(float): Maximum area in pixels of the box to be detected (=width x height).- default: 10000 (0-10000000).
-
max_threshold(float): Maximum threshold for blob detection.- default: 256.0 (0.0-255.0).
-
metric_unit(float): Divider to convert camera values to meters.- default: 1000.
-
minarea(float): Minimum area in pixels of the box to be detected (=width x height).- default: 20 (0-10000000).
-
min_threshold(float): Minimum threshold for blob detection.- default: 10.0 (0.0-255.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
box_finder, defaults to TopDepthPersonDetectionNetwork.
Module features
EncoderProcessor
Assigns and recognizes box ids based on vector encodings
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: face.
-
maximum_overlap_time(float): Maximum time during which we will assign an id because of a IOU overlap.- default: 2.0 (0.0-1.0).
-
minimum_distance_weight(float): Minimum weight to consider a cosine distance valid.- default: 0.5 (0.0-1.0).
-
minimum_overlap_percent(float): Minumum IOU overlap percent to consider two boxes the same.- default: 0.4 (0.0-1.0).
-
number_of_workers(int): Number of worker threads.- default: 2 (1-64).
-
purge_less_than_frames(int): Purge identifications only seen less than that number of frames during purge_older_than_secs.- default: 20 (0-200).
-
purge_older_than_secs(float): Purge identifications older than this and seen purge_less_than_frames.- default: 8.0 (0.0-60.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
FaceAgeGenderProcessor
Find age and gender for the snap face boxes, using separate networks for age and gender
Parameters
-
number_of_workers(int): Number of worker threads.- default: 2 (1-64).
-
recheck_interval(float): Period of re-measurement (seconds).- default: 1.0 (0.0-60.0).
-
data_updates(bool): Should we send data updates for each new value.- default: False.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
age, defaults to FaceAgeNetwork. - Network
gender, defaults to FaceGenderNetwork.
FaceAttentionProcessor
Calculate face attention as a percentage of total time looking to the camera surroundings.
Parameters
-
number_of_workers(int): Number of worker threads.- default: 2 (1-64).
-
recheck_interval(float): Period of re-measurement (seconds).- default: 1.0 (0.0-60.0).
-
data_updates(bool): Should we send data updates for each new value.- default: False.
-
straight_angle_limit(float): Maximum view angle that is considered being looking straight to the camera.- default: 25.0 (0.0-180.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
gaze, defaults to FaceGazeNetwork. - Network
pose, defaults to FacePoseNetwork.
FaceEmotionProcessor
Calculate dominant perceived emotional state
Parameters
-
number_of_workers(int): Number of worker threads.- default: 2 (1-64).
-
recheck_interval(float): Period of re-measurement (seconds).- default: 1.0 (0.0-60.0).
-
data_updates(bool): Should we send data updates for each new value.- default: False.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
emotion, defaults to FaceEmotionNetwork.
FaceEncoderProcessor
Assigns and recognizes box ids based on rotated face encodings
Parameters
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
landmarks, defaults to FaceLandmarksNetwork. - Network
identifier, defaults to FaceReidentificationNetwork.
FaceLandmarksProcessor
Retrieve landmarks and rotated face from the given face boxes in the snap.
Parameters
-
number_of_workers(int): Number of worker threads.- default: 2 (1-64).
-
recheck_interval(float): Period of re-measurement (seconds).- default: 1.0 (0.0-60.0).
-
save_rotated(bool): Save the rotated, warped face for later processing.- default: True.
-
data_updates(bool): Should we send data updates for each new value.- default: False.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
landmarks, defaults to FaceLandmarksNetwork.
FeatureMergeProcessor
Copies features from blob boxes to the nearest overlapping box of the given type. Decided via IoU matching.
Parameters
-
min_iou(float): Minimum overlap needed to assign a class to a box.- default: 0.1 (0.0-1.0).
-
target_box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes where the classes will be assigned to.- default: person.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
FrontFacingCounterProcessor
Approximate attention based on whether the face for a given person is detected or not.
Parameters
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
HeadPoseProcessor
Calculate head pose (rotation respect to the camera) Sets the "head_pose" Rotation feature on the boxes. Sets the "_yaw_pitch_roll" feature on the boxes.
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: head.
-
smooth_angles(bool): Smooth angles.- default: True.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
pose, defaults to FacePoseNetwork.
PersonAgeGenderProcessor
Find age and gender for the given face boxes
Parameters
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
age_gender, defaults to FaceAgeGenderVoloNetwork.
ScreenAttentionProcessor
Calculate face attention as a percentage of total time looking to the camera surroundings. Requires that boxes have a "_head_pose" feature set (set by DirectMHPNetwork or similar).
Parameters
-
head_pose_bias_auto(bool): Derive yaw bias automatically from the camera extrinsic tilt (calibration.json) instead of head_pose_bias_yaw_deg. Uses the empirical model in src/util/camera_bias.py..- default: True.
-
head_pose_bias_pitch_deg(float): Additive pitch correction (degrees), applied before smoothing..- default: 0.0 (-45.0-45.0).
-
head_pose_bias_roll_deg(float): Additive roll correction (degrees), applied before smoothing..- default: 0.0 (-45.0-45.0).
-
head_pose_bias_yaw_deg(float): Additive yaw correction (degrees), applied before smoothing. 0 = no correction..- default: 0.0 (-45.0-45.0).
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: head.
-
fallback_angle(float): Angle at which an unconfigured screen is considered to be being looked at.- default: 25.0 (0.0-180.0).
-
gaze_cone_coverage_mode(str): 'footprint' = intersection/footprint_area (legacy). 'normalized' = intersection/min(footprint_area, screen_area). Normalized mode is equivalent to footprint at close range and screen-coverage at far range..- default: normalized.
-
gaze_cone_half_angle_deg(float): Cone half-angle in degrees (cone mode only). Defaults to 8.0 to match DirectMHP yaw MAE. Larger = more tolerant; smaller = stricter..- default: 10.0 (0.5-45.0).
-
gaze_cone_hit_ratio(float): Cone-footprint overlap threshold in [0, 1] (cone mode only). 0.30 = 30%% of the cone's footprint must land on the screen..- default: 0.2 (0.0-1.0).
-
gaze_cone_n_samples(int): Number of cone-boundary samples used to form the footprint polygon (cone mode only). 32 balances accuracy vs speed..- default: 32 (8-128).
-
gaze_debug_csv(bool): Enable per-box CSV logging of gaze-hit intermediate values (slows FPS; for benchmarking)..- default: False.
-
gaze_hit_mode(ray|cone): Gaze hit-test mode. 'ray' = central-ray intersection (legacy). 'cone' = flashlight-cone footprint overlap test..- default: cone.
-
gaze_margin(float): Multiplier on screen half-size used for gaze-hit tolerance (1.0 = exact screen edges)..- default: 1.5 (0.1-5.0).
-
scene_bias_pitch_deg(float): Per-scene pitch correction (degrees), summed with the pitch from head_pose_bias_auto / head_pose_bias_pitch_deg. Default 0 = no overlay..- default: 0.0 (-45.0-45.0).
-
scene_bias_yaw_deg(float): Per-scene yaw correction (degrees), summed with the yaw from head_pose_bias_auto / head_pose_bias_yaw_deg. Produced by tools/calibrate_scene_bias.py. Default 0 = no overlay..- default: 0.0 (-45.0-45.0).
-
smooth_angles(bool): Enable circular-mean smoothing of yaw/pitch/roll before gaze evaluation..- default: False.
-
smooth_angles_min_samples(int): Minimum samples in window before smoothing kicks in; below this, raw angle passes through..- default: 3 (1-60).
-
smooth_angles_window_sec(float): Time window (seconds) for AngleSmoother. FPS-invariant: 0.2s covers ~5 frames @25fps..- default: 0.2 (0.0-5.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
SelectiveAgeGenderProcessor
Detect a single candidate age and gender, picking one per frame from the global stage in order of descending face box area.
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes to process.- default: face.
-
keypoint_min_conf(float): Minimum per-keypoint confidence to trust a skeleton keypoint for body-orientation derivation..- default: 0.3.
-
lock_pitch_deg(float): Additional lock condition on pitch: a PASS only locks the commit if |ema_pitch| is also below this. Prevents downward-looking misclassifications from anchoring the gender result. Set to 90 to disable..- default: 90.0.
-
lock_quality_deg(float): Initial-lock threshold: an actor's first PASS only locks the commit if |ema_yaw| is below this. Earlier PASSes still commit features but don't lock — every subsequent PASS overwrites until a high-quality one arrives and locks. Set to a large value (e.g. 90) to lock on the very first PASS like before..- default: 30.0.
-
log_raw_pose(bool): Log raw yaw/pitch/roll for every head candidate evaluated each frame. Diagnostic..- default: False.
-
max_abs_pitch_deg(float): Skip candidate if |pitch| exceeds this (degrees). Only applied when _yaw_pitch_roll is present on the box..- default: 50.0.
-
max_abs_yaw_deg(float): Skip candidate if |yaw| exceeds this (degrees). Only applied when _yaw_pitch_roll is present on the box..- default: 90.0.
-
max_abs_yaw_deg_relaxed(float): Relaxed |yaw| gate that applies when the skeleton independently confirms a sideways body pose facing the camera. Falls back to PARAM_MAX_ABS_YAW when no usable skeleton is available..- default: 75.0.
-
max_ttl(float): Maximum time to live for a box before it is discarded.- default: 10.0 (0.0-360.0).
-
min_actor_frames(int): Minimum number of frames an actor must be evaluated before age/gender inference is attempted. Filters out ghost tracks that appear briefly. Set to 0 to disable (classify on first eligible frame)..- default: 0.
-
min_face_size(int): Minimum face size in pixels to classify a face candidate. Set to 0 to disable..- default: 64.
-
min_frontal_frames(int): Minimum consecutive frames the raw pose must stay within the frontal zone before a candidate is accepted. Resets to 0 whenever the pose gate fires..- default: 3.
-
min_pose_score(float): Skip candidate if its DirectMHP _pose_score is below this threshold. Default matches DirectMHP's own internal filter; raise via INI to be more conservative..- default: 0.5.
-
pose_max_jump_deg(float): Reject a raw yaw reading whose circular distance from the previous accepted raw yaw exceeds this. Guards against DirectMHP back-of-head sign flips. Set <=0 to disable..- default: 45.0.
-
pose_max_consecutive_rejects(int): After this many consecutive velocity-gate rejections, accept the next reading regardless of jump magnitude. Prevents permanent freeze on legitimate fast head turns..- default: 5.
-
pose_smooth_min_samples(int): Minimum samples before AngleSmoother's MAD outlier check kicks in. Bootstrap frames are accepted..- default: 3.
-
pose_smooth_window(int): AngleSmoother window size (frames) used purely as a MAD-based outlier validator on raw yaw/pitch/roll per head box.id. The smoothed output is discarded; only the per-sample outlier verdict is consumed..- default: 7.
-
quality_improve_deg(float): First-PASS-locks: once an actor has a committed age/gender, only overwrite if the new PASS has |ema_yaw| at least this many degrees lower (more frontal) than the locked-in PASS. Set to a large value (e.g. 200) to never overwrite; set to 0 to always overwrite..- default: 15.0.
-
shoulder_ratio_sideways(float): |L_SHO.x - R_SHO.x| / head_w below which the body is considered sideways (shoulders project narrowly in image space)..- default: 0.5.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
use_body(bool): Use face and body picture with the network. Off by default: the current model (mivolo_v1_lagenda.onnx) does not use its body input at all — see devdocs/reports/agegender-mivolo-body-channel-dead.md. Kept (rather than removed) so a working dual-input checkpoint can be dropped in later without redoing this plumbing..- default: False.
Networks
- Network
age_gender_network, defaults to FaceAgeGenderVoloNetwork.
SelectiveInferenceProcessor
Superclass for processors acting on the global stage. Override and implement a metric to define order of box processing. One box will be processed per frame.
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes to process.- default: face.
-
max_ttl(float): Maximum time to live for a box before it is discarded.- default: 10.0 (0.0-360.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
SelectivePoseBasedAgeGenderProcessor
Detect a single candidate age and gender per frame, gating each head on the
attached YOLO skeleton's keypoint confidences and geometry instead of a
DirectMHP _yaw_pitch_roll reading.
The gate is a cheap, robust reject decision (not degree-accurate pose):
- Visibility (hard): nose + BOTH eyes confident. Requiring both eyes removes looking-away and hard profiles at zero marginal cost.
- Frontality: eye/ear symmetry asymmetry below
max_asymmetry. - Resolution: inter-ocular pixel distance above
min_interocular_px(in addition to themin_face_sizebox gate inmetric(), which runs even earlier and silently excludes a candidate from ever reaching this gate at all). - Frontal hysteresis: stay inside the gate
min_frontal_framesframes. - Best-frame commit-lock: classify once per track, locking on the frame
with the lowest asymmetry (
asymmetryreplaces|yaw|from the DirectMHP-basedSelectiveAgeGenderProcessor).
All frontality geometry lives on :meth:Skeleton.head_frontality.
Parameters
-
allow_profile(bool): Also accept side/profile views (one eye + its same-side ear confidently visible -- see Skeleton.head_frontality) for classification, not just frontal faces. Off by default (opt-in; introduced alongside a coverage/accuracy benchmark -- see devdocs/reports). A profile PASS is always ranked worse than an accepted frontal one and never locks, so a later frontal read for the same track still wins if one appears..- default: False.
-
allow_sideways_body(bool): When require_body_facing is on, don't veto a candidate whose shoulders project narrowly in image space (see shoulder_ratio_sideways) as 'facing away' -- a near-perpendicular shoulder line makes the l_sho.x/r_sho.x sign essentially noise, so treat it as a genuine side-on body pose instead of a confident back-turn. Off by default (opt-in, unvalidated at scale); pairs with allow_profile to admit real side-view candidates that require_body_facing otherwise blocks the same way as someone with their back to the camera. Ported from SelectiveAgeGenderProcessor's body_sideways signal..- default: False.
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes to process.- default: face.
-
head_kpt_min_conf(float): Minimum per-keypoint confidence for nose/eye/ear landmarks to be trusted in the frontality gate (tier-1 visibility threshold). Raised from 0.4 after a 3kids/5guys threshold sweep confirmed 0.4 let low-confidence back-of-head keypoints pass as a spuriously symmetric "frontal" face; see devdocs/reports/agegender-independent-mot-accuracy-thisbranch-vs-develophead.md..- default: 0.6.
-
keypoint_min_conf(float): Minimum per-keypoint confidence to trust a shoulder keypoint for the body-facing corroboration..- default: 0.3.
-
lock_asymmetry(float): Initial-lock threshold: an actor's first PASS only locks the commit if its asymmetry is below this. Earlier PASSes still commit features but don't lock. Set to a large value (e.g. 1.0) to lock on the very first PASS..- default: 0.15 (0.0-1.0).
-
log_gate(bool): Log the per-candidate gate decision each frame. Diagnostic..- default: False.
-
max_asymmetry(float): Skip candidate if its eye/ear frontality asymmetry (0=frontal, 1=profile) exceeds this. The yaw proxy..- default: 0.25 (0.0-1.0).
-
max_ttl(float): Maximum time to live for a box before it is discarded.- default: 10.0 (0.0-360.0).
-
min_actor_frames(int): Minimum number of frames an actor must be evaluated before age/gender inference is attempted. Filters out ghost tracks that appear briefly. Set to 0 to disable..- default: 0.
-
min_face_size(int): Minimum face size in pixels to classify a face candidate. Set to 0 to disable. Lowered from 64 to 30 -- at 64 this silently excluded candidates (no log tag, rejected in metric() before process_candidate ever runs); see the fvstore4 PID 6 investigation in devdocs/reports..- default: 30.
-
min_frontal_frames(int): Minimum consecutive frames the pose must stay within the frontal gate before a candidate is accepted. Resets to 0 whenever the gate fires..- default: 3.
-
min_interocular_px(int): Skip candidate if inter-ocular distance (px) is below this usable-resolution floor. 0 disables (rely on min_face_size)..- default: 15.
-
quality_improve(float): First-PASS-locks: once an actor has a committed age/gender, only overwrite if the new PASS asymmetry is at least this much lower (more frontal) than the locked one. Set to 0 to always overwrite..- default: 0.03 (0.0-1.0).
-
require_body_facing(bool): Reject a candidate when the skeleton shoulders confidently indicate the body faces AWAY from the camera (subject's left shoulder appears on the camera's left). The face keypoints can still fire on a turned/back head, so this kills back-of-head admits the frontality metric alone lets through. Skipped when no confident shoulder pair is available..- default: True.
-
shoulder_ratio_sideways(float): |L_SHO.x - R_SHO.x| / box width below which the body is considered genuinely side-on rather than confidently facing away. Only consulted when allow_sideways_body is on. Matches SelectiveAgeGenderProcessor's shoulder_ratio_sideways default..- default: 0.5.
-
strict_body_facing(bool): When require_body_facing is also on, reject unless the shoulders CONFIRM facing-camera (not just 'not confirmed facing away'). Closes the gap where no confident shoulder pair is available at all -- the exact situation the 3kids back-of-head false-frontal read slipped through in (see devdocs/reports/agegender-3kids-gender-accuracy-fixes.md). Off by default: this is a stricter, unvalidated-at-scale opt-in that trades coverage (candidates with occluded/out-of-frame shoulders get rejected too) for safety against this class of false positive..- default: False.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
use_body(bool): Use face and body picture with the network. Off by default: the current model (mivolo_v1_lagenda.onnx) does not use its body input at all — see devdocs/reports/agegender-mivolo-body-channel-dead.md. Kept (rather than removed) so a working dual-input checkpoint can be dropped in later without redoing this plumbing..- default: False.
-
vote_commit(bool): Pool the firstvote_max_samplesPASS frames per actor and commit the frontality-weighted majority gender + weighted median age, instead of taking whichever single frame scored the best asymmetry. Best-frame commit lets one marginally more frontal frame overwrite a correct categorical label (observed M->F relocks on 5guys and gelateria2). Off by default..- default: False.
-
vote_max_samples(int): Inference budget per actor when vote_commit is on. Each MiVOLO v2 call costs ~100ms-1s, so this is a hard cap: once spent the actor stops inferring entirely. Gender is already 100% on the benchmark set at 2; measured fps is flat up to 20 (the gate admits few enough frames that the budget rarely binds), so this is set for age, which is the metric that actually moves..- default: 3 (1-50).
Networks
- Network
age_gender_network, defaults to FaceAgeGenderVoloNetwork.
Module filters
FeatureFilterProcessor
Filter the given feature using the given parameters.
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Box type to process features for.- default: combo.
-
feature_id(str): Feature ID to filter.- default: _head_pose.
-
filter_args(dict): Filter init arguments.- default: {}.
-
filter_type(float|vector|angle|quaternion): Filter type to apply.- default: angle.
-
max_age(float): Max age of a feature in seconds.- default: 60.0 (0.0-1000.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Module globalstage
ActorAgeGenderProcessor
Detect a single candidate age and gender, picking one per frame from the global stage in order of descending face box area.
Parameters
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
use_body(bool): Use face and body picture with the network. Off by default: the current model (mivolo_v1_lagenda.onnx) does not use its body input at all — see devdocs/reports/agegender-mivolo-body-channel-dead.md. Kept (rather than removed) so a working dual-input checkpoint can be dropped in later without redoing this plumbing..- default: False.
Networks
- Network
age_gender_network, defaults to FaceAgeGenderVoloNetwork.
ActorInZoneProcessor
Track boxes hitting into/out of a certain contour
Parameters
-
box_position(center|topcenter|bottomcenter): Position on the box to locate inside/outside the area.- default: bottomcenter.
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will use for the detection.- default: person.
-
contour(polygon): Contour Polygon where to detect entrance.- default: [].
-
contour_name(str): Name of the detection contour.- default: contour.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
ActorMultiZoneProcessor
Preserve current and previous zones of an actor. Needs "_gate_contour" feature to be set by GateProcessor. Sets actor.features["current_zone"] and actor.features["last_zone"]
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will use for the detection.- default: combo.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
StageLoaderProcessor
Load IDENTIFIED person and face boxes into actors
Parameters
-
actor_box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of actor boxes to use as actor basis.- default: person.
-
debug_boxes(bool): Generate debug boxes for annotation.- default: True.
-
exit_time_interval(float): Time to wait to consider an actor out of stage.- default: 6.0 (0.0-600).
-
ingress_time_interval(float): Time to wait to consider an actor in stage.- default: 3.0 (0.0-60).
-
lost_time_interval(float): Time to wait to consider an actor lost.- default: 2.0 (0.0-60).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
track_face_boxes(bool): Add identified faces to actors.- default: True.
StageReadingProcessor
Superclass for processors acting on the global stage. Override and implement a metric to define order of box processing. One box will be processed per frame.
Parameters
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
StageReportProcessor
Report stage status and events like actor entrances exits.
Parameters
-
debug_boxes(bool): Generate debug boxes for annotation.- default: True.
-
enable_http(bool): Enable HTTP POSTing of stage to send_status_post_url.- default: False.
-
enable_mqtt(bool): Enable MQTT sending to user-defined channel send_status_mqtt_channel.- default: False.
-
is_view_time_interval(float): Minimum attention time to consider presence a view event.- default: 2.0 (0.0-60).
-
send_status_mqtt_channel(str): Use this MQTT channel instead of the default one for status messages.- default: /vision.
-
send_status_post_url(str): Send a HTTP POST (JSON) request with the whole stage info every send_status_time_interval..- default: http://localhost:8085.
-
send_status_time_interval(float): Send a MQTT status packet with the whole stage info every time interval. Zero disables..- default: 1.0 (0.0-60.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Module image
ImageCircleCropProcessor
Clip an image region and black out outside. Useful as a preprocessing step to blank outside interferences.
Parameters
-
dx(int): Pixels of center x offset.- default: 0 (-10000-10000).
-
dy(int): Pixels of center x offset.- default: 0 (-10000-10000).
-
radius(int): Radius of the circle.- default: 300.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
plane(rgb|z): Color plane to use.- default: z.
ImageRegionProcessor
Clip an image region and black out outside. Useful as a preprocessing step to blank outside interferences.
Parameters
-
contour(polygon): Polygon area of the image to clip.- default: [].
-
crop(bool): Crop the boundaries of the contour.- default: True.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
ZDepthFilterProcessor
Mask the RGB image of the snapshot using the Z (depth) image, clipping between two intervals.
Parameters
-
threshold_max(float): Maximum distance threshold.- default: 3000 (0-4294967296).
-
threshold_min(float): Minumum distance threshold.- default: 1000 (0-4294967296).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Module tag
AreaEnterExitProcessor
Track boxes entering/exiting a given area limiting boundary.
Parameters
-
area_name(str): Name of the area.- default: Area1.
-
box_position(center|topcenter|bottomcenter): Position on the box to locate inside/outside the area.- default: center.
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will use for the detection.- default: head.
-
report_post_period(float): Period of POST updates, in seconds.- default: 30.0 (0.0-1000.0).
-
report_post_url(str): URL where to POST counter updates.- default: None.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
AreaHitProcessor
Track tracked boxes hitting into/out of a certain contour/gate
Parameters
-
bounce_band(int): Bounce band width where no count is made.- default: 28.
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: combo.
-
counter_type(contour|gate): Type of counter to use.- default: gate.
-
distance_threshold(int): Distance threshold to consider a box as entering/exiting.- default: 70.
-
enable_events(bool): Enable events to be sent to the MQTT broker.- default: True.
-
contact_point(center|top_middle|bottom_middle|head|feet): Point to check for presence inside/outside the contour.- default: feet.
-
hysteresis_frames(int): Number of frames to wait before counting a double crossing.- default: 8.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
AreaTaggerProcessor
Add a tag to any boxes whose center point (or top center or bottom center) enter the area of interest.
Parameters
-
area(polygon): Detection area for tag.- default: None.
-
box_position(center|topcenter|bottomcenter): Position on the box to locate inside/outside the area.- default: bottomcenter.
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: face.
-
tag(str): Tag to mark on area hit.- default: tag1.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
DoorCounterProcessor
Track boxes passing a door and inside a given contour.
Parameters
-
area_limit(int): Maximum number of persons this area allows.- default: 10.
-
area_name(str): Name of the area this door enters or exits.- default: area1.
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: person.
-
door(polygon): Polygon representing the entry door.- default: [[0, 240], [640, 240]].
-
door_name(str): Name of the door.- default: door1.
-
inside(square): Square to mark the inside area (centroid will be used).- default: [[320, 400], [330, 400], [330, 410], [320, 410]].
-
remove_timeout(float): Timeout (seconds) for stale boxes to be removed.- default: 10.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
track_bottom(bool): Count crossings at the feet, instead of the center of the person box.- default: True.
GateProcessor
Tracks entrances and exits of gates and zones. Allows to send events when a box enters/exits a gate or zone.
Parameters
-
bounce_band(int): Bounce band width where no count is made.- default: 28.
-
bounce_band_cm(float): bounce_band in real-world centimetres, converted to pixels local to the gate via the camera calibration. None (default) keeps the pixel constant (bounce_band) unconditionally; requires a calibrated camera to take effect..- default: None.
-
box_target(center|top_middle|bottom_middle|head|feet): Target point of the box to track.- default: feet.
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo|any): Type of boxes this processor will filter.- default: combo.
-
confirm_max_duration_s(float): A candidate open longer than this without confirming is discarded as inconclusive. A safety valve, not the typical confirmation latency -- a real slow crossing can legitimately take tens of seconds to clear the bounce band (e.g. someone browsing near a zone boundary)..- default: 45.0 (0.1-120.0).
-
confirm_min_frames(int): Minimum reliable, new-side samples a crossing candidate needs before it can confirm (fire)..- default: 2 (1-50).
-
counter_type(contour|gate): Type of counter to use.- default: gate.
-
csv_log(bool): Log crossing events to a CSV file for diagnostics.- default: False.
-
debug_feet_stages(bool): Store post-Gate-EMA point for debug visualization.- default: False.
-
diag_csv(bool): Write per-frame diagnostic CSV for contour crossing analysis.- default: False.
-
distance_threshold(int): Distance threshold to consider a box as entering/exiting.- default: 70.
-
distance_threshold_cm(float): distance_threshold in real-world centimetres, converted to pixels local to the gate via the camera calibration. None (default) keeps the pixel constant (distance_threshold) unconditionally; requires a calibrated camera to take effect..- default: None.
-
enable_events(bool): Enable events to be sent to the MQTT broker.- default: True.
-
head_vel_ema(float): EMA alpha for head velocity smoothing.- default: 0.4.
-
hysteresis_frames(int): Number of frames to wait before counting a double crossing.- default: 8.
-
idswap_speed_mps(float): Min world-space feetpoint speed (m/s) implied between a crossing candidate's first and most recent sample for it to be rejected as an ID-swap teleport rather than a genuine crossing. Walking is ~1.5, running ~6; teleports are hundreds..- default: 8.0 (0.0-1000.0).
-
min_reliable_confidence(float): Minimum Phase 3reliability(SmoothFeetProcessor) for a sample to count as confirming evidence -- a source-switch frame reads low and is excluded, not voted against the crossing..- default: 0.5 (0.0-1.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
TryOnProcessor
Virtual Try-On Processor
Sets up a table contour for pick and place actions
Parameters
-
bistate_frames(int): Number of frames of delay for pick/place trigger.- default: 10.
-
box_try_on_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of box where the pickables should be inside-of to be considered a try-on.- default: face.
-
pickables(str): Comma separated list of pickable classes.- default: glasses1,glasses2,glasses3.
-
table_contour(polygon): Polygon of the pick/place table.- default: [[0.0, 0.5], [1.0, 0.5], [1.0, 1.0], [0.0, 1.0]].
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
use_global_stage(bool): Use boxes from the global stage.- default: True.
Module tracking
AreaKalmanTrackingProcessor
Kalman based box tracking with delimited areas of tracking and areas where no trackers are expected to be "born" (e.g. you don't expect someone to appear from nowhere in the middle of the frame).
Parameters
-
association_iou(float): Minimum IOU overlap percent for a track to match a tracker.- default: 0.3 (0.0-1.0).
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: person.
-
max_age(int): Maximum age in FRAMES for a tracklet to survive.- default: 50 (0-9999).
-
min_hits(int): Minimum number of hits for a tracklet to survive.- default: 3 (0-1000).
-
no_birth_area(polygon): Area of the image where no trackers should appear.- default: [].
-
re_association_distance(float): Re-association distance to re-match an unmatched detection.- default: 50 (0.0-200).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
tracking_area(polygon): Area of the image where to track.- default: [].
BoxOverlapIdentifierProcessor
Assigns and recognizes box ids based on simple IOU overlap
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: person.
-
discard_older_than(float): Discard seen boxes when more than (secs) have passed.- default: 3 (0-9999).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
update_iou(float): Minumum IOU between frames to preserve stable coordinates.- default: 0.8 (0.0-1.0).
FaceInsidePersonIdentifierProcessor
Assigns and recognizes faces inside person boxes and matches their IDs if possible.
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes for the person container (person, topbody, etc).- default: person.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
KalmanTrackingProcessor
Basic Kalman-based Tracking Processor
Parameters
-
association_iou(float): Minimum IOU overlap percent for a track to match a tracker.- default: 0.3 (0.0-1.0).
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: person.
-
max_age(float): Maximum age in FRAMES for a tracklet to survive.- default: 3.0 (0-999).
-
min_hits(int): Minimum number of hits for a tracklet to survive.- default: 3 (0-1000).
-
re_association_distance(float): Re-association distance to re-match an unmatched detection.- default: 50 (0.0-20000).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
ReidentifierProcessor
DNN-embedding based reidentification processor @deprecated
Parameters
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
SmoothFeetProcessor
Extract feet position from combo boxes and smooth it.
Parameters
-
anchor_ky(float): Vertical anchor offset into head bbox (fraction of h_px).- default: 0.2 (0.0-0.5).
-
ankle_ema_tolerance_m(float): Max |ankle_height - EMA| (m) to accept ankle-height HEIGHT COMMIT. Additive to the basic plausibility range check. Does NOT gate or delay runtime ankle midpoint feetpoint usage..- default: 0.3 (0.05-1.0).
-
ankle_floor_offset_m(float): Ankle-to-floor offset in meters (ankles are above ground).- default: 0.08 (0.0-0.2).
-
ankle_geometry_check_enable(bool): Reject ankle keypoints that fail anatomical sanity (ankle below knee below hip). Defends against pose-net hallucination on occluded ankles..- default: True.
-
ankle_height_enable(bool): Enable one-shot ankle-based height capture when both ankles visible.- default: True.
-
ankle_height_max_m(float): Maximum plausible person height (m) for ankle capture.- default: 2.2 (1.5-2.5).
-
ankle_height_min_m(float): Minimum plausible person height (m) for ankle capture.- default: 1.0 (0.5-1.5).
-
ankle_midpoint_enable(bool): Use ankle midpoint as highest-priority runtime feetpoint source when reliable.- default: True.
-
ankle_midpoint_min_conf(float): Minimum per-ankle keypoint confidence for ankle midpoint runtime source.- default: 0.5 (0.1-1.0).
-
bbox_filter(bool): Enable EMA filtering of head bbox before projection.- default: True.
-
bestk(bool): Enable best-K sample aggregation for freeze.- default: False.
-
bestk_k(int): Number of top-quality samples to keep.- default: 10 (3-50).
-
bestk_min_gap(int): Min frame gap between kept samples (diversity constraint).- default: 3 (1-50).
-
bestk_min_span(int): Min frame span between first and last top-K sample to allow freeze.- default: 30 (5-500).
-
bypass_delta_thresh(float): Min screen-space feetpoint jump (px) to trigger source-switch bypass. 0=always bypass.- default: 30.0 (0.0-200.0).
-
csv_log(bool): Enable CSV debug logging of feet metrics (slows FPS).- default: False.
-
debug_feet_stages(bool): Store pre-smooth feetpoint for debug visualization.- default: False.
-
elliptical_width(bool): Use elliptical yaw-aware width model.- default: False.
-
feet_smooth_adaptive(bool): Use adaptive alpha based on innovation magnitude.- default: False.
-
feet_smooth_alpha(float): EMA alpha for world-XY feetpoint smoothing (0=OFF, 1=no smoothing).- default: 0.18 (0.0-1.0).
-
feet_smooth_alpha_max(float): Adaptive: max alpha (light smoothing for large moves).- default: 0.5 (0.01-1.0).
-
feet_smooth_alpha_min(float): Adaptive: min alpha (heavy smoothing for small moves).- default: 0.08 (0.01-1.0).
-
feet_smooth_innov_thresh(float): Adaptive: innovation threshold (m) for alpha ramp.- default: 0.15 (0.01-1.0).
-
freeze_tolerance(float): Freeze variance tolerance as fraction of ref height 1.70m (e.g. 0.10 = 10%).- default: 0.05 (0.01-0.3).
-
geo_alpha_floor(float): Minimum geo weight floor (lambda) for soft gate alpha scaling.- default: 0.0 (0.0-1.0).
-
geo_cy_max(float): Max normalized cy (head_cy/img_h) for learning.- default: 0.85 (0.0-1.0).
-
geo_gate(bool): Enable geometric sample gating for learning (depth + cy).- default: False.
-
geo_max_depth(float): Max depth (m) for learning samples.- default: 15.0 (0.5-50.0).
-
geo_soft(bool): Use soft geometric weight instead of hard reject.- default: False.
-
head_d(float): Head depth front-to-back (m).- default: 0.195 (0.12-0.28).
-
head_h(float): Head height top-to-chin (m).- default: 0.23 (0.15-0.3).
-
head_w(float): Head width ear-to-ear (m).- default: 0.155 (0.1-0.25).
-
h_px_gamma(float): Gamma exponent for H_proj shrinkage curve.- default: 0 (0-2.0).
-
h_px_ref(float): Reference h_px for distance-aware H_proj shrinkage (0=disabled).- default: 0 (0-500).
-
h_px_shrink_floor(float): Minimum shrinkage floor (prevents over-correction).- default: 0.85 (0.5-1.0).
-
max_samples(int): Maximum number of samples to use for feet estimation.- default: 15 (0-100).
-
min_distance(float): Minimum distance to the camera to consider for feet estimation.- default: 10.0 (0-100).
-
postfreeze_max_height_jump(float): Max allowed height change (m) when replacing frozen height.- default: 0.15 (0.01-0.5).
-
postfreeze_quality_margin(float): Min quality score improvement to replace frozen height.- default: 0.05 (0.0-0.5).
-
postfreeze_refine(bool): Enable post-freeze height refinement (best-accepted-measurement policy).- default: False.
-
projection_mode(str): Projection mode: hinted, pinhole, hinted_anchor.- default: hinted_anchor.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
uncal_head_multiplier(float): Head-heights below head bottom to estimate feet when uncalibrated and no ankles visible.- default: 6.0 (1.0-12.0).
-
use_model_head_height(bool): Prefer the detector's per-model head height hint (_model_head_height box feature) over head_h when present.- default: True.
-
yaw_blend(bool): Enable yaw-aware width/height fusion downweighting.- default: False.
-
yaw_blend_scale(float): Yaw scale for width trust rolloff (higher=faster).- default: 1.0 (0.5-3.0).
TaggedDoorCounterProcessor
Track boxes hitting into/out of a certain contour
Parameters
-
area_name(str): Name of the area this door enters or exits.- default: area1.
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: person.
-
remove_timeout(float): Timeout (seconds) for stale boxes to be removed.- default: 15.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
TrackingProcessor
Tracking processor with configurable tracker.
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: person.
-
coast_frames(int): Frames to keep emitting a predicted (coasted) PLACEHOLDER box for a recently-confirmed track that the tracker stopped returning, so the Stage actor is not retired during a short occlusion gap (0=disabled). Keep <= the tracker's lost window (max_time_lost = fps/30*track_buffer) to avoid double-counting if the subject reappears under a new id..- default: 0 (0-100).
-
debug_boxes(bool): Generate debug boxes for annotation.- default: True.
-
default_tracker(basic|ucmc|botsort|bytetrack|ocsort|neotracker|headtracker): Default tracker to use.- default: ucmc.
-
fallback_tracker(basic|ucmc|botsort|bytetrack|ocsort|neotracker|headtracker): Fallback tracker to use if default tracker cannot be used.- default: basic.
-
fallback_tracker_params(dict): Extra fallback tracker parameters, passed to constructor.- default: {}.
-
max_age(float): Maximum life in seconds for a lost tracklet to be removed.- default: 5.0 (1.0-20.0).
-
preserve_skeletons(bool): Whether or not to preserve skeleton frames.- default: False.
-
suppress_untracked(bool): Drop boxes whose tracked sub-box was not returned (confirmed) by the tracker, so unconfirmed/lost tracks do not leak downstream carrying an unstable id.- default: False.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
tracker_params(dict): Extra tracker parameters, passed to constructor.- default: {}.
Networks
- Network
reid_embedder, defaults to ReidentificationNetwork.
Module transform
SkeletonToUpperBodyBoxProcessor
Processor that converts skeleton keypoints to upper body bounding boxes.
Parameters
-
replace_skeletons(bool): Replace skeletons with upper body boxes.- default: False.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Module retired (deprecated)
APIReportingProcessor
Generate HTTP(s) calls on box enter/exit states. @deprecated
Parameters
-
api_url(string): Reporting API endpoint.- default: http://api.end.pt.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
GridBasedCalibrationProcessor
@deprecated Grid based calibration for Broox Media Player tactile detection. Deprecated product. Do not use.
Parameters
-
calibration(showcam|grid|bypass|calibrated): Fire calibration manually.- default: bypass.
-
max_frame_count(int): Number of frames for calibration.- default: 300 (1-10000).
-
stream_outfile(string): Full path of the wall.jpg file.- default: /tmp/wall.jpg.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
LightTrackingProcessor
@deprecated: Used to control an array of lights to react to people passing.
Parameters
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
MappingProcessor
@deprecated Processor that maps coordinates over a 0-1 line over the defined contour
Parameters
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
PersonFaceStageProcessor
@deprecated Keep track of ingressing person and face boxes in a virtual "stage", setting its box.state (entering, entered, exiting, exited...) Specialized version of StageProcessor
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: face.
-
exit_time_interval(float): Time to wait to consider a box out of stage.- default: 3.0 (0.0-60).
-
ingress_time_interval(float): Time to wait to consider a box in stage.- default: 1.0 (0.0-60).
-
is_view_time_interval(float): Minimum attention time to consider presence a view event.- default: 2.0 (0.0-60).
-
send_status_post_url(str): Send a HTTP POST (JSON) request with the whole stage info every send_status_time_interval..- default: None.
-
send_status_time_interval(float): Send a MQTT status packet with the whole stage info every time interval. Zero disables..- default: 1.0 (0.0-60.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
StageProcessor
@deprecated Keep track of ingressing boxes in a virtual "stage", setting its box.state (entering, entered, exiting, exited...)
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: face.
-
exit_time_interval(float): Time to wait to consider a box out of stage.- default: 3.0 (0.0-60).
-
ingress_time_interval(float): Time to wait to consider a box in stage.- default: 1.0 (0.0-60).
-
is_view_time_interval(float): Minimum attention time to consider presence a view event.- default: 2.0 (0.0-60).
-
send_status_post_url(str): Send a HTTP POST (JSON) request with the whole stage info every send_status_time_interval..- default: None.
-
send_status_time_interval(float): Send a MQTT status packet with the whole stage info every time interval. Zero disables..- default: 1.0 (0.0-60.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Module base
Common Processor Parameters
-
display(bool): Show processor on a system window.- default: False.
-
display_extra(bool): Show processor DEBUG output in a window.- default: False.
-
enabled(bool): Enable processor.- default: True.
-
max_fps(float): If processing more than this fps, bypass processor (zero or less disables).- default: -1.0.
-
stream(bool): Show in browser.- default: False.
-
tags(str): Apply this processor only to boxes with the given tags.- default: None.
BoxParallelProcessor
Superclass for a thread-pool parallelizing processor with minimum-interval checking
Parameters
-
number_of_workers(int): Number of worker threads.- default: 2 (1-64).
-
recheck_interval(float): Period of re-measurement (seconds).- default: 1.0 (0.0-60.0).
-
data_updates(bool): Should we send data updates for each new value.- default: False.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
NullProcessor
Pass-through processor: returns the input snap unchanged.
Parameters
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
SampleParametersProcessor
Demo processor for all kinds of parameters. Does nothing.
Parameters
-
area(area): Area as either px x px or % of the image.- default: 0.
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: face.
-
float01(float): Floating point value from 0 to 1.- default: 1.0 (0.0-1.0).
-
float0inf(float): Floating point value from 0 to some large value.- default: 1.0 (0.0-9.9e+99).
-
int0_100(int): Int form 0 to 100.- default: 10 (0-100).
-
line(line): Line selection.- default: [[0, 50], [100, 50]].
-
polygon(polygon): Polygon selection.- default: [[0, 0], [0, 100], [100, 100], [100, 0]].
-
polyline(polyline): Polyline selection.- default: [[0, 80], [100, 80], [80, 60]].
-
selector(value1|value2|value3): Selector.- default: value1.
-
square(square): Square selection.- default: [[0, 0], [0, 100], [100, 100], [100, 0]].
-
string(str): A string value.- default: Some value.
-
toggle(bool): Toggle Parameter.- default: False.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
vector(vector): Vector selection.- default: [[0, 50], [100, 50]].
Module boxfilters
BoxAreaFilterProcessor
Filter boxes between the given min/max areas
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: face.
-
maxarea(area): Maximum area in pixels or percent of the image of the box to be detected (=width x height).- default: 80000 (0-4194304).
-
minarea(area): Minimum area in pixels or percent of the image of the box to be detected (=width x height).- default: 3000 (0-160000).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
BoxCameraZonesFilterProcessor
Filter person+face+upper_body boxes outside of camera defined zones
Person boxes are filtered based on feet position.
Face/upper_body boxes are filtered
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will filter.- default: person.
-
project_head_down(float): Project N heads downwards to guess feet position to filter out heads.- default: 7.0 (0.0-10.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
BoxMergeProcessor
Merges boxes into ComboBox clusters based on their containment.
Parameters
-
box_order(face&person&upper_body&blob&hand&head&skeleton&placeholder&combo): Type of boxes in order of containment for the clusters.- default: person,skeleton,upper_body,head,face.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
BoxRatioFilterProcessor
Discard boxes whose size ratio (height/width) is below the set value
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will filter.- default: person.
-
minratio(float): Minumum ratio (height/width) for the box to be detected (e.g. in a face height > width).- default: 1.2 (0.0-10.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
DistanceFilterProcessor
Discard tracks whose floor distance to the camera is outside the [min, max] range.
Uses the floor distance already computed by SmoothFeetProcessor and stored on
each combo track as _feet_point.dist_ground_to_feet (metres, measured on the
ground plane from the camera to the feet). This processor must run AFTER
SmoothFeetProcessor so the feet point is available.
Boxes that are not tracks (non TYPE_COMBO) are always passed through
unchanged. A track with no valid feet point (distance unknown) is kept unless
drop_unknown is enabled.
Parameters
-
debug_draw_filtered(bool): Draw a red dashed box + measured distance on tracks dropped by this filter, for visual debugging.- default: False.
-
drop_unknown(bool): Drop tracks with no valid feet point (unknown distance). When false, such tracks are kept..- default: False.
-
max_distance(float): Maximum floor distance to the camera (m) for a track to be kept.- default: 100.0 (0.0-1000.0).
-
min_distance(float): Minimum floor distance to the camera (m) for a track to be kept.- default: 0.0 (0.0-1000.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
use_camera_distance(bool): Use straight-line camera-to-feet distance instead of the ground-plane (floor) distance.- default: False.
FocalBoxFilterProcessor
Filter bounding boxes by estimated distance to the camera.
When the camera is calibrated (known height + tilt), distance is the true ground distance obtained by back-projecting the box onto the floor plane. Otherwise it falls back to the pinhole optical-axis depth Z = f_y * H / h_px, assuming an average adult stature (~1.70 m), head crown-to-chin (~0.24 m) or face brow-to-chin (~0.20 m) height.
Supported box types: face, head, person, skeleton, upper_body and combo (a combo delegates to the best contained sub-box). Other types pass through untouched.
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will filter.- default: combo.
-
exp_head_height(float): Expected average height of a face (brow-to-chin) in meters.- default: 0.2 (0.05-0.5).
-
exp_person_height(float): Expected average height of a person in meters.- default: 1.7 (1.0-3.0).
-
max_distance(float): Discard boxes farther than this distance (m).- default: 5.0 (0.0-1000.0).
-
min_distance(float): Discard boxes closer than this distance (m).- default: 0.0 (0.0-1000.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
HeadBoxFilterProcessor
Filter bounding boxes by estimated distance to the camera calculated from the HEAD box only.
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will filter.- default: combo.
-
coast_max_sec(float): Reuse the last head pose for at most this long after the last real measurement (s); 0 disables coasting.- default: 0.34 (0.0-10.0).
-
distance_jump(float): Distance EMA spike-gate: reject jumps larger than this (m).- default: 0.5 (0.0-1000.0).
-
distance_smooth_sec(float): EMA time constant for the distance reading (s); 0 disables distance smoothing.- default: 0.3 (0.0-10.0).
-
filter_args(dict): Filter init arguments.- default: {}.
-
head_box_smooth_sec(float): EMA time constant for pre-calculation head-box smoothing, traced as d_hbox (0 disables).- default: 0.3 (0.0-10.0).
-
max_age(float): Max age of a feature in seconds.- default: 60.0 (0.0-1000.0).
-
max_distance(float): Discard boxes farther than this distance (m).- default: 5.0 (0.0-1000.0).
-
min_distance(float): Discard boxes closer than this distance (m).- default: 0.0 (0.0-1000.0).
-
skeleton_gate(bool): Drop the head-pose correction when the skeleton facing class contradicts the pose yaw (front vs back); fall back to base head height. False applies the pose uncorrected..- default: True.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
SkeletonsToBoxesProcessor
Convert skeletons to face+body boxes, and discard them
Parameters
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
use_face(bool): Use face points to generate a face box.- default: False.
ZoneExclusionProcessor
Discard boxes whose contact point (center, top-center, bottom-center) is inside any "exclude" contour
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo|any): Type of boxes this processor will filter.- default: any.
-
contact_point(center|top_middle|bottom_middle|head|feet): Point to check for presence inside/outside the contour.- default: center.
-
filter_criteria(point_inside|area_intersection): Filter criteria: point inside or area intersection minimum percent.- default: point_inside.
-
min_area_percent(float): Minimum intersection percentage for the box to be considered for exclusion.- default: 0.0 (0.0-100.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Module camera
CameraFloorDrawingProcessor
Draws a projection of the xy camera plane onto the current snapshot.
Parameters
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
CameraIntrinsicCalibrationProcessor
Calibrate a camera intrinsic parameters using a checkerboard pattern.
Parameters
-
grid_x(int): Grid x size.- default: 10 (1-100).
-
grid_y(int): Grid x size.- default: 7 (1-100).
-
max_rms_error(float): Max. RMS error in calibration.- default: 2.0 (0.0-200.0).
-
min_points(int): Minimum number of captured points.- default: 50 (1-500).
-
recalibrate(bool): Recalibrate camera trigger calibration.- default: False.
-
square_size_mm(float): Square size in mm.- default: 30 (0.0-200.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
CameraParametersProcessor
Adjust the camera extrinsic parameters either by a 1 m. square on the ground or manually.
Parameters
-
calculate_square(trigger): Adjust translation and rotation based on the floor square.- default: False.
-
camera_h(float): Height from the camera to the ground where the square lays.- default: 2.0 (-50.0-50.0).
-
meter_square(polygon): A square of 1m sitting at 3m.- default: [].
-
position_x(float): Camera X position.- default: 0.0 (-1000.0-1000.0).
-
position_y(float): Camera Y position.- default: 0.0 (-1000.0-1000.0).
-
position_z(float): Camera Z position.- default: 0.0 (-1000.0-1000.0).
-
rotation_x(float): Camera X angle in degrees.- default: 0.0 (-360.0-360.0).
-
rotation_y(float): Camera Y angle in degrees.- default: 0.0 (-360.0-360.0).
-
rotation_z(float): Camera Z angle in degrees.- default: 0.0 (-360.0-360.0).
-
save_calibration(trigger): Save current calibration parameters.- default: False.
-
save_calibration_file(str): File where to save calibration parameters.- default: calibration.json.
-
square_d(float): Distance to the calibration square.- default: 3.0 (0.1-20.0).
-
square_l(float): Length in meters of the side of the calibration square.- default: 1.0 (0.1-20.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
CameraZonesAnnotatingProcessor
Draws contours and gates on the picture.
Parameters
-
draw_gate_limits(bool): Draw the gate arming (distance_threshold) and bounce_band radial limit rings around each gate for crossing diagnostics..- default: False.
-
gate_arm_radius(int): Arming/working radius in px to draw; match GateProcessor distance_threshold..- default: 70.
-
gate_bounce_radius(int): Bounce-band radius in px to draw; match GateProcessor bounce_band..- default: 28.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Scene3DViewerProcessor
Render a synthetic 3D scene window showing floor contours and tracked feetpoints.
Parameters
-
gaze_cone_half_angle_deg(float): Half-angle in degrees used to render the gaze cone in the synthetic 3D scene.- default: 18.0 (0.0-45.0).
-
gaze_cone_length_m(float): Length in meters of the gaze cone in the synthetic 3D scene.- default: 0.9 (0.1-5.0).
-
gaze_vector_length_m(float): Length in meters of the gaze direction vector in the synthetic 3D scene.- default: 0.9 (0.2-10.0).
-
grid_step_m(float): Spacing of the synthetic ground grid in meters.- default: 0.5 (0.1-5.0).
-
max_actor_height_m(float): Maximum actor height used by the synthetic scene renderer.- default: 2.2 (1.2-3.5).
-
max_world_distance_m(float): Clamp contour/gate backprojection to this floor distance from the camera.- default: 25.0 (1.0-100.0).
-
min_actor_height_m(float): Minimum actor height used by the synthetic scene renderer.- default: 1.0 (0.5-2.5).
-
mirror_coordinates(bool): Mirror synthetic scene coordinates horizontally around the camera center.- default: False.
-
scene_height(int): Height in pixels of the synthetic 3D scene window.- default: 720 (240-2160).
-
scene_margin_px(int): Outer padding for the synthetic 3D scene.- default: 48 (0-400).
-
scene_width(int): Width in pixels of the synthetic 3D scene window.- default: 960 (320-3840).
-
show_camera(bool): Draw the calibrated camera position on the synthetic 3D scene.- default: True.
-
show_gaze(bool): Draw head marker, gaze vector and cone when head pose is available.- default: True.
-
show_grid(bool): Draw a floor grid on the synthetic 3D scene.- default: True.
-
show_labels(bool): Draw labels for actors and contours on the synthetic 3D scene.- default: True.
-
show_screen(bool): Draw the calibrated screen plane on the synthetic 3D scene.- default: True.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
vertical_scale(float): Vertical exaggeration used for actor columns.- default: 1.0 (0.2-3.0).
-
view_iso_deg(float): Isometric projection angle for the synthetic 3D scene.- default: 30.0 (10.0-60.0).
-
view_rotation_deg(float): Rotation of the synthetic 3D scene around the floor plane.- default: 20.0 (-180.0-180.0).
Module comm
BoxToSimulatedMQTTProcessor
Publisher processor that outputs different box events to different MQTT paths
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: blob.
-
send_falloff(float): Seconds of falloff after sending event.- default: 2 (0-100).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
trigger_class(str): Class of the trigger.- default: sensor.
-
trigger_id(str): Id of the trigger.- default: 1.
MQTTPublishingProcessor
Publisher processor that outputs different box events to different MQTT paths
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: person.
-
minimal(bool): Only send box and hands, reducing packet size.- default: False.
-
send_biggest_n(int): Only send N biggest boxes.- default: 0 (0-100).
-
skel_send(str): Comma separated parts to send (hands,feet,chest) or 'none'.- default: hands.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
MessagingProcessor
Send (MQTT) messages for all entering and exiting Boxes. Message payload is of the form:
{
"sent-by": "messaging",
"class": "box",
"action": "in|out",
"boxtype": "face|person|blob|head",
"id": "abcdefg",
"tags": ["tag1", "tag2", "tag3"],
"camera": "camera name"
}
Parameters
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
OSCPublishingProcessor
Publisher processor that outputs different box events to different OSC messages
Parameters
-
box_state(any|entered): Only emit boxes in this stage state.- default: any.
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: face.
-
target_host(str): Target host for OSC messages.- default: 127.0.0.1.
-
target_port(int): Target port of OSC messages.- default: 15000.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
SingleTargetMQTTPublishingProcessor
Publisher processor that outputs different box events to different MQTT paths
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: person.
-
minimal(bool): Only send box and hands, reducing packet size.- default: False.
-
send_criteria(center|biggest): Only send center/biggest box.- default: biggest.
-
skel_send(str): Comma separated parts to send (hands,feet,chest) or 'none'.- default: hands.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
StageOSCPublishingProcessor
Publisher processor that outputs different box events to different OSC messages
Parameters
-
box_state(any|entered|entering|exiting|exited): Only emit boxes in this stage state.- default: entered.
-
target_host(str): Target host for OSC messages.- default: 127.0.0.1.
-
target_port(int): Target port of OSC messages.- default: 15000.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
StageTUIOPublishingProcessor
Publisher processor that outputs different box events to different TUIO messages
Parameters
-
box_state(any|entered|entering|exiting|exited): Only emit boxes in this stage state.- default: entered.
-
max_skeleton_speed(float): Maximum speed accepted to send skeleton hands.- default: 0.2 (0.0-1000.0).
-
skel_send(hands|chest|feet|full): Blob(s) to send for skeletons.- default: hands.
-
target_host(str): Target host for TUIO messages.- default: 127.0.0.1.
-
target_port(int): Target port of TUIO messages.- default: 15000.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
TUIOPublishingProcessor
Publisher processor that outputs different box events to different TUIO messages
Parameters
-
box_state(any|entered): Only emit boxes in this stage state.- default: any.
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: face.
-
image_path(str): Path where to dump snap images as FSEQ.jpg files (if set).- default: .
-
max_skeleton_speed(float): Maximum speed accepted to send skeleton hands.- default: 0.2 (0.0-1000.0).
-
skel_send(hands|chest|feet|full): Blob(s) to send for skeletons.- default: hands.
-
target_host(str): Target host for TUIO messages.- default: 127.0.0.1.
-
target_port(int): Target port of TUIO messages.- default: 15000.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
VirtualCamProcessor
Outputs video frames to a virtual camera device
Parameters
-
annotate(bool): Annotate the image with detection results.- default: False.
-
clip_h(int): Crop height from the center of the image (zero disables).- default: 0 (0-32000).
-
clip_w(int): Crop width from the center of the image (zero disables).- default: 0 (0-32000).
-
device(str): Device parameter for pyvirtualcam (default automatic).- default: None.
-
draw_floor(bool): Draw camera calibration floor on the image.- default: False.
-
virtualcam_driver(auto|v4l2loopback|obs|unitycapture): Force driver for the camera.- default: auto.
-
scale(float): Downscale the frame by this factor before sending (1.0 = full size). Unlike clip_w/clip_h, which crop away the edges, this keeps the whole field of view -- useful because the driver hands consumers a smaller frame anyway, so full-resolution bytes are discarded downstream..- default: 1.0 (0.1-1.0).
-
target_camera(str): For multicamera, camera name to send to the virtual camera.- default: None.
-
target_fps(int): Target FPS rate of the Virtual Camera.- default: 15 (5-60).
-
timecode(bool): Burn a machine-readable frame-number marker into the top-left corner, for measuring end-to-end display latency.- default: False.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
ZContoursProcessor
From the Z buffer, generate a mask between distance ranges. Also, calculate normals at every point and send the resulting mask to virtual camera.
Parameters
-
virtualcam_device(str): Device path (e.g. /dev/video12) for the camera.- default: None.
-
virtualcam_driver(auto|v4l2loopback|obs|unitycapture): Force driver for the camera.- default: auto.
-
max_z_threshold(int): Maximum z if using depth plane (mm).- default: 3000 (0-32768).
-
min_z_threshold(int): Minimum z if using depth plane (mm).- default: 1000 (0-32768).
-
target_fps(int): Target FPS rate of the Virtual Camera.- default: 15 (5-60).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Module detect
BlobsDetectorProcessor
Substract background and detect blobs on the image
Parameters
-
closing_kernel_size(int): Pixel radius for the closing used to reduce small dots (0 disables).- default: 6 (0-100).
-
max_box_area(float): Maximum area of a detected blob.- default: 1000000 (0.0-9.99e+100).
-
max_box_ratio(float): Maximum width/height ratio of a detected blob.- default: 4.0 (0.0-9.99e+100).
-
max_z_threshold(int): Maximum z if using depth plane.- default: 5000 (0-32768).
-
min_box_area(float): Minimum area of a detected blob.- default: 100 (0.0-9.99e+100).
-
min_box_ratio(float): Minimum width/height ratio of a detected blob.- default: 0.0 (0.0-10).
-
min_z_threshold(int): Minimum z if using depth plane.- default: 0 (0-32768).
-
opening_kernel_size(int): Pixel radius for the opening used to reduce small dots (0 disables).- default: 6 (0-100).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
plane(rgb|z): Color plane to use.- default: z.
BoxCounterProcessor
No description
Parameters
-
area_name(str): Name of the counter area.- default: Count Area.
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: face.
-
count_chunk_size(int): Number of samples to accumulate before emitting a count event.- default: 100.
-
outlier_filter_percentile(float): Percentile to filter outliers out (zero disables).- default: 0.1 (0.0-1.0).
-
report_post_url(str): URL where to POST counter updates.- default: None.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
BoxFinderProcessor
Detect bounding boxes for a single class of objects, with optional filtering by area and ratio.
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: face.
-
contour(square): Area of the image where to detect.- default: [].
-
filter_out_iou(float): Filter out boxes overlapping intersection-over-union more than the value (zero disables).- default: 0.4 (0.0-1.0).
-
maxarea(area): Maximum area in pixels of the box to be detected (=width x height).- default: 80000 (0-4194304).
-
minarea(area): Minimum area in pixels of the box to be detected (=width x height).- default: 3000 (0-160000).
-
minratio(float): Minumum ratio (height/width) for the box to be detected (e.g. in a face height > width).- default: 1.2 (0.0-10.0).
-
threshold(float): Threshold of acceptance for the network detection.- default: 0.5 (0.0-1.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
box_finder, defaults to FaceDetectionNetwork.
ClassDetectionProcessor
Run the given multiclass detector on the image, producing boxes filtered by minimum confidence.
Parameters
-
bottom_crop(int): Bottom crop area for detection.- default: 0 (0-4096).
-
classes(str): Classes to accept, comma separated (empty = all).- default: .
-
classes_set(str): Name of the class set (coco, peron-face-hand, yolov8...) or list of comma-separated classes.- default: coco.
-
maxarea(area): Maximum area in percent of the image or pixel area of the box to be detected (=width x height).- default: -1.0 (-1.0-4194304).
-
minarea(area): Minimum area in percent of the image or pixel area of the box to be detected (=width x height).- default: -1.0 (-1.0-160000).
-
policy(nooverlaps|bestofclass|none): Apply a reduction policy of keeping a single item per class, with best score.- default: none.
-
threshold(float): Threshold of acceptance for the network detection.- default: 0.25 (0.0-1.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
class_finder, defaults to SSDLiteObjectDetectionNetwork.
CounterProcessor
No description
Parameters
-
area_name(str): Name of the counter area.- default: Count Area.
-
count_chunk_size(int): Number of samples to accumulate before emitting a count event.- default: 100.
-
outlier_filter_percentile(float): Percentile to filter outliers out (zero disables).- default: 0.1 (0.0-1.0).
-
report_post_url(str): URL where to POST counter updates.- default: None.
-
split_mode(none|full): Wether to use sliding window to split the input image in chunks.- default: none.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
counter_network, defaults to CLIPCounterNetwork.
DepthBlobDetectorProcessor
Detect blobs in depth image.
Parameters
-
blob_area_max(int): Maximum blob area to accept.- default: 2097152 (0-16777216).
-
blob_area_min(int): Minimum blob area to accept.- default: 10 (0-16777216).
-
min_distance_between_blobs(int): Minumum distance between blobs.- default: 1 (0-2048).
-
morph_open_size(int): Size of the opening kernel to filter the depth image.- default: 10 (1-100).
-
threshold_max(int): Maximum distance threshold.- default: 30 (0-255).
-
threshold_min(int): Minumum distance threshold.- default: 10 (0-255).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
PoseHeadProcessor
Unified person-pose + head-bbox detector.
Runs a single 2-class YOLO pose+head model (e.g. person_pose_head_v1.0) and emits two box streams from one inference: - class 0: person box + 17 keypoints → BoxType.TYPE_SKELETON (configurable) - class 1: head bbox → BoxType.TYPE_HEAD
Replaces a SkeletonProcessor + ClassDetectionProcessor (heads) pair.
Parameters
-
emit_heads(bool): Emit class-1 detections as head boxes.- default: True.
-
emit_skeleton(bool): Emit class-0 detections as skeleton boxes.- default: True.
-
head_policy(nooverlaps|none): Reduction policy applied to head detections.- default: none.
-
identify(bool): Identify (assign id) to the skeletons.- default: True.
-
invert_lr(bool): Invert left and right keypoints.- default: True.
-
maxarea_head(area): Maximum area of a head box (-1 = disabled).- default: -1 (-1-4194304).
-
maxarea_person(area): Maximum area of a person/skeleton box.- default: 280000 (-1-4194304).
-
minarea_head(area): Minimum area of a head box (-1 = disabled).- default: -1 (-1-4194304).
-
minarea_person(area): Minimum area of a person/skeleton box.- default: 3000 (-1-4194304).
-
minpercent(float): Minimum percent (0-1) of valid keypoints to accept a skeleton.- default: 0.4 (0.0-1.0).
-
person_box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): BoxType assigned to class-0 (person/skeleton) detections.- default: skeleton.
-
short_raise(bool): Consider wrist higher than elbow a raised hand, else wrist higher than neck.- default: True.
-
threshold(float): Network confidence threshold.- default: 0.3 (0.0-1.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
pose_head_finder, defaults to YOLOV8PoseHeadNetwork.
SkeletonProcessor
Find persons and skeletal keypoints in an image.
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: skeleton.
-
identify(bool): Identify (add id) to the skeletons.- default: True.
-
invert_lr(bool): Invert left and right.- default: True.
-
maxarea(area): Maximum area as percentage of the image or pixel area of the box to be detected (=width x height).- default: 4194304 (-1-4194304).
-
minarea(area): Minimum area as percentage of the image or pixel area of the box to be detected (=width x height).- default: 2500 (-1-160000).
-
minpercent(float): Minumum percent (0-1) of valid keypoints to accept a skeleton.- default: 0.4 (0.0-1.0).
-
short_raise(bool): Consider wrist higher than elbow a raised hand, else wrist higher than neck.- default: True.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
skeleton_finder, defaults to YOLOV8PoseNetwork.
SlidingWindowClassDetectionProcessor
Find classes in the image, as blobs
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will emit.- default: head.
-
classes(str): Classes to accept, comma separated (empty = all).- default: .
-
classes_set(str): Name of the class set (coco, peron-face-hand, yolov8...) or list of comma-separated classes.- default: coco.
-
threshold(float): Threshold of acceptance for the network detection.- default: 0.25 (0.0-1.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
class_finder, defaults to SSDLiteObjectDetectionNetwork.
TopDepthBlobProcessor
Scan depth images for blobs between given distances. Used for person detection from a top-mounted looking straight down 3D camera.
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: person.
-
calibrated(bool): Check for recalibration.- default: False.
-
kernelsize(int): Kernel size for opening the detected image.- default: 5 (1-255).
-
maxarea(float): Maximum area in pixels of the box to be detected (=width x height).- default: 10000 (0-10000000).
-
max_threshold(float): Maximum threshold for blob detection.- default: 256.0 (0.0-255.0).
-
metric_unit(float): Divider to convert camera values to meters.- default: 1000.
-
minarea(float): Minimum area in pixels of the box to be detected (=width x height).- default: 20 (0-10000000).
-
min_threshold(float): Minimum threshold for blob detection.- default: 10.0 (0.0-255.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
box_finder, defaults to TopDepthPersonDetectionNetwork.
Module features
EncoderProcessor
Assigns and recognizes box ids based on vector encodings
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: face.
-
maximum_overlap_time(float): Maximum time during which we will assign an id because of a IOU overlap.- default: 2.0 (0.0-1.0).
-
minimum_distance_weight(float): Minimum weight to consider a cosine distance valid.- default: 0.5 (0.0-1.0).
-
minimum_overlap_percent(float): Minumum IOU overlap percent to consider two boxes the same.- default: 0.4 (0.0-1.0).
-
number_of_workers(int): Number of worker threads.- default: 2 (1-64).
-
purge_less_than_frames(int): Purge identifications only seen less than that number of frames during purge_older_than_secs.- default: 20 (0-200).
-
purge_older_than_secs(float): Purge identifications older than this and seen purge_less_than_frames.- default: 8.0 (0.0-60.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
FaceAgeGenderProcessor
Find age and gender for the snap face boxes, using separate networks for age and gender
Parameters
-
number_of_workers(int): Number of worker threads.- default: 2 (1-64).
-
recheck_interval(float): Period of re-measurement (seconds).- default: 1.0 (0.0-60.0).
-
data_updates(bool): Should we send data updates for each new value.- default: False.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
age, defaults to FaceAgeNetwork. - Network
gender, defaults to FaceGenderNetwork.
FaceAttentionProcessor
Calculate face attention as a percentage of total time looking to the camera surroundings.
Parameters
-
number_of_workers(int): Number of worker threads.- default: 2 (1-64).
-
recheck_interval(float): Period of re-measurement (seconds).- default: 1.0 (0.0-60.0).
-
data_updates(bool): Should we send data updates for each new value.- default: False.
-
straight_angle_limit(float): Maximum view angle that is considered being looking straight to the camera.- default: 25.0 (0.0-180.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
gaze, defaults to FaceGazeNetwork. - Network
pose, defaults to FacePoseNetwork.
FaceEmotionProcessor
Calculate dominant perceived emotional state
Parameters
-
number_of_workers(int): Number of worker threads.- default: 2 (1-64).
-
recheck_interval(float): Period of re-measurement (seconds).- default: 1.0 (0.0-60.0).
-
data_updates(bool): Should we send data updates for each new value.- default: False.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
emotion, defaults to FaceEmotionNetwork.
FaceEncoderProcessor
Assigns and recognizes box ids based on rotated face encodings
Parameters
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
landmarks, defaults to FaceLandmarksNetwork. - Network
identifier, defaults to FaceReidentificationNetwork.
FaceLandmarksProcessor
Retrieve landmarks and rotated face from the given face boxes in the snap.
Parameters
-
number_of_workers(int): Number of worker threads.- default: 2 (1-64).
-
recheck_interval(float): Period of re-measurement (seconds).- default: 1.0 (0.0-60.0).
-
save_rotated(bool): Save the rotated, warped face for later processing.- default: True.
-
data_updates(bool): Should we send data updates for each new value.- default: False.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
landmarks, defaults to FaceLandmarksNetwork.
FeatureMergeProcessor
Copies features from blob boxes to the nearest overlapping box of the given type. Decided via IoU matching.
Parameters
-
min_iou(float): Minimum overlap needed to assign a class to a box.- default: 0.1 (0.0-1.0).
-
target_box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes where the classes will be assigned to.- default: person.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
FrontFacingCounterProcessor
Approximate attention based on whether the face for a given person is detected or not.
Parameters
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
HeadPoseProcessor
Calculate head pose (rotation respect to the camera) Sets the "head_pose" Rotation feature on the boxes. Sets the "_yaw_pitch_roll" feature on the boxes.
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: head.
-
smooth_angles(bool): Smooth angles.- default: True.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
pose, defaults to FacePoseNetwork.
PersonAgeGenderProcessor
Find age and gender for the given face boxes
Parameters
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Networks
- Network
age_gender, defaults to FaceAgeGenderVoloNetwork.
ScreenAttentionProcessor
Calculate face attention as a percentage of total time looking to the camera surroundings. Requires that boxes have a "_head_pose" feature set (set by DirectMHPNetwork or similar).
Parameters
-
head_pose_bias_auto(bool): Derive yaw bias automatically from the camera extrinsic tilt (calibration.json) instead of head_pose_bias_yaw_deg. Uses the empirical model in src/util/camera_bias.py..- default: True.
-
head_pose_bias_pitch_deg(float): Additive pitch correction (degrees), applied before smoothing..- default: 0.0 (-45.0-45.0).
-
head_pose_bias_roll_deg(float): Additive roll correction (degrees), applied before smoothing..- default: 0.0 (-45.0-45.0).
-
head_pose_bias_yaw_deg(float): Additive yaw correction (degrees), applied before smoothing. 0 = no correction..- default: 0.0 (-45.0-45.0).
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: head.
-
fallback_angle(float): Angle at which an unconfigured screen is considered to be being looked at.- default: 25.0 (0.0-180.0).
-
gaze_cone_coverage_mode(str): 'footprint' = intersection/footprint_area (legacy). 'normalized' = intersection/min(footprint_area, screen_area). Normalized mode is equivalent to footprint at close range and screen-coverage at far range..- default: normalized.
-
gaze_cone_half_angle_deg(float): Cone half-angle in degrees (cone mode only). Defaults to 8.0 to match DirectMHP yaw MAE. Larger = more tolerant; smaller = stricter..- default: 10.0 (0.5-45.0).
-
gaze_cone_hit_ratio(float): Cone-footprint overlap threshold in [0, 1] (cone mode only). 0.30 = 30%% of the cone's footprint must land on the screen..- default: 0.2 (0.0-1.0).
-
gaze_cone_n_samples(int): Number of cone-boundary samples used to form the footprint polygon (cone mode only). 32 balances accuracy vs speed..- default: 32 (8-128).
-
gaze_debug_csv(bool): Enable per-box CSV logging of gaze-hit intermediate values (slows FPS; for benchmarking)..- default: False.
-
gaze_hit_mode(ray|cone): Gaze hit-test mode. 'ray' = central-ray intersection (legacy). 'cone' = flashlight-cone footprint overlap test..- default: cone.
-
gaze_margin(float): Multiplier on screen half-size used for gaze-hit tolerance (1.0 = exact screen edges)..- default: 1.5 (0.1-5.0).
-
scene_bias_pitch_deg(float): Per-scene pitch correction (degrees), summed with the pitch from head_pose_bias_auto / head_pose_bias_pitch_deg. Default 0 = no overlay..- default: 0.0 (-45.0-45.0).
-
scene_bias_yaw_deg(float): Per-scene yaw correction (degrees), summed with the yaw from head_pose_bias_auto / head_pose_bias_yaw_deg. Produced by tools/calibrate_scene_bias.py. Default 0 = no overlay..- default: 0.0 (-45.0-45.0).
-
smooth_angles(bool): Enable circular-mean smoothing of yaw/pitch/roll before gaze evaluation..- default: False.
-
smooth_angles_min_samples(int): Minimum samples in window before smoothing kicks in; below this, raw angle passes through..- default: 3 (1-60).
-
smooth_angles_window_sec(float): Time window (seconds) for AngleSmoother. FPS-invariant: 0.2s covers ~5 frames @25fps..- default: 0.2 (0.0-5.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
SelectiveAgeGenderProcessor
Detect a single candidate age and gender, picking one per frame from the global stage in order of descending face box area.
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes to process.- default: face.
-
keypoint_min_conf(float): Minimum per-keypoint confidence to trust a skeleton keypoint for body-orientation derivation..- default: 0.3.
-
lock_pitch_deg(float): Additional lock condition on pitch: a PASS only locks the commit if |ema_pitch| is also below this. Prevents downward-looking misclassifications from anchoring the gender result. Set to 90 to disable..- default: 90.0.
-
lock_quality_deg(float): Initial-lock threshold: an actor's first PASS only locks the commit if |ema_yaw| is below this. Earlier PASSes still commit features but don't lock — every subsequent PASS overwrites until a high-quality one arrives and locks. Set to a large value (e.g. 90) to lock on the very first PASS like before..- default: 30.0.
-
log_raw_pose(bool): Log raw yaw/pitch/roll for every head candidate evaluated each frame. Diagnostic..- default: False.
-
max_abs_pitch_deg(float): Skip candidate if |pitch| exceeds this (degrees). Only applied when _yaw_pitch_roll is present on the box..- default: 50.0.
-
max_abs_yaw_deg(float): Skip candidate if |yaw| exceeds this (degrees). Only applied when _yaw_pitch_roll is present on the box..- default: 90.0.
-
max_abs_yaw_deg_relaxed(float): Relaxed |yaw| gate that applies when the skeleton independently confirms a sideways body pose facing the camera. Falls back to PARAM_MAX_ABS_YAW when no usable skeleton is available..- default: 75.0.
-
max_ttl(float): Maximum time to live for a box before it is discarded.- default: 10.0 (0.0-360.0).
-
min_actor_frames(int): Minimum number of frames an actor must be evaluated before age/gender inference is attempted. Filters out ghost tracks that appear briefly. Set to 0 to disable (classify on first eligible frame)..- default: 0.
-
min_face_size(int): Minimum face size in pixels to classify a face candidate. Set to 0 to disable..- default: 64.
-
min_frontal_frames(int): Minimum consecutive frames the raw pose must stay within the frontal zone before a candidate is accepted. Resets to 0 whenever the pose gate fires..- default: 3.
-
min_pose_score(float): Skip candidate if its DirectMHP _pose_score is below this threshold. Default matches DirectMHP's own internal filter; raise via INI to be more conservative..- default: 0.5.
-
pose_max_jump_deg(float): Reject a raw yaw reading whose circular distance from the previous accepted raw yaw exceeds this. Guards against DirectMHP back-of-head sign flips. Set <=0 to disable..- default: 45.0.
-
pose_max_consecutive_rejects(int): After this many consecutive velocity-gate rejections, accept the next reading regardless of jump magnitude. Prevents permanent freeze on legitimate fast head turns..- default: 5.
-
pose_smooth_min_samples(int): Minimum samples before AngleSmoother's MAD outlier check kicks in. Bootstrap frames are accepted..- default: 3.
-
pose_smooth_window(int): AngleSmoother window size (frames) used purely as a MAD-based outlier validator on raw yaw/pitch/roll per head box.id. The smoothed output is discarded; only the per-sample outlier verdict is consumed..- default: 7.
-
quality_improve_deg(float): First-PASS-locks: once an actor has a committed age/gender, only overwrite if the new PASS has |ema_yaw| at least this many degrees lower (more frontal) than the locked-in PASS. Set to a large value (e.g. 200) to never overwrite; set to 0 to always overwrite..- default: 15.0.
-
shoulder_ratio_sideways(float): |L_SHO.x - R_SHO.x| / head_w below which the body is considered sideways (shoulders project narrowly in image space)..- default: 0.5.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
use_body(bool): Use face and body picture with the network. Off by default: the current model (mivolo_v1_lagenda.onnx) does not use its body input at all — see devdocs/reports/agegender-mivolo-body-channel-dead.md. Kept (rather than removed) so a working dual-input checkpoint can be dropped in later without redoing this plumbing..- default: False.
Networks
- Network
age_gender_network, defaults to FaceAgeGenderVoloNetwork.
SelectiveInferenceProcessor
Superclass for processors acting on the global stage. Override and implement a metric to define order of box processing. One box will be processed per frame.
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes to process.- default: face.
-
max_ttl(float): Maximum time to live for a box before it is discarded.- default: 10.0 (0.0-360.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
SelectivePoseBasedAgeGenderProcessor
Detect a single candidate age and gender per frame, gating each head on the
attached YOLO skeleton's keypoint confidences and geometry instead of a
DirectMHP _yaw_pitch_roll reading.
The gate is a cheap, robust reject decision (not degree-accurate pose):
- Visibility (hard): nose + BOTH eyes confident. Requiring both eyes removes looking-away and hard profiles at zero marginal cost.
- Frontality: eye/ear symmetry asymmetry below
max_asymmetry. - Resolution: inter-ocular pixel distance above
min_interocular_px(in addition to themin_face_sizebox gate inmetric(), which runs even earlier and silently excludes a candidate from ever reaching this gate at all). - Frontal hysteresis: stay inside the gate
min_frontal_framesframes. - Best-frame commit-lock: classify once per track, locking on the frame
with the lowest asymmetry (
asymmetryreplaces|yaw|from the DirectMHP-basedSelectiveAgeGenderProcessor).
All frontality geometry lives on :meth:Skeleton.head_frontality.
Parameters
-
allow_profile(bool): Also accept side/profile views (one eye + its same-side ear confidently visible -- see Skeleton.head_frontality) for classification, not just frontal faces. Off by default (opt-in; introduced alongside a coverage/accuracy benchmark -- see devdocs/reports). A profile PASS is always ranked worse than an accepted frontal one and never locks, so a later frontal read for the same track still wins if one appears..- default: False.
-
allow_sideways_body(bool): When require_body_facing is on, don't veto a candidate whose shoulders project narrowly in image space (see shoulder_ratio_sideways) as 'facing away' -- a near-perpendicular shoulder line makes the l_sho.x/r_sho.x sign essentially noise, so treat it as a genuine side-on body pose instead of a confident back-turn. Off by default (opt-in, unvalidated at scale); pairs with allow_profile to admit real side-view candidates that require_body_facing otherwise blocks the same way as someone with their back to the camera. Ported from SelectiveAgeGenderProcessor's body_sideways signal..- default: False.
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes to process.- default: face.
-
head_kpt_min_conf(float): Minimum per-keypoint confidence for nose/eye/ear landmarks to be trusted in the frontality gate (tier-1 visibility threshold). Raised from 0.4 after a 3kids/5guys threshold sweep confirmed 0.4 let low-confidence back-of-head keypoints pass as a spuriously symmetric "frontal" face; see devdocs/reports/agegender-independent-mot-accuracy-thisbranch-vs-develophead.md..- default: 0.6.
-
keypoint_min_conf(float): Minimum per-keypoint confidence to trust a shoulder keypoint for the body-facing corroboration..- default: 0.3.
-
lock_asymmetry(float): Initial-lock threshold: an actor's first PASS only locks the commit if its asymmetry is below this. Earlier PASSes still commit features but don't lock. Set to a large value (e.g. 1.0) to lock on the very first PASS..- default: 0.15 (0.0-1.0).
-
log_gate(bool): Log the per-candidate gate decision each frame. Diagnostic..- default: False.
-
max_asymmetry(float): Skip candidate if its eye/ear frontality asymmetry (0=frontal, 1=profile) exceeds this. The yaw proxy..- default: 0.25 (0.0-1.0).
-
max_ttl(float): Maximum time to live for a box before it is discarded.- default: 10.0 (0.0-360.0).
-
min_actor_frames(int): Minimum number of frames an actor must be evaluated before age/gender inference is attempted. Filters out ghost tracks that appear briefly. Set to 0 to disable..- default: 0.
-
min_face_size(int): Minimum face size in pixels to classify a face candidate. Set to 0 to disable. Lowered from 64 to 30 -- at 64 this silently excluded candidates (no log tag, rejected in metric() before process_candidate ever runs); see the fvstore4 PID 6 investigation in devdocs/reports..- default: 30.
-
min_frontal_frames(int): Minimum consecutive frames the pose must stay within the frontal gate before a candidate is accepted. Resets to 0 whenever the gate fires..- default: 3.
-
min_interocular_px(int): Skip candidate if inter-ocular distance (px) is below this usable-resolution floor. 0 disables (rely on min_face_size)..- default: 15.
-
quality_improve(float): First-PASS-locks: once an actor has a committed age/gender, only overwrite if the new PASS asymmetry is at least this much lower (more frontal) than the locked one. Set to 0 to always overwrite..- default: 0.03 (0.0-1.0).
-
require_body_facing(bool): Reject a candidate when the skeleton shoulders confidently indicate the body faces AWAY from the camera (subject's left shoulder appears on the camera's left). The face keypoints can still fire on a turned/back head, so this kills back-of-head admits the frontality metric alone lets through. Skipped when no confident shoulder pair is available..- default: True.
-
shoulder_ratio_sideways(float): |L_SHO.x - R_SHO.x| / box width below which the body is considered genuinely side-on rather than confidently facing away. Only consulted when allow_sideways_body is on. Matches SelectiveAgeGenderProcessor's shoulder_ratio_sideways default..- default: 0.5.
-
strict_body_facing(bool): When require_body_facing is also on, reject unless the shoulders CONFIRM facing-camera (not just 'not confirmed facing away'). Closes the gap where no confident shoulder pair is available at all -- the exact situation the 3kids back-of-head false-frontal read slipped through in (see devdocs/reports/agegender-3kids-gender-accuracy-fixes.md). Off by default: this is a stricter, unvalidated-at-scale opt-in that trades coverage (candidates with occluded/out-of-frame shoulders get rejected too) for safety against this class of false positive..- default: False.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
use_body(bool): Use face and body picture with the network. Off by default: the current model (mivolo_v1_lagenda.onnx) does not use its body input at all — see devdocs/reports/agegender-mivolo-body-channel-dead.md. Kept (rather than removed) so a working dual-input checkpoint can be dropped in later without redoing this plumbing..- default: False.
-
vote_commit(bool): Pool the firstvote_max_samplesPASS frames per actor and commit the frontality-weighted majority gender + weighted median age, instead of taking whichever single frame scored the best asymmetry. Best-frame commit lets one marginally more frontal frame overwrite a correct categorical label (observed M->F relocks on 5guys and gelateria2). Off by default..- default: False.
-
vote_max_samples(int): Inference budget per actor when vote_commit is on. Each MiVOLO v2 call costs ~100ms-1s, so this is a hard cap: once spent the actor stops inferring entirely. Gender is already 100% on the benchmark set at 2; measured fps is flat up to 20 (the gate admits few enough frames that the budget rarely binds), so this is set for age, which is the metric that actually moves..- default: 3 (1-50).
Networks
- Network
age_gender_network, defaults to FaceAgeGenderVoloNetwork.
Module filters
FeatureFilterProcessor
Filter the given feature using the given parameters.
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Box type to process features for.- default: combo.
-
feature_id(str): Feature ID to filter.- default: _head_pose.
-
filter_args(dict): Filter init arguments.- default: {}.
-
filter_type(float|vector|angle|quaternion): Filter type to apply.- default: angle.
-
max_age(float): Max age of a feature in seconds.- default: 60.0 (0.0-1000.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Module globalstage
ActorAgeGenderProcessor
Detect a single candidate age and gender, picking one per frame from the global stage in order of descending face box area.
Parameters
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
use_body(bool): Use face and body picture with the network. Off by default: the current model (mivolo_v1_lagenda.onnx) does not use its body input at all — see devdocs/reports/agegender-mivolo-body-channel-dead.md. Kept (rather than removed) so a working dual-input checkpoint can be dropped in later without redoing this plumbing..- default: False.
Networks
- Network
age_gender_network, defaults to FaceAgeGenderVoloNetwork.
ActorInZoneProcessor
Track boxes hitting into/out of a certain contour
Parameters
-
box_position(center|topcenter|bottomcenter): Position on the box to locate inside/outside the area.- default: bottomcenter.
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will use for the detection.- default: person.
-
contour(polygon): Contour Polygon where to detect entrance.- default: [].
-
contour_name(str): Name of the detection contour.- default: contour.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
ActorMultiZoneProcessor
Preserve current and previous zones of an actor. Needs "_gate_contour" feature to be set by GateProcessor. Sets actor.features["current_zone"] and actor.features["last_zone"]
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will use for the detection.- default: combo.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
StageLoaderProcessor
Load IDENTIFIED person and face boxes into actors
Parameters
-
actor_box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of actor boxes to use as actor basis.- default: person.
-
debug_boxes(bool): Generate debug boxes for annotation.- default: True.
-
exit_time_interval(float): Time to wait to consider an actor out of stage.- default: 6.0 (0.0-600).
-
ingress_time_interval(float): Time to wait to consider an actor in stage.- default: 3.0 (0.0-60).
-
lost_time_interval(float): Time to wait to consider an actor lost.- default: 2.0 (0.0-60).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
track_face_boxes(bool): Add identified faces to actors.- default: True.
StageReadingProcessor
Superclass for processors acting on the global stage. Override and implement a metric to define order of box processing. One box will be processed per frame.
Parameters
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
StageReportProcessor
Report stage status and events like actor entrances exits.
Parameters
-
debug_boxes(bool): Generate debug boxes for annotation.- default: True.
-
enable_http(bool): Enable HTTP POSTing of stage to send_status_post_url.- default: False.
-
enable_mqtt(bool): Enable MQTT sending to user-defined channel send_status_mqtt_channel.- default: False.
-
is_view_time_interval(float): Minimum attention time to consider presence a view event.- default: 2.0 (0.0-60).
-
send_status_mqtt_channel(str): Use this MQTT channel instead of the default one for status messages.- default: /vision.
-
send_status_post_url(str): Send a HTTP POST (JSON) request with the whole stage info every send_status_time_interval..- default: http://localhost:8085.
-
send_status_time_interval(float): Send a MQTT status packet with the whole stage info every time interval. Zero disables..- default: 1.0 (0.0-60.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Module image
ImageCircleCropProcessor
Clip an image region and black out outside. Useful as a preprocessing step to blank outside interferences.
Parameters
-
dx(int): Pixels of center x offset.- default: 0 (-10000-10000).
-
dy(int): Pixels of center x offset.- default: 0 (-10000-10000).
-
radius(int): Radius of the circle.- default: 300.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
plane(rgb|z): Color plane to use.- default: z.
ImageRegionProcessor
Clip an image region and black out outside. Useful as a preprocessing step to blank outside interferences.
Parameters
-
contour(polygon): Polygon area of the image to clip.- default: [].
-
crop(bool): Crop the boundaries of the contour.- default: True.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
ZDepthFilterProcessor
Mask the RGB image of the snapshot using the Z (depth) image, clipping between two intervals.
Parameters
-
threshold_max(float): Maximum distance threshold.- default: 3000 (0-4294967296).
-
threshold_min(float): Minumum distance threshold.- default: 1000 (0-4294967296).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Module tag
AreaEnterExitProcessor
Track boxes entering/exiting a given area limiting boundary.
Parameters
-
area_name(str): Name of the area.- default: Area1.
-
box_position(center|topcenter|bottomcenter): Position on the box to locate inside/outside the area.- default: center.
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will use for the detection.- default: head.
-
report_post_period(float): Period of POST updates, in seconds.- default: 30.0 (0.0-1000.0).
-
report_post_url(str): URL where to POST counter updates.- default: None.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
AreaHitProcessor
Track tracked boxes hitting into/out of a certain contour/gate
Parameters
-
bounce_band(int): Bounce band width where no count is made.- default: 28.
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: combo.
-
counter_type(contour|gate): Type of counter to use.- default: gate.
-
distance_threshold(int): Distance threshold to consider a box as entering/exiting.- default: 70.
-
enable_events(bool): Enable events to be sent to the MQTT broker.- default: True.
-
contact_point(center|top_middle|bottom_middle|head|feet): Point to check for presence inside/outside the contour.- default: feet.
-
hysteresis_frames(int): Number of frames to wait before counting a double crossing.- default: 8.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
AreaTaggerProcessor
Add a tag to any boxes whose center point (or top center or bottom center) enter the area of interest.
Parameters
-
area(polygon): Detection area for tag.- default: None.
-
box_position(center|topcenter|bottomcenter): Position on the box to locate inside/outside the area.- default: bottomcenter.
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: face.
-
tag(str): Tag to mark on area hit.- default: tag1.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
DoorCounterProcessor
Track boxes passing a door and inside a given contour.
Parameters
-
area_limit(int): Maximum number of persons this area allows.- default: 10.
-
area_name(str): Name of the area this door enters or exits.- default: area1.
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: person.
-
door(polygon): Polygon representing the entry door.- default: [[0, 240], [640, 240]].
-
door_name(str): Name of the door.- default: door1.
-
inside(square): Square to mark the inside area (centroid will be used).- default: [[320, 400], [330, 400], [330, 410], [320, 410]].
-
remove_timeout(float): Timeout (seconds) for stale boxes to be removed.- default: 10.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
track_bottom(bool): Count crossings at the feet, instead of the center of the person box.- default: True.
GateProcessor
Tracks entrances and exits of gates and zones. Allows to send events when a box enters/exits a gate or zone.
Parameters
-
bounce_band(int): Bounce band width where no count is made.- default: 28.
-
bounce_band_cm(float): bounce_band in real-world centimetres, converted to pixels local to the gate via the camera calibration. None (default) keeps the pixel constant (bounce_band) unconditionally; requires a calibrated camera to take effect..- default: None.
-
box_target(center|top_middle|bottom_middle|head|feet): Target point of the box to track.- default: feet.
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo|any): Type of boxes this processor will filter.- default: combo.
-
confirm_max_duration_s(float): A candidate open longer than this without confirming is discarded as inconclusive. A safety valve, not the typical confirmation latency -- a real slow crossing can legitimately take tens of seconds to clear the bounce band (e.g. someone browsing near a zone boundary)..- default: 45.0 (0.1-120.0).
-
confirm_min_frames(int): Minimum reliable, new-side samples a crossing candidate needs before it can confirm (fire)..- default: 2 (1-50).
-
counter_type(contour|gate): Type of counter to use.- default: gate.
-
csv_log(bool): Log crossing events to a CSV file for diagnostics.- default: False.
-
debug_feet_stages(bool): Store post-Gate-EMA point for debug visualization.- default: False.
-
diag_csv(bool): Write per-frame diagnostic CSV for contour crossing analysis.- default: False.
-
distance_threshold(int): Distance threshold to consider a box as entering/exiting.- default: 70.
-
distance_threshold_cm(float): distance_threshold in real-world centimetres, converted to pixels local to the gate via the camera calibration. None (default) keeps the pixel constant (distance_threshold) unconditionally; requires a calibrated camera to take effect..- default: None.
-
enable_events(bool): Enable events to be sent to the MQTT broker.- default: True.
-
head_vel_ema(float): EMA alpha for head velocity smoothing.- default: 0.4.
-
hysteresis_frames(int): Number of frames to wait before counting a double crossing.- default: 8.
-
idswap_speed_mps(float): Min world-space feetpoint speed (m/s) implied between a crossing candidate's first and most recent sample for it to be rejected as an ID-swap teleport rather than a genuine crossing. Walking is ~1.5, running ~6; teleports are hundreds..- default: 8.0 (0.0-1000.0).
-
min_reliable_confidence(float): Minimum Phase 3reliability(SmoothFeetProcessor) for a sample to count as confirming evidence -- a source-switch frame reads low and is excluded, not voted against the crossing..- default: 0.5 (0.0-1.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
TryOnProcessor
Virtual Try-On Processor
Sets up a table contour for pick and place actions
Parameters
-
bistate_frames(int): Number of frames of delay for pick/place trigger.- default: 10.
-
box_try_on_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of box where the pickables should be inside-of to be considered a try-on.- default: face.
-
pickables(str): Comma separated list of pickable classes.- default: glasses1,glasses2,glasses3.
-
table_contour(polygon): Polygon of the pick/place table.- default: [[0.0, 0.5], [1.0, 0.5], [1.0, 1.0], [0.0, 1.0]].
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
use_global_stage(bool): Use boxes from the global stage.- default: True.
Module tracking
AreaKalmanTrackingProcessor
Kalman based box tracking with delimited areas of tracking and areas where no trackers are expected to be "born" (e.g. you don't expect someone to appear from nowhere in the middle of the frame).
Parameters
-
association_iou(float): Minimum IOU overlap percent for a track to match a tracker.- default: 0.3 (0.0-1.0).
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: person.
-
max_age(int): Maximum age in FRAMES for a tracklet to survive.- default: 50 (0-9999).
-
min_hits(int): Minimum number of hits for a tracklet to survive.- default: 3 (0-1000).
-
no_birth_area(polygon): Area of the image where no trackers should appear.- default: [].
-
re_association_distance(float): Re-association distance to re-match an unmatched detection.- default: 50 (0.0-200).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
tracking_area(polygon): Area of the image where to track.- default: [].
BoxOverlapIdentifierProcessor
Assigns and recognizes box ids based on simple IOU overlap
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: person.
-
discard_older_than(float): Discard seen boxes when more than (secs) have passed.- default: 3 (0-9999).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
update_iou(float): Minumum IOU between frames to preserve stable coordinates.- default: 0.8 (0.0-1.0).
FaceInsidePersonIdentifierProcessor
Assigns and recognizes faces inside person boxes and matches their IDs if possible.
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes for the person container (person, topbody, etc).- default: person.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
KalmanTrackingProcessor
Basic Kalman-based Tracking Processor
Parameters
-
association_iou(float): Minimum IOU overlap percent for a track to match a tracker.- default: 0.3 (0.0-1.0).
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: person.
-
max_age(float): Maximum age in FRAMES for a tracklet to survive.- default: 3.0 (0-999).
-
min_hits(int): Minimum number of hits for a tracklet to survive.- default: 3 (0-1000).
-
re_association_distance(float): Re-association distance to re-match an unmatched detection.- default: 50 (0.0-20000).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
ReidentifierProcessor
DNN-embedding based reidentification processor @deprecated
Parameters
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
SmoothFeetProcessor
Extract feet position from combo boxes and smooth it.
Parameters
-
anchor_ky(float): Vertical anchor offset into head bbox (fraction of h_px).- default: 0.2 (0.0-0.5).
-
ankle_ema_tolerance_m(float): Max |ankle_height - EMA| (m) to accept ankle-height HEIGHT COMMIT. Additive to the basic plausibility range check. Does NOT gate or delay runtime ankle midpoint feetpoint usage..- default: 0.3 (0.05-1.0).
-
ankle_floor_offset_m(float): Ankle-to-floor offset in meters (ankles are above ground).- default: 0.08 (0.0-0.2).
-
ankle_geometry_check_enable(bool): Reject ankle keypoints that fail anatomical sanity (ankle below knee below hip). Defends against pose-net hallucination on occluded ankles..- default: True.
-
ankle_height_enable(bool): Enable one-shot ankle-based height capture when both ankles visible.- default: True.
-
ankle_height_max_m(float): Maximum plausible person height (m) for ankle capture.- default: 2.2 (1.5-2.5).
-
ankle_height_min_m(float): Minimum plausible person height (m) for ankle capture.- default: 1.0 (0.5-1.5).
-
ankle_midpoint_enable(bool): Use ankle midpoint as highest-priority runtime feetpoint source when reliable.- default: True.
-
ankle_midpoint_min_conf(float): Minimum per-ankle keypoint confidence for ankle midpoint runtime source.- default: 0.5 (0.1-1.0).
-
bbox_filter(bool): Enable EMA filtering of head bbox before projection.- default: True.
-
bestk(bool): Enable best-K sample aggregation for freeze.- default: False.
-
bestk_k(int): Number of top-quality samples to keep.- default: 10 (3-50).
-
bestk_min_gap(int): Min frame gap between kept samples (diversity constraint).- default: 3 (1-50).
-
bestk_min_span(int): Min frame span between first and last top-K sample to allow freeze.- default: 30 (5-500).
-
bypass_delta_thresh(float): Min screen-space feetpoint jump (px) to trigger source-switch bypass. 0=always bypass.- default: 30.0 (0.0-200.0).
-
csv_log(bool): Enable CSV debug logging of feet metrics (slows FPS).- default: False.
-
debug_feet_stages(bool): Store pre-smooth feetpoint for debug visualization.- default: False.
-
elliptical_width(bool): Use elliptical yaw-aware width model.- default: False.
-
feet_smooth_adaptive(bool): Use adaptive alpha based on innovation magnitude.- default: False.
-
feet_smooth_alpha(float): EMA alpha for world-XY feetpoint smoothing (0=OFF, 1=no smoothing).- default: 0.18 (0.0-1.0).
-
feet_smooth_alpha_max(float): Adaptive: max alpha (light smoothing for large moves).- default: 0.5 (0.01-1.0).
-
feet_smooth_alpha_min(float): Adaptive: min alpha (heavy smoothing for small moves).- default: 0.08 (0.01-1.0).
-
feet_smooth_innov_thresh(float): Adaptive: innovation threshold (m) for alpha ramp.- default: 0.15 (0.01-1.0).
-
freeze_tolerance(float): Freeze variance tolerance as fraction of ref height 1.70m (e.g. 0.10 = 10%).- default: 0.05 (0.01-0.3).
-
geo_alpha_floor(float): Minimum geo weight floor (lambda) for soft gate alpha scaling.- default: 0.0 (0.0-1.0).
-
geo_cy_max(float): Max normalized cy (head_cy/img_h) for learning.- default: 0.85 (0.0-1.0).
-
geo_gate(bool): Enable geometric sample gating for learning (depth + cy).- default: False.
-
geo_max_depth(float): Max depth (m) for learning samples.- default: 15.0 (0.5-50.0).
-
geo_soft(bool): Use soft geometric weight instead of hard reject.- default: False.
-
head_d(float): Head depth front-to-back (m).- default: 0.195 (0.12-0.28).
-
head_h(float): Head height top-to-chin (m).- default: 0.23 (0.15-0.3).
-
head_w(float): Head width ear-to-ear (m).- default: 0.155 (0.1-0.25).
-
h_px_gamma(float): Gamma exponent for H_proj shrinkage curve.- default: 0 (0-2.0).
-
h_px_ref(float): Reference h_px for distance-aware H_proj shrinkage (0=disabled).- default: 0 (0-500).
-
h_px_shrink_floor(float): Minimum shrinkage floor (prevents over-correction).- default: 0.85 (0.5-1.0).
-
max_samples(int): Maximum number of samples to use for feet estimation.- default: 15 (0-100).
-
min_distance(float): Minimum distance to the camera to consider for feet estimation.- default: 10.0 (0-100).
-
postfreeze_max_height_jump(float): Max allowed height change (m) when replacing frozen height.- default: 0.15 (0.01-0.5).
-
postfreeze_quality_margin(float): Min quality score improvement to replace frozen height.- default: 0.05 (0.0-0.5).
-
postfreeze_refine(bool): Enable post-freeze height refinement (best-accepted-measurement policy).- default: False.
-
projection_mode(str): Projection mode: hinted, pinhole, hinted_anchor.- default: hinted_anchor.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
uncal_head_multiplier(float): Head-heights below head bottom to estimate feet when uncalibrated and no ankles visible.- default: 6.0 (1.0-12.0).
-
use_model_head_height(bool): Prefer the detector's per-model head height hint (_model_head_height box feature) over head_h when present.- default: True.
-
yaw_blend(bool): Enable yaw-aware width/height fusion downweighting.- default: False.
-
yaw_blend_scale(float): Yaw scale for width trust rolloff (higher=faster).- default: 1.0 (0.5-3.0).
TaggedDoorCounterProcessor
Track boxes hitting into/out of a certain contour
Parameters
-
area_name(str): Name of the area this door enters or exits.- default: area1.
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: person.
-
remove_timeout(float): Timeout (seconds) for stale boxes to be removed.- default: 15.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
TrackingProcessor
Tracking processor with configurable tracker.
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: person.
-
coast_frames(int): Frames to keep emitting a predicted (coasted) PLACEHOLDER box for a recently-confirmed track that the tracker stopped returning, so the Stage actor is not retired during a short occlusion gap (0=disabled). Keep <= the tracker's lost window (max_time_lost = fps/30*track_buffer) to avoid double-counting if the subject reappears under a new id..- default: 0 (0-100).
-
debug_boxes(bool): Generate debug boxes for annotation.- default: True.
-
default_tracker(basic|ucmc|botsort|bytetrack|ocsort|neotracker|headtracker): Default tracker to use.- default: ucmc.
-
fallback_tracker(basic|ucmc|botsort|bytetrack|ocsort|neotracker|headtracker): Fallback tracker to use if default tracker cannot be used.- default: basic.
-
fallback_tracker_params(dict): Extra fallback tracker parameters, passed to constructor.- default: {}.
-
max_age(float): Maximum life in seconds for a lost tracklet to be removed.- default: 5.0 (1.0-20.0).
-
preserve_skeletons(bool): Whether or not to preserve skeleton frames.- default: False.
-
suppress_untracked(bool): Drop boxes whose tracked sub-box was not returned (confirmed) by the tracker, so unconfirmed/lost tracks do not leak downstream carrying an unstable id.- default: False.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
-
tracker_params(dict): Extra tracker parameters, passed to constructor.- default: {}.
Networks
- Network
reid_embedder, defaults to ReidentificationNetwork.
Module transform
SkeletonToUpperBodyBoxProcessor
Processor that converts skeleton keypoints to upper body bounding boxes.
Parameters
-
replace_skeletons(bool): Replace skeletons with upper body boxes.- default: False.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
Module retired (deprecated)
APIReportingProcessor
Generate HTTP(s) calls on box enter/exit states. @deprecated
Parameters
-
api_url(string): Reporting API endpoint.- default: http://api.end.pt.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
GridBasedCalibrationProcessor
@deprecated Grid based calibration for Broox Media Player tactile detection. Deprecated product. Do not use.
Parameters
-
calibration(showcam|grid|bypass|calibrated): Fire calibration manually.- default: bypass.
-
max_frame_count(int): Number of frames for calibration.- default: 300 (1-10000).
-
stream_outfile(string): Full path of the wall.jpg file.- default: /tmp/wall.jpg.
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
LightTrackingProcessor
@deprecated: Used to control an array of lights to react to people passing.
Parameters
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
MappingProcessor
@deprecated Processor that maps coordinates over a 0-1 line over the defined contour
Parameters
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
PersonFaceStageProcessor
@deprecated Keep track of ingressing person and face boxes in a virtual "stage", setting its box.state (entering, entered, exiting, exited...) Specialized version of StageProcessor
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: face.
-
exit_time_interval(float): Time to wait to consider a box out of stage.- default: 3.0 (0.0-60).
-
ingress_time_interval(float): Time to wait to consider a box in stage.- default: 1.0 (0.0-60).
-
is_view_time_interval(float): Minimum attention time to consider presence a view event.- default: 2.0 (0.0-60).
-
send_status_post_url(str): Send a HTTP POST (JSON) request with the whole stage info every send_status_time_interval..- default: None.
-
send_status_time_interval(float): Send a MQTT status packet with the whole stage info every time interval. Zero disables..- default: 1.0 (0.0-60.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.
StageProcessor
@deprecated Keep track of ingressing boxes in a virtual "stage", setting its box.state (entering, entered, exiting, exited...)
Parameters
-
box_type(face|person|upper_body|blob|hand|head|skeleton|placeholder|combo): Type of boxes this processor will handle.- default: face.
-
exit_time_interval(float): Time to wait to consider a box out of stage.- default: 3.0 (0.0-60).
-
ingress_time_interval(float): Time to wait to consider a box in stage.- default: 1.0 (0.0-60).
-
is_view_time_interval(float): Minimum attention time to consider presence a view event.- default: 2.0 (0.0-60).
-
send_status_post_url(str): Send a HTTP POST (JSON) request with the whole stage info every send_status_time_interval..- default: None.
-
send_status_time_interval(float): Send a MQTT status packet with the whole stage info every time interval. Zero disables..- default: 1.0 (0.0-60.0).
-
trace(bool): Emit per-frame trace records for this processor when ProcessorTracer is enabled globally..- default: False.