diff options
Diffstat (limited to 'data/face-recognition-accuracy.py')
| -rwxr-xr-x | data/face-recognition-accuracy.py | 86 |
1 files changed, 41 insertions, 45 deletions
diff --git a/data/face-recognition-accuracy.py b/data/face-recognition-accuracy.py index 00feb8f..8b3584f 100755 --- a/data/face-recognition-accuracy.py +++ b/data/face-recognition-accuracy.py @@ -1,53 +1,49 @@ #!/usr/bin/python -import os +import matplotlib.pyplot as plt +import matplotlib.mlab as ml +import numpy as np import sys -import pickle -prun = 0 -runs = {} -labels = {} -users = pickle.load((open(sys.argv[3]))) -recs = map(lambda x:0,users) +numbins_distance = 15 +numbins_brightness = 10 -for line in open(sys.argv[1]): - line = line.split(',') - try: - run = int(line[2]) - except: - continue - user = line[1] - if run not in runs: - runs[run] = 0 - labels[run] = users.index(user) + 1 +test_filename = sys.argv[1] +bfile = open(sys.argv[2]) +distance=[] +brightness=[] +detected=[] -for line in open(sys.argv[2]): - line = line.split(',') - try: - run = int(line[2]) - 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(user)] += 1 - prun = run +for line in open(test_filename): + values = line.rstrip().split(',') + subdir,name,run,frame,zv = values[0:5] + name = '_'.join(name.split()) + detected_name = values[6].split('@')[0] + bline = bfile.readline().rstrip().split(',') + while bline[3] != frame: + bline = bfile.readline().rstrip().split(',') -t=0.0 -tp=0.0 -fp=0.0 -fn=0.0 -for (k,v) in runs.items(): - if v == 0: - fn += 1 - elif v != labels[k]: - fp += 1 - else: - tp += 1 - t += 1 + br = bline[4] + distance.append(float(zv)) + brightness.append(float(br)) + detected.append(detected_name==name) -print("True positives: ",tp/t) -print("False positives: ",fp/t) -print("False negatives: ",fn/t) +distance = np.array(distance) +brightness = np.array(brightness) +detected = np.array(detected) +distance_detected = distance[detected>0] +brightness_detected = brightness[detected>0] +range_distance = (min(distance),max(distance)) +range_brightness = (min(brightness),max(brightness)) +hist_detected,bins = np.histogram(distance_detected,bins=numbins_distance,range=range_distance) +hist,bins = np.histogram(distance, bins=numbins_distance, range=range_distance) +brightness_hist_detected,bins_brightness = np.histogram(brightness_detected,bins=numbins_brightness, range=range_brightness) +brightness_hist,bins_brightness = np.histogram(brightness,bins=numbins_brightness, range=range_brightness) + +result1 = hist_detected*1./hist +result2 = brightness_hist_detected*1./brightness_hist +plt.subplot(211) +plt.bar(bins[:-1],result1,width=np.diff(bins)) +plt.subplot(212) +plt.bar(bins_brightness[:-1],result2,width=np.diff(bins_brightness)) +plt.show() |
