Home

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


Comments

Andrew Davison - 4 Oct 2009 15:45

Testing whether I can add comments! Please add more...