A few weeks ago we added some computer vision functionality to our open source ArrayFire GPU computing library. Specifically, we implemented the FAST feature extractor, BRIEF feature point descriptor, ORB multi-resolution scale invariant feature extractor, and a Hamming distance function. When combined, these functions enable you to find features in videos (or images) and track them between successive frames.
Computer Vision in ArrayFire – Part 2: Feature Description and Matching
In the Part 1 of this series, we talked about upcoming feature detection algorithms in ArrayFire library. In this post we show case some of the preliminary results of Feature Description and matching that are under development in the ArrayFire library. Feature description is done using the ORB feature descriptor[1]. The descriptors are matched against a database of features using Hamming distance as the metric. The results we show in this blog use the same hardware and software used in the previous blog: Intel Sandy Bridge Xeon processor with 32 cores (for baseline OpenCV CPU implementation) NVIDIA Tesla K20C (for OpenCV and ArrayFire CUDA implementations) ArrayFire development version OpenCV version 2.4.9 Feature Description and Matching Benchmarks In Part 1 we showed that …
Computer Vision in ArrayFire – Part 1: Feature Detection
A few weeks ago we wrote Writing a Simple Corner Detector with ArrayFire. In that post, we discussed a little bit about the new features that we are working on for ArrayFire. Some of these new computer vision features will be available in the next release of ArrayFire. For the next release, ArrayFire will have a complete set to start with feature tracking, including FAST for feature detection [1], ORB for description [2] and a Hamming distance matcher. We will also include a dedicated version of the Harris corner detector [3], even though it can be written using existing ArrayFire functions. This implementation is straightforward, easy to use and will have better performance. For this post, we will share some …
Fast Computer Vision with OpenCV and ArrayFire
Update: While the post below discusses LibJacket (no longer a product), you can do the same thing in the newer, but different, ArrayFire library. Improved performance benchmarks and a simpler API are the results of moving from LibJacket to ArrayFire. Mcclanahoochie just posted some code and instructions for pairing OpenCV with LibJacket to get accelerated computer vision. You can do really fast image processing on video cam feeds too, see picture below: Really cool stuff. Computer vision is really hot with applications emerging in defense, radiology, games, automotive, and other consumer applications. Computer vision algorithms like these are also going mobile. For instance, we have started to build LibJacket for Mobile applications, which runs on Tegra, PowerVR, and other mobile …
Feature Learning Architectures with GPU-acceleration
Stanford researchers in Andrew Ng’s group used GPUs and Jacket to speed up their work on Feature Learning Architectures. They wanted to know why certain feature learning architectures with random, untrained weights perform so well on object recognition tasks. The complete write up can be found in On random weights and unsupervised feature learning in ICML 2011. They decide to use GPUs and Jacket for this study because of “the need to quickly evaluate many architectures on thousands of images.” Jacket taps into the immense computing power of GPUs and speeds up research utilizing many images. This is the architecture used in the study: They started by studying the basis of good performance for systems and found convolutional pooling …
Computer Vision Demos at SC’10 with 8-GPU Colfax CXT8000
We just returned from SC’10, the biggest supercomputing show of the year. At the show, we demoed Jacket driving computer vision demos on an 8-GPU Colfax CXT8000 system… pure eye candy! We had CPU and GPU versions of the demos running on 8 different monitors, each attached to the 8 Tesla C2050 GPUs in the system. Input data for the various demos was sourced from 3 webcams and 2 Blu-ray video inputs. Checkout the demo details, below: Demo 1 Sobel edge detection with image dilation and interpolation overlaid on Blu-ray video in realtime. Demo 2 Feature detection on a 4-level pyramid of 640×480 realtime webcam video. Demo 3 Gradient descent feature tracking , a stripped down version of KLT, tracking …
Accelerate Computer Vision Data Access Patterns with Jacket & GPUs
For computer vision, we’ve found that efficient implementations require a new data access pattern that MATLAB does not currently support. MATLAB and the M language is great for linear algebra where blocks of matrices are the typical access pattern, but not for Computer Vision where algorithms typically operate on patches of imagery. For instance, to pull out patches of imagery in M, one must do a double nested for loop, A = rand(100,100) for xs = -W:W for ys = -W:W patch(xs+W+1, ys+W+1) = A(xs+1+x, ys+1+y); end end …with guards for boundary conditions, etc. It gets even more complicated with non-square patches. On top of that, these implementations don’t translate to the GPUs memory hierarchy at all and are thus …