diff --git a/openbr/core/classify.cpp b/openbr/core/classify.cpp index ad2937e..e54fbc3 100644 --- a/openbr/core/classify.cpp +++ b/openbr/core/classify.cpp @@ -45,8 +45,12 @@ void br::EvalClassification(const QString &predictedInput, const QString &truthI qFatal("Input order mismatch."); // Typically these lists will be of length one, but this generalization allows measuring multi-class labeling accuracy. - QStringList predictedSubjects = predicted[i].file.get("Subject"); - QStringList trueSubjects = truth[i].file.get("Subject"); + QString predictedSubject = predicted[i].file.subject(); + QString trueSubject = truth[i].file.subject(); + + QStringList predictedSubjects(predictedSubject); + QStringList trueSubjects(trueSubject); + foreach (const QString &subject, trueSubjects.toVector() /* Hack to copy the list. */) { if (predictedSubjects.contains(subject)) { counters[subject].truePositive++; diff --git a/openbr/openbr_plugin.cpp b/openbr/openbr_plugin.cpp index 7e83f9b..18c1688 100644 --- a/openbr/openbr_plugin.cpp +++ b/openbr/openbr_plugin.cpp @@ -183,6 +183,11 @@ float File::label() const if (s.isNull()) return -1; const QString subject = s.toString(); + + bool is_num = false; + float num = subject.toFloat(&is_num); + if (is_num) return num; + static QMutex mutex; QMutexLocker mutexLocker(&mutex); if (!Globals->subjects.contains(subject)) diff --git a/openbr/plugins/meta.cpp b/openbr/plugins/meta.cpp index 94ae184..4601f87 100644 --- a/openbr/plugins/meta.cpp +++ b/openbr/plugins/meta.cpp @@ -76,7 +76,7 @@ class PipeTransform : public CompositeTransform { Q_OBJECT - void _projectPartial(Template *srcdst, int startIndex, int stopIndex) + void _projectPartial(TemplateList *srcdst, int startIndex, int stopIndex) { for (int i=startIndex; i> *transforms[i]; @@ -87,6 +87,14 @@ class PipeTransform : public CompositeTransform if (!trainable) return; TemplateList copy(data); + QList singleItemLists; + for (int i=0; i < copy.size(); i++) + { + TemplateList temp; + temp.append(copy[i]); + singleItemLists.append(temp); + } + int i = 0; while (i < transforms.size()) { fprintf(stderr, "\n%s", qPrintable(transforms[i]->objectName())); @@ -109,9 +117,14 @@ class PipeTransform : public CompositeTransform fprintf(stderr, " projecting..."); QFutureSynchronizer futures; - for (int j=0; j