sift descriptor k wasif 200807007 mrityunjay 200807009
DESCRIPTION
INPUT OUTPUT Input: Key point, Orientation, Sigma, Gradient Magnitude (16*16), Gradient Orientation(16*16) Output: Key point, Orientation, Sigma, DescriptorsTRANSCRIPT
SIFT DESCRIPTOR
K Wasif 200807007Mrityunjay 200807009
INTRODUCTION
SIFT features are local and based on the appearance of the object at interesting points, and are invariant to image scale and rotation
Aim: Evaluate descriptors for each key point
Achieve fast computation performance on GPU
INPUT OUTPUT
Input: Key point, Orientation, Sigma, Gradient Magnitude (16*16), Gradient Orientation(16*16)
Output: Key point, Orientation, Sigma, Descriptors
GPU ImplementationEach key point's descriptor evaluation is independent of other key points
Pass gradient magnitude, gradient orientation, sigma for all key points in one pass
Every row of blocks in a grid corresponds to a key point
Every block in a row corresponds to 4*4 subregion of that row key point
FLOW
1) Grid Dimension (1024*16)2) Block Dimension (4*4)3) Gaussian Weight evaluation for each thread4) Product of Gradient magnitude with weights5) For each block create 8 orientation bins6) Add the weighted magnitudes to bins based on gradient orientation.7) Normalize the descriptor values when every block on the grid has finished its execution
ISSUES
Divergence of threads
Less Threads per block are being utilized
Generalizing will effect the performance
Shared Memory
Expensive Operations used
RESULTS
Key Points Time (ms) V340 Our Code
1) 790 10.782 4.523 2)1085 12.57 6.23 3) 4096 25.15 11.87 4) 8232 42.23 20.567
GRAPHS
REFRENCES
1) http://vlfeat.org/download.html 2) http://www.cs.unc.edu/~ccwu/siftgpu/ 3) http://forums.nvidia.com/index.php?act=idx 4) http://wikipedia.org/sift
THANK YOU