48 using namespace KKMLL;
64 log.Level (-1) << endl
65 <<
"TrainingProcess2::LoadExistingTrainingProcess ***ERROR*** SaveFile[" << savedModelName <<
"] does not exist." << endl
70 XmlStreamPtr stream =
new XmlStream (savedModelName
, log
);
72 while (t && (
typeid (*t) !=
typeid (XmlElementTrainingProcess2)))
75 t = stream->GetNextToken (cancelFlag, log);
79 trainer =
dynamic_cast<XmlElementTrainingProcess2Ptr> (t)->TakeOwnership ();
81 delete stream; stream = NULL;
91 (TrainingConfiguration2Const* config,
92 bool checkForDuplicates,
94 bool saveTrainedModel,
99 log.Level (10) <<
"TrainingProcess2::CreateTrainingProcess." << endl;
101 bool weShouldRebuild =
false;
109 log.Level (-1) << endl
110 <<
"TrainingProcess2::CreateTrainingProcess ***ERROR*** Could not load existing save model." << endl
115 log.Level (-1) << endl
116 <<
"TrainingProcess2::CreateTrainingProcess ***ERROR*** Existing Save model is Invalid." << endl
129 DateTime latestTrainingImageTimeStamp;
130 bool changesMadeToTrainingLibrary =
true;
135 if (!trainingExamples)
137 log.Level (-1) << endl
138 <<
"TrainingProcess2::CreateTrainingProcess ***ERROR*** Failed to load training data." << endl
145 delete trainingExamples;
146 trainingExamples = NULL;
159 if (saveTrainedModel && (!cancelFlag) && (!trainer
->Abort ()))
163 trainingExamples = NULL;
178 log.Level (20) <<
"CreateTrainingProcess Existing model[" << configFileFullName <<
"] Valid!" << endl;
182 bool rebuildTrainingProcess =
false;
184 rebuildTrainingProcess =
true;
190 log.Level (-1) << endl
191 <<
"TrainingProcess2::CreateTrainingProcess ***WARNING*** Saved model was not up to date; we will rebuild." << endl
193 rebuildTrainingProcess =
true;
196 if (rebuildTrainingProcess)
201 if (!trainingExamples)
203 log.Level (-1) << endl
204 <<
"TrainingProcess2::CreateTrainingProcess ***ERROR*** Failed to load training data." << endl
211 log.Level (-1) <<
"TrainingProcess2::CreateTrainingProcess Canceled !!!" << endl;
212 delete trainingExamples;
213 trainingExamples = NULL;
226 if (saveTrainedModel && (!cancelFlag) && (!trainer
->Abort ()))
230 trainingExamples = NULL;
237 delete trainingExamples;
238 trainingExamples = NULL;
240 log.Level (10) <<
"TrainingProcess2::CreateTrainingProcess Existing saved model[" << trainer->ConfigFileName () <<
"]." << endl;
254 log.Level (20) <<
"TrainingProcess2::CreateTrainingProcessForLevel" << endl;
257 KKStr errMsg =
"CreateTrainingProcessForLevel ***ERROR*** Configuration file was not provided.";
258 log.Level (-1) << endl << errMsg << endl << endl;
262 DateTime latestTrainingImageTimeStamp;
263 bool changesMadeToTrainingLibrary =
false;
268 if (!trainingExamples)
270 log.Level (-1) << endl
271 <<
"TrainingProcess2::CreateTrainingProcessForLevel ***ERROR*** Failed to load training data." << endl
289 delete trainingExamples;
290 trainingExamples = newExamples;
306 delete levelSpecificConfig;
307 levelSpecificConfig = NULL;
308 trainingExamples = NULL;
322 log.Level (20) <<
"TrainingProcess2::CreateTrainingProcessForLevel configFileName: " << configFileName << endl;
328 if (!config->FormatGood ())
330 log.Level (-1) << endl
331 <<
"TrainingProcess2::CreateTrainingProcessForLevel ***ERROR*** Config File[" << configFileName <<
"] Format is invalid." << endl
336 trainer = CreateTrainingProcessForLevel (config, level, cancelFlag, log);
352 (TrainingConfiguration2Const* config,
354 bool takeOwnershipOfTrainingExamples,
355 bool featuresAlreadyNormalized,
360 log.Level (20) <<
"TrainingProcess2::TrainingProcess2" << endl;
364 log.Level (-1) << endl
365 <<
"TrainingProcess2::CreateTrainingProcessFromTrainingExamples ***ERROR*** No Configuration File Specified." << endl
370 else if (!config->FormatGood ())
372 log.Level (-1) << endl
373 <<
"TrainingProcess2::CreateTrainingProcessFromTrainingExamples ***ERROR*** Format error in Configuration File[" << config->FileName () <<
"]." << endl
380 TrainingProcess2Ptr trainer =
new TrainingProcess2 ();
381 trainer->FeaturesAlreadyNormalized (featuresAlreadyNormalized);
382 trainer->BuildTrainingProcess (config,
383 WhenToRebuild::AlwaysRebuild,
385 takeOwnershipOfTrainingExamples,
412 configFileNameSpecified
(""),
414 duplicateDataCount (0),
415 featuresAlreadyNormalized (
false),
417 fvFactoryProducer (NULL),
420 priorProbability (NULL),
423 subTrainingProcesses (NULL),
424 trainingExamples (NULL),
425 weOwnTrainingExamples (
true),
426 weOwnMLClasses (
true)
436 cout <<
"TrainingProcess2::~TrainingProcess2 for Config[" << configFileName <<
"]" << endl;
445 cerr <<
"TrainingProcess2::~TrainingProcess2 ***ERROR*** Exception deleting model." << endl;
450 delete subTrainingProcesses; subTrainingProcesses = NULL;
451 delete priorProbability; priorProbability = NULL;
453 if (weOwnTrainingExamples)
455 delete trainingExamples;
456 trainingExamples = NULL;
461 delete mlClasses; mlClasses = NULL;
479 memoryConsumedEstimated += configOurs->MemoryConsumedEstimated ();
481 if (weOwnTrainingExamples && (trainingExamples != NULL))
484 if ((mlClasses != NULL) && weOwnMLClasses)
490 if (priorProbability)
493 if (subTrainingProcesses)
496 return memoryConsumedEstimated;
509 bool _takeOwnerShipOfTrainingExamples,
510 bool _checkForDuplicates,
518 _log
.Level (20
) <<
"TrainingProcess2 Building Support Vector Machine";
520 if (weOwnTrainingExamples)
522 delete trainingExamples;
523 trainingExamples = NULL;
533 trainingExamples = _trainingExamples;
534 weOwnTrainingExamples = _takeOwnerShipOfTrainingExamples;
536 if (_checkForDuplicates)
537 CheckForDuplicates (
true, _log);
546 _log.Level (-1) << endl
547 <<
"TrainingProcess2::BuildTrainingProcess ***ERROR*** Aborted During Model Creation ***" << endl
560 log.Level (20) <<
"TrainingProcess2::SaveTrainingProcess Saving trained model: " << savedModelName << endl;
562 ofstream f (savedModelName.Str ());
565 log.Level (-1) << endl
566 <<
"TrainingProcess2::SaveTrainingProcess ***ERROR*** Could not open SavedModelName[" << savedModelName <<
"]." << endl
571 this->WriteXML (
"TrainingProcess2", f);
583 return dynamic_cast<ModelOldSVMPtr> (model);
642 if ((allowDupsInSameClass && (duplicateDataCount > 0)) ||
643 (allowDupsInSameClass && (duplicateCount > 0))
646 log.Level (-1) << endl
647 <<
"ConstructOneVsOneModel *** WARNING *** Duplicates Detected in Training Data" << endl
648 <<
" DuplicateCount [" << duplicateCount <<
"]" << endl
649 <<
" DuplicateDataCount[" << duplicateDataCount <<
"]" << endl
671 log.Level (10) <<
"TrainingProcess2::ExtractFeatures ClassName: " << trainingClass->Name () << endl;
683 log.Level (30) <<
"TrainingProcess2::ExtractFeatures - Extracting Features Directory[" << expDirName <<
"], file[" << trainingClass->FeatureFileName () <<
"]." << endl;
705 catch (
const std::exception& e1)
707 log.Level (-1) << endl
708 <<
"TrainingProcess2::ExtractFeatures ***ERROR*** Exception occurred calling 'FeatureDataReSink'" << endl
709 << e1.what () << endl
711 extractedExamples = NULL;
716 log.Level (-1) << endl
717 <<
"TrainingProcess2::ExtractFeatures ***ERROR*** Exception occurred calling 'FeatureDataReSink'" << endl
719 extractedExamples = NULL;
723 if ((extractedExamples == NULL) || (extractedExamples->QueueSize () < 1))
725 log.Level (-1) << endl
726 <<
"ExtractFeatures *** No Training Examples Found ***" 727 <<
" Class [" << trainingClass->Name () <<
"]" 728 <<
" Directory[" << expDirName <<
"]" 733 if (extractedExamples)
736 extractedExamples->Owner (
false);
737 delete extractedExamples;
738 extractedExamples = NULL;
742 log.Level (30) <<
"TrainingProcess2::ExtractFeatures Exiting" << endl;
746 delete trainingExamples;
747 trainingExamples = NULL;
750 return trainingExamples;
758 bool& changesMadeToTrainingLibraries,
763 log.Level (10) <<
"TrainingProcess2::ExtractTrainingClassFeatures - Starting." << endl;
765 changesMadeToTrainingLibraries =
false;
783 bool weOwnMlClasses =
false;
788 weOwnMlClasses =
true;
793 bool changesMadeToThisTrainingClass =
false;
795 for (
auto tcIDX: trainingClasses)
797 if (cancelFlag || abort)
800 const TrainingClassPtr trainingClass = tcIDX;
802 log.Level (20) <<
"TrainingProcess2::ExtractTrainingClassFeatures Starting on Class[" << trainingClass->Name () <<
"]." << endl;
804 FeatureVectorListPtr examplesThisClass
805 = ExtractFeatures (config, *mlClasses, trainingClass, latestTimeStamp, changesMadeToThisTrainingClass, cancelFlag, log);
807 if (latestTimeStamp > latestImageTimeStamp)
808 latestImageTimeStamp = latestTimeStamp;
810 if (changesMadeToThisTrainingClass)
811 changesMadeToTrainingLibraries =
true;
813 if (!examplesThisClass)
816 log.Level (-1) <<
"TrainingProcess2::ExtractTrainingClassFeatures ***ERROR*** No examples returned by 'ExtractTrainingClassFeatures': " << trainingClass->Name () << endl;
820 trainingExamples->AddQueue (*examplesThisClass);
821 examplesThisClass->Owner (
false);
822 delete examplesThisClass;
823 examplesThisClass = NULL;
828 if ((!abort) && (!cancelFlag))
834 ExtractFeatures (config,
838 changesMadeToThisTrainingClass,
842 if (latestTimeStamp
> latestImageTimeStamp)
843 latestImageTimeStamp
= latestTimeStamp;
845 if (changesMadeToThisTrainingClass)
846 changesMadeToTrainingLibraries =
true;
847 if (!examplesThisClass)
849 log.Level (-1) << endl
850 <<
"TrainingProcess2::ExtractTrainingClassFeatures ***ERROR*** Loading NoiseClass[" << noiseTC->Name () <<
"]." << endl
857 examplesThisClass->Owner (
false);
858 delete examplesThisClass;
859 examplesThisClass = NULL;
863 trainingExamples->RandomizeOrder ();
874 delete trainingExamples;
875 trainingExamples = NULL;
876 log.Level (10) <<
"TrainingProcess2::ExtractTrainingClassFeatures Loading of training data failed." << endl;
880 log.Level (20) <<
"TrainingProcess2::ExtractTrainingClassFeatures Exiting" << endl;
882 return trainingExamples;
892 <<
"Training Class Statistics" << endl
907 kkint32 numOfImages = examplesToAdd.QueueSize ();
911 for (idx = 0; idx < numOfImages; idx++)
913 example = examplesToAdd.IdxToPtr (idx);
921 log.Level (-1) << endl
922 <<
"TrainingProcess2::AddImagesToTrainingLibray ***ERROR*** " << endl
923 <<
" Example[" << example->ExampleFileName () <<
"], Class[" << example->ClassName () <<
"] Has Invalid Feature Data." 928 *report <<
"** ERROR **, Image[" << example->ExampleFileName () <<
"], Class[" << example->ClassName () <<
"]" 929 <<
" Has Invalid Feature Data." 943 log.Level (20) <<
"TrainingProcess2::CreateModelsFromTrainingData Starting" << endl;
947 log.Level (-1) << endl
948 <<
"TrainingProcess2::CreateModelsFromTrainingData ***ERROR***" << endl
950 <<
" Parameters not specified in configuration file." << endl
956 if (!fvFactoryProducer)
962 delete priorProbability;
977 featuresAlreadyNormalized
, 985 log.Level (-1) << endl << endl
986 <<
"TrainingProcess2::CreateModelsFromTrainingData ***ERROR*** Exception occurred while running 'Model::TrainModel'." << endl
987 <<
" Exception[" << e.ToString () << endl
993 log.Level (-1) << endl << endl
994 <<
"TrainingProcess2::CreateModelsFromTrainingData ***ERROR*** Exception occurred while running 'Model::TrainModel'." << endl
1004 else if (cancelFlag)
1015 LoadSubClassifiers (whenToRebuild,
1024 log.Level (20) <<
"TrainingProcess2::CreateModelsFromTrainingData Ending" << endl;
1116 return config->FormatErrorsWithLineNumbers ();
1125 bool checkForDuplicates,
1132 log.Level (-1) << endl <<
"TrainingProcess2::LoadSubClassifiers ***ERROR*** 'config' is not defines!!!!" << endl;
1138 if (!subClassifiers)
1140 log.Level (10) <<
"TrainingProcess2::LoadSubClassifiers NO Sub-classifiers requested in 'config'." << endl;
1144 delete subTrainingProcesses;
1147 for (
auto idx: *subClassifiers)
1149 TrainingConfiguration2Ptr subClassifier = idx;
1151 KKStr subClassifierName = subClassifier->ConfigRootName ();
1153 log.Level (20) <<
"TrainingProcess2::LoadSubClassifiers Loading TrainingProcess2[" << subClassifierName <<
"]" << endl;
1155 TrainingProcess2Ptr tp =
1156 TrainingProcess2::CreateTrainingProcess (subClassifier,
1163 subTrainingProcesses->PushOnBack (tp);
1166 log.Level (-1) << endl
1167 <<
"TrainingProcess2::LoadSubClassifiers ***ERROR*** Loading SubClassifier[" << subClassifierName <<
"]." << endl
1173 else if (cancelFlag)
1175 log.Level (-1) <<
"TrainingProcess2::LoadSubClassifiers Building of sub-classifiers canceled." << endl;
1197 configFileNameSpecified
.WriteXML ("ConfigFileNameSpecified", o
);
1204 if (fvFactoryProducer)
1213 if (priorProbability)
1216 if (subTrainingProcesses)
1219 for (
auto idx: *subTrainingProcesses)
1221 subProcessorsNameList.push_back (osGetRootName (idx->ConfigFileName ()));
1224 XmlElementVectorKKStr::WriteXML (subProcessorsNameList,
"SubTrainingProcesses", o);
1243 log.Level (20) <<
"TrainingProcess2::ReadXML" << endl;
1252 fvFactoryProducer = NULL;
1260 delete model; model = NULL;
1261 delete priorProbability; priorProbability = NULL;
1263 delete subTrainingProcesses;
1264 subTrainingProcesses = NULL;
1266 if (weOwnTrainingExamples)
1267 delete trainingExamples;
1268 trainingExamples = NULL;
1270 bool errorsFound =
false;
1285 configFileNameSpecified = *(
dynamic_cast<XmlElementKKStrPtr> (e)->Value ());
1288 configFileName = *(
dynamic_cast<XmlElementKKStrPtr> (e)->Value ());
1294 if (xmlConfigElement)
1296 configOurs = xmlConfigElement->TakeOwnership ();
1297 config = configOurs;
1298 if ((config != NULL) && (fvFactoryProducer == NULL))
1309 if (fvFactoryProducer)
1321 weOwnMLClasses=
true;
1328 if (xmlElementModel)
1334 log.Level (-1) << endl
1335 <<
"TrainingProcess2::ReadXML ***ERROR*** Loaded Model is Invalid" << endl
1341 else if (varName.EqualIgnoreCase (
"PriorProbability") && (
typeid (*e) ==
typeid (XmlElementClassProbList)))
1343 delete priorProbability;
1344 priorProbability =
dynamic_cast<XmlElementClassProbListPtr> (e)->TakeOwnership ();
1347 else if (varName.EqualIgnoreCase (
"SubTrainingProcesses") && (
typeid (*e) ==
typeid (XmlElementVectorKKStr)))
1349 delete subProcessorsNameList;
1350 subProcessorsNameList =
dynamic_cast<XmlElementVectorKKStrPtr> (e)->TakeOwnership ();
1354 log.Level (-1) << endl
1355 <<
"TrainingProcess2::ReadXML ***ERROR*** Unrecognized Element Section: " << e->NameTagStr () << endl
1369 log.Level (-1) << endl
1370 <<
"TrainingProcess2::ReadXML ***ERROR*** 'model' was not defined." << endl
1375 if (mlClasses == NULL)
1377 log.Level (-1) << endl
1378 <<
"TrainingProcess2::ReadXML ***ERROR*** 'mlClasses' was not defined." << endl
1387 log.Level (-1) << endl
1388 <<
"TrainingProcess2::ReadXML ***ERROR*** TrainingProcess2::mlClasses does not agree with model->MlClasses" << endl
1409 delete subProcessorsNameList;
1410 subProcessorsNameList = NULL;
1413 if (errorsFound || cancelFlag)
1416 log.Level (20) <<
"TrainingProcess2::ReadXML Exiting!" << endl;
1439 kkint32 memoryConsumedEstimated = 0;
1441 TrainingProcess2List::const_iterator idx;
1442 for (idx = begin (); idx != end (); ++idx)
1444 TrainingProcess2Ptr tp = *idx;
1448 return memoryConsumedEstimated;
void SupportVectorStatistics(kkint32 &numSVs, kkint32 &totalNumSVs)
const KKStr & FeatureFileName() const
bool operator>(const DateTime &right) const
virtual void Load(const KKStr &_configFileName, bool _validateDirectories, RunLog &log)
XmlTag(const KKStr &_name, TagTypes _tagType)
Base class to all Learning Algorithms.
void PushOnBack(FeatureVectorPtr image)
Overloading the PushOnBack function in KKQueue so we can monitor the Version and Sort Order...
double TrainingTime() const
void AddQueue(const FeatureVectorList &examplesToAdd)
Add the contents of 'examplesToAdd' to the end of this list.
VectorKKStr ConfigFileFormatErrors() const
If there is a config file; will return a list of its FormatErrors ().
bool EqualIgnoreCase(const char *s2) const
bool operator<(const DateTime &right) const
static ModelPtr CreateAModel(ModelTypes _modelType, const KKStr &_name, const ModelParam &_param, FactoryFVProducerPtr _factoryFVProducer, VolConstBool &_cancelFlag, RunLog &_log)
A factory method that will instantiate the appropriate class of training model based off '_modelType'...
kkint32 MemoryConsumedEstimated() const
KKStr osRemoveExtension(const KKStr &_fullFileName)
KKB::DateTime osGetLocalDateTime()
Returned the current local date and time.
FeatureVector * FeatureVectorPtr
static TrainingProcess2Ptr CreateTrainingProcess(TrainingConfiguration2Const *config, bool checkForDuplicates, WhenToRebuild whenToRebuild, bool saveTrainedModel, VolConstBool &cancelFlag, RunLog &log)
const KKStr & ConfigRootName() const
MLClassListPtr ExtractFullHierachyOfClasses() const
Extracts the list of classes including ones from Sub-Classifiers.
virtual KKStr ToKKStr() const
virtual kkint32 MemoryConsumedEstimated() const
SVMModelPtr SvmModel() const
ClassProbListPtr GetClassDistribution() const
virtual void ReadXML(XmlStream &s, XmlTagConstPtr tag, VolConstBool &cancelFlag, RunLog &log)
virtual void WriteXML(const KKStr &varName, std::ostream &o) const =0
kkint32 MemoryConsumedEstimated() const
TrainingConfiguration2Ptr GenerateAConfiguraionForAHierarchialLevel(kkuint32 level, RunLog &log) const
TrainingProcess2Ptr TrainingProcessRight()
KKStr osMakeFullFileName(const KKStr &_dirName, const KKStr &_fileName)
kkint32 MemoryConsumedEstimated() const
DuplicateImages(FeatureVectorListPtr _examples, RunLog &_log)
You would use this instance to search for duplicates in the list of 'examples'.
ModelParamPtr Parameters() const
Model::ModelTypes ModelingMethod() const
static void WriteXML(const MLClassList &mlClassList, const KKStr &varName, std::ostream &o)
const FileDescPtr FileDesc() const
bool operator!=(const MLClassList &right) const
void SupportVectorStatistics(kkint32 &numSVs, kkint32 &totalNumSVs)
static FactoryFVProducerPtr LookUpFactory(const KKStr &name)
Returns pointer to existing instance of 'FactoryFVProducer' that was previously registered with 'name...
kkint32 MemoryConsumedEstimated() const
TrainingProcess2Ptr Trainer1()
static void WriteXML(const bool b, const KKStr &varName, std::ostream &o)
KKStr operator+(const char *right) const
const KKB::DateTime & BuildDateTime() const
XmlElementDateTime * XmlElementDateTimePtr
kkuint32 DirectoryCount() const
unsigned __int32 kkuint32
RunLog & Level(kkint32 _level)
virtual void WriteXML(const KKStr &varName, std::ostream &o) const
kkint32 NumOfSupportVectors() const
KKStr ExpandedDirectory(const KKStr &rootDir, kkuint32 idx)
kkint32 DuplicateCount() const
DuplicateImages(FileDescPtr _fileDesc, RunLog &_log)
void BuildTrainingProcess(TrainingConfiguration2Const *_config, WhenToRebuild _whenToRebuild, FeatureVectorListPtr _trainingExamples, bool _takeOwnerShipOfTrainingExamples, bool _checkForDuplicates, VolConstBool &_cancelFlag, RunLog &_log)
Call this method just after you construct a new instance of "TrainingProcess2".
KKStr & operator=(KKStr &&src)
Container class for FeatureVector derived objects.
void WriteXML(const KKStr &varName, std::ostream &o) const
kkint32 NumOfSupportVectors() const
virtual bool ToBool() const
static TrainingProcess2Ptr CreateTrainingProcessForLevel(TrainingConfiguration2Const *config, kkuint32 level, VolConstBool &cancelFlag, RunLog &log)
XmlElement * XmlElementPtr
void AddAtribute(const KKStr &attributeName, const KKStr &attributeValue)
FeatureFileIO * FeatureFileIOPtr
virtual FeatureVectorListPtr ManufacturFeatureVectorList(bool owner, RunLog &runLog) const
Manufactures a instance of a derived 'FeatureVectorList' class that is appropriate for containing ins...
static TrainingProcess2Ptr CreateTrainingProcessFromTrainingExamples(TrainingConfiguration2Const *config, FeatureVectorListPtr trainingExamples, bool takeOwnershipOfTrainingExamples, bool featuresAlreadyNormalized, VolConstBool &cancelFlag, RunLog &log)
Will Construct an instance using provided list of examples rather than loading from training library...
void ReportDuplicates(std::ostream &o)
static TrainingProcess2Ptr LoadExistingTrainingProcess(const KKStr &configRootName, VolConstBool &cancelFlag, RunLog &log)
Loads an existing TrainingProcess; if one does not exist will return NULL.
XmlTag const * XmlTagConstPtr
void WriteXML(const KKStr &varName, std::ostream &o) const
MLClassListPtr TakeOwnership()
Manages the reading and writing of objects in a simple XML format. For a class to be supported by Xml...
MLClassListPtr MlClasses() const
KKStr ModelTypeStr() const
void ReportTraningClassStatistics(std::ostream &report)
ModelOldSVMPtr OldSVMModel() const
virtual kkint32 MemoryConsumedEstimated() const
TrainingConfiguration2ListPtr SubClassifiers() const
ModelParamPtr Param() const
static KKStr GetEffectiveConfigFileName(const KKStr &configFileName)
Determine the correct configuration file name.
void SaveTrainingProcess(RunLog &log)
Saves the built training model into the Save file in Xml Format.
kkint32 MemoryConsumedEstimated() const
static KKStr Concat(const std::vector< std::string > &values)
Concatenates the list of 'std::string' strings.
TrainingProcess2Ptr Trainer2()
DateTime(short _year, uchar _month, uchar _day, uchar _hour, uchar _minute, uchar _second)
TrainingProcess2List(bool _owner)
void CreateModelsFromTrainingData(WhenToRebuild whenToRebuild, VolConstBool &cancelFlag, RunLog &log)
TrainingProcess2()
The default constructor; What will be used when creating an instance while reading in from a XML Stre...
const TrainingClassList & TrainingClasses() const
MLClassListPtr ExtractClassList() const
TrainingProcess2 * TrainingProcess2Ptr
void PurgeDuplicates(FeatureVectorListPtr examples, bool allowDupsInSameClass, std::ostream *report)
Delete duplicate examples from FeatureVectorList structure provided in constructor.
virtual const KKStr & VarName() const
XmlElementTrainingConfiguration2 * XmlElementTrainingConfiguration2Ptr
virtual ~TrainingProcess2List()
const KKStr & Name() const
void WriteXML(const KKStr &varName, std::ostream &o) const
ModelParamPtr ModelParameters() const
MLClassListPtr MLClasses() const
XmlStream(const KKStr &_fileName, RunLog &_log)
virtual const KKStr & SectionName() const
FeatureVectorListPtr ExtractExamplesForHierarchyLevel(kkuint32 level)
Will create a list of FeatureVectors where the class assignment will reflect the specified Hierarchy ...
const MLClassPtr MLClass() const
TrainingConfiguration2List * TrainingConfiguration2ListPtr
virtual ModelTypes ModelType() const =0
virtual TrainingConfiguration2Ptr Duplicate() const
MLClassList(const MLClassList &_mlClasses)
Copy constructor; will copy list but not own the contents.
const KKStr & RootDir() const
The root directory where Training library images are stored.
bool osFileExists(const KKStr &_fileName)
virtual KKStr ModelTypeStr() const
virtual ~TrainingProcess2()
void WriteXML(std::ostream &o)
Detects duplicate images in a given FeaureVectorList objects.
KKStr & operator=(const KKStr &src)
KKB::DateTime osGetFileDateTime(const KKStr &fileName)
Used for logging messages.
void EncodeProblem(const struct svm_paramater ¶m, struct svm_problem &prob_in, struct svm_problem &prob_out)
kkint32 DuplicateDataCount() const
virtual void TrainModel(FeatureVectorListPtr _trainExamples, bool _alreadyNormalized, bool _takeOwnership, VolConstBool &_cancelFlag, RunLog &_log)
Performs operations such as FeatureEncoding, and Normalization. The actual training of models occurs ...
Model::ModelTypes ModelType() const
double TrainingTime() const
const TrainingClassPtr NoiseTrainingClass() const
MLClassListPtr ExtractFullHierachyOfClasses() const
static void WriteXML(const DateTime &d, const KKStr &varName, std::ostream &o)
virtual TokenTypes TokenType()=0
Responsible for creating a FeatureFectorProducer instance.
virtual XmlTokenPtr GetNextToken(VolConstBool &cancelFlag, RunLog &log)
XmlElementModel * XmlElementModelPtr
Maintains a list of MLClass instances.
static FeatureVectorListPtr ExtractTrainingClassFeatures(TrainingConfiguration2ConstPtr config, KKB::DateTime &latestImageTimeStamp, bool &changesMadeToTrainingLibraries, VolConstBool &cancelFlag, RunLog &log)
FeatureVectorList * FeatureVectorListPtr
Will only write the ClassName rather than complete MLClass instances.
virtual FeatureVectorListPtr FeatureDataReSink(FactoryFVProducerPtr _fvProducerFactory, const KKStr &_dirName, const KKStr &_fileName, MLClassPtr _unknownClass, bool _useDirectoryNameForClassName, MLClassList &_mlClasses, VolConstBool &_cancelFlag, bool &_changesMade, KKB::DateTime &_timeStamp, RunLog &_log)
Synchronizes the contents of a feature data file with a directory of images.
virtual KKStr Description() const
TrainingProcess2Ptr TrainingProcessLeft()
summary> Returns back pointer to 2nd classifier of Dual Classifier; if not a Dual classifier will ret...
TrainingClass * TrainingClassPtr
virtual FileDescPtr FileDesc() const =0
DuplicateImages * DuplicateImagesPtr
#define XmlFactoryMacro(NameOfClass)
FactoryFVProducer * FactoryFVProducerPtr
KKStr ModelDescription() const
const KKStr & ConfigFileNameSpecified() const
KKStr osGetRootName(const KKStr &fullFileName)
XmlElementMLClassNameList * XmlElementMLClassNameListPtr
MLClassListPtr MLClassesNewInstance() const
DateTime & operator=(const DateTime &right)
FactoryFVProducerPtr FvFactoryProducer(RunLog &log) const
virtual FeatureFileIOPtr DefaultFeatureFileIO() const =0
static TrainingProcess2Ptr CreateTrainingProcessForLevel(const KKStr &configFileName, kkuint32 level, VolConstBool &cancelFlag, RunLog &log)
volatile const bool VolConstBool
void PrintClassStatistics(std::ostream &o) const