Commit bdf1112049f52c84ba55bf671cca8a609f67856a

Authored by Scott Klum
1 parent 4fb48f36

Added the option in DownsampleTraining to only train from a specific gallery

openbr/openbr_plugin.cpp
@@ -408,7 +408,7 @@ TemplateList TemplateList::fromGallery(const br::File &gallery) @@ -408,7 +408,7 @@ TemplateList TemplateList::fromGallery(const br::File &gallery)
408 QStringList labels; 408 QStringList labels;
409 for (int i=newTemplates.size()-1; i>=0; i--) { 409 for (int i=newTemplates.size()-1; i>=0; i--) {
410 newTemplates[i].file.set("Index", i+templates.size()); 410 newTemplates[i].file.set("Index", i+templates.size());
411 - newTemplates[i].file.set("Gallery", gallery.name); 411 + newTemplates[i].file.set("Gallery", file.name);
412 412
413 QString label = newTemplates.at(i).file.get<QString>("Label"); 413 QString label = newTemplates.at(i).file.get<QString>("Label");
414 // Have we seen this subject before? 414 // Have we seen this subject before?
@@ -436,7 +436,7 @@ TemplateList TemplateList::fromGallery(const br::File &amp;gallery) @@ -436,7 +436,7 @@ TemplateList TemplateList::fromGallery(const br::File &amp;gallery)
436 } else { 436 } else {
437 for (int i=newTemplates.size()-1; i>=0; i--) { 437 for (int i=newTemplates.size()-1; i>=0; i--) {
438 newTemplates[i].file.set("Index", i+templates.size()); 438 newTemplates[i].file.set("Index", i+templates.size());
439 - newTemplates[i].file.set("Gallery", gallery.name); 439 + newTemplates[i].file.set("Gallery", file.name);
440 440
441 if (crossValidate > 0) { 441 if (crossValidate > 0) {
442 if (newTemplates[i].file.getBool("duplicatePartitions")) { 442 if (newTemplates[i].file.getBool("duplicatePartitions")) {
openbr/plugins/independent.cpp
@@ -9,12 +9,13 @@ using namespace cv; @@ -9,12 +9,13 @@ using namespace cv;
9 namespace br 9 namespace br
10 { 10 {
11 11
12 -static TemplateList Downsample(const TemplateList &templates, int classes, int instances, float fraction, const QString & inputVariable) 12 +static TemplateList Downsample(const TemplateList &templates, int classes, int instances, float fraction, const QString & inputVariable, const QString &gallery)
13 { 13 {
14 // Return early when no downsampling is required 14 // Return early when no downsampling is required
15 if ((classes == std::numeric_limits<int>::max()) && 15 if ((classes == std::numeric_limits<int>::max()) &&
16 (instances == std::numeric_limits<int>::max()) && 16 (instances == std::numeric_limits<int>::max()) &&
17 - (fraction >= 1)) 17 + (fraction >= 1) &&
  18 + (gallery.isEmpty()))
18 return templates; 19 return templates;
19 20
20 const bool atLeast = instances < 0; 21 const bool atLeast = instances < 0;
@@ -60,6 +61,11 @@ static TemplateList Downsample(const TemplateList &amp;templates, int classes, int i @@ -60,6 +61,11 @@ static TemplateList Downsample(const TemplateList &amp;templates, int classes, int i
60 downsample = downsample.mid(0, downsample.size()*fraction); 61 downsample = downsample.mid(0, downsample.size()*fraction);
61 } 62 }
62 63
  64 + if (!gallery.isEmpty())
  65 + foreach(const Template &t, templates)
  66 + if (t.file.get<QString>("Gallery") == gallery)
  67 + downsample.append(t);
  68 +
63 return downsample; 69 return downsample;
64 } 70 }
65 71
@@ -71,11 +77,13 @@ class DownsampleTrainingTransform : public Transform @@ -71,11 +77,13 @@ class DownsampleTrainingTransform : public Transform
71 Q_PROPERTY(int instances READ get_instances WRITE set_instances RESET reset_instances STORED false) 77 Q_PROPERTY(int instances READ get_instances WRITE set_instances RESET reset_instances STORED false)
72 Q_PROPERTY(float fraction READ get_fraction WRITE set_fraction RESET reset_fraction STORED false) 78 Q_PROPERTY(float fraction READ get_fraction WRITE set_fraction RESET reset_fraction STORED false)
73 Q_PROPERTY(QString inputVariable READ get_inputVariable WRITE set_inputVariable RESET reset_inputVariable STORED false) 79 Q_PROPERTY(QString inputVariable READ get_inputVariable WRITE set_inputVariable RESET reset_inputVariable STORED false)
  80 + Q_PROPERTY(QString gallery READ get_gallery WRITE set_gallery RESET reset_gallery STORED false)
74 BR_PROPERTY(br::Transform*, transform, NULL) 81 BR_PROPERTY(br::Transform*, transform, NULL)
75 BR_PROPERTY(int, classes, std::numeric_limits<int>::max()) 82 BR_PROPERTY(int, classes, std::numeric_limits<int>::max())
76 BR_PROPERTY(int, instances, std::numeric_limits<int>::max()) 83 BR_PROPERTY(int, instances, std::numeric_limits<int>::max())
77 BR_PROPERTY(float, fraction, 1) 84 BR_PROPERTY(float, fraction, 1)
78 BR_PROPERTY(QString, inputVariable, "Label") 85 BR_PROPERTY(QString, inputVariable, "Label")
  86 + BR_PROPERTY(QString, gallery, QString())
79 87
80 void project(const Template & src, Template & dst) const 88 void project(const Template & src, Template & dst) const
81 { 89 {
@@ -88,7 +96,7 @@ class DownsampleTrainingTransform : public Transform @@ -88,7 +96,7 @@ class DownsampleTrainingTransform : public Transform
88 if (!transform || !transform->trainable) 96 if (!transform || !transform->trainable)
89 return; 97 return;
90 98
91 - TemplateList downsampled = Downsample(data, classes, instances, fraction, inputVariable); 99 + TemplateList downsampled = Downsample(data, classes, instances, fraction, inputVariable, gallery);
92 transform->train(downsampled); 100 transform->train(downsampled);
93 } 101 }
94 }; 102 };