diff options
Diffstat (limited to 'data/face-frame-recognition-accuracy.py')
| -rwxr-xr-x | data/face-frame-recognition-accuracy.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/data/face-frame-recognition-accuracy.py b/data/face-frame-recognition-accuracy.py new file mode 100755 index 0000000..0d34cf9 --- /dev/null +++ b/data/face-frame-recognition-accuracy.py @@ -0,0 +1,63 @@ +#!/usr/bin/python +import os +import sys +import pickle + +prun = 0 +runs = {} +labels = {} +users = pickle.load((open(sys.argv[3]))) +recs = map(lambda x:0,users) +conf = {} +thresh = 0.0 +try: + thresh = float(sys.argv[4]) +except: + pass + +for line in open(sys.argv[1]): + line = line.split(',') + try: + run = int(line[3]) + except: + continue + user = line[1] + if run not in runs: + runs[run] = 0 + labels[run] = users.index(user) + 1 + +for line in open(sys.argv[2]): + line = line.split(',') + try: + run = int(line[3]) + except: + continue + user = line[1] + rec = ' '.join(line[6].split('@')[0].split('_')) + if run != prun and prun > 0: + runs[prun] = recs.index(max(recs))+1 + recs = map(lambda x:0,users) + recs[users.index(rec)] += 1 + conf[run] = float(line[7]) + prun = run + +t=0.0 +tp=0.0 +fp=0.0 +fn=0.0 +for (k,v) in runs.items(): + #print v,labels[k] + if v == 0 or conf[k] < thresh: + fn += 1 + elif v != labels[k]: + fp += 1 + else: + tp += 1 + t += 1 +#print runs[167],labels[167] +#print tp,fp,fn +#print("Precision: ",tp/(tp+fp)) +#print("False positives: ",fp/(tp+fp)) +#print("Recall: ",1.0-fn/t) +print str(tp/(tp+fp))+","+str(1.0-fn/t) + |
