pytorch-image-models
75 строк · 2.5 Кб
1import numpy as np2import pandas as pd3
4
5results = {6'results-imagenet.csv': [7'results-imagenet-real.csv',8'results-imagenetv2-matched-frequency.csv',9'results-sketch.csv'10],11'results-imagenet-a-clean.csv': [12'results-imagenet-a.csv',13],14'results-imagenet-r-clean.csv': [15'results-imagenet-r.csv',16],17}
18
19
20def diff(base_df, test_csv):21base_models = base_df['model'].values22test_df = pd.read_csv(test_csv)23test_models = test_df['model'].values24
25rank_diff = np.zeros_like(test_models, dtype='object')26top1_diff = np.zeros_like(test_models, dtype='object')27top5_diff = np.zeros_like(test_models, dtype='object')28
29for rank, model in enumerate(test_models):30if model in base_models:31base_rank = int(np.where(base_models == model)[0])32top1_d = test_df['top1'][rank] - base_df['top1'][base_rank]33top5_d = test_df['top5'][rank] - base_df['top5'][base_rank]34
35# rank_diff36if rank == base_rank:37rank_diff[rank] = f'0'38elif rank > base_rank:39rank_diff[rank] = f'-{rank - base_rank}'40else:41rank_diff[rank] = f'+{base_rank - rank}'42
43# top1_diff44if top1_d >= .0:45top1_diff[rank] = f'+{top1_d:.3f}'46else:47top1_diff[rank] = f'-{abs(top1_d):.3f}'48
49# top5_diff50if top5_d >= .0:51top5_diff[rank] = f'+{top5_d:.3f}'52else:53top5_diff[rank] = f'-{abs(top5_d):.3f}'54
55else:56rank_diff[rank] = ''57top1_diff[rank] = ''58top5_diff[rank] = ''59
60test_df['top1_diff'] = top1_diff61test_df['top5_diff'] = top5_diff62test_df['rank_diff'] = rank_diff63
64test_df['param_count'] = test_df['param_count'].map('{:,.2f}'.format)65test_df.sort_values(['top1', 'top5', 'model'], ascending=[False, False, True], inplace=True)66test_df.to_csv(test_csv, index=False, float_format='%.3f')67
68
69for base_results, test_results in results.items():70base_df = pd.read_csv(base_results)71base_df.sort_values(['top1', 'top5', 'model'], ascending=[False, False, True], inplace=True)72for test_csv in test_results:73diff(base_df, test_csv)74base_df['param_count'] = base_df['param_count'].map('{:,.2f}'.format)75base_df.to_csv(base_results, index=False, float_format='%.3f')76