Commit 82fa59c1a73c5aa0f901cf78431e08b4923d8303

Authored by Brendan Klare
1 parent 3d060770

Handle FTEs without crash in landmark eval

Showing 1 changed file with 8 additions and 1 deletions
openbr/core/eval.cpp
... ... @@ -572,6 +572,7 @@ float EvalLandmarking(const QString &predictedGallery, const QString &truthGalle
572 572 const QStringList predictedNames = File::get<QString>(predicted, "name");
573 573 const QStringList truthNames = File::get<QString>(truth, "name");
574 574  
  575 + int skipped = 0;
575 576 QList< QList<float> > pointErrors;
576 577 for (int i=0; i<predicted.size(); i++) {
577 578 const QString &predictedName = predictedNames[i];
... ... @@ -579,7 +580,10 @@ float EvalLandmarking(const QString &amp;predictedGallery, const QString &amp;truthGalle
579 580 if (truthIndex == -1) qFatal("Could not identify ground truth for file: %s", qPrintable(predictedName));
580 581 const QList<QPointF> predictedPoints = predicted[i].file.points();
581 582 const QList<QPointF> truthPoints = truth[truthIndex].file.points();
582   - if (predictedPoints.size() != truthPoints.size()) qFatal("Points size mismatch for file: %s", qPrintable(predictedName));
  583 + if (predictedPoints.size() != truthPoints.size()) {
  584 + skipped++;
  585 + continue;
  586 + }
583 587 while (pointErrors.size() < predictedPoints.size())
584 588 pointErrors.append(QList<float>());
585 589 if (normalizationIndexA >= truthPoints.size()) qFatal("Normalization index A is out of range.");
... ... @@ -588,6 +592,7 @@ float EvalLandmarking(const QString &amp;predictedGallery, const QString &amp;truthGalle
588 592 for (int j=0; j<predictedPoints.size(); j++)
589 593 pointErrors[j].append(QtUtils::euclideanLength(predictedPoints[j] - truthPoints[j])/normalizedLength);
590 594 }
  595 + qDebug() << "Skipped " << skipped << " files do to point size mismatch.";
591 596  
592 597 QList<float> averagePointErrors; averagePointErrors.reserve(pointErrors.size());
593 598 for (int i=0; i<pointErrors.size(); i++) {
... ... @@ -605,6 +610,8 @@ float EvalLandmarking(const QString &amp;predictedGallery, const QString &amp;truthGalle
605 610 lines.append(QString("Box,%1,%2").arg(QString::number(i), QString::number(pointError[j*(pointError.size()-1)/(keep-1)])));
606 611 }
607 612  
  613 + lines.append(QString("AvgError,0,%1").arg(averagePointError));
  614 +
608 615 QtUtils::writeFile(csv, lines);
609 616 qDebug("Average Error: %.3f", averagePointError);
610 617 return averagePointError;
... ...