monoloco/kitti-eval/parser.py
2020-08-20 11:33:19 +02:00

60 lines
1.9 KiB
Python
Executable File

#!/usr/bin/env python
import sys
import os
import numpy as np
# CLASSES = ['car', 'pedestrian', 'cyclist', 'van', 'truck', 'person_sitting', 'tram']
CLASSES = ['pedestrian']
# PARAMS = ['detection', 'orientation', 'iour', 'mppe']
PARAMS = ['detection', 'detection_1%', 'detection_5%', 'detection_10%', 'detection_3d', 'detection_ground', 'orientation']
DIFFICULTIES = ['easy', 'moderate', 'hard', 'all']
eval_type = ''
if len(sys.argv)<2:
print('Usage: parser.py results_folder [evaluation_type]')
if len(sys.argv)==3:
eval_type = sys.argv[2]
result_sha = sys.argv[1]
txt_dir = os.path.join('build','results', result_sha)
for class_name in CLASSES:
for param in PARAMS:
print("--{:s} {:s}--".format(class_name, param))
if eval_type is '':
txt_name = os.path.join(txt_dir, 'stats_' + class_name + '_' + param + '.txt')
else:
txt_name = os.path.join(txt_dir, 'stats_' + class_name + '_' + param + '_' + eval_type + '.txt')
if not os.path.isfile(txt_name):
print(txt_name, ' not found')
continue
cont = np.loadtxt(txt_name)
averages = []
for idx, difficulty in enumerate(DIFFICULTIES):
sum = 0
if param in PARAMS:
for i in range(1, 41):
sum += cont[idx][i]
average = sum/40.0
#print class_name, difficulty, param, average
averages.append(average)
#print "\n"+class_name+" "+param
print("Easy\tMod.\tHard\tAll")
print("{:.2f}\t{:.2f}\t{:.2f}\t{:.2f}".format(100*averages[0], 100*averages[1],100*averages[2],100*averages[3]))
print("---------------------------------------------------------------------------------")
if eval_type is not '' and param=='detection':
break # No orientation for 3D or bird eye
#print '================='