Commit bd3d5b0d0bea367e08cc8193597923f29de17f41
1 parent
9756e99f
wrote more of evalDetection
Showing
1 changed file
with
33 additions
and
4 deletions
openbr/core/classify.cpp
| ... | ... | @@ -34,7 +34,6 @@ struct Counter |
| 34 | 34 | void br::EvalClassification(const QString &predictedInput, const QString &truthInput) |
| 35 | 35 | { |
| 36 | 36 | qDebug("Evaluating classification of %s against %s", qPrintable(predictedInput), qPrintable(truthInput)); |
| 37 | - | |
| 38 | 37 | TemplateList predicted(TemplateList::fromGallery(predictedInput)); |
| 39 | 38 | TemplateList truth(TemplateList::fromGallery(truthInput)); |
| 40 | 39 | if (predicted.size() != truth.size()) qFatal("Input size mismatch."); |
| ... | ... | @@ -90,16 +89,46 @@ void br::EvalClassification(const QString &predictedInput, const QString &truthI |
| 90 | 89 | qDebug("Overall Accuracy = %f", (float)tpc / (float)(tpc + fnc)); |
| 91 | 90 | } |
| 92 | 91 | |
| 92 | +struct Detection | |
| 93 | +{ | |
| 94 | + QRectF boundingBox; | |
| 95 | + float confidence; | |
| 96 | + Detection() {} | |
| 97 | + Detection(const QRectF &boundingBox_, float confidence_ = -1) | |
| 98 | + : boundingBox(boundingBox_), confidence(confidence_) {} | |
| 99 | +}; | |
| 100 | + | |
| 101 | +struct Detections | |
| 102 | +{ | |
| 103 | + QList<Detection> predicted, truth; | |
| 104 | +}; | |
| 105 | + | |
| 93 | 106 | void br::EvalDetection(const QString &predictedInput, const QString &truthInput) |
| 94 | 107 | { |
| 95 | - (void) predictedInput; | |
| 96 | - (void) truthInput; | |
| 108 | + qDebug("Evaluating detection of %s against %s", qPrintable(predictedInput), qPrintable(truthInput)); | |
| 109 | + const TemplateList predicted(TemplateList::fromGallery(predictedInput)); | |
| 110 | + const TemplateList truth(TemplateList::fromGallery(truthInput)); | |
| 111 | + | |
| 112 | + // Figure out which metadata field contains a bounding box | |
| 113 | + QString detectKey; | |
| 114 | + foreach (const QString &key, truth.first().file.localKeys()) | |
| 115 | + if (!truth.first().file.get<QRectF>(key, QRectF()).isNull()) { | |
| 116 | + detectKey = key; | |
| 117 | + break; | |
| 118 | + } | |
| 119 | + if (detectKey.isNull()) qFatal("No suitable metadata key found."); | |
| 120 | + else qDebug("Using metadata key: %s", qPrintable(detectKey)); | |
| 121 | + | |
| 122 | + QHash<QString, Detections> allDetections; // Organized by file | |
| 123 | + foreach (const Template &t, predicted) | |
| 124 | + allDetections[t.file.baseName()].predicted.append(Detection(t.file.get<QRectF>(detectKey), t.file.get<float>("Confidence", -1))); | |
| 125 | + foreach (const Template &t, truth) | |
| 126 | + allDetections[t.file.baseName()].truth.append(Detection(t.file.get<QRectF>(detectKey))); | |
| 97 | 127 | } |
| 98 | 128 | |
| 99 | 129 | void br::EvalRegression(const QString &predictedInput, const QString &truthInput) |
| 100 | 130 | { |
| 101 | 131 | qDebug("Evaluating regression of %s against %s", qPrintable(predictedInput), qPrintable(truthInput)); |
| 102 | - | |
| 103 | 132 | const TemplateList predicted(TemplateList::fromGallery(predictedInput)); |
| 104 | 133 | const TemplateList truth(TemplateList::fromGallery(truthInput)); |
| 105 | 134 | if (predicted.size() != truth.size()) qFatal("Input size mismatch."); | ... | ... |