MCPcopy Create free account
hub / github.com/OpenGVLab/HumanBench / eval_MR

Method eval_MR

PATH/core/solvers/utils/peddet_tester_dev.py:533–579  ·  view source on GitHub ↗

evaluate by Caltech-style log-average miss rate ref: str - "CALTECH_-2"/"CALTECH_-4"

(self, ref="CALTECH_-2", fppiX=None, fppiY=None)

Source from the content-addressed store, hash-verified

531 self.scorelist = scorelist
532
533 def eval_MR(self, ref="CALTECH_-2", fppiX=None, fppiY=None):
534 """
535 evaluate by Caltech-style log-average miss rate
536 ref: str - "CALTECH_-2"/"CALTECH_-4"
537 """
538 # find greater_than
539 def _find_gt(lst, target):
540 for idx, item in enumerate(lst):
541 if item >= target:
542 return idx
543 return len(lst) - 1
544
545 assert ref == "CALTECH_-2" or ref == "CALTECH_-4", ref
546 if ref == "CALTECH_-2":
547 # CALTECH_MRREF_2: anchor points (from 10^-2 to 1) as in P.Dollar's paper
548 ref = [0.0100, 0.0178, 0.03160, 0.0562, 0.1000, 0.1778, 0.3162, 0.5623, 1.000]
549 else:
550 # CALTECH_MRREF_4: anchor points (from 10^-4 to 1) as in S.Zhang's paper
551 ref = [0.0001, 0.0003, 0.00100, 0.0032, 0.0100, 0.0316, 0.1000, 0.3162, 1.000]
552
553 if self.scorelist is None:
554 self.compare()
555
556 tp, fp = 0.0, 0.0
557 if fppiX is None or fppiY is None:
558 fppiX, fppiY = list(), list()
559 for i, item in enumerate(self.scorelist):
560 if item[1] == 1:
561 tp += 1.0
562 elif item[1] == 0:
563 fp += 1.0
564
565 fn = (self._gtNum - self._ignNum) - tp
566 recall = tp / (tp + fn)
567 missrate = 1.0 - recall
568 fppi = fp / self._imageNum
569 fppiX.append(fppi)
570 fppiY.append(missrate)
571
572 score = list()
573 for pos in ref:
574 argmin = _find_gt(fppiX, pos)
575 if argmin >= 0:
576 score.append(fppiY[argmin])
577 score = np.array(score)
578 MR = np.exp(np.log(score).mean())
579 return MR, (fppiX, fppiY)
580
581 def eval_AP(self):
582 """

Calls 1

compareMethod · 0.95

Tested by

no test coverage detected