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 250  
251 251 // Write Cumulative Match Characteristic (CMC) curve
252 252 const int Max_Retrieval = 25;
  253 + float maxRankRate;
253 254 for (int i=1; i<=Max_Retrieval; i++) {
254 255 int realizedReturns = 0, possibleReturns = 0;
255 256 foreach (int firstGenuineReturn, firstGenuineReturns) {
... ... @@ -257,10 +258,11 @@ float Evaluate(const QString &amp;simmat, const QString &amp;mask, const QString &amp;csv)
257 258 if (firstGenuineReturn <= i) realizedReturns++;
258 259 }
259 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 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 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 968 // Write debug output then close
969 969 qDebug(" File: %s\n Function: %s\n Line: %d", qPrintable(context.file), qPrintable(context.function), context.line);
970 970 Globals->finalize();
  971 + //QCoreApplication::exit(-1);
971 972 abort();
972 973 }
973 974 }
... ...
openbr/plugins/distance.cpp
... ... @@ -177,6 +177,11 @@ class PipeDistance : public Distance
177 177  
178 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 185 class AverageDistance : public Distance
181 186 {
182 187 Q_OBJECT
... ... @@ -190,19 +195,12 @@ class AverageDistance : public Distance
190 195  
191 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 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 302  
303 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 307 bool uniform = true;
308 308 QVector<uchar> alignedData(templates.bytes<size_t>());
... ...
openbr/plugins/meta.cpp
... ... @@ -86,7 +86,7 @@ class PipeTransform : public CompositeTransform
86 86 TemplateList copy(data);
87 87 int i = 0;
88 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 91 // Conditional statement covers likely case that first transform is untrainable
92 92 if (transforms[i]->trainable) {
... ... @@ -104,7 +104,7 @@ class PipeTransform : public CompositeTransform
104 104 !transforms[nextTrainableTransform]->trainable)
105 105 nextTrainableTransform++;
106 106  
107   - fprintf(stderr, " projecting...\n");
  107 + fprintf(stderr, " projecting...");
108 108 QFutureSynchronizer<void> futures;
109 109 for (int j=0; j<copy.size(); j++)
110 110 if (Globals->parallelism) futures.addFuture(QtConcurrent::run(this, &PipeTransform::_projectPartial, &copy[j], i, nextTrainableTransform));
... ... @@ -285,6 +285,7 @@ class ForkTransform : public CompositeTransform
285 285  
286 286 void train(const TemplateList &data)
287 287 {
  288 +
288 289 QFutureSynchronizer<void> futures;
289 290 for (int i=0; i<transforms.size(); i++) {
290 291 if (Globals->parallelism) futures.addFuture(QtConcurrent::run(_train, transforms[i], &data));
... ...