I used the following to check latency of each components:
export NVDS_ENABLE_COMPONENT_LATENCY_MEASUREMENT=1
export NVDS_ENABLE_LATENCY_MEASUREMENT=1
It showed that the primary-gie took 50 ms and secondary-gie took 150 ms. However, the performance test showed that the deepstream-app was processing
at 10 FPS rate.
So how do I make sense of that? The primary-gie has batch-size of 2 and the secondary-gie has batch-size of 1.
Could you elabroate on how DeepStream work asynchronized, and what is the batch latency measuring here?
For instance, I have detected 7 primary instances so intutively they would activate 7 secondary inferences. Is the batch latency for secondary-gie accounts for the time consumption for all 7 secondary inferences or each one?
Would it help if I increase the batch-size of the secondary-gie?
I’m trying understand where my biggest time consumption overhead is, and looking for a way for improvement. Hopefully my questions aren’t confusing, and thanks again for your helpful comment!
For deepstream asynchronization, for example:when the sgie process the third batch, the pgie may work on the fifth batch. The batch latency is for the batch processing time with GIE.
SGIE handles objects which are detected by PGIE, there is only one PGIE instance and only one SGIE instance. If your PGIE detected 7 objects and your SGIE batch size is 1, then the SGIE needs to handle 7 batches. The SGIE latency is for the 7 batches processing.