Multi Object Association Tracking

By: Abhinav Rai and Abhishek Agarwal

reviews2

Obstacles in the environment needs to be tracked over the consequetive frames. Tracking the obstacles is of great importance as it helps to generate a model of the motion of the vehicle. This motion model thus obtained can be used to make inferences like Time-To-Collision (TTC) of the vehicle. Hence, is of great utility for ADAS solutions.

In ADAS Applications it is required that Tracking is performed in real-time on embedded software. Most of the solutions available process only a few frames per second, hence cannot be used in real-time applications. The solution presented is able to tackle this blockade by achieving a very high rate, while retaining high accuracy. Thus making it a viable solution in real time ADAS applications

The solution makes use of motion and visual queue to associate the obstacle in different frames. The motion queue is obtained by using Kalman Filter. The motion model of the obstacle is developed by observing the vehicle over multiple frames and this motion model is then used to predict the position of the obstacle and the associated variance in the next frame. Thereafter, the distance of the previously observed obstacles from the detections obtained in the current frame is computed. The visual queue is obtained by computing distance over the histogram of the custom features obtained from the bounding box. The custom features are designed to make efficient use of memory coalescing over CUDA devices. The bounding boxes generated using object detection models have irrelevant information, especially around the edges. This is tackled by making use of a weight function and then computing the weighted histogram over the features obtained.

Once we have the distances using motion and visual queue between the previously observed obstacles and the current detections, the two scores are combined to generate the association cost between each of the detections and the previosly detected obstacles. This association cost needs to minimized. A bipartite graph solving algorithm which minimizes cost can then be used to obtain a one-to-one matching.

The current implementation is highly optimized algorithmically and also makes use of SIMD instructions and efficient CUDA programming to make it real time, while retaining the accuracy. The average running time is around 10 milliseconds for a 640x480 resolution image on a Tegra TX2 system. The CPU utilization is also very low at 18%. Hence, making it a viable for use in ADAS applications.