This is a page started by Andrew Davison, Department of Computing, Imperial College London. I have the idea, based on my experience in doing research on computer vision and robotics, that the same few basic methods turn up again and again in any really successful vision or robot system or paper. This page is an experimental attempt to put down my initial ideas on what these are, and to collect more ideas and comments on this. One day I may write a book about it.... -1- MATCHING SALIENT FEATURES Bayesian analysis can be on all data, but often we use cheap processing to pick out the important bits for what we are trying to do. We can give these local signatures for matching (natural fiducials, places of high autocorrelation). Salient features, SIFT, bottom-up recognition Salient features c.f. representative features (in machine learning) = those that we can classify, separate sensibly by distance in feature space Matching: finding the same features in different data bottom-up, and checking for consensus with a global model. Interpretation tree EXEMPLARS, KEYFRAMES --- should they be grouped with features (sparsification of data, significant observations) Exemplar based matching (Jurie etc.); boosting? Generative->lookup; hashing classification; regression -2- OPTIMISATION In optimisation, we find a peak in probability rather than spending the effort to find a full distribution. Often we maximise energy = -log probability. Convex optimisation is when we are guaranteed to find a minimum. Generic optimisation, cost function and constraints. Simple methods like gradient descent (KLT) and advanced like Levenberg Marquardt. Bundle adjustment. Least squares to solve most Gaussian problems Optimisation vs. filtering? Solution to problems, progress from linear method -> proper Bayesian analysis of cost function and efficient non-linear optimisation Servoing, negative feedback --- should this be lumped with optimisation? c.f. hypothesize and test?? Graph cuts, etc. There seems to be a big win computationally if you don't propagate uncertainty. * Cost function or "energy" will depend monotonically on probability. -3- FILTERING Smoothing in general: sequential weighted combination. Bayesian filters, EKF, particle filters: propagating uncertainty As special case of Bayesian network? Model selection: Bayesian automatically achieves Occam's Razor c.f. classification, segmentation, recognition, clustering moving to discrete to make decisions; increase efficiency (c.f. logic) c.f. regularisation; or should that be separate? -4- HYPOTHESIZE AND TEST (MONTE CARLO/EXHAUSTIVE) Can be either exhaustive or use samples Exhaustive search; with constraints? (i.e. to solve sudoku) Using random (or uniform) numbers so you don't have to choose, e.g. RANSAC, GA --- like a particle filter, trial and error with a lot of processing power and survival of the fittest. Outlier rejection: make lots of measurements and check for consistency with global solution, throwing out the bad ones (RANSAC) * In a particle filter, a direct implementation of Bayes' Rule -5- ACTIVE, GUIDED PROCESSING Use priors to speed up processing. Active search, top-down, guided processing: keeping online probabilistic estimates to drive decisions affecting the data capture process (also map management, etc.); information theory, decision theory. Decision trees: an approximation to fully information-theoretic search, branch and bound. Lazy methods: only do what you want to (sounds opposite to Active!) Tracking: Use knowledge of continuity to permit local search AZ "we know a lot about tracking" in video google talk -6- COARSE TO FINE (template matching, submaps). Takes advantage of multi-scale structure of most data. Horn-Schunk optical flow. Small world property of most networks Locality, Markov assumption A greedy method? KD-tree; where does it fit Efficient tree topologies, either exact or approximate. Tree structures: allow coarse to fine, message passing Chow-Liu tree, junction tree Sparse graphs in general? Fractal structure. Solving large inference problems by local operations Permits distributed processing -7- MACHINE LEARNING Machine learning, using large amounts of training data to determine what the important, repeated parts are. PCA, GP regression. PCA -> locally linear embedding, etc. for more complex variations Machine learning is still a kind of a black box for the parts of the problem that are too hard to analyse. But incredibly powerful. General learning: extract representative features, then cluster. Depth from a single image. Labelling a SLAM map with semantic information. GA, ANN, code that writes itself Gaussian processes, general regression: does that fit here? Internet vision --- using vast tagged data sources, flickr, etc. -8- SEARCH Search: organising data for rapid look-up (document frequency, visual words) Recognition (objects, places) as efficient look up in large database = wide-baseline matching c.f. wikipedia principle? It is really search which makes this possible in large databases. -9- QUANTISATION Reduce dynamic range of data for classification? Should this be able classification in general? c.f. discriminative vs. generative model Quantisation --- bag of words, etc. Using low order wavelets and indexing. =clustering? c.f. two-valued logic --- it's efficient, and abstracts away unimportant detail Candidates: - LOOK-UP TABLES Substituting memory for computation Randomised trees, lists and ferns Is machine learning just the same thing as this? - PARALLELISATION More generally distributed processing? Since the current economics of processors make many small cores better than a few large ones - NORMALISATION/INVARIANT QUANTITIES e.g. in correlation c.f. quantisation? - OVERPARAMETERISATION, IMPLICIT FUNCTIONS e.g. in graphics - SEPARATING PROBLEMS DUE TO CONDITIONAL INDEPENDENCE e.g. CI-Graph, FastSLAM - RAW DATA REGISTRATION How clever is this? Do we just do this when we data is little enough that we have enough computer power to do the whole lot? A special point is that efficient hardware implementation is likely. Scan matching, ICP, visual odometry, pose-based SLAM (relying on short track lengths and exploratory motion) Optical flow Puts a regular grid on data as captured by sensor rather than looking for special bits (features). - COOL LINEAR ALGEBRA - AWESOME DATA STRUCTURES KD trees hash maps inverted index - DRY PROGRAMMING Is this within context? DRY programming (aided by source code control, OOP). But Knuth says rather than reusable code he wants re-editable code... "Wikipedia principle" that you only need to catalogue the world's knowledge once and then use and refine it OOBN |
Testing whether I can add comments! Please add more...