| Algorithm 1 CLF-BEVSORT Track Manager | |
| 1: | Data: |
| 2: | Track list T = {t0, t1, …, tk} |
| 3: | Unconfident Track list U = {u0, u1, …, ug} |
| 4: | Lost Track list L = {l0, l1, …, lh} |
| 5: | Input: |
| 6: | 3D LiDAR detections D3d = {d0, d1, …, dn} |
| 7: | 2D Camera detections D2d = {d0, d1, …, dm} |
| 8: | Output: T |
| 9: | Initialize: |
| 10: | T ← φ |
| 11: | U ← φ |
| 12: | L ← φ |
| 13: | for frame f in F do |
| 14: | Associate Tf3d, Df3d based on GIoU(Dfbev, Tfbev) |
| 15: | Update T3d given matched(T3d,D3d) |
| 16: | Associate Tf2d, Df2d based on GIoU(Df2d, Tf2d) |
| 17: | Fuse T3d with D2d given matched(T3d,D2d) |
| 18: | Df3d ← unmatched Df3d |
| 19: | Df2d ← unmatched Df2d |
| 20: | Associate Lf3d, Df2d based on GWAC_Affinity(Df2d, Lf2d) |
| 21: | Recover L3d given matched(L3d, D2d): recovered ∈ U |
| 22: | /* from lost track stage */ |
| 23: | Df2d ← unmatched Df2d |
| 24: | Associate Uf3d, Df3d based on GIoU(Dfbev, Ufbev) |
| 25: | Update U3d given matched(U3d, D3d) |
| 26: | Associate Uf2d, Df2d based on GIoU(Df2d, Uf2d) |
| 27: | Fuse U3d with D2d given matched(U3d, D2d) |
| 28: | Upgrade Fused U3d into new tracks: new track ∈ T |
| 29: | ∀u: u ∈ U delete t if age ≥ max age |
| 30: | ∀l: l ∈ L delete t if age ≥ max age |
| 31: | end for |
| 32: | Return: T |