Coresets for Kinematic Data: From Theorems to Real-Time Systems
A coreset (or core-set) of a dataset is its semantic compression with respect to a set of queries, such that querying the (small) coreset provably yields an approximate answer to querying the original (full) dataset. In the last decade, coresets provided breakthroughs in theoretical computer science for approximation algorithms, and more recently, in the machine learning community for learning "Big data". However, we are not aware of real-time systems that compute coresets in a rate of dozens of frames per second. In this paper we suggest a framework to turn theorems to such systems using coresets. We begin with a proof of independent interest, that any set of n matrices in R^d× d whose sum is S, has a positively weighted subset whose sum has the same center of mass (mean) and orientation (left+right singular vectors) as S, and consists of O(dr) matrices (independent of n), where r≤ d is the rank of S. We provide an algorithm that computes this (core) set in one pass over possibly infinite stream of matrices in d^O(1) time per matrix insertion. By maintaining such a coreset for kinematic (moving) set of n points, we can run pose-estimation algorithms, such as Kabsch or PnP, on the small coresets, instead of the n points, in real-time using weak devices, while obtaining the same results. This enabled us to implement a low-cost (<100) IoT wireless system that tracks a toy (and harmless) quadcopter which guides guests to a desired room (in a hospital, mall, hotel, museum, etc.) with no help of additional human or remote controller. We hope that our framework will encourage researchers outside the theoretical community to design and use coresets in future systems and papers. To this end, we provide extensive experimental results on both synthetic and real data, as well as a link to the open code of our system and algorithms.
READ FULL TEXT