3#include "../_cexports/c_polimago.h"
5#include "../global.hpp"
6#include "../value_range.hpp"
8#include "predictor_factory_base.hpp"
9#include "search_predictor.hpp"
10#include "../minos/training_set.hpp"
11#include "../sample_database/sample_regression_image_list.hpp"
37 : PredictorFactoryBase()
38 , searchTrainingParameters_()
42 searchTrainingParameters_.NumClfs = 6;
43 searchTrainingParameters_.SampleSize = 2000;
78 return static_cast<int>(searchTrainingParameters_.SampleSize);
93 searchTrainingParameters_.SampleSize = sampleSize;
110 return searchTrainingParameters_.InvarianceParams.XYRadius;
132 searchTrainingParameters_.InvarianceParams.XYRadius = radius;
155 auto diff = range.
Max().Rad() - range.
Min().Rad();
156 if (diff > CVB_M_PI * 2)
158 searchTrainingParameters_.InvarianceParams.MinAngle = -CVB_M_PI;
159 searchTrainingParameters_.InvarianceParams.MaxAngle = CVB_M_PI;
163 searchTrainingParameters_.InvarianceParams.MinAngle = range.
Min().Rad();
164 searchTrainingParameters_.InvarianceParams.MaxAngle = range.
Max().Rad();
166 if (searchTrainingParameters_.InvarianceParams.MinAngle > searchTrainingParameters_.InvarianceParams.MaxAngle)
168 std::swap(searchTrainingParameters_.InvarianceParams.MinAngle,
169 searchTrainingParameters_.InvarianceParams.MaxAngle);
182 return scaleFactorRange_;
202 scaleFactorRange_ = range;
214 return singularValueRange_;
226 singularValueRange_ = range;
236 return static_cast<InvarianceType>(searchTrainingParameters_.InvarianceParams.InvarianceType);
255 searchTrainingParameters_.InvarianceParams.InvarianceType =
256 static_cast<CExports::TInvarianceType
>(invariances);
266 return static_cast<int>(searchTrainingParameters_.NumClfs);
280 searchTrainingParameters_.NumClfs = numSteps;
291 return static_cast<int>(searchTrainingParameters_.Resolution12);
306 searchTrainingParameters_.Resolution12 = resolution;
316 return static_cast<int>(searchTrainingParameters_.ResolutionRest);
330 searchTrainingParameters_.ResolutionRest = resolution;
341 PredictorFactoryBase::UseSettingsFromPredictor(clf);
344 searchTrainingParameters_ = clf.searchTrainingParameters_;
357 return Internal::DoResCallObjectOut<SearchPredictor>([&](
void* & res)
359 return CVB_CALL_CAPI(PMTrainSearchClassifierFromSil(sil.
Handle(), ..., preproCode_, lambda_, ..., res);
372 return Internal::DoResCallObjectOut<SearchPredictor>([&](
void* & res)
374 return CVB_CALL_CAPI(PMTrainSearchClassifierFromMts(mts.
Handle(), ..., preproCode_, lambda_, ..., res);
380 CExports::TTrainSearchParams searchTrainingParameters_;
381 ValueRange<double> scaleFactorRange_;
382 ValueRange<double> singularValueRange_;
static Angle FromRadians(double rad, bool trim=false) noexcept
Create an angle in radians.
Definition angle.hpp:39
A Minos Training Set from which a classifier can be generated.
Definition training_set.hpp:1188
void * Handle() const noexcept
Classic API CLF handle.
Definition training_set.hpp:1295
SearchPredictorFactory()
Constructor.
Definition search_predictor_factory.hpp:36
Predictor that may be used for searching objects.
Definition search_predictor.hpp:44
ValueRange< double > ScaleRange() const noexcept
Get the range of scale factors that was covered during classifier training.
Definition search_predictor.hpp:192
static ValueRange< int > FeatureResolutionRange()
Valid range of feature resolution value.
Definition predictor_factory_base.hpp:59
Factory class for the generation of search predictors.
Definition search_predictor_factory.hpp:30
void SetExtractionRadius(double radius)
Sets the radius for extracting positive search instances.
Definition search_predictor_factory.hpp:125
void SetScaleRange(ValueRange< double > range)
Sets the range of scale factors to be covered during classifier training. Only meaningful if the inva...
Definition search_predictor_factory.hpp:192
int NumClassificationSteps() const noexcept
Gets the number of classification steps during search operation.
Definition search_predictor_factory.hpp:264
void UseSettingsFromPredictor(const SearchPredictor &clf)
Copy the predictor generation settings from a predictor.
Definition search_predictor_factory.hpp:339
void SetSampleSize(int sampleSize)
Sets the sample size that has been used in each training set.
Definition search_predictor_factory.hpp:86
void SetSingularValueRange(ValueRange< double > range)
Sets the range of permissible singular values to be covered during classifier training....
Definition search_predictor_factory.hpp:224
ValueRange< Angle > AngleRange() const
Gets the range of angles to be covered during classifier training.
Definition search_predictor_factory.hpp:141
static constexpr int SampleSizeMin
Absolute minimum value for SampleSize.
Definition search_predictor_factory.hpp:69
void SetFeatureResolutionStep1And2(int resolution)
Sets the feature resolution (determines the size of the classification retina) for search step 1 and ...
Definition search_predictor_factory.hpp:300
void SetFeatureResolutionRest(int resolution)
Sets the feature resolution (determines the size of the classification retina) for step 3 and up.
Definition search_predictor_factory.hpp:324
void SetNumClassificationSteps(int numSteps)
Sets the number of classification steps during search operation.
Definition search_predictor_factory.hpp:274
double ExtractionRadius() const noexcept
Gets the radius for extracting positive search instances.
Definition search_predictor_factory.hpp:108
ValueRange< double > ScaleRange() const
Gets the range of scale factors to be covered during classifier training. Only meaningful if the inva...
Definition search_predictor_factory.hpp:180
int FeatureResolutionStep1And2() const noexcept
Gets the feature resolution (determines the size of the classification retina) for search step 1 and ...
Definition search_predictor_factory.hpp:289
void SetAngleRange(ValueRange< Angle > range)
Sets the range of angles to be covered during classifier training.
Definition search_predictor_factory.hpp:153
static constexpr int NumClassificationStepsMin
Minimum classification step count.
Definition search_predictor_factory.hpp:66
void SetInvariances(InvarianceType invariances)
Sets the invariances to be used for generating the classifier.
Definition search_predictor_factory.hpp:244
SearchPredictorFactory()
Constructor.
Definition search_predictor_factory.hpp:36
ValueRange< double > SingularValueRange() const
Gets the range of permissible singular values to be covered during classifier training....
Definition search_predictor_factory.hpp:212
static ValueRange< double > ScaleFactorRangeDefault()
Default value for the scale factor range.
Definition search_predictor_factory.hpp:48
int FeatureResolutionRest() const noexcept
Gets the feature resolution (determines the size of the classification retina) for step 3 and up.
Definition search_predictor_factory.hpp:314
int SampleSize() const noexcept
Gets the sample size that has been used in each training set.
Definition search_predictor_factory.hpp:76
static ValueRange< double > ScaleFactorRange()
Acceptable scale factor range for search classifier training.
Definition search_predictor_factory.hpp:60
static ValueRange< double > SingularValueRangeDefault()
Default value for the singular value range.
Definition search_predictor_factory.hpp:54
InvarianceType Invariances() const noexcept
Gets the invariances to be used for generating the classifier.
Definition search_predictor_factory.hpp:234
void * Handle() const noexcept
Classic API SIL handle.
Definition sample_list.hpp:411
Classifier type that operates on images.
Definition decl_regression_sil.hpp:190
Container for range definitions.
Definition value_range.hpp:17
T Min() const noexcept
Gets the minimum value.
Definition value_range.hpp:47
T Max() const noexcept
Gets the maximum value.
Definition value_range.hpp:69
Namespace for the Polimago package training functionality.
Definition classification_predictor_factory.hpp:23
std::shared_ptr< SearchPredictorFactory > SearchPredictorFactoryPtr
Convenience shared pointer for SearchPredictorFactory.
Definition search_predictor_factory.hpp:386
Namespace for the Polimago package.
Definition classification_predictor.hpp:38
InvarianceType
Invariance types that can be defined for training.
Definition search_predictor.hpp:23
@ AffineGroup
Affine group (i.e. 2x2 matrix plus translation).
Definition search_predictor.hpp:31
@ Translation
Translation.
Definition search_predictor.hpp:27
@ RotationScaleTranslation
Rotation + Scale + Translation.
Definition search_predictor.hpp:29
Root namespace for the Image Manager interface.
Definition c_bayer_to_rgb.h:17
Angle Max(Angle a, Angle b) noexcept
Returns the bigger of two angles.
Definition angle.hpp:495
Angle Min(Angle a, Angle b) noexcept
Returns the smaller of two angles.
Definition angle.hpp:512