Exemplo n.º 1
0
/**
 * @brief  Left over from BitReduction days; removed all code except that which processed the NO bit reduction option.
 * @param[in] examples_list The list of examples you want to attempt to reduce
 * @param[out] compressed_examples_list The reduced list of examples
 */
void  FeatureEncoder::CompressExamples (FeatureVectorListPtr    srcExamples,
                                        FeatureVectorListPtr    compressedExamples,
                                        ClassAssignments&       assignments
                                       )
{
  double time_before, time_after;
  time_before = osGetSystemTimeUsed ();
  compressedExamples->AddQueue (*srcExamples);
  time_after = osGetSystemTimeUsed ();
  compressedExamples->Owner (false);
  return;
}  /* CompressExamples */
Exemplo n.º 2
0
void   MergeFeatureFiles::Main ()
{
  if  (Abort ())
    return;

  {
    // Will first load source files.
    uint  srcIdx = 0;
    for  (srcIdx = 0;  srcIdx < srcFileNames.size ();  srcIdx++)
    {
      bool  cancelFlag  = false;
      bool  successful  = false;
      bool  changesMade = false;

      KKStr             srcFileName = srcFileNames[srcIdx];
      FeatureFileIOPtr  srcFormat   = srcFormats  [srcIdx];
      
      MLClassList   classes;
      
      FeatureVectorListPtr  s = NULL;

      s = srcFormat->LoadFeatureFile (srcFileName, classes, -1, cancelFlag, successful, changesMade, log);

      if  ((s == NULL)  ||  (!successful))
      {
        log.Level (-1) << endl << endl
                       << "MergeFeatureFiles::Main   ***ERROR***    Could not load file[" << srcFileName << "]" << endl
                       << endl;
        delete  s;  s = NULL;
        Abort (true);
        return;
      }

      if  (!srcData)
        srcData = new FeatureVectorList (s->FileDesc (), true);

      if  ((*(s->FileDesc ())) != (*(srcData->FileDesc ())))
      {
        // The last source file read does not have the same attribute sets as previous feature files already read.
        log.Level (-1) << endl << endl
                       << "MergeFeatureFiles::Main   ***ERROR***    Feature File[" << srcFileName << "] does not have the same Attributes as previous feature files already read in." << endl
                       << endl;
        Abort (true);
        delete  s;  s = NULL;
        return;
      }
      
      srcData->AddQueue (*s);
      s->Owner (false);
      delete  s;
    }
  }


  if  (!Abort ())
  {
    if  (randomize)
    {
      DateTime  dt = osGetLocalDateTime ();
      srcData->RandomizeOrder (dt.Seconds ());
      srcData->RandomizeOrder ();
    }

    if  (stratify)
    {
      FeatureVectorListPtr  stratifiedSrc = srcData->StratifyAmoungstClasses (numOfFolds, log);
      srcData->Owner (false);
      stratifiedSrc->Owner (true);
      delete  srcData;
      srcData = stratifiedSrc;
      stratifiedSrc = NULL;
    }

    bool  cancelFlag  = false;
    bool  successful  = false;

    uint  numExamplesWritten = 0;
    destFormat->SaveFeatureFile (destFileName, srcData->AllFeatures (), *srcData, numExamplesWritten, cancelFlag, successful, log);
    if  (!successful)
    {
      log.Level (-1) << endl << endl
                     << "MergeFeatureFiles::Main   ***ERROR***    Could not save to file[" << destFileName << "]" << endl
                     << endl;
      Abort (true);
    }
  }
}  /* Main */
Exemplo n.º 3
0
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 */