|
| 1 | +Latent SVM |
| 2 | +=============================================================== |
| 3 | + |
| 4 | +Discriminatively Trained Part Based Models for Object Detection |
| 5 | +--------------------------------------------------------------- |
| 6 | + |
| 7 | +The object detector described below has been initially proposed by |
| 8 | +P.F. Felzenszwalb in [Felzenszwalb2010a]_. It is based on a |
| 9 | +Dalal-Triggs detector that uses a single filter on histogram of |
| 10 | +oriented gradients (HOG) features to represent an object category. |
| 11 | +This detector uses a sliding window approach, where a filter is |
| 12 | +applied at all positions and scales of an image. The first |
| 13 | +innovation is enriching the Dalal-Triggs model using a |
| 14 | +star-structured part-based model defined by a "root" filter |
| 15 | +(analogous to the Dalal-Triggs filter) plus a set of parts filters |
| 16 | +and associated deformation models. The score of one of star models |
| 17 | +at a particular position and scale within an image is the score of |
| 18 | +the root filter at the given location plus the sum over parts of the |
| 19 | +maximum, over placements of that part, of the part filter score on |
| 20 | +its location minus a deformation cost easuring the deviation of the |
| 21 | +part from its ideal location relative to the root. Both root and |
| 22 | +part filter scores are defined by the dot product between a filter |
| 23 | +(a set of weights) and a subwindow of a feature pyramid computed |
| 24 | +from the input image. Another improvement is a representation of the |
| 25 | +class of models by a mixture of star models. The score of a mixture |
| 26 | +model at a particular position and scale is the maximum over |
| 27 | +components, of the score of that component model at the given |
| 28 | +location. |
| 29 | + |
| 30 | +The detector was dramatically speeded-up with cascade algorithm |
| 31 | +proposed by P.F. Felzenszwalb in [Felzenszwalb2010b]_. The algorithm |
| 32 | +prunes partial hypotheses using thresholds on their scores.The basic |
| 33 | +idea of the algorithm is to use a hierarchy of models defined by an |
| 34 | +ordering of the original model's parts. For a model with (n+1) |
| 35 | +parts, including the root, a sequence of (n+1) models is obtained. |
| 36 | +The i-th model in this sequence is defined by the first i parts from |
| 37 | +the original model. Using this hierarchy, low scoring hypotheses can be |
| 38 | +pruned after looking at the best configuration of a subset of the parts. |
| 39 | +Hypotheses that score high under a weak model are evaluated further using |
| 40 | +a richer model. |
| 41 | + |
| 42 | +In OpenCV there is an C++ implementation of Latent SVM. |
| 43 | + |
| 44 | +.. highlight:: cpp |
| 45 | + |
| 46 | +LSVMDetector |
| 47 | +----------------- |
| 48 | +.. ocv:class:: LSVMDetector |
| 49 | +
|
| 50 | +This is a C++ abstract class, it provides external user API to work with Latent SVM. |
| 51 | + |
| 52 | +LSVMDetector::ObjectDetection |
| 53 | +---------------------------------- |
| 54 | +.. ocv:struct:: LSVMDetector::ObjectDetection |
| 55 | +
|
| 56 | + Structure contains the detection information. |
| 57 | + |
| 58 | + .. ocv:member:: Rect rect |
| 59 | +
|
| 60 | + bounding box for a detected object |
| 61 | + |
| 62 | + .. ocv:member:: float score |
| 63 | +
|
| 64 | + confidence level |
| 65 | + |
| 66 | + .. ocv:member:: int classID |
| 67 | +
|
| 68 | + class (model or detector) ID that detect an object |
| 69 | + |
| 70 | +LSVMDetector::~LSVMDetector |
| 71 | +------------------------------------- |
| 72 | +Destructor. |
| 73 | + |
| 74 | +.. ocv:function:: LSVMDetector::~LSVMDetector() |
| 75 | +
|
| 76 | +LSVMDetector::create |
| 77 | +----------------------- |
| 78 | +Load the trained models from given ``.xml`` files and return ``cv::Ptr<LSVMDetector>``. |
| 79 | + |
| 80 | +.. ocv:function:: static cv::Ptr<LSVMDetector> LSVMDetector::create( const vector<string>& filenames, const vector<string>& classNames=vector<string>() ) |
| 81 | +
|
| 82 | + :param 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/LSVMDetector/models_VOC2007/. |
| 83 | + |
| 84 | + :param 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". |
| 85 | + |
| 86 | +LSVMDetector::detect |
| 87 | +------------------------- |
| 88 | +Find rectangular regions in the given image that are likely to contain objects of loaded classes (models) |
| 89 | +and corresponding confidence levels. |
| 90 | + |
| 91 | +.. ocv:function:: void LSVMDetector::detect( const Mat& image, vector<ObjectDetection>& objectDetections, float overlapThreshold=0.5f, int numThreads=-1 ) |
| 92 | +
|
| 93 | + :param image: An image. |
| 94 | + :param objectDetections: The detections: rectangulars, scores and class IDs. |
| 95 | + :param overlapThreshold: Threshold for the non-maximum suppression algorithm. |
| 96 | + :param numThreads: Number of threads used in parallel version of the algorithm. |
| 97 | + |
| 98 | +LSVMDetector::getClassNames |
| 99 | +-------------------------------- |
| 100 | +Return the class (model) names that were passed in constructor or method ``load`` or extracted from models filenames in those methods. |
| 101 | + |
| 102 | +.. ocv:function:: const vector<string>& LSVMDetector::getClassNames() const |
| 103 | +
|
| 104 | +LSVMDetector::getClassCount |
| 105 | +-------------------------------- |
| 106 | +Return a count of loaded models (classes). |
| 107 | + |
| 108 | +.. ocv:function:: size_t LSVMDetector::getClassCount() const |
| 109 | +
|
| 110 | +
|
| 111 | +.. [Felzenszwalb2010a] Felzenszwalb, P. F. and Girshick, R. B. and McAllester, D. and Ramanan, D. *Object Detection with Discriminatively Trained Part Based Models*. PAMI, vol. 32, no. 9, pp. 1627-1645, September 2010 |
| 112 | +.. [Felzenszwalb2010b] Felzenszwalb, P. F. and Girshick, R. B. and McAllester, D. *Cascade Object Detection with Deformable Part Models*. CVPR 2010, pp. 2241-2248 |
| 113 | +
|
0 commit comments