Skip to content

Canonical AI tags

NovaVMS uses a controlled vocabulary derived from COCO, AVA, Kinetics, ONVIF Profile M, UCF-Crime, VIRAT, iSafetyBench, PETA and Market1501. The compiled-rule compiler and structured query parser validate exact canonical-tag terms against this list.

New event tags are not assigned by a MobileCLIP text-image tag deriver. The current ingest pipeline aggregates YOLO26n object detections into event_object_facets and writes those ordered class names into events.canonical_tags and event_signatures.canonical_tags for compatibility. Therefore, a compiled canonical_tags predicate can match a newly indexed event only when the exact term is also a class emitted by the current object detector. The broader vocabulary remains useful to parsing and validation but is not proof that every term is produced at ingest.

Source of truth: cloud/config/canonical_tags.json (version 3.0, 345 tags across 30 categories).

Entity categories

CategoryTags
entityperson, vehicle, animal, object, furniture, food, electronic, appliance, sports_equipment
person_typeadult_male, adult_female, child, elderly, group, staff, visitor, security_guard, delivery_person, worker, customer, pedestrian, unknown_person
person_ageage_under_15, age_15_30, age_30_45, age_45_60, age_over_60
vehicle_typecar, truck, motorcycle, bicycle, bus, van, suv, taxi, ambulance, police_car, fire_truck, forklift, golf_cart, scooter, boat, airplane, train, unknown_vehicle
animal_typedog, cat, bird, horse, cow, sheep, elephant, bear, zebra, giraffe, unknown_animal

Action categories

CategoryTags
action_movementwalking, running, standing, sitting, lying_down, crawling, climbing, jumping, dancing, swimming, driving, cycling, skating
action_transitionentering, exiting, approaching, departing, turning, stopping, starting, crossing, passing, following
action_interactioncarrying, holding, pushing, pulling, lifting, throwing, catching, picking_up, putting_down, opening, closing, handshake, hugging, kissing, fighting, helping, giving, receiving, exchanging
action_communicationtalking, listening, gesturing, waving, pointing, using_phone, reading, writing, typing, photographing, recording
action_posturebending, crouching, kneeling, leaning, raising_arm, lowering_arm, stretching, squatting
action_suspiciousloitering, falling, running_away, hiding, trespassing, vandalism, abandoned_object, removed_object, shoplifting, theft, assault, break_in, fighting, threatening, fleeing
action_industrialoperating_machinery, lifting_heavy, wearing_ppe, not_wearing_ppe, unsafe_posture, near_hazard, emergency_response, equipment_malfunction, welding, grinding, forklift_operating, ladder_climbing, confined_space_entry, chemical_handling

Appearance categories

CategoryTags
color_basicred, blue, green, yellow, orange, purple, pink, black, white, gray, brown, beige
color_extendednavy, maroon, olive, teal, aqua, silver, gold, crimson, coral, khaki, turquoise, indigo, violet, tan, cream, charcoal
clothing_uppershirt, t_shirt, sweater, jacket, coat, hoodie, vest, suit_jacket, uniform_top, tank_top, blouse, safety_vest, lab_coat, work_shirt
clothing_lowerpants, jeans, shorts, skirt, dress, suit_pants, uniform_pants, leggings, work_pants, coveralls
clothing_fulldress, jumpsuit, uniform, suit, robe, gown, coverall, hazmat_suit
accessory_headhat, cap, helmet, beanie, headscarf, turban, glasses, sunglasses, mask, face_mask, hard_hat, safety_glasses, face_shield, respirator
accessory_carrybackpack, handbag, suitcase, briefcase, shopping_bag, umbrella, luggage, box, package, toolbox, equipment_bag, cart
accessory_othertie, scarf, watch, jewelry, badge, lanyard, gloves, safety_gloves, ear_protection, knee_pads

Scene categories

CategoryTags
location_indoorentrance, exit, lobby, reception, hallway, corridor, staircase, elevator, escalator, room, office, restroom, kitchen, cafeteria, warehouse, storage, factory_floor, assembly_line, control_room, server_room
location_outdoorparking_lot, sidewalk, road, intersection, crosswalk, driveway, loading_dock, plaza, courtyard, garden, fence, gate, barrier, construction_site, yard, rooftop
location_generalindoor, outdoor, doorway, window, corner, perimeter, restricted_area, hazard_zone
time_of_daydaytime, nighttime, dawn, dusk, morning, afternoon, evening
weatherclear, cloudy, overcast, rainy, snowy, foggy, windy
lightingbright, dim, dark, backlit, shadowed, artificial_light, natural_light

Event and movement categories

CategoryTags
event_typenormal_activity, suspicious_activity, security_incident, traffic_violation, crowd_gathering, emergency, intrusion_detected, line_crossing, area_violation, object_detected, object_removed, object_left, safety_violation, ppe_violation, equipment_issue, fall_detected, fire_detected, smoke_detected
directionnorth, south, east, west, left, right, forward, backward, up, down
speedstationary, slow, normal_speed, fast, very_fast
countsingle, pair, small_group, large_group, crowd

Current event-tag derivation

The current pipeline uses one deterministic object-evidence path:

  1. Detect: YOLO26n returns class, bounding box, confidence, and frame index for each sampled frame.
  2. Aggregate: the cloud writes one event_object_facets row per class. count means sampled frames containing that class, not a distinct-object count.
  3. Project: the same facets are sorted by count descending and class name ascending, then their class names are stored in both compatibility canonical_tags fields and forwarded with EventIndexed.

There is no tag-similarity threshold or per-event top-K label selection in this path. When no object class is detected, the event’s canonical-tag list is empty. The historical MobileCLIP derivation design remains in search ranking and canonical tags v5, but it is not current runtime behavior.

Do not use the legacy alert-rule custom_tags or min_confidence fields as a firing filter. The API accepts and persists them, but the live immediate evaluator skips such rows. Create new AI rules through the compiled wizard and verify the emitted evidence predicates. See Alert rule schema.