Commit e9d3ee93ec240c3111f9fb674c1c0be759029b58
Merge branch 'master' of https://github.com/biometrics/openbr
Showing
5 changed files
with
15 additions
and
14 deletions
openbr/core/plot.cpp
| @@ -250,6 +250,7 @@ float Evaluate(const QString &simmat, const QString &mask, const QString &csv) | @@ -250,6 +250,7 @@ float Evaluate(const QString &simmat, const QString &mask, const QString &csv) | ||
| 250 | 250 | ||
| 251 | // Write Cumulative Match Characteristic (CMC) curve | 251 | // Write Cumulative Match Characteristic (CMC) curve |
| 252 | const int Max_Retrieval = 25; | 252 | const int Max_Retrieval = 25; |
| 253 | + float maxRankRate; | ||
| 253 | for (int i=1; i<=Max_Retrieval; i++) { | 254 | for (int i=1; i<=Max_Retrieval; i++) { |
| 254 | int realizedReturns = 0, possibleReturns = 0; | 255 | int realizedReturns = 0, possibleReturns = 0; |
| 255 | foreach (int firstGenuineReturn, firstGenuineReturns) { | 256 | foreach (int firstGenuineReturn, firstGenuineReturns) { |
| @@ -257,10 +258,11 @@ float Evaluate(const QString &simmat, const QString &mask, const QString &csv) | @@ -257,10 +258,11 @@ float Evaluate(const QString &simmat, const QString &mask, const QString &csv) | ||
| 257 | if (firstGenuineReturn <= i) realizedReturns++; | 258 | if (firstGenuineReturn <= i) realizedReturns++; |
| 258 | } | 259 | } |
| 259 | lines.append(qPrintable(QString("CMC,%1,%2").arg(QString::number(i), QString::number(float(realizedReturns)/possibleReturns)))); | 260 | lines.append(qPrintable(QString("CMC,%1,%2").arg(QString::number(i), QString::number(float(realizedReturns)/possibleReturns)))); |
| 261 | + if (i==(Max_Retrieval)) maxRankRate = float(realizedReturns)/possibleReturns; | ||
| 260 | } | 262 | } |
| 261 | 263 | ||
| 262 | if (!csv.isEmpty()) QtUtils::writeFile(csv, lines); | 264 | if (!csv.isEmpty()) QtUtils::writeFile(csv, lines); |
| 263 | - qDebug("TAR @ FAR = 0.01: %.3f", result); | 265 | + qDebug("TAR @ FAR = 0.01: %.3f\nRetrieval Rate at Rank 25: %.3f", result, maxRankRate); |
| 264 | return result; | 266 | return result; |
| 265 | } | 267 | } |
| 266 | 268 |
openbr/openbr_plugin.cpp
| @@ -968,6 +968,7 @@ void br::Context::messageHandler(QtMsgType type, const QMessageLogContext &conte | @@ -968,6 +968,7 @@ void br::Context::messageHandler(QtMsgType type, const QMessageLogContext &conte | ||
| 968 | // Write debug output then close | 968 | // Write debug output then close |
| 969 | qDebug(" File: %s\n Function: %s\n Line: %d", qPrintable(context.file), qPrintable(context.function), context.line); | 969 | qDebug(" File: %s\n Function: %s\n Line: %d", qPrintable(context.file), qPrintable(context.function), context.line); |
| 970 | Globals->finalize(); | 970 | Globals->finalize(); |
| 971 | + //QCoreApplication::exit(-1); | ||
| 971 | abort(); | 972 | abort(); |
| 972 | } | 973 | } |
| 973 | } | 974 | } |
openbr/plugins/distance.cpp
| @@ -177,6 +177,11 @@ class PipeDistance : public Distance | @@ -177,6 +177,11 @@ class PipeDistance : public Distance | ||
| 177 | 177 | ||
| 178 | BR_REGISTER(Distance, PipeDistance) | 178 | BR_REGISTER(Distance, PipeDistance) |
| 179 | 179 | ||
| 180 | +/*! | ||
| 181 | + * \ingroup distances | ||
| 182 | + * \brief Average distance of multiple matrices | ||
| 183 | + * \author Scott Klum \cite sklum | ||
| 184 | + */ | ||
| 180 | class AverageDistance : public Distance | 185 | class AverageDistance : public Distance |
| 181 | { | 186 | { |
| 182 | Q_OBJECT | 187 | Q_OBJECT |
| @@ -190,19 +195,12 @@ class AverageDistance : public Distance | @@ -190,19 +195,12 @@ class AverageDistance : public Distance | ||
| 190 | 195 | ||
| 191 | float compare(const Template &a, const Template &b) const | 196 | float compare(const Template &a, const Template &b) const |
| 192 | { | 197 | { |
| 193 | - if (a.size() != b.size()) | ||
| 194 | - qDebug() << a.size() << " " << b.size(); | 198 | + if (a.size() != b.size()) qFatal("Comparison size mismatch"); |
| 195 | 199 | ||
| 196 | float score = 0; | 200 | float score = 0; |
| 201 | + for (int i = 0; i < a.size(); i++) score += distance->compare(a[i],b[i]); | ||
| 197 | 202 | ||
| 198 | - for (int i = 0; i < a.size(); i++) { | ||
| 199 | - //Template | ||
| 200 | - score += distance->compare(a[i],b[i]); | ||
| 201 | - } | ||
| 202 | - | ||
| 203 | - qDebug() << score; | ||
| 204 | - | ||
| 205 | - return score; | 203 | + return score/(float)a.size(); |
| 206 | } | 204 | } |
| 207 | }; | 205 | }; |
| 208 | 206 |
openbr/plugins/gallery.cpp
| @@ -302,7 +302,7 @@ class memGallery : public Gallery | @@ -302,7 +302,7 @@ class memGallery : public Gallery | ||
| 302 | 302 | ||
| 303 | static void align(TemplateList &templates) | 303 | static void align(TemplateList &templates) |
| 304 | { | 304 | { |
| 305 | - //if (templates[0].size() > 1) return; | 305 | + if (!templates.empty() && templates[0].size() > 1) return; |
| 306 | 306 | ||
| 307 | bool uniform = true; | 307 | bool uniform = true; |
| 308 | QVector<uchar> alignedData(templates.bytes<size_t>()); | 308 | QVector<uchar> alignedData(templates.bytes<size_t>()); |
openbr/plugins/meta.cpp
| @@ -88,7 +88,7 @@ class PipeTransform : public CompositeTransform | @@ -88,7 +88,7 @@ class PipeTransform : public CompositeTransform | ||
| 88 | TemplateList copy(data); | 88 | TemplateList copy(data); |
| 89 | int i = 0; | 89 | int i = 0; |
| 90 | while (i < transforms.size()) { | 90 | while (i < transforms.size()) { |
| 91 | - fprintf(stderr, "%s", qPrintable(transforms[i]->objectName())); | 91 | + fprintf(stderr, "\n%s", qPrintable(transforms[i]->objectName())); |
| 92 | 92 | ||
| 93 | // Conditional statement covers likely case that first transform is untrainable | 93 | // Conditional statement covers likely case that first transform is untrainable |
| 94 | if (transforms[i]->trainable) { | 94 | if (transforms[i]->trainable) { |
| @@ -106,7 +106,7 @@ class PipeTransform : public CompositeTransform | @@ -106,7 +106,7 @@ class PipeTransform : public CompositeTransform | ||
| 106 | !transforms[nextTrainableTransform]->trainable) | 106 | !transforms[nextTrainableTransform]->trainable) |
| 107 | nextTrainableTransform++; | 107 | nextTrainableTransform++; |
| 108 | 108 | ||
| 109 | - fprintf(stderr, " projecting...\n"); | 109 | + fprintf(stderr, " projecting..."); |
| 110 | QFutureSynchronizer<void> futures; | 110 | QFutureSynchronizer<void> futures; |
| 111 | for (int j=0; j<copy.size(); j++) | 111 | for (int j=0; j<copy.size(); j++) |
| 112 | if (Globals->parallelism) futures.addFuture(QtConcurrent::run(this, &PipeTransform::_projectPartial, ©[j], i, nextTrainableTransform)); | 112 | if (Globals->parallelism) futures.addFuture(QtConcurrent::run(this, &PipeTransform::_projectPartial, ©[j], i, nextTrainableTransform)); |