void Classifier2::ProbabilitiesByClass (const MLClassList& classes, FeatureVectorPtr example, kkint32* votes, double* probabilities ) { ClassProbListPtr predictions = ProbabilitiesByClass (example); kkuint32 numClasses = (kkuint32)classes.size (); for (kkuint32 x = 0; x < numClasses; ++x) { votes[x] = 0; probabilities[x] = 0.0; MLClassPtr c = classes.IdxToPtr (x); ClassProbConstPtr cp = predictions->LookUp (c); if (cp) { votes[x] = (kkint32)(0.5f + cp->votes); probabilities[x] = cp->probability; } } delete predictions; predictions= NULL; } /* ProbabilitiesByClass */
void ModelUsfCasCor::ProbabilitiesByClass (FeatureVectorPtr _example, const MLClassList& _mlClasses, double* _probabilities, RunLog& _log ) { if (!usfCasCorClassifier) { KKStr errMsg = "ModelUsfCasCor::ProbabilitiesByClass ***ERROR*** (usfCasCorClassifier == NULL)"; _log.Level (-1) << endl << endl << errMsg << endl << endl; throw KKException (errMsg); } VectorFloat probabilities; MLClassPtr pc1 = NULL; MLClassPtr pc2 = NULL; MLClassPtr kc = NULL; float pc1p = 0.0f; float pc2p = 0.0f; float kcp = 0.0f; bool newExampleCreated = false; FeatureVectorPtr encodedExample = PrepExampleForPrediction (_example, newExampleCreated); usfCasCorClassifier->PredictConfidences (encodedExample, kc, pc1, pc1p, pc2, pc2p, kcp, _mlClasses, probabilities ); if (newExampleCreated) { delete encodedExample; encodedExample = NULL; } if (_mlClasses.size () != probabilities.size ()) { _log.Level (-1) << endl << "ModelUsfCasCor::ProbabilitiesByClass ***ERROR***" << endl << "\"_mlClasses.size () != probabilities.size ()\" This should not ever be able to happen." << endl << endl; for (int x = 0; x < _mlClasses.QueueSize (); ++x) { _probabilities[x] = 0.0; } } else { for (kkuint32 x = 0; x < probabilities.size (); ++x) _probabilities[x] = probabilities[x]; } return; } /* ProbabilitiesByClass */
FeatureVectorListPtr FeatureFileIO::LoadFile (const KKStr& _fileName, FileDescConstPtr _fileDesc, MLClassList& _classes, istream& _in, OptionUInt32 _maxCount, // Maximum # images to load. VolConstBool& _cancelFlag, bool& _changesMade, KKStr& _errorMessage, RunLog& _log ) { _errorMessage = "Driver '" + DriverName () + "' does not implemenet 'LoadFile' method."; _log.Level (10) << endl << "FeatureFileIO::LoadFile ***ERROR*** " << _errorMessage << endl << " _fileName : " << _fileName << endl << " _fileDesc : " << _fileDesc->NumOfFields () << endl << " _classes : " << _classes.ToCommaDelimitedStr () << endl << " _in.flags : " << _in.flags () << endl << " _maxCount : " << _maxCount << endl << " _cancelFlag : " << _cancelFlag << endl << " _changesMade: " << _changesMade << endl << endl; _errorMessage = "ROBERTS read functionality not implemented."; return NULL; }
FeatureVectorListPtr FeatureFileIO::LoadInSubDirectoryTree (FactoryFVProducerPtr _fvProducerFactory, KKStr _rootDir, MLClassList& _mlClasses, bool _useDirectoryNameForClassName, VolConstBool& _cancelFlag, bool _rewiteRootFeatureFile, RunLog& _log ) { _log.Level (10) << "FeatureFileIO::LoadInSubDirectoryTree rootDir[" << _rootDir << "]." << endl; osAddLastSlash (_rootDir); KKStr featureFileName (""); KKStr fullFeatureFileName (""); if (!_rootDir.Empty ()) { featureFileName = osGetRootNameOfDirectory (_rootDir) + ".data"; fullFeatureFileName = _rootDir + featureFileName; } else { featureFileName = "Root.data"; fullFeatureFileName = "Root.data"; } MLClassPtr unKnownClass = _mlClasses.GetUnKnownClass (); if (_useDirectoryNameForClassName) { KKStr className = MLClass::GetClassNameFromDirName (_rootDir); unKnownClass = _mlClasses.GetMLClassPtr (className); } bool changesMade = false; FeatureVectorListPtr dirImages = NULL; if (_rewiteRootFeatureFile) { DateTime timeStamp; dirImages = FeatureDataReSink (_fvProducerFactory, _rootDir, featureFileName, unKnownClass, _useDirectoryNameForClassName, _mlClasses, _cancelFlag, changesMade, timeStamp, _log ); if (_useDirectoryNameForClassName) { FeatureVectorList::iterator idx; for (idx = dirImages->begin (); idx != dirImages->end (); idx++) { if ((*idx)->MLClass () != unKnownClass) { (*idx)->MLClass (unKnownClass); changesMade = true; } } if (changesMade) { KKStr fullFileName = osAddSlash (_rootDir) + featureFileName; kkuint32 numExamplesWritten = 0; bool cancel = false; bool successful = false; SaveFeatureFile (fullFileName, dirImages->AllFeatures (), *dirImages, numExamplesWritten, cancel, successful, _log ); } } } else { dirImages = _fvProducerFactory->ManufacturFeatureVectorList (true); } // Now that we have processed all image files in "rootDir", // lets process any sub-directories. KKStr dirSearchPath = osAddSlash (_rootDir) + "*.*"; KKStrListPtr subDirectories = osGetListOfDirectories (dirSearchPath); if (subDirectories) { KKStrList::iterator idx; for (idx = subDirectories->begin (); (idx != subDirectories->end () && (!_cancelFlag)); idx++) { KKStr subDirName (**idx); if (subDirName == "BorderImages") { // We ignore this director continue; } KKStr newDirPath = osAddSlash (_rootDir) + subDirName; FeatureVectorListPtr subDirExamples = LoadInSubDirectoryTree (_fvProducerFactory, newDirPath, _mlClasses, _useDirectoryNameForClassName, _cancelFlag, true, // true = ReWriteRootFeatureFile _log ); osAddLastSlash (subDirName); // We want to add the directory path to the ExampleFileName so that we can later locate the source image. for (auto fv: *subDirExamples) { KKStr newImageFileName = subDirName + fv->ExampleFileName (); fv->ExampleFileName (newImageFileName); } dirImages->AddQueue (*subDirExamples); subDirExamples->Owner (false); delete subDirExamples; subDirExamples = NULL; } delete subDirectories; subDirectories = NULL; } _log.Level (10) << "LoadInSubDirectoryTree - Done" << endl; return dirImages; } /* LoadInSubDirectoryTree */