SIFT on GPU Changchang Wu 5/8/2007.

Slides:



Advertisements
Similar presentations
Distinctive Image Features from Scale-Invariant Keypoints
Advertisements

Feature Detection. Description Localization More Points Robust to occlusion Works with less texture More Repeatable Robust detection Precise localization.
Distinctive Image Features from Scale-Invariant Keypoints David Lowe.
Object Recognition from Local Scale-Invariant Features David G. Lowe Presented by Ashley L. Kapron.
Group Meeting Presented by Wyman 10/14/2006
SIFT & MatLab Pier Luigi Mazzeo.
Matlab Tutorial. Session 2. SIFT
BRISK (Presented by Josh Gleason)
The SIFT (Scale Invariant Feature Transform) Detector and Descriptor
Outline SIFT Background SIFT Extraction Application in Content Based Image Search Conclusion.
Object Recognition using Invariant Local Features Applications l Mobile robots, driver assistance l Cell phone location or object recognition l Panoramas,
CSE 473/573 Computer Vision and Image Processing (CVIP)
Instructor: Mircea Nicolescu Lecture 15 CS 485 / 685 Computer Vision.
SIFT on GPU ( the slides are not updated for newer versions of SiftGPU ) Changchang Wu 5/8/2007.
Distinctive Image Feature from Scale-Invariant KeyPoints
Feature extraction: Corners and blobs
Distinctive image features from scale-invariant keypoints. David G. Lowe, Int. Journal of Computer Vision, 60, 2 (2004), pp Presented by: Shalomi.
Scale Invariant Feature Transform (SIFT)
SIFT - The Scale Invariant Feature Transform Distinctive image features from scale-invariant keypoints. David G. Lowe, International Journal of Computer.
Blob detection.
The SIFT (Scale Invariant Feature Transform) Detector and Descriptor
CS4670: Computer Vision Kavita Bala Lecture 8: Scale invariance.
776 Computer Vision Jan-Michael Frahm, Enrique Dunn Spring 2013.
Distinctive Image Features from Scale-Invariant Keypoints David G. Lowe – IJCV 2004 Brien Flewelling CPSC 643 Presentation 1.
Scale-Invariant Feature Transform (SIFT) Jinxiang Chai.
Interest Point Descriptors
Computer vision.
Reporter: Fei-Fei Chen. Wide-baseline matching Object recognition Texture recognition Scene classification Robot wandering Motion tracking.
776 Computer Vision Jan-Michael Frahm Fall SIFT-detector Problem: want to detect features at different scales (sizes) and with different orientations!
CVPR 2003 Tutorial Recognition and Matching Based on Local Invariant Features David Lowe Computer Science Department University of British Columbia.
CSCE 643 Computer Vision: Extractions of Image Features Jinxiang Chai.
Wenqi Zhu 3D Reconstruction From Multiple Views Based on Scale-Invariant Feature Transform.
Lecture 7: Features Part 2 CS4670/5670: Computer Vision Noah Snavely.
Distinctive Image Features from Scale-Invariant Keypoints Ronnie Bajwa Sameer Pawar * * Adapted from slides found online by Michael Kowalski, Lehigh University.
Features Digital Visual Effects, Spring 2006 Yung-Yu Chuang 2006/3/15 with slides by Trevor Darrell Cordelia Schmid, David Lowe, Darya Frolova, Denis Simakov,
Kylie Gorman WEEK 1-2 REVIEW. CONVERTING AN IMAGE FROM RGB TO HSV AND DISPLAY CHANNELS.
Distinctive Image Features from Scale-Invariant Keypoints David Lowe Presented by Tony X. Han March 11, 2008.
Feature extraction: Corners and blobs. Why extract features? Motivation: panorama stitching We have two images – how do we combine them?
CSE 185 Introduction to Computer Vision Feature Matching.
A Tutorial on using SIFT Presented by Jimmy Huff (Slightly modified by Josiah Yoder for Winter )
Scale Invariant Feature Transform (SIFT)
Presented by David Lee 3/20/2006
Recognizing specific objects Matching with SIFT Original suggestion Lowe, 1999,2004.
Blob detection.
Another Example: Circle Detection
SIFT Scale-Invariant Feature Transform David Lowe
CS262: Computer Vision Lect 09: SIFT Descriptors
Interest Points EE/CSE 576 Linda Shapiro.
Lecture 13: Feature Descriptors and Matching
Presented by David Lee 3/20/2006
Lecture 07 13/12/2011 Shai Avidan הבהרה: החומר המחייב הוא החומר הנלמד בכיתה ולא זה המופיע / לא מופיע במצגת.
Distinctive Image Features from Scale-Invariant Keypoints
Local features: main components
Scale Invariant Feature Transform (SIFT)
SIFT paper.
Digital Visual Effects, Spring 2006 Yung-Yu Chuang 2006/3/22
Feature description and matching
CAP 5415 Computer Vision Fall 2012 Dr. Mubarak Shah Lecture-5
From a presentation by Jimmy Huff Modified by Josiah Yoder
The SIFT (Scale Invariant Feature Transform) Detector and Descriptor
Interest Points & Descriptors 3 - SIFT
Edge detection f(x,y) viewed as a smooth function
CSE 185 Introduction to Computer Vision
ECE734 Project-Scale Invariant Feature Transform Algorithm
Lecture VI: Corner and Blob Detection
Feature descriptors and matching
SIFT SIFT is an carefully designed procedure with empirically determined parameters for the invariant and distinctive features.
Presented by Xu Miao April 20, 2005
Presentation transcript:

SIFT on GPU Changchang Wu 5/8/2007

Outline Background and related implementation SIFT on GPU (SiftGPU) Goal: fast, general, flexible Conclusion and Future Work

SIFT (Lowe, IJCV04) Scale Invariant Feature Transform Detect and describe features that are invariant to similarity transformation Popular technique in computer vision Panorama Generation Microsoft Photosynth Content Based Image Retrieval

SIFT (Lowe, IJCV04) Scale-space extrema detection Difference-of-Gaussian function A close approximate of scale normalized Laplacian of Gaussian , more stable than gradient, Hessian, or Harris corner function. Maximum and minimum of DOG are Invariant to scale change

Scale-space Construction σdoubles for the next octave, just resample For each octave: s Intervals, k=21/s,s+3 Gaussian images

Finding Local Extrema DOG space Comparing a pixel (marked with X) to its 26 neighbors in 3x3 regions at the current and adjacent scales (marked with circles). Also assign orientations to keypoints using the maxima in local gradient orientation histogram (In a window of size 3*sigma)

Refinement Sub-pixel localization Edge elimination Fitting 3D quadratic function in the 3x3x3 cube to find sub-pixel location Edge elimination

Feature descriptor Select Gaussian image at expected scale Compute weighted histogram of gradient orientation (relative to keypoint orientations) 128D vector =16 squares x 8(directions)

Existing implementations CPU version Lowe’s binary (http://www.cs.ubc.ca/~lowe/keypoints/) Andrea Vedaldi’s SIFT++ (http://vision.ucla.edu/~vedaldi/code/siftpp/siftpp.html) C#(autopanosift), Matlab… GPU version Sudipta Sinha’s GPUSIFT Sebastian Heymann’s

Current Progress Intensity conversion and sampling (cg + GLSL) Image pyramid (cg + GLSL) keypoint detection (cg + GLSL) Sub-pixel localization (none) Edge elimination (cg only) Feature List generation (cg + GLSL+CPU) Orientation (cg fp40 only) Display List generation (cg + GLSL) Descriptor generation (cg) Visualization (cg + GLSL, Glut+win32) + means multiple versions of implementations

Scale Space Construction Run horizontal and vertical Gaussian filtering separately When # of DOG level in an octave is 3, the largest Gaussian kernel can be 19x19 Compute difference of Gaussian in the same pass since it is already read out Didn’t use Ping-pong, sometimes write and read same texture, because not all channels need to be changed.

Color channel mapping Use Texture from Destination instead of PingPong

Keypoint Detection Compare with 26 neighbors? Do in 4 steps Intra-level comparing with 8 neighbors, (compute gradient in this pass, and edge elimination) Store the maximum and minimum of the 9 pixels in an auxiliary texture Early z culling based on the in-level suppression Comparing with the maximum and minimum of the pixel at upper level and lower level

Feature List Generation on GPU Use Gernot Ziegler’s histogram pyramid method. Use all RGBA chanels Do reduction, and read back the highest level. Allocate texture to hold the feature list Traverse the pyramid to get location

Feature Orientation Use a circular window (use 3*sigma as radius) Compute weighted histogram of orientations (36 bins as 9 float4) Binary search to locate desired bin bin+=float4(fmod(idx,4)==float4(0,1,2,3)) Smoothing the histogram smoothing kernel can easily be large one (1 3 6 7 6 3 1 )/27 as three (1 1 1)/3 next

Feature Orientation Find the bins that are larger than 0.8 times the maximum Local maximum Do interpolation to get sub-bin orientation Save the largest N<=4M to RGBA of M output textures Save N to the original texture, and set N to 0 when N is larger than a threshold

Reshape Feature List Rebuild the feature list according to orientations (variable # of orientations) Use the histogram pyramid method

Feature Descriptor Use 4 textures for MRT, and 8 RGBA pixels in each. (8*4*4 = 128) Trilinear interpolation is implemented A Geometry Shader Version is also available. Geometry shader can write as many pixels as possible by emitting point primitives

Use 2*sigma ( instead of 6*sigma ) as box size to display here

Display VBO generation Display SIFT features as rotated/scaled square to illustrate scale and orientation. Say feature texture is WxH (normally H is 1, because no more than 2048..) Make a texture that is Wx(4H) For point (x, y), the index is Idx=y*W+x Then original index is idxo=Idx/4 And sub-index is fmod(idx,4), and use sub-index to offset and rotate this point Copy render result to VBO (vertex buffer object)

Parameterization This SIFT on GPU also tries to give flexibility by providing parameters # of octaves, # of levels, sigma0 Starting octave, starting level Filter window size Orientation window size Descriptor window size … Shaders are dynamically generated

Result Speed on nVidia 8800 13 Hz on a 640*480 image Part can run on laptop Raedon X300 (Maximum instruction is 96) No orientation/Edge elimination/Descriptor

Conclusion Very close to sift++ Finished a basic and also flexible framework of SIFT Reduced CPU/GPU data transfer by feature list generation on GPU

Future work Sub-pixel localization Try CUDA for descriptor generation Try the packed texture format of Sebastian Heymann’s implementation Compatibility with more Graphic Cards