NOTICE: This software (or technical data) was produced for the U.S. Government under contract, and is subject to the Rights in Data-General Clause 52.227-14, Alt. IV (DEC 2007). Copyright 2024 The MITRE Corporation. All Rights Reserved.
Introduction
There are a few places in OpenMPF where the quality of a detection comes into play. Here, "detection quality" is defined to be a measurement of how "good" the detection is that can be used to rank the detections in a track from highest to lowest quality. In many cases, components use "confidence" as an indicator of quality; however, there are some components that do not compute a confidence value for its detections, and there are others that compute a different value that is a better measure of quality for that detection algorithm. As discussed in the next section, OpenMPF uses detection quality for a variety of purposes.
Quality Selection Properties
QUALITY_SELECTION_PROPERTY
is a string that defines the name of the property to use for quality selection. For
example, a face detection component may generate detections with a DESCRIPTOR_MAGNITUDE
property that represents the
quality of the face embedding and how useful it is for reidentification. The Workflow Manager will search the
detection_properties
map in each detection and track for that key and use the corresponding value as the detection
quality. The value associated with this property must be an integer or floating point value, where higher values
indicate higher quality. The one exception is that if this property is set to CONFIDENCE
, then the confidence
member
of each detection and track is used to determine quality.
The primary way in which OpenMPF uses detection quality is to determine the track "exemplar", which is the highest quality detection in the track. For components that do not compute a quality value, or where all detections have identical quality, the Workflow Manager will choose the first detection in the track as the exemplar.
QUALITY_SELECTION_THRESHOLD
is a numerical value used for filtering out low quality detections and tracks. All
detections below this threshold are discarded, and if all the detections in a track are discarded, then the track itself
is also discarded. Note that components may do this filtering themselves, while others leave it to the Workflow Manager
to do the filtering. The thresholding process can be circumvented by setting this threshold to a value less than the
lowest possible value. For example, if the detection quality value computed by a component has values in the range 0 to
1, then setting the threshold property to -1 will result in all detections and all tracks being retained.
FEED_FORWARD_TOP_QUALITY_COUNT
can be used to select the number of detections to include in a feed-forward track. For
example, if set to 10, only the top 10 highest quality detections are fed forward to the downstream component for that
track. If less then 10 detections meet the QUALITY_SELECTION_THRESHOLD
, then only that many detections are fed
forward. Refer to the Feed Forward Guide for more information.
ARTIFACT_EXTRACTION_POLICY_TOP_QUALITY_COUNT
can be used to select the number of detections that will be used to
extract artifacts. For example, if set to 10, the detections in a track will be sorted by their detection quality value,
and then the artifacts for the 10 detections with the highest quality will be extracted. If less then 10 detections meet
the QUALITY_SELECTION_THRESHOLD
, then only that many artifacts will be extracted.
Hybrid Quality Selection
In some cases, there may be a detection property that a component would like to use as a measure of quality but it doesn't lend itself to simple thresholding, perhaps because its value is not linearly increasing, or it is not numeric. The component can in this case create a custom property that represents the quality of detections using a numerical value that corresponds to the ordering of the detections from low to high quality.
As a simple example, a face detector might be able to calculate the face pose and would like to select for artifact
extraction the face that is closest to frontal pose, and the two that are closest to left and right profile pose. If the face
detector computes the yaw with values between -90 degrees and +90 degrees, then the numerical order of those values would
not produce the desired result. In this case, the component could create a custom detection property called RANK
, and
assign values to that property that orders the detections from highest to lowest quality. The face detection component would
assign the highest value of RANK
to the detection with a value of yaw closest to 0, and the detections with values of yaw
closest to +/-90 degrees would be assigned the second and third highest values of RANK
. Detections without the RANK
property would be treated as having the lowest possible quality value. Thus, the track exemplar would be the face with the
frontal pose, and the ARTIFACT_EXTRACTION_POLICY_TOP_QUALITY_COUNT
property would be set to 3, so that the frontal and
two profile pose detections would be kept as track artifacts in addition to the exemplar.