-
Notifications
You must be signed in to change notification settings - Fork 0
/
constants.py
142 lines (108 loc) · 3.21 KB
/
constants.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# Datasets
MELD = 'MELD'
C_EXPR_DB = 'C-EXPR-DB' # test set of AWAW 7th, compound
# emotion, annotated by our team and split into 125 videos.
C_EXPR_DB_CHALLENGE = 'C-EXPR-DB-CHALLENGE' # test set of AWAW 7th, compound
# emotion
DATASETS = [MELD, C_EXPR_DB, C_EXPR_DB_CHALLENGE]
NUM_CLASSES = {
MELD: 7,
C_EXPR_DB: 7,
C_EXPR_DB_CHALLENGE: 7
}
# Task
CLASSFICATION = 'CLASSIFICATION'
REGRESSION = 'REGRESSION'
TASKS = [CLASSFICATION, REGRESSION]
DS_TASK = {
MELD: CLASSFICATION,
C_EXPR_DB: CLASSFICATION,
C_EXPR_DB_CHALLENGE: CLASSFICATION
}
# Fusion methods:
LFAN = 'LFAN' # https://arxiv.org/pdf/2203.13031
CAN = 'CAN' # https://arxiv.org/pdf/2203.13031
JMT = 'JMT' # https://arxiv.org/pdf/2403.10488
MT = 'MT' # https://arxiv.org/pdf/2403.10488
FUSION_METHODS = [LFAN, CAN, JMT, MT]
# optimizers
SGD = 'SGD'
ADAM = 'ADAM'
OPTIMIZERS = [SGD, ADAM]
# LR scheduler
STEP = 'STEP'
MULTISTEP = 'MULTISTEP'
MYSTEP = 'MYSTEP'
MYWARMUP = 'MYWARMUP'
COSINE = 'COSINE'
MYCOSINE = 'MYCOSINE'
LR_SCHEDULERS = [STEP, MULTISTEP, MYSTEP, MYWARMUP, COSINE, MYCOSINE]
# Mode for lr scheduler
MAX_MODE = 'MAX'
MIN_MODE = 'MIN'
LR_MODES = [MAX_MODE, MIN_MODE]
# Modes
TRAINING = "TRAINING"
EVALUATION = 'EVALUATION'
MODES = [TRAINING, EVALUATION]
CROP_SIZE = 224
RESIZE_SIZE = 256
SZ224 = 224
SZ256 = 256
SZ112 = 112
# EXPRESSIONS
# basic
SURPRISE = 'Surprise'
FEAR = 'Fear'
DISGUST = 'Disgust'
HAPPINESS = 'Happiness'
SADNESS = 'Sadness'
ANGER = 'Anger'
NEUTRAL = 'Neutral'
# compound
FEARFULLY_SURPRISED = "Fearfully Surprised"
HAPPILY_SURPRISED = "Happily Surprised"
SADLY_SURPRISED = "Sadly Surprised"
DISGUSTEDLY_SURPRISED = "Disgustedly Surprised"
ANGRILY_SURPRISED = "Angrily Surprised"
SADLY_FEARFUL = "Sadly Fearful"
SADLY_ANGRY = "Sadly Angry"
OTHER = "Other"
EXPRESSIONS = [SURPRISE, FEAR, DISGUST, SADNESS, HAPPINESS, ANGER, NEUTRAL,
FEARFULLY_SURPRISED,
HAPPILY_SURPRISED,
SADLY_SURPRISED,
DISGUSTEDLY_SURPRISED,
ANGRILY_SURPRISED,
SADLY_FEARFUL,
SADLY_ANGRY,
OTHER
]
# dataset splits:
TRAINSET = 'train'
VALIDSET = 'val'
TESTSET = 'test'
SPLITS = [TRAINSET, VALIDSET, TESTSET]
# Data modalities
VGGISH = 'vggish' # audio: vggish features
VIDEO = 'video' # video: row frames
BERT = 'bert' # text: BERT features
EXPR = 'EXPR_continuous_label'
MODALITIES = [VGGISH, VIDEO, BERT, EXPR]
# Metrics: macro F1 score
MACRO_F1 = 'MACRO_F1' # Macro F1: unweighted average.
W_F1 = 'W_F1' # F1 score: weighted.
CL_ACC = 'CL_ACC' # classification acc.
CFUSE_MARIX = 'CONFUSION_MATRIX' # confusion matrix
METRICS = [MACRO_F1, W_F1, CL_ACC, CFUSE_MARIX]
# levels
FRAME_LEVEL = 'FRAME_LEVEL' # frame level
VIDEO_LEVEL = 'VIDEO_LEVEL' # video level
EVAL_LEVELS = [FRAME_LEVEL, VIDEO_LEVEL]
# how to predict at video level from frame prediction
FRM_VOTE = 'FRAMES_VOTE' # video label = majority voting at frame level
FRM_AVG_PROBS = 'FRAMES_AVG_PROBS' # compute probs of each frame,
# then average them, then predict for video.
FRM_AVG_LOGITS = 'FRAMES_AVG_LOGITS' # compute logits of each frame,
# then average them, then predict for video
VIDEO_PREDS = [FRM_VOTE, FRM_AVG_PROBS, FRM_AVG_LOGITS]