JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1
  • Score
    100M100P100Q57311F
  • License MIT

Implementation of object tracking measure in javascript (MOTA, IDF1 ...)

Package Exports

  • object-tracking-measure

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (object-tracking-measure) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Build Status

Object Tracking measure

This project aims to calculate metrics for tracking algorithm (especially MOTA, IDF1)

MOTA

See [1].

const otm = require('object-tracking-measure');

const groundTruths = [
    [
        [22, 33, 20, 20],// x, y, w, h
        [22, 33, 20, 20],
        [22, 33, 20, 20],
        [22, 33, 20, 20]
    ],
    [
        [22, 33, 20, 20],// x, y, w, h
        null,
        [25, 35, 20, 20],
        [39, 41, 20, 20]
    ]
];

const predictions = [
    [
        [23, 33, 22, 20],// x, y, w, h
        [21, 35, 20, 26],
        [23, 33, 22, 20],
        [21, 35, 20, 26]
    ],
    [
        [23, 33, 20, 20],// x, y, w, h
        null,
        [23, 35, 22, 20],
        [39, 35, 20, 26]
    ]
];

otm.mota({
    groundTruths,
    predictions
});

IDF1

See [2].

const otm = require('object-tracking-measure');

const groundTruths = [
    [
        [22, 33, 20, 20],// x, y, w, h
        [22, 33, 20, 20],
        [22, 33, 20, 20],
        [22, 33, 20, 20]
    ],
    [
        [22, 33, 20, 20],// x, y, w, h
        null,
        [25, 35, 20, 20],
        [39, 41, 20, 20]
    ]
];

const predictions = [
    [
        [23, 33, 22, 20],// x, y, w, h
        [21, 35, 20, 26],
        [23, 33, 22, 20],
        [21, 35, 20, 26]
    ],
    [
        [23, 33, 20, 20],// x, y, w, h
        null,
        [23, 35, 22, 20],
        [39, 35, 20, 26]
    ]
];

otm.idf1({
    groundTruths,
    predictions
});

Advanced usage

By default, object-tracking-measure uses

  • distance between boxes is (1 - Intersection Over Union) (using mean-average-precision library)
  • threshold is 1 (i.e. IOU = 0 - no overlap)

You can cutomize this, for example to track distance between {x,y} points like

const otm = require('object-tracking-measure');

const groundTruths = [
    [
        {x: 22, y: 34},
        {x: 22, y: 34},
        {x: 22, y: 34},
        {x: 22, y: 34}
    ],
    [
        {x: 55, y: 68},// x, y, w, h
        null,
        {x: 55, y: 68},
        {x: 55, y: 68}
    ]
];

const predictions = [
    [
        {x: 22, y: 34},// x, y, w, h
        {x: 22, y: 34},
        {x: 22, y: 34},
        {x: 22, y: 34}
    ],
    [
        {x: 55, y: 68},// x, y, w, h
        null,
        {x: 55, y: 68},
        {x: 55, y: 68}
    ]
];

otm.idf1({
    groundTruths,
    predictions,
    distFn: ((a,b) => Math.sqrt(((a.x - b.x) * (a.x - b.x)) + ((a.y - b.y) * (a.y - b.y)))), // Euclidian distance
    threshold: 2 // means that 2 meters far is too far
});

References

[1] Keni Bernardin and Rainer Stiefelhagen (2008). Evaluating Multiple Object Tracking Performance: The CLEAR MOT Metrics

[2] Ergys Ristani1, Francesco Solera2, Roger S. Zou1, Rita Cucchiara2, and Carlo Tomasi1 (2016). Performance Measures and a Data Set for Multi-Target, Multi-Camera Tracking