mirror of https://github.com/davisking/dlib.git
Fixed a bug in the object_detector testing code that caused the average
precision values to be slightly wrong.
This commit is contained in:
parent
c0c1995d50
commit
92a3c41010
|
@ -50,32 +50,27 @@ namespace dlib
|
||||||
std::vector<bool> used(boxes.size(),false);
|
std::vector<bool> used(boxes.size(),false);
|
||||||
for (unsigned long i = 0; i < truth_boxes.size(); ++i)
|
for (unsigned long i = 0; i < truth_boxes.size(); ++i)
|
||||||
{
|
{
|
||||||
unsigned long best_idx = 0;
|
bool found_match = false;
|
||||||
double best_overlap = 0;
|
// Find the first box that hits truth_boxes[i]
|
||||||
// Find the best box that hits truth_boxes[i]
|
|
||||||
for (unsigned long j = 0; j < boxes.size(); ++j)
|
for (unsigned long j = 0; j < boxes.size(); ++j)
|
||||||
{
|
{
|
||||||
if (used[j])
|
if (used[j])
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
const double overlap = truth_boxes[i].get_rect().intersect(boxes[j].second).area() / (double)(truth_boxes[i].get_rect()+boxes[j].second).area();
|
const double overlap = truth_boxes[i].get_rect().intersect(boxes[j].second).area() /
|
||||||
if (overlap > best_overlap)
|
(double)(truth_boxes[i].get_rect()+boxes[j].second).area();
|
||||||
|
|
||||||
|
if (overlap >= overlap_eps)
|
||||||
{
|
{
|
||||||
best_overlap = overlap;
|
used[j] = true;
|
||||||
best_idx = j;
|
++count;
|
||||||
|
found_match = true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// if there was any box that hit truth_boxes[i]
|
if (!found_match)
|
||||||
if (best_overlap > overlap_eps)
|
|
||||||
{
|
|
||||||
used[best_idx] = true;
|
|
||||||
++count;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
++missing_detections;
|
++missing_detections;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (unsigned long i = 0; i < boxes.size(); ++i)
|
for (unsigned long i = 0; i < boxes.size(); ++i)
|
||||||
|
|
Loading…
Reference in New Issue