Accordin to F. Perronnin: Highly efficient to compute and to match perfect in theory
But robusteness vs informativeness tradeoff is hard to set
(personal conclusion)
Approache based on global image descriptors are confined to near-duplicate detection applications until now
Modern search engine uses local representations and leverage them
Clustering
Finding groups in data
Many techniques:
Connectivity models
hierarchical clustering,…
clustering = set of neighbors
Centroid models: k-means
cluster = centroid point
Distribution model
Gaussian mixtures models est. w. Expection maxim
cluster = statistical distribution
Density models
Graph-based models
Always the same goal:
Minimise the differences between elements within the same cluster
Maximise the differences between elements within different cluster
Number of clusters:
Many methods require to choose it beforehand
Several techniques to adjust the number of clusters automatically
Outliers rejection:
Some techniques do not assign lonely points to any cluster
Focus on HAC and K-Means today
Hierarchical Agglomerative Clustering
Some linkage types
Single linkage
minimizes the distance between the closest observations
Maximum or complete linkage
Average linkage
Centroid linkage
Waard criterion
Divisive clustering
HAC is bottom-up, divisive clustering is top-down Classical approach:
Start with all data
Apply flat clustering
Recursively apply the approach on each cluster until some termination
Pros: can have more than 2 sub-trees, must faster than HAC Cons: same issues as flat clustering, non-determinism
K-means
K-Mean clustering (again)
The K-means algorithm aims to choose centroids that minimise the inertia, or within-cluster sum-of-squares criterion
it does not maximizes inter-cluster disantce
it puts centers so as to get the best coverage (may not be on a density peak !)
Algorithm
Initialization:
Randomly selected cluster centers
Calculate distance oiunts centers
Assign each point to closest center
Update cluster centers: avg of points
Result: centroid centers
local maximax
tessellation / Voronoi set over the dataset
The previous algorithm is called "Batch K-Means" or simply "K-Means" because it considers the whole dataset at each iteration.
Batcj K-Means is not only sensible to outliers and initialization, it is also very slow to compute on large datasets..
It is possible to avoid this speed/memory issue by randomly smapling the dataset at each step.
Results are only slightly worse
Speed and memory requirements make it usable on bigger datasets
This approach is call "Online K-Means" or "MiniBatch K-Means"
Application: Color quantization
Many clustering techniques to play with !
Evaluation of clustering
Need some supervision ?
By construction, clustering algorithms are optimal as they are expect to find some optimal balance between high intra-cluster similarity and low inter-cluster similarity, on their training set.
How do these internal criteria translate into good effectiveness for applications ?
A common approach is to rely on labeled data to compute new indicators:
Purity: sort of "agreement" inside each cluster
Normalized Mutual Information (NMI) and Entropu: information measures
Rand Index (RI) and F measure: error counts
Modern density estimation point of view
But what about if we leave some samples out for testing the generalization ?
HAC or K-Means "overfit" the underlying data distribution.
It does not alway make sense, but if we are interested in density estimation, then we can assess how well our model estimates the probability of unseen data. The "E" step of the EM algo is based on this idea.
Local feature detectors
Introduction
How are panorama pictures created from multiple pictures ?
Detect small parts invariant under viewpoint change: "Keypoints"
Find pairs of amthcing keypoints using a description of their neighborhood
Compute the most likely transformation to blend images together
Some classical detectors
Edge (gradient detectors)
Soble
Canny
Edge detectors
What's an edge ?
Image is a function
Edges are rapid changes in thi function
The derivative of a function exhibits the edges
Gris = elevation comme dans le watershed
Image derivatives
Recall:
We don't have an "actual" function, must estimate
Possibility: set
Apply filter |-1|0|+1| to the image ( gradient)
We get terribly spiky results
We need to interpolate/smooth
Gaussian filter
We get a sobel filter
Sobel filter
Gradient magnitude with Sobel
Canny edge detection
Extract real lines !
Non-maximum suppression
Finalization
Corner detectors
Good features
Good features are unique!
Can find the "same" feature easily
Not mistaken for "different" features
Good features are robust under perturbation
Can detect them under translation, rotation
Intensity shift
Noise
How can we find unique patches ?
Sky? Bad!
Very little variation Edge? OK Corners? Good!
Self-difference
Harris corner detector
Naive computation:
Bon a partir de maintenant c'est que des screens parce que le prof trace
This allows us to "simplify" the original equation
and more important making it faster to compute, thanks to simpler derivatives which can be computed for the whole image.
If we developp the equation and write it as usual matrix form, we get:
where is the structure tensor:
This trick is useful because and can be computed very simply.
The need for eigenvalues If the edge is rotated, so are the values of and . Eigenvalues give us the ellipsis axis lens.