VPI DCF Tracker outCorrelationResponses

• Hardware Platform (Jetson / GPU) Jetson Orin Nano
• JetPack Version (valid for Jetson only) 6.2.1
• VPI Version 3.2
• DeepStream Version 7.1
• Issue Type (questions, new requirements, bugs) Questions

I’m experiencing an issue with the VPI DCF Tracker outCorrelationResponses and outMaxCorrelationResponses parameters, it seems these arrays are never populated:

...
CHECK_STATUS(vpiArrayCreate(MAX_TRACKED_TARGETS, VPI_ARRAY_TYPE_DCF_TRACKED_BOUNDING_BOX, 0, &in_targets));
CHECK_STATUS(vpiArrayCreate(MAX_TRACKED_TARGETS, VPI_ARRAY_TYPE_DCF_TRACKED_BOUNDING_BOX, 0, &out_targets));
CHECK_STATUS(vpiImageCreate(dcfInitParams.featurePatchSize, dcfInitParams.featurePatchSize * MAX_TRACKED_TARGETS, VPI_IMAGE_FORMAT_F32, 0, &out_correlations));
CHECK_STATUS(vpiArrayCreate(MAX_TRACKED_TARGETS, VPI_ARRAY_TYPE_F32, 0, &out_max_correlations));
...
CHECK_STATUS(vpiSubmitDCFTrackerLocalizeBatch(stream, 0, dcf, NULL, 0, NULL, patches, in_targets, out_targets, out_correlations, out_max_correlations, NULL));
CHECK_STATUS(vpiStreamSync(stream));
...
CHECK_STATUS(vpiSubmitDCFTrackerUpdateBatch(stream, 0, dcf, NULL, 0, NULL, NULL, patches, targets, NULL));
CHECK_STATUS(vpiStreamSync(stream));
CHECK_VPI_STATUS(vpiArrayLockData(targets, VPI_LOCK_READ, VPI_ARRAY_BUFFER_HOST_AOS, &targets_data));
CHECK_VPI_STATUS(vpiArrayLockData(out_max_correlations, VPI_LOCK_READ, VPI_ARRAY_BUFFER_HOST_AOS, &max_correlation_data));
// Here *targets_data.buffer.aos.sizePointer == 1 but *max_correlation_data.buffer.aos.sizePointer == 0 (even when state == VPI_TRACKING_STATE_TRACKED)
  1. Am I doing something wrong?
  2. Once this works, is outMaxCorrelationResponses actually the confidence to be used when deciding whether tracking is lost?

Thank you in advance.

Hi,

Are you able to share more details about your issue?
Is there any error message, or does the algorithm fail to work due to the parameter?

Thanks.

Hello @AastaLLL,

Thank you for your reply.

As stated in the above code comments, objects are being tracked - outObjects is being populated and bbox updated, but outCorrelationResponses/outMaxCorrelationResponses aren’t. The function signature is:

VPIStatus vpiSubmitDCFTrackerLocalizeBatch(VPIStream stream, uint64_t backend, VPIPayload payload, const int32_t *enabledSequences, int32_t numSequences, VPIImage featureMaskingWindow, VPIImage inPatches, VPIArray inObjects, VPIArray outObjects, VPIImage outCorrelationResponses, VPIArray outMaxCorrelationResponses, const VPIDCFTrackerParams *params)

Since this seems to be undocumented, can you please explain/verify which conditions can cause outMaxCorrelationResponses to not be populated even though a valid VPIArray is being passed?

Thank you!

Hi @AastaLLL,

Any news regarding this?

Thank you!