Commit 7f2c455eac1191fa6805b1849ae341ddad1791d1

Authored by Scott Klum
1 parent 1699213d

Average Distance, minor output changes, eval now outputs max rank scores

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 &amp;simmat, const QString &amp;mask, const QString &amp;csv) @@ -257,10 +258,11 @@ float Evaluate(const QString &amp;simmat, const QString &amp;mask, const QString &amp;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 &amp;conte @@ -968,6 +968,7 @@ void br::Context::messageHandler(QtMsgType type, const QMessageLogContext &amp;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
@@ -86,7 +86,7 @@ class PipeTransform : public CompositeTransform @@ -86,7 +86,7 @@ class PipeTransform : public CompositeTransform
86 TemplateList copy(data); 86 TemplateList copy(data);
87 int i = 0; 87 int i = 0;
88 while (i < transforms.size()) { 88 while (i < transforms.size()) {
89 - fprintf(stderr, "%s", qPrintable(transforms[i]->objectName())); 89 + fprintf(stderr, "\n%s", qPrintable(transforms[i]->objectName()));
90 90
91 // Conditional statement covers likely case that first transform is untrainable 91 // Conditional statement covers likely case that first transform is untrainable
92 if (transforms[i]->trainable) { 92 if (transforms[i]->trainable) {
@@ -104,7 +104,7 @@ class PipeTransform : public CompositeTransform @@ -104,7 +104,7 @@ class PipeTransform : public CompositeTransform
104 !transforms[nextTrainableTransform]->trainable) 104 !transforms[nextTrainableTransform]->trainable)
105 nextTrainableTransform++; 105 nextTrainableTransform++;
106 106
107 - fprintf(stderr, " projecting...\n"); 107 + fprintf(stderr, " projecting...");
108 QFutureSynchronizer<void> futures; 108 QFutureSynchronizer<void> futures;
109 for (int j=0; j<copy.size(); j++) 109 for (int j=0; j<copy.size(); j++)
110 if (Globals->parallelism) futures.addFuture(QtConcurrent::run(this, &PipeTransform::_projectPartial, &copy[j], i, nextTrainableTransform)); 110 if (Globals->parallelism) futures.addFuture(QtConcurrent::run(this, &PipeTransform::_projectPartial, &copy[j], i, nextTrainableTransform));
@@ -285,6 +285,7 @@ class ForkTransform : public CompositeTransform @@ -285,6 +285,7 @@ class ForkTransform : public CompositeTransform
285 285
286 void train(const TemplateList &data) 286 void train(const TemplateList &data)
287 { 287 {
  288 +
288 QFutureSynchronizer<void> futures; 289 QFutureSynchronizer<void> futures;
289 for (int i=0; i<transforms.size(); i++) { 290 for (int i=0; i<transforms.size(); i++) {
290 if (Globals->parallelism) futures.addFuture(QtConcurrent::run(_train, transforms[i], &data)); 291 if (Globals->parallelism) futures.addFuture(QtConcurrent::run(_train, transforms[i], &data));