GroundHOG - GPU-based Object Detection with Geometric Constraints
GroundHOG - GPU-based Object Detection with Geometric Constraints
In this project, we have developed an algorithm to integrate geometric constraints directly into the design of sliding-window object detectors. The benefit of this approach is best evaluated after other speedups, such as parallelization, have been applied. We therefore ported the original HOG (as described by N. Dalal) to the GPU employing NVidia's CUDA architecture in a highly optimized implementation.
The GPU implementation realizes a significant speedup as compared to a CPU implementation, while maintaining a close similarity to the original HOG features. This is in contrast to some other published GPU ports. Thus, our implementation may be of interest to other researchers as a starting point for their own work. We plan to provide our code along with relevant documentation to support this.
Some key features supported by our groundHOG implementation are:
- Regions-of-interest for each scale to be scanned in the image
- Multiple detectors can be run in parallel, sharing the initial HOG feature computation
- Option to use scene geometry, as presented in our ICVS'11 paper (see below), using automatic ROI calculation based on some camera and scene parameters.
Papers
- Efficient Use of Geometric Constraints for Sliding-Window Object Detection in Video, P. Sudowe, B. Leibe, International Conference on Computer Vision Systems (ICVS'11), 2011.
- Real-Time Multi-Person Tracking with Time-Constrained Detection, D. Mitzel, P. Sudowe, B. Leibe., British Machine Vision Conference (BMVC'11), 2011.
Software
This release includes the features described in the two above papers, which allow to make more efficient use of the computational resources. But the detector can also be run exhaustively on the whole image. The detector is very fast and the recognition performance is very competitive when compared to other published implementations.
groundHOG is a library which you can use in your own projects. The only header cudaHOG.h forms the interface. Some compile-time parameters can be found in the global.h, which influence the behavior of the detector.
The package contains the following:
- cudaHOG library - GPU-based HOG detector
- cudaHOGDetect - command line tool to run detector on images
- cudaHOGDump - command line tool to dump features for training a new SVM
- scripts - to visualize the detection results
- model - this is a model for pedestrian detection trained on the INRIAPerson dataset.
The software is released under GPL v3. If you are interested in a different licence scheme, contact us.
If you use this software for research purposes we ask you to cite our paper: BibTex:
@InProceedings{Sudowe11ICVS,
author = {P. Sudowe and B. Leibe},
title = {{Efficient Use of Geometric Constraints for Sliding-Window Object Detection in Video}},
booktitle = {{International Conference on Computer Vision Systems (ICVS'11)}},
OPTpages = {},
year = {2011},
}
THIS CODE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE. Use at your own risk.
Update: On July 10th 2012 we have uploaded a slightly modified version, which incorporates some small fixes regarding confusing stdout output and in parsing parameter -x.
- Source Code: groundHOG_v1.1_b.tar.gz
- Binaries for 64-bit Linux: groundHOG_v1.1_b_binaries_only.tar.gz
- Binary for Windows: groundHOG_v.1.1_windows_binaries.tar.gz
Thanks to Javier Marin for preparing the Windows built-support.
See the included README.txt for details on usage.
This software is developed and tested on Linux (Ubuntu 64Bit), but the source code package includes both a QMake project file and a Visual Studio 10 solution.
If there are questions regarding the implementation you may contact Patrick Sudowe. If you should find any bugs or want to suggest improvements you are most welcome to contact us. If you want to submit any patches, we prefer git patch format.
Additional Software
We use the SVMdense package to train models for groundHOG. It can be found here.
We have slightly adapted the original version of this in order to exchange models between 32 and 64-bit systems easily. For your convenience we provide this modified version here as well. If you are on a 64-bit system, you may also use the unmodified version of SVMdense directly!
- modified SVMdense package - Linux: svmdense_modified.tar.gz
- modified SVMdense package - Windows: svmdense_modified_visual_studio.tar.gz
- the changes compared to the original version: svmdense_patch_64bit_systems.diff
Contact
For any questions regarding this project contact Patrick Sudowe.