Commit fcb1bcac0dd72c4c1d63e70838f4ed5e156f81d8

Authored by Josh Klontz
1 parent f76fe526

removed adaboost

openbr/plugins/classification/adaboost.cpp deleted
1 -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
2 - * Copyright 2012 The MITRE Corporation *  
3 - * *  
4 - * Licensed under the Apache License, Version 2.0 (the "License"); *  
5 - * you may not use this file except in compliance with the License. *  
6 - * You may obtain a copy of the License at *  
7 - * *  
8 - * http://www.apache.org/licenses/LICENSE-2.0 *  
9 - * *  
10 - * Unless required by applicable law or agreed to in writing, software *  
11 - * distributed under the License is distributed on an "AS IS" BASIS, *  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *  
13 - * See the License for the specific language governing permissions and *  
14 - * limitations under the License. *  
15 - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */  
16 -  
17 -#include <openbr/plugins/openbr_internal.h>  
18 -#include <openbr/core/opencvutils.h>  
19 -  
20 -using namespace cv;  
21 -  
22 -namespace br  
23 -{  
24 -  
25 -/*!  
26 - * \ingroup transforms  
27 - * \brief Wraps OpenCV's Ada Boost framework  
28 - * \author Scott Klum \cite sklum  
29 - * \br_link http://docs.opencv.org/modules/ml/doc/boosting.html  
30 - * \br_property type enum Type of Adaboost to perform. Options are: [Discrete, Real, Logit, Gentle] Default is Real.  
31 - * \br_property splitCriteria enum Splitting criteria used to choose optimal splits during a weak tree construction. Options are: [Default, Gini, Misclass, Sqerr] Default is Default.  
32 - * \br_property weakCount int Maximum number of weak classifiers per stage. Default is 100.  
33 - * \br_property trimRate float A threshold between 0 and 1 used to save computational time. Samples with summary weight \leq 1 - weight\_trim\_rate do not participate in the next iteration of training. Set this parameter to 0 to turn off this functionality. Default is 0.95.  
34 - * \br_property folds int OpenCV parameter variable. Default value is 0.  
35 - * \br_property maxDepth int Maximum height of each weak classifier tree. Default is 1 (stumps).  
36 - * \br_property returnConfidence bool Return the confidence value of the classification or the class value of the classification. Default is true (return confidence value).  
37 - * \br_property overwriteMat bool If true, the output template will be a 1x1 matrix with value equal to the confidence or classification (depending on returnConfidence). If false the output template will be the same as the input template. Default is true.  
38 - * \br_property inputVariable QString Metadata variable storing the label for each template. Default is "Label".  
39 - * \br_property outputVariable QString Metadata variable to store the confidence or classification of each template (depending on returnConfidence). If overwriteMat is true nothing will be written here. Default is "".  
40 - */  
41 -class AdaBoostTransform : public Transform  
42 -{  
43 - Q_OBJECT  
44 - Q_ENUMS(Type)  
45 - Q_ENUMS(SplitCriteria)  
46 -  
47 - Q_PROPERTY(Type type READ get_type WRITE set_type RESET reset_type STORED false)  
48 - Q_PROPERTY(int weakCount READ get_weakCount WRITE set_weakCount RESET reset_weakCount STORED false)  
49 - Q_PROPERTY(float trimRate READ get_trimRate WRITE set_trimRate RESET reset_trimRate STORED false)  
50 - Q_PROPERTY(int folds READ get_folds WRITE set_folds RESET reset_folds STORED false)  
51 - Q_PROPERTY(int maxDepth READ get_maxDepth WRITE set_maxDepth RESET reset_maxDepth STORED false)  
52 - Q_PROPERTY(bool returnConfidence READ get_returnConfidence WRITE set_returnConfidence RESET reset_returnConfidence STORED false)  
53 - Q_PROPERTY(bool overwriteMat READ get_overwriteMat WRITE set_overwriteMat RESET reset_overwriteMat STORED false)  
54 - Q_PROPERTY(QString inputVariable READ get_inputVariable WRITE set_inputVariable RESET reset_inputVariable STORED false)  
55 - Q_PROPERTY(QString outputVariable READ get_outputVariable WRITE set_outputVariable RESET reset_outputVariable STORED false)  
56 -  
57 -public:  
58 - enum Type { Discrete = ml::Boost::DISCRETE,  
59 - Real = ml::Boost::REAL,  
60 - Logit = ml::Boost::LOGIT,  
61 - Gentle = ml::Boost::GENTLE};  
62 -  
63 -private:  
64 - BR_PROPERTY(Type, type, Real)  
65 - BR_PROPERTY(int, weakCount, 100)  
66 - BR_PROPERTY(float, trimRate, .95)  
67 - BR_PROPERTY(int, folds, 0)  
68 - BR_PROPERTY(int, maxDepth, 1)  
69 - BR_PROPERTY(bool, returnConfidence, true)  
70 - BR_PROPERTY(bool, overwriteMat, true)  
71 - BR_PROPERTY(QString, inputVariable, "Label")  
72 - BR_PROPERTY(QString, outputVariable, "")  
73 -  
74 - Ptr<ml::Boost> boost;  
75 -  
76 - void init()  
77 - {  
78 - boost = ml::Boost::create();  
79 -  
80 - if (outputVariable.isEmpty())  
81 - outputVariable = inputVariable;  
82 - }  
83 -  
84 - void train(const TemplateList &data)  
85 - {  
86 - Mat samples = OpenCVUtils::toMat(data.data());  
87 - Mat labels = OpenCVUtils::toMat(File::get<float>(data, inputVariable));  
88 -  
89 - Mat types = Mat(samples.cols + 1, 1, CV_8U);  
90 - types.setTo(Scalar(ml::VAR_NUMERICAL));  
91 - types.at<char>(samples.cols, 0) = ml::VAR_CATEGORICAL;  
92 -  
93 - boost->setBoostType(type);  
94 - boost->setWeakCount(weakCount);  
95 - boost->setWeightTrimRate(trimRate);  
96 - boost->setCVFolds(folds);  
97 - boost->setMaxDepth(maxDepth);  
98 -  
99 - boost->train(ml::TrainData::create(samples, ml::ROW_SAMPLE, labels, noArray(), noArray(), types, noArray()));  
100 - }  
101 -  
102 - void project(const Template &src, Template &dst) const  
103 - {  
104 - dst = src;  
105 - float response;  
106 - if (returnConfidence) {  
107 - response = boost->predict(src.m().reshape(1,1), noArray(), ml::StatModel::RAW_OUTPUT) / weakCount;  
108 - } else {  
109 - response = boost->predict(src.m().reshape(1,1));  
110 - }  
111 -  
112 - if (overwriteMat) {  
113 - dst.m() = Mat(1, 1, CV_32F);  
114 - dst.m().at<float>(0, 0) = response;  
115 - } else {  
116 - dst.file.set(outputVariable, response);  
117 - }  
118 - }  
119 -  
120 - void load(QDataStream &stream)  
121 - {  
122 - OpenCVUtils::loadModel(boost,stream);  
123 - }  
124 -  
125 - void store(QDataStream &stream) const  
126 - {  
127 - OpenCVUtils::storeModel(boost,stream);  
128 - }  
129 -};  
130 -  
131 -BR_REGISTER(Transform, AdaBoostTransform)  
132 -  
133 -} // namespace br  
134 -  
135 -#include "classification/adaboost.moc"