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 */
void  AbundanceCorrectionStatsBuilder::RemoveDuplicateImages ()
{
  *report << endl << endl;

  FeatureVectorListPtr  allExamples = new FeatureVectorList (fileDesc, 
                                                             false,    // 'false' = will not own contents.
                                                             log
                                                            ); 
  allExamples->AddQueue (*trainLibData);
  allExamples->AddQueue (*otherClassData);
  
  DuplicateImages  dupChecker (allExamples, log);
  if  (dupChecker.DuplicatesFound ())
  {
    *report << "DUPLICATE IMAGES DETECTED." << endl;
    dupChecker.ReportDuplicates (*report);
    
    FeatureVectorListPtr  dups = dupChecker.ListOfExamplesToDelete ();
    if  (dups)
    {
      FeatureVectorList::iterator  idx;
      for  (idx = dups->begin ();  idx != dups->end ();  ++idx)
      {
        FeatureVectorPtr  fv = *idx;
        trainLibData->DeleteEntry (fv);
        otherClassData->DeleteEntry (fv);
      }
      delete  dups;
      dups = NULL;
    }
  }
  else
  {
    *report << "No duplicates detected." << endl;
  }

  delete  allExamples;  allExamples = NULL;

  *report << endl << endl;
}  /* RemoveDuplicateImages */
Exemplo n.º 3
0
int   RandomSampleJobList::DetermineCompressedImageCount (FeatureVectorListPtr       trainData,
                                                          TrainingConfigurationPtr   config
                                                         )
{
  FileDescPtr  fileDesc = trainData->FileDesc ();
  FeatureVectorListPtr  srcImages = trainData->DuplicateListAndContents ();
  FeatureVectorListPtr  imagesToTrain = new FeatureVectorList (fileDesc, false, log, 10000);

  MLClassListPtr mlClasses = srcImages->ExtractListOfClasses ();

  {
    MLClassList::const_iterator  idx;

    for  (idx = mlClasses->begin ();  idx != mlClasses->end ();  idx++)
    {
      MLClassPtr  mlClass = *idx;
      FeatureVectorListPtr  imagesThisClass = srcImages->ExtractImagesForAGivenClass (mlClass);
      imagesToTrain->AddQueue (*imagesThisClass);
      delete  imagesThisClass;
    }
  }

  NormalizationParms  normParms (config, *imagesToTrain, log);
  normParms.NormalizeImages (imagesToTrain);

  ClassAssignments  classAssignments (*mlClasses, log);
  FeatureVectorListPtr  compressedImageList = new FeatureVectorList (fileDesc, true, log, 10000);

  BitReduction br (config->SVMparamREF (), fileDesc, trainData->AllFeatures ());

  CompressionStats compressionStats 
              = br.compress (*imagesToTrain, 
                             compressedImageList, 
                             classAssignments
                            );


  int  compressedImageCount = compressionStats.num_images_after;

  log.Level (10) << "DetermineCompressedImageCount  compressedImageCount[" << compressedImageCount << "]" << endl;

  delete  compressedImageList;  compressedImageList = NULL;
  delete  mlClasses;         mlClasses        = NULL;
  delete  imagesToTrain;        imagesToTrain       = NULL;
  delete  srcImages;            srcImages           = NULL;

  return compressedImageCount;
}  /* DetermineCompressedImageCount */
Exemplo n.º 4
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 */