ReIdentify Objects
Reidentify objects by comparing signatures generated by a ReId model. Overwrites object tracking ids when match found.
Overview
The ReIdentify Objects node allows for reidentifying objects by comparing signatures generated by a ReId model. This functionality is useful for applications requiring accurate object tracking across different frames or scenes.
Inputs & Outputs
- Input media: Raw Video.
- Output media: Raw Video.
- Output metadata: updated
objects[].idvalues andobjects[].reid_match_info.
Pipeline usage
Place object detection, Track Objects, and a ReID model-inference node before this node. The selected ReID model must attach a compatible embedding tensor to each object; detections without embeddings cannot be matched. This node may replace the tracker's current object ID with an earlier identity, so downstream nodes that rely on stable IDs should come after it. Start with a conservative reid_threshold, validate false matches on representative video, and shorten max_object_lifespan when identities should not persist through long absences. Attribute matching is a supplemental signal and is useful only when upstream classifiers produce reliable attributes.
Properties
| Property | Description | Type | Default | Required |
|---|---|---|---|---|
objects_to_reid | ex. car,person,car.red`. Object types to process. Leave blank to process all. | model-labels | null | No |
object_src_node | If specified, only process objects generated by the specified source node. Accepted node type: model_inference. | string | null | No |
reid_model_node | Node that contains the reidentification model. Accepted node type: model_inference. | string | null | Yes |
reid_comparison_method | ReId comparison method. Options: Cosine (cosine); Adaptive Angular Margin Loss (additive_angular_margin_loss). | enum | cosine | No |
reid_threshold | Only consider objects with similarity above this threshold as a ReId match. Range: minimum 0, maximum 1.0. Step: 0.05. | float | 0.5 | Yes |
match_attributes | Match object attributes | bool | false | No |
min_attributes_to_match | Minimum number of attributes that must match to consider two objects as the same. Conditional on match_attributes being true. Unit: attributes. | number | 0 | No |
attribute_weight | Overall match Score = ReId Score + Attribute match score. Attribute match score = Weight * # of matching attributes / max # of matching attributes. Weight factor for attribute matches when computing match score. Conditional on match_attributes being true. | float | 1.0 | No |
max_object_lifespan | Max. object lifespan. Unit: seconds. | float | 300 | No |
debug | If enabled, debug information will be displayed on objects. | bool | false | No |
Output Metadata
The fields below are declared by this node's metadata schema; the JSON values are representative examples.
This node will update Object id for existing objects in the objects metadata when it finds a match with previously seen objects.
It will also add a reid_match_info property to existing objects that it processes with reid info.
| Path | Type | Description |
|---|---|---|
objects | array | Value of objects. |
objects[].attributes | dictionary | Object's classes, as identified by Classifier models chained to this Object Detection model. Contains: label : Class label, probability : Probability, class_id : Unique id for the class' label |
objects[].attributes[].class_id | int | Unique id for this object's label. |
objects[].attributes[].label | string | Label for this object as outlined in Model Labels |
objects[].attributes[].probability | float | Probability of detection |
objects[].class_id | int | Unique id for this object's label. |
objects[].id | long int | A unique ID assigned to this object by a Track Objects Node, and replaced by this node |
objects[].label | string | Label for this object as outlined in Model Labels |
objects[].probability | float | Probability of detection |
objects[].rect.height | integer | Value of height. |
objects[].rect.left | integer | Value of left. |
objects[].rect.top | integer | Value of top. |
objects[].rect.width | integer | Value of width. |
objects[].reid_match_info.orig_id | integer | Original ID that was replaced for matched and quick_match objects |
objects[].reid_match_info.score | number | Match score for matched and validated quick_match objects |
objects[].reid_match_info.type | string | Options : in_db (object with this id was found in db), matched (Re-id signature matched with db entry), quick_match (ID matched with a previous object that was signature matched) |
JSON example
{
"objects": [
{
"attributes": [
{
"class_id": 10,
"label": "white",
"probability": 0.9437
}
],
"class_id": 0,
"id": 5750484150146564100,
"label": "car",
"probability": 0.7,
"rect": {
"height": 25,
"left": 656,
"top": 201,
"width": 47
},
"reid_match_info": {
"orig_id": 1218897777140957201,
"score": 0.838,
"type": "quick_match"
}
}
]
}Updated 14 days ago
