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"
40 searchTrainingParameters_.NumClfs = 6;
41 searchTrainingParameters_.SampleSize = 2000;
82 return static_cast<int>(searchTrainingParameters_.SampleSize);
97 searchTrainingParameters_.SampleSize = sampleSize;
114 return searchTrainingParameters_.InvarianceParams.XYRadius;
136 searchTrainingParameters_.InvarianceParams.XYRadius = radius;
159 auto diff = range.
Max().Rad() - range.
Min().Rad();
160 if (diff > CVB_M_PI * 2)
162 searchTrainingParameters_.InvarianceParams.MinAngle = -CVB_M_PI;
163 searchTrainingParameters_.InvarianceParams.MaxAngle = CVB_M_PI;
167 searchTrainingParameters_.InvarianceParams.MinAngle = range.
Min().Rad();
168 searchTrainingParameters_.InvarianceParams.MaxAngle = range.
Max().Rad();
170 if (searchTrainingParameters_.InvarianceParams.MinAngle > searchTrainingParameters_.InvarianceParams.MaxAngle)
172 std::swap (searchTrainingParameters_.InvarianceParams.MinAngle, searchTrainingParameters_.InvarianceParams.MaxAngle);
184 return scaleFactorRange_;
203 scaleFactorRange_ = range;
214 return singularValueRange_;
225 singularValueRange_ = range;
235 return static_cast<InvarianceType>(searchTrainingParameters_.InvarianceParams.InvarianceType);
254 searchTrainingParameters_.InvarianceParams.InvarianceType =
static_cast<CExports::TInvarianceType
>(invariances);
264 return static_cast<int>(searchTrainingParameters_.NumClfs);
278 searchTrainingParameters_.NumClfs = numSteps;
288 return static_cast<int>(searchTrainingParameters_.Resolution12);
302 searchTrainingParameters_.Resolution12 = resolution;
312 return static_cast<int>(searchTrainingParameters_.ResolutionRest);
326 searchTrainingParameters_.ResolutionRest = resolution;
337 PredictorFactoryBase::UseSettingsFromPredictor (clf);
340 searchTrainingParameters_ = clf.searchTrainingParameters_;
353 return Internal::DoResCallObjectOut<SearchPredictor>([&](
void* & res)
355 return CVB_CALL_CAPI(PMTrainSearchClassifierFromSil(sil.
Handle(), ..., preproCode_, lambda_, ..., res);
368 return Internal::DoResCallObjectOut<SearchPredictor>([&](
void* & res)
370 return CVB_CALL_CAPI(PMTrainSearchClassifierFromMts(mts.
Handle(), ..., preproCode_, lambda_, ..., res);
376 CExports::TTrainSearchParams searchTrainingParameters_;
377 ValueRange<double> scaleFactorRange_;
378 ValueRange<double> singularValueRange_;
static Angle FromRadians(double rad, bool trim=false) noexcept
Create an angle in radians.
Definition: angle.hpp:44
A Minos Training Set from which a classifier can be generated.
Definition: training_set.hpp:1151
void * Handle() const noexcept
Classic API CLF handle.
Definition: training_set.hpp:1255
Predictor that may be used for searching objects.
Definition: search_predictor.hpp:41
ValueRange< double > ScaleRange() const noexcept
Get the range of scale factors that was covered during classifier training.
Definition: search_predictor.hpp:198
Base class for classifier factory classes.
Definition: predictor_factory_base.hpp:30
static ValueRange< int > FeatureResolutionRange()
Valid range of feature resolution value.
Definition: predictor_factory_base.hpp:56
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:129
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:193
int NumClassificationSteps() const noexcept
Gets the number of classification steps during search operation.
Definition: search_predictor_factory.hpp:262
void UseSettingsFromPredictor(const SearchPredictor &clf)
Copy the predictor generation settings from a predictor.
Definition: search_predictor_factory.hpp:335
void SetSampleSize(int sampleSize)
Sets the sample size that has been used in each training set.
Definition: search_predictor_factory.hpp:90
void SetSingularValueRange(ValueRange< double > range)
Sets the range of permissible singular values to be covered during classifier training....
Definition: search_predictor_factory.hpp:223
ValueRange< Angle > AngleRange() const
Gets the range of angles to be covered during classifier training.
Definition: search_predictor_factory.hpp:145
static constexpr int SampleSizeMin
Absolute minimum value for SampleSize.
Definition: search_predictor_factory.hpp:73
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:296
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:320
void SetNumClassificationSteps(int numSteps)
Sets the number of classification steps during search operation.
Definition: search_predictor_factory.hpp:272
double ExtractionRadius() const noexcept
Gets the radius for extracting positive search instances.
Definition: search_predictor_factory.hpp:112
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:182
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:286
void SetAngleRange(ValueRange< Angle > range)
Sets the range of angles to be covered during classifier training.
Definition: search_predictor_factory.hpp:157
static constexpr int NumClassificationStepsMin
Minimum classification step count.
Definition: search_predictor_factory.hpp:70
void SetInvariances(InvarianceType invariances)
Sets the invariances to be used for generating the classifier.
Definition: search_predictor_factory.hpp:243
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:52
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:310
int SampleSize() const noexcept
Gets the sample size that has been used in each training set.
Definition: search_predictor_factory.hpp:80
static ValueRange< double > ScaleFactorRange()
Acceptable scale factor range for search classifier training.
Definition: search_predictor_factory.hpp:64
static ValueRange< double > SingularValueRangeDefault()
Default value for the singular value range.
Definition: search_predictor_factory.hpp:58
InvarianceType Invariances() const noexcept
Gets the invariances to be used for generating the classifier.
Definition: search_predictor_factory.hpp:233
void * Handle() const noexcept
Classic API SIL handle.
Definition: sample_list.hpp:403
Classifier type that operates on images.
Definition: decl_regression_sil.hpp:182
T Min() const noexcept
Gets the minimum value.
Definition: value_range.hpp:50
T Max() const noexcept
Gets the maximum value.
Definition: value_range.hpp:72
InvarianceType
Invariance types that can be defined for training.
Definition: search_predictor.hpp:23
@ AffineGroup
Affine group (i.e. 2x2 matrix plus translation).
@ Translation
Translation.
@ RotationScaleTranslation
Rotation + Scale + Translation.
Root namespace for the Image Manager interface.
Definition: c_barcode.h:24
Angle Max(Angle a, Angle b) noexcept
Returns the bigger of two angles.
Definition: angle.hpp:504
Angle Min(Angle a, Angle b) noexcept
Returns the smaller of two angles.
Definition: angle.hpp:521