Commit 242292801ef703267d59ca8a96ed7b81af1c8feb

Authored by Charles Otto
1 parent 74762655

Remove FileList return from br::Enroll

With this, we will not have to accumulate the file metadata during enroll
which will help with memory use on large jobs.

Functions actually using the return type (gui/classifier.cpp, and gallerytoolbar.cpp)
updated to avoid using it directly. In gallerytoolbar.cpp, drop support for
implicit enrollment to a .gal file.
openbr/core/core.cpp
@@ -161,15 +161,13 @@ struct AlgorithmCore @@ -161,15 +161,13 @@ struct AlgorithmCore
161 return name + file.baseName() + file.hash() + ".mem"; 161 return name + file.baseName() + file.hash() + ".mem";
162 } 162 }
163 163
164 - FileList enroll(File input, File gallery = File()) 164 + void enroll(File input, File gallery = File())
165 { 165 {
166 - FileList files;  
167 -  
168 qDebug("Enrolling %s%s", qPrintable(input.flat()), 166 qDebug("Enrolling %s%s", qPrintable(input.flat()),
169 gallery.isNull() ? "" : qPrintable(" to " + gallery.flat())); 167 gallery.isNull() ? "" : qPrintable(" to " + gallery.flat()));
170 168
171 if (gallery.name.isEmpty()) { 169 if (gallery.name.isEmpty()) {
172 - if (input.name.isEmpty()) return FileList(); 170 + if (input.name.isEmpty()) return;
173 else gallery = getMemoryGallery(input); 171 else gallery = getMemoryGallery(input);
174 } 172 }
175 173
@@ -212,12 +210,8 @@ struct AlgorithmCore @@ -212,12 +210,8 @@ struct AlgorithmCore
212 progressCounter->setPropertyRecursive("totalProgress", QString::number(total)); 210 progressCounter->setPropertyRecursive("totalProgress", QString::number(total));
213 stream->projectUpdate(data, output); 211 stream->projectUpdate(data, output);
214 212
215 - files.append(output.files());  
216 -  
217 if (multiProcess) 213 if (multiProcess)
218 delete enroll; 214 delete enroll;
219 -  
220 - return files;  
221 } 215 }
222 216
223 void project(File input, File output) 217 void project(File input, File output)
@@ -632,9 +626,9 @@ void br::Train(const File &input, const File &model) @@ -632,9 +626,9 @@ void br::Train(const File &input, const File &model)
632 AlgorithmManager::getAlgorithm(model.get<QString>("algorithm"))->train(input, model); 626 AlgorithmManager::getAlgorithm(model.get<QString>("algorithm"))->train(input, model);
633 } 627 }
634 628
635 -FileList br::Enroll(const File &input, const File &gallery) 629 +void br::Enroll(const File &input, const File &gallery)
636 { 630 {
637 - return AlgorithmManager::getAlgorithm(gallery.get<QString>("algorithm"))->enroll(input, gallery); 631 + AlgorithmManager::getAlgorithm(gallery.get<QString>("algorithm"))->enroll(input, gallery);
638 } 632 }
639 633
640 void br::Project(const File &input, const File &output) 634 void br::Project(const File &input, const File &output)
openbr/gui/classifier.cpp
@@ -37,7 +37,13 @@ void Classifier::setClassification(const QString &amp;key, const QString &amp;value) @@ -37,7 +37,13 @@ void Classifier::setClassification(const QString &amp;key, const QString &amp;value)
37 void Classifier::_classify(File file) 37 void Classifier::_classify(File file)
38 { 38 {
39 QString key, value; 39 QString key, value;
40 - foreach (const File &f, Enroll(file.flat(), File("[algorithm=" + algorithm + "]"))) { 40 + QSharedPointer<Transform> transform = Transform::fromAlgorithm(algorithm);
  41 +
  42 + TemplateList input, output;
  43 + input.append(file);
  44 + transform->projectUpdate(input, output);
  45 +
  46 + foreach (const File &f, output.files() ) {
41 if (algorithm == "GenderClassification") key = "Gender"; 47 if (algorithm == "GenderClassification") key = "Gender";
42 else if (algorithm == "AgeRegression") key = "Age"; 48 else if (algorithm == "AgeRegression") key = "Age";
43 else key = algorithm; 49 else key = algorithm;
openbr/gui/gallerytoolbar.cpp
@@ -83,9 +83,10 @@ void br::GalleryToolBar::_enroll(const br::File &amp;input) @@ -83,9 +83,10 @@ void br::GalleryToolBar::_enroll(const br::File &amp;input)
83 { 83 {
84 galleryLock.lock(); 84 galleryLock.lock();
85 this->input = input; 85 this->input = input;
86 - if (input.suffix() == "gal") gallery = input.name + ".mem";  
87 - else gallery = QString("%1/galleries/%2.gal[cache]").arg(br::Globals->scratchPath(), qPrintable(input.baseName()+input.hash()));  
88 - files = br::Enroll(input.flat(), gallery.flat()); 86 + gallery = input.name + ".mem";
  87 + br::Enroll(input.flat(), gallery.flat());
  88 + files = FileList::fromGallery(gallery);
  89 +
89 galleryLock.unlock(); 90 galleryLock.unlock();
90 } 91 }
91 92
openbr/openbr_plugin.h
@@ -1393,7 +1393,7 @@ BR_EXPORT void Train(const File &amp;input, const File &amp;model); @@ -1393,7 +1393,7 @@ BR_EXPORT void Train(const File &amp;input, const File &amp;model);
1393 * \brief High-level function for creating galleries. 1393 * \brief High-level function for creating galleries.
1394 * \see br_enroll 1394 * \see br_enroll
1395 */ 1395 */
1396 -BR_EXPORT FileList Enroll(const File &input, const File &gallery = File()); 1396 +BR_EXPORT void Enroll(const File &input, const File &gallery = File());
1397 1397
1398 /*! 1398 /*!
1399 * \brief High-level function for enrolling templates. 1399 * \brief High-level function for enrolling templates.