diff --git a/openbr/plugins/independent.cpp b/openbr/plugins/independent.cpp index 162566f..7781b74 100644 --- a/openbr/plugins/independent.cpp +++ b/openbr/plugins/independent.cpp @@ -9,7 +9,7 @@ using namespace cv; namespace br { -static TemplateList Downsample(const TemplateList &templates, int classes, int instances, float fraction, const QString & inputVariable, const QString &gallery) +static TemplateList Downsample(const TemplateList &templates, int classes, int instances, float fraction, const QString & inputVariable, const QStringList &gallery) { // Return early when no downsampling is required if ((classes == std::numeric_limits::max()) && @@ -62,9 +62,9 @@ static TemplateList Downsample(const TemplateList &templates, int classes, int i } if (!gallery.isEmpty()) - foreach(const Template &t, templates) - if (t.file.get("Gallery") == gallery) - downsample.append(t); + for (int i=downsample.size()-1; i>=0; i--) + if (!gallery.contains(downsample[i].file.get("Gallery"))) + downsample.removeAt(i); return downsample; } @@ -77,13 +77,13 @@ class DownsampleTrainingTransform : public Transform Q_PROPERTY(int instances READ get_instances WRITE set_instances RESET reset_instances STORED false) Q_PROPERTY(float fraction READ get_fraction WRITE set_fraction RESET reset_fraction STORED false) Q_PROPERTY(QString inputVariable READ get_inputVariable WRITE set_inputVariable RESET reset_inputVariable STORED false) - Q_PROPERTY(QString gallery READ get_gallery WRITE set_gallery RESET reset_gallery STORED false) + Q_PROPERTY(QStringList gallery READ get_gallery WRITE set_gallery RESET reset_gallery STORED false) BR_PROPERTY(br::Transform*, transform, NULL) BR_PROPERTY(int, classes, std::numeric_limits::max()) BR_PROPERTY(int, instances, std::numeric_limits::max()) BR_PROPERTY(float, fraction, 1) BR_PROPERTY(QString, inputVariable, "Label") - BR_PROPERTY(QString, gallery, QString()) + BR_PROPERTY(QStringList, gallery, QStringList()) void project(const Template & src, Template & dst) const { @@ -97,6 +97,7 @@ class DownsampleTrainingTransform : public Transform return; TemplateList downsampled = Downsample(data, classes, instances, fraction, inputVariable, gallery); + transform->train(downsampled); } };