pytorch-image-models

Форк
0
/
generate_csv_results.py 
75 строк · 2.5 Кб
1
import numpy as np
2
import pandas as pd
3

4

5
results = {
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

20
def diff(base_df, test_csv):
21
    base_models = base_df['model'].values
22
    test_df = pd.read_csv(test_csv)
23
    test_models  = test_df['model'].values
24

25
    rank_diff = np.zeros_like(test_models, dtype='object')
26
    top1_diff = np.zeros_like(test_models, dtype='object')
27
    top5_diff = np.zeros_like(test_models, dtype='object')
28
    
29
    for rank, model in enumerate(test_models):
30
        if model in base_models:            
31
            base_rank = int(np.where(base_models == model)[0])
32
            top1_d = test_df['top1'][rank] - base_df['top1'][base_rank]
33
            top5_d = test_df['top5'][rank] - base_df['top5'][base_rank]
34
            
35
            # rank_diff
36
            if rank == base_rank:
37
                rank_diff[rank] = f'0'
38
            elif rank > base_rank:
39
                rank_diff[rank] = f'-{rank - base_rank}'
40
            else:
41
                rank_diff[rank] = f'+{base_rank - rank}'
42
                
43
            # top1_diff
44
            if top1_d >= .0:
45
                top1_diff[rank] = f'+{top1_d:.3f}'
46
            else:
47
                top1_diff[rank] = f'-{abs(top1_d):.3f}'
48
            
49
            # top5_diff
50
            if top5_d >= .0:
51
                top5_diff[rank] = f'+{top5_d:.3f}'
52
            else:
53
                top5_diff[rank] = f'-{abs(top5_d):.3f}'
54
                
55
        else: 
56
            rank_diff[rank] = ''
57
            top1_diff[rank] = ''
58
            top5_diff[rank] = ''
59

60
    test_df['top1_diff'] = top1_diff
61
    test_df['top5_diff'] = top5_diff
62
    test_df['rank_diff'] = rank_diff
63

64
    test_df['param_count'] = test_df['param_count'].map('{:,.2f}'.format)
65
    test_df.sort_values(['top1', 'top5', 'model'], ascending=[False, False, True], inplace=True)
66
    test_df.to_csv(test_csv, index=False, float_format='%.3f')
67

68

69
for base_results, test_results in results.items():
70
    base_df = pd.read_csv(base_results)
71
    base_df.sort_values(['top1', 'top5', 'model'], ascending=[False, False, True], inplace=True)
72
    for test_csv in test_results:
73
        diff(base_df, test_csv)
74
    base_df['param_count'] = base_df['param_count'].map('{:,.2f}'.format)
75
    base_df.to_csv(base_results, index=False, float_format='%.3f')
76

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.