Commit 7a540d85c3bf74f7f998d014dc6d98ebb8dbdb9b

Authored by JordanCheney
1 parent ad5854c9

Updated to reflect comments. Also minor changes to br app to reflect new command line options

app/br/br.cpp
@@ -157,8 +157,8 @@ public: @@ -157,8 +157,8 @@ public:
157 check((parc >= 2) && (parc <= 3), "Incorrect parameter count for 'evalClustering'."); 157 check((parc >= 2) && (parc <= 3), "Incorrect parameter count for 'evalClustering'.");
158 br_eval_clustering(parv[0], parv[1], parc == 3 ? parv[2] : ""); 158 br_eval_clustering(parv[0], parv[1], parc == 3 ? parv[2] : "");
159 } else if (!strcmp(fun, "evalDetection")) { 159 } else if (!strcmp(fun, "evalDetection")) {
160 - check((parc >= 2) && (parc <= 5), "Incorrect parameter count for 'evalDetection'.");  
161 - br_eval_detection(parv[0], parv[1], parc >= 3 ? parv[2] : "", parc >= 4 ? atoi(parv[3]) : 0, parc == 5 ? atoi(parv[4]) : 0); 160 + check((parc >= 2) && (parc <= 6), "Incorrect parameter count for 'evalDetection'.");
  161 + br_eval_detection(parv[0], parv[1], parc >= 3 ? parv[2] : "", parc >= 4 ? atoi(parv[3]) : 0, parc >= 5 ? atoi(parv[4]) : 0, parc == 6 ? atoi(parv[5]) : 0);
162 } else if (!strcmp(fun, "evalLandmarking")) { 162 } else if (!strcmp(fun, "evalLandmarking")) {
163 check((parc >= 2) && (parc <= 5), "Incorrect parameter count for 'evalLandmarking'."); 163 check((parc >= 2) && (parc <= 5), "Incorrect parameter count for 'evalLandmarking'.");
164 br_eval_landmarking(parv[0], parv[1], parc >= 3 ? parv[2] : "", parc >= 4 ? atoi(parv[3]) : 0, parc >= 5 ? atoi(parv[4]) : 1); 164 br_eval_landmarking(parv[0], parv[1], parc >= 3 ? parv[2] : "", parc >= 4 ? atoi(parv[3]) : 0, parc >= 5 ? atoi(parv[4]) : 1);
openbr/core/eval.cpp
@@ -667,6 +667,7 @@ struct SortedDetection @@ -667,6 +667,7 @@ struct SortedDetection
667 SortedDetection() : truth_idx(-1), predicted_idx(-1), overlap(-1) {} 667 SortedDetection() : truth_idx(-1), predicted_idx(-1), overlap(-1) {}
668 SortedDetection(int truth_idx_, int predicted_idx_, float overlap_) 668 SortedDetection(int truth_idx_, int predicted_idx_, float overlap_)
669 : truth_idx(truth_idx_), predicted_idx(predicted_idx_), overlap(overlap_) {} 669 : truth_idx(truth_idx_), predicted_idx(predicted_idx_), overlap(overlap_) {}
  670 + inline bool operator<(const SortedDetection &other) const { return overlap > other.overlap; }
670 }; 671 };
671 672
672 struct Detections 673 struct Detections
@@ -832,16 +833,11 @@ static QMap&lt;QString, Detections&gt; getDetections(const File &amp;predictedGallery, con @@ -832,16 +833,11 @@ static QMap&lt;QString, Detections&gt; getDetections(const File &amp;predictedGallery, con
832 return allDetections; 833 return allDetections;
833 } 834 }
834 835
835 -static int getNumberOfImages(const QMap<QString, Detections> detections) 836 +static inline int getNumberOfImages(const QMap<QString, Detections> detections)
836 { 837 {
837 return detections.keys().size(); 838 return detections.keys().size();
838 } 839 }
839 840
840 -static bool sortedCompare(const SortedDetection &a, const SortedDetection &b)  
841 -{  
842 - return a.overlap > b.overlap;  
843 -}  
844 -  
845 static int associateGroundTruthDetections(QList<ResolvedDetection> &resolved, QList<ResolvedDetection> &falseNegative, QMap<QString, Detections> &all, QRectF &offsets) 841 static int associateGroundTruthDetections(QList<ResolvedDetection> &resolved, QList<ResolvedDetection> &falseNegative, QMap<QString, Detections> &all, QRectF &offsets)
846 { 842 {
847 float dLeftTotal = 0.0, dRightTotal = 0.0, dTopTotal = 0.0, dBottomTotal = 0.0; 843 float dLeftTotal = 0.0, dRightTotal = 0.0, dTopTotal = 0.0, dBottomTotal = 0.0;
@@ -871,7 +867,7 @@ static int associateGroundTruthDetections(QList&lt;ResolvedDetection&gt; &amp;resolved, QL @@ -871,7 +867,7 @@ static int associateGroundTruthDetections(QList&lt;ResolvedDetection&gt; &amp;resolved, QL
871 } 867 }
872 } 868 }
873 869
874 - std::sort(sortedDetections.begin(), sortedDetections.end(), sortedCompare); 870 + std::sort(sortedDetections.begin(), sortedDetections.end());
875 871
876 QList<int> removedTruth; 872 QList<int> removedTruth;
877 QList<int> removedPredicted; 873 QList<int> removedPredicted;
openbr/core/eval.h
@@ -29,7 +29,7 @@ namespace br @@ -29,7 +29,7 @@ namespace br
29 float InplaceEval(const QString & simmat, const QString & target, const QString & query, const QString & csv = ""); 29 float InplaceEval(const QString & simmat, const QString & target, const QString & query, const QString & csv = "");
30 30
31 void EvalClassification(const QString &predictedGallery, const QString &truthGallery, QString predictedProperty = "", QString truthProperty = ""); 31 void EvalClassification(const QString &predictedGallery, const QString &truthGallery, QString predictedProperty = "", QString truthProperty = "");
32 - float EvalDetection(const QString &predictedGallery, const QString &truthGallery, const QString &csv = "", bool normalize = false, int minSize = 0); // Return average overlap 32 + float EvalDetection(const QString &predictedGallery, const QString &truthGallery, const QString &csv = "", bool normalize = false, int minSize = 0, int maxSize = 0); // Return average overlap
33 float EvalLandmarking(const QString &predictedGallery, const QString &truthGallery, const QString &csv = "", int normalizationIndexA = 0, int normalizationIndexB = 1); // Return average error 33 float EvalLandmarking(const QString &predictedGallery, const QString &truthGallery, const QString &csv = "", int normalizationIndexA = 0, int normalizationIndexB = 1); // Return average error
34 void EvalRegression(const QString &predictedGallery, const QString &truthGallery, QString predictedProperty = "", QString truthProperty = ""); 34 void EvalRegression(const QString &predictedGallery, const QString &truthGallery, QString predictedProperty = "", QString truthProperty = "");
35 } 35 }
openbr/openbr.cpp
@@ -124,9 +124,9 @@ void br_eval_clustering(const char *csv, const char *gallery, const char *truth_ @@ -124,9 +124,9 @@ void br_eval_clustering(const char *csv, const char *gallery, const char *truth_
124 EvalClustering(csv, gallery, truth_property); 124 EvalClustering(csv, gallery, truth_property);
125 } 125 }
126 126
127 -float br_eval_detection(const char *predicted_gallery, const char *truth_gallery, const char *csv, bool normalize, int minSize) 127 +float br_eval_detection(const char *predicted_gallery, const char *truth_gallery, const char *csv, bool normalize, int minSize, int maxSize)
128 { 128 {
129 - return EvalDetection(predicted_gallery, truth_gallery, csv, normalize, minSize); 129 + return EvalDetection(predicted_gallery, truth_gallery, csv, normalize, minSize, maxSize);
130 } 130 }
131 131
132 float br_eval_landmarking(const char *predicted_gallery, const char *truth_gallery, const char *csv, int normalization_index_a, int normalization_index_b) 132 float br_eval_landmarking(const char *predicted_gallery, const char *truth_gallery, const char *csv, int normalization_index_a, int normalization_index_b)
openbr/openbr.h
@@ -197,7 +197,7 @@ BR_EXPORT void br_eval_clustering(const char *csv, const char *gallery, const ch @@ -197,7 +197,7 @@ BR_EXPORT void br_eval_clustering(const char *csv, const char *gallery, const ch
197 * \param normalize Optional \c bool flag to normalize predicted bounding boxes for improved detection. 197 * \param normalize Optional \c bool flag to normalize predicted bounding boxes for improved detection.
198 * \return Average detection bounding box overlap. 198 * \return Average detection bounding box overlap.
199 */ 199 */
200 -BR_EXPORT float br_eval_detection(const char *predicted_gallery, const char *truth_gallery, const char *csv = "", bool normalize = false, int minSize = 0); 200 +BR_EXPORT float br_eval_detection(const char *predicted_gallery, const char *truth_gallery, const char *csv = "", bool normalize = false, int minSize = 0, int maxSize = 0);
201 201
202 /*! 202 /*!
203 * \brief Evaluates and prints landmarking accuracy to terminal. 203 * \brief Evaluates and prints landmarking accuracy to terminal.