Home || Visual Search || Applications || Architecture || Important Messages || OGL || Src

int Impala::Application::mainImSet ( int  argc,
char *  argv[] 
)

Definition at line 33 of file mainImSet.cpp.

References Impala::Core::ImageSet::InterestPointProc::AddCmdOptions(), Impala::Core::ImageSet::Walker::AddListener(), Impala::CmdOptions::AddOption(), Impala::Core::ImageSet::Walker::DoWalk(), Impala::Core::ImageSet::Walker::DoWalkBookmarks(), Impala::FileNameExt(), Impala::CmdOptions::GetArg(), Impala::CmdOptions::GetBool(), Impala::CmdOptions::GetInstance(), Impala::CmdOptions::GetInt(), Impala::CmdOptions::GetNrArg(), ILOG_ERROR, ILOG_ERROR_COUNT, ILOG_INFO, ILOG_VAR, Impala::CmdOptions::Initialise(), Impala::Core::ImageSet::Walker::LoadBookmarks(), Impala::Core::ImageSet::MakeImageSet(), Impala::Core::Database::RawDataSet::NrDirs(), Impala::Core::ImageSet::Walker::NrListeners(), Impala::CmdOptions::ParseArgs(), Impala::Core::Vector::ReduceSum(), and Impala::Core::ImageSet::ImageSet::SetImageSrc().

Referenced by main().

00034 {
00035     Link::Mpi::Init(&argc, &argv);
00036 
00037     CmdOptions& options = CmdOptions::GetInstance();
00038     options.Initialise(false, false, true);
00039     options.AddOption(0, "report", "perNr", "0");
00040     options.AddOption(0, "startDir", "idx", "0");
00041     options.AddOption(0, "numberDirs", "nr", "-1");
00042     options.AddOption(0, "startFile", "idx", "0");
00043     options.AddOption(0, "numberFiles", "nr", "-1");
00044     options.AddOption(0, "virtualWalk", "", "0");
00045     options.AddOption(0, "virtualWalkAll", "", "0");
00046     options.AddOption(0, "imArchive", "", "0");
00047     options.AddOption(0, "imFileArchive", "", "0");
00048     options.AddOption(0, "imSplitArchive", "", "0");
00049     options.AddOption(0, "imCacheSize", "size", "1");
00050     options.AddOption(0, "featureIndexCat", "name", "");
00051     options.AddOption(0, "classifyIndexCat", "name", "");
00052     options.AddOption(0, "precomputed", "[applyconcepts only] boolean: if 1 modelfiles must be for precomputed kernel", "0");
00053     options.AddOption(0, "storeKernelData", "[applyconcepts only] boolean: if 1 kernel data will be written to disk", "0");
00054     options.AddOption(0, "kernelDataOnly", "[only works for applyconcepts] boolean: if 1 only kernel data will be computed (no model apply)", "0");
00055     options.AddOption(0, "fik", "[only works for applyconcepts] boolean: if 1 modelfiles must be for fast intersection kernel", "0");
00056     options.AddOption(0, "addToName", "[fixsizes only] string: add this to the standard filename of archive", "");
00057 
00058     // initialization of options
00059     Impala::Core::ImageSet::InterestPointProc::AddCmdOptions();
00060 
00061     String usageStr = String("cmd imageSet|ixs\n") +
00062         "cmd == fixsizes --> imset fixsizes imageSet [max-width max-height [split]]\n" +
00063         "other commands are undocumented..." +
00064         "\n\n";
00065     if (! options.ParseArgs(argc, argv, usageStr, 2))
00066     {
00067         Link::Mpi::Finalize();
00068         return 1;
00069     }
00070 
00071     ILOG_VAR(Impala.Application.ImSet.mainImSet);
00072 
00073     String cmd = options.GetArg(0);
00074     String fileName = options.GetArg(1);
00075     ImageSet* imageSet = MakeImageSet(fileName);
00076     imageSet->SetImageSrc(options.GetBool("imArchive"),
00077                           options.GetBool("imFileArchive"),
00078                           options.GetBool("imSplitArchive"),
00079                           true);
00080 
00081     Walker walker(imageSet);
00082     Reporter* reporter = new Reporter(0);
00083     walker.AddListener(reporter);
00084 
00085     ILOG_INFO("imset command : " << cmd);
00086 
00087     if (cmd == "computekerneldata")
00088         walker.AddListener(new ComputeKernelData(reporter, options));
00089     if (cmd == "applyconcepts")
00090         walker.AddListener(new ApplyConcepts(reporter, options, imageSet,false));
00091     if (cmd == "applyconceptsindex")
00092         walker.AddListener(new ApplyConcepts(reporter, options, imageSet, true));
00093     if (cmd == "indexconcepts")
00094         walker.AddListener(new IndexConcepts(reporter, options, imageSet));
00095     if (cmd == "combineconcepts")
00096         walker.AddListener(new CombineConcepts(reporter, options));
00097     if (cmd == "archive")
00098         walker.AddListener(new Archive(reporter, options));
00099     if (cmd == "concatfeatures")
00100         walker.AddListener(new ConcatFeatures(reporter, options));
00101     if (cmd == "indexfeatures")
00102         walker.AddListener(new IndexFeatures(reporter, options));
00103     if (cmd == "interestpointproc")
00104         walker.AddListener(new InterestPointProc(reporter, options));
00105     if (cmd == "makequidlookup")
00106         walker.AddListener(new MakeQuidLookup(reporter, options));
00107     if (cmd == "thumbnails")
00108         walker.AddListener(new Thumbnails(reporter, options));
00109     if (cmd == "clusterfeatures")
00110     {
00111         if (options.GetNrArg() < 4)
00112             ILOG_ERROR("cluster: missing argument");
00113         String feature = options.GetArg(2);
00114         Computor* c = 0;
00115         if (feature == "weibull")
00116             c = new VisSem("vissem", options);
00117         if (feature == "gabor")
00118             c = new Core::Feature::VisSem("vissemgabor", options);
00119         String clusteror = options.GetArg(3);
00120         walker.AddListener(new ClusterFeatures(c, clusteror, reporter, options));
00121     }
00122 
00123     if (cmd == "viseval")
00124     {
00125         Computor* c = new Core::Feature::VisSem("vissem", options);
00126         walker.AddListener(new ProtoSimilarityEval(c, reporter, options));
00127     }
00128     if (cmd == "visgaboreval")
00129     {
00130         Computor* c = new Core::Feature::VisSem("vissemgabor", options);
00131         walker.AddListener(new ProtoSimilarityEval(c, reporter,options));
00132     }
00133 
00134     if ((walker.NrListeners() == 1) && (cmd != "nop"))
00135     {
00136         ILOG_ERROR("Unknow command : " << cmd);
00137         Link::Mpi::Finalize();
00138         return 1;
00139     }
00140 
00141     walker.AddListener(new Reporter(reporter));
00142     if (FileNameExt(fileName) == "ixs")
00143     {
00144         walker.LoadBookmarks(fileName);
00145         walker.DoWalkBookmarks();
00146     }
00147     else
00148     {
00149         int startDir = options.GetInt("startDir");
00150         int numberDirs = options.GetInt("numberDirs");
00151 #ifdef MPI_USED
00152         int numProcs = Link::Mpi::NrProcs();
00153         int myId = Link::Mpi::MyId();
00154         if (numberDirs == -1)
00155             numberDirs = imageSet->NrDirs();
00156         if (startDir + numberDirs >= imageSet->NrDirs())
00157             numberDirs = imageSet->NrDirs() - startDir;
00158         if (!options.GetBool("virtualWalkAll"))
00159         {
00160             int lastDir = startDir + numberDirs;
00161             int taskSize = numberDirs / numProcs;
00162             int restSize = numberDirs % numProcs;
00163             int curDir = startDir;
00164             for (int i=0 ; i<=myId ; i++)
00165             {
00166                 startDir = curDir;
00167                 numberDirs = taskSize;
00168                 if (--restSize >= 0)
00169                     numberDirs++;
00170                 if (startDir + numberDirs > lastDir)
00171                     numberDirs = lastDir - startDir;
00172                 curDir += numberDirs;
00173             }
00174         }
00175         ILOG_INFO("Process " << myId << " of " << numProcs
00176                   << " is doing dirs " << startDir << " till "
00177                   << startDir + numberDirs);
00178 #endif
00179         walker.DoWalk(startDir, numberDirs);
00180     }
00181     reporter->FinalReport();
00182     int nrOfErrors = ILOG_ERROR_COUNT;
00183 
00184     nrOfErrors = Link::Mpi::ReduceSum(nrOfErrors);
00185     ILOG_INFO_HEADNODE("Root: total nr error = " << nrOfErrors);
00186     Link::Mpi::Finalize();
00187 
00188     return nrOfErrors;
00189 }

Here is the call graph for this function:


Generated on Thu Jan 13 09:14:08 2011 for ImpalaSrc by  doxygen 1.5.1