Deformable Part-based Models#
Discriminatively Trained Part Based Models for Object Detection#
The object detector described below has been initially proposed by P.F. Felzenszwalb in [102] . It is based on a Dalal-Triggs detector that uses a single filter on histogram of oriented gradients (HOG) features to represent an object category. This detector uses a sliding window approach, where a filter is applied at all positions and scales of an image. The first innovation is enriching the Dalal-Triggs model using a star-structured part-based model defined by a “root” filter (analogous to the Dalal-Triggs filter) plus a set of parts filters and associated deformation models. The score of one of star models at a particular position and scale within an image is the score of the root filter at the given location plus the sum over parts of the maximum, over placements of that part, of the part filter score on its location minus a deformation cost easuring the deviation of the part from its ideal location relative to the root. Both root and part filter scores are defined by the dot product between a filter (a set of weights) and a subwindow of a feature pyramid computed from the input image. Another improvement is a representation of the class of models by a mixture of star models. The score of a mixture model at a particular position and scale is the maximum over components, of the score of that component model at the given location.
The detector was dramatically speeded-up with cascade algorithm proposed by P.F. Felzenszwalb in [100] . The algorithm prunes partial hypotheses using thresholds on their scores.The basic idea of the algorithm is to use a hierarchy of models defined by an ordering of the original model’s parts. For a model with (n+1) parts, including the root, a sequence of (n+1) models is obtained. The i-th model in this sequence is defined by the first i parts from the original model. Using this hierarchy, low scoring hypotheses can be pruned after looking at the best configuration of a subset of the parts. Hypotheses that score high under a weak model are evaluated further using a richer model.
In OpenCV there is an C++ implementation of DPM cascade detector.
Classes#
Name |
Description |
|---|---|
This is a C++ abstract class, it provides external user API to work with DPM. |
Class cv::dpm::DPMDetector#
This is a C++ abstract class, it provides external user API to work with DPM.
#include <opencv2/dpm.hpp>Collaboration diagram for cv::dpm::DPMDetector:
Detailed Description#
This is a C++ abstract class, it provides external user API to work with DPM.
Constructor & Destructor Documentation#
~DPMDetector()#
cv::dpm::DPMDetector::~DPMDetector()
Member Function Documentation#
detect()#
void cv::dpm::DPMDetector::detect(
cv::Mat & image,
std::vector< ObjectDetection > & objects )
Find rectangular regions in the given image that are likely to contain objects of loaded classes (models) and corresponding confidence levels.
Parameters
image— An image.objects— The detections: rectangulars, scores and class IDs.
getClassCount()#
size_t cv::dpm::DPMDetector::getClassCount()
Return a count of loaded models (classes).
getClassNames()#
std::vector< std::string > const & cv::dpm::DPMDetector::getClassNames()
Return the class (model) names that were passed in constructor or method load or extracted from models filenames in those methods.
isEmpty()#
bool cv::dpm::DPMDetector::isEmpty()
create()#
static cv::Ptr< DPMDetector > cv::dpm::DPMDetector::create(
std::vector< std::string > const & filenames,
std::vector< std::string > const & classNames = std::vector< std::string >() )
Load the trained models from given .xml files and return cv::Ptr
Parameters
filenames— A set of filenames storing the trained detectors (models). Each file contains one model. See examples of such files here/opencv_extra/testdata/cv/dpm/VOC2007_Cascade/.classNames— A set of trained models names. If it’s empty then the name of each model will be constructed from the name of file containing the model. E.g. the model stored in “/home/user/cat.xml” will get the name “cat”.
Source file#
The documentation for this class was generated from the following file:
opencv2/dpm.hpp