| import argparse |
| import pandas as pd |
|
|
| IOU_THRESHOLD = 0.75 |
| USE_METRICS = ['mAP', 'Precision','Recall','F1-Score'] |
| NEW_METRICS = ['mAP\%', 'P\%','R\%','F1\%'] |
|
|
|
|
| def process_df(df): |
| df = df[df['IoU'] >= IOU_THRESHOLD] |
| df = df[USE_METRICS] |
| df[USE_METRICS] = df[USE_METRICS] * 100 |
| df.columns = NEW_METRICS |
| df = df.transpose() |
| df.columns = [round(x/100, 2) for x in range(int(IOU_THRESHOLD*100), 100, 5)] |
| return df |
|
|
|
|
| def my_format(x): |
| if x < 0.005: |
| return r'$\approx$0.0' |
| return f'{x:.2f}' |
|
|
|
|
| def main(args): |
| df_itb_app = pd.read_csv(args.itb_app) |
| df_sem_app = pd.read_csv(args.sem_app) |
| df_itb_genre = pd.read_csv(args.itb_genre) |
| df_sem_genre = pd.read_csv(args.sem_genre) |
| |
| df_itb_app = process_df(df_itb_app) |
| df_sem_app = process_df(df_sem_app) |
| df_itb_genre = process_df(df_itb_genre) |
| df_sem_genre = process_df(df_sem_genre) |
| |
| df = pd.concat([df_itb_app, df_itb_genre, df_sem_app, df_sem_genre], axis=1) |
| df.to_csv(args.output.replace('.tex', '.csv')) |
| df.insert(0, column = 'metric', value = NEW_METRICS) |
| df.insert(0, '', '') |
| df.to_latex(args.output, float_format=my_format, index=False) |
|
|
|
|
| if __name__ == '__main__': |
| parser = argparse.ArgumentParser() |
| parser.add_argument('-ia', '--itb_app', type=str, required=True) |
| parser.add_argument('-sa', '--sem_app', type=str, required=True) |
| parser.add_argument('-ig', '--itb_genre', type=str, required=True) |
| parser.add_argument('-sg', '--sem_genre', type=str, required=True) |
| parser.add_argument('-o', '--output', type=str, required=True) |
| args = parser.parse_args() |
| main(args) |