File size: 2,143 Bytes
959739d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import os 
import cv2
import speech_recognition as sr
import dlib
import sys 
os.environ['TF_ENABLE_ONEDNN_OPTS'] = '0'
from functions.eye_track import Facetrack
from functions.fer import Model
from functions.valence_arousal import load_models
from tensorflow.keras.models import load_model # type: ignore
def load_values(file_path):
    values_dict = {}
    with open(file_path, 'r') as file:
        for line in file:
            word, value = line.strip().split('\t')
            values_dict[word.lower()] = float(value)
    return values_dict

models_folder='models'

fer_model_path=os.path.join(models_folder,'22.6_AffectNet_10K_part2.pt')
arousal_dict_path=os.path.join(models_folder,'arousal-NRC-VAD-Lexicon.txt')
dominance_dict_path=os.path.join(models_folder,'dominance-NRC-VAD-Lexicon.txt')
valence_arousal_model=os.path.join(models_folder,'emotion_model.pt')
val_ar_feat_path=os.path.join(models_folder,'resnet_features.pt')
speech_model=os.path.join(models_folder,'speech.keras')
valence_dict_path=os.path.join(models_folder,'valence-NRC-VAD-Lexicon.txt')


print("Loading models ")

#Face detection models
dnn_net = cv2.dnn.readNetFromCaffe(os.path.join(models_folder,"deploy.prototxt"), os.path.join(models_folder,"res10_300x300_ssd_iter_140000.caffemodel"))
predictor = dlib.shape_predictor(os.path.join(models_folder,"shape_predictor_68_face_landmarks.dat"))
# print("face models loaded ")

#FER model
fer_model=Model(fps=30,fer_model=fer_model_path)
# print("fer model loaded ")

#Speech model 
model_s = load_model(speech_model)
# print("speech model loaded ")

#Load valence,arousal,dominance_dicts
valence_dict = load_values(valence_dict_path)
arousal_dict = load_values(arousal_dict_path)
dominance_dict = load_values(dominance_dict_path)


#Loading valence_arousal_models
resnet,emotion_model=load_models(valence_arousal_model,val_ar_feat_path)

models_dict={
    'face':(dnn_net,predictor),
    'speech':model_s,
    'fer':fer_model,
    'vad':(valence_dict,arousal_dict,dominance_dict),
    "valence_fer":(resnet,emotion_model)
    }   
print("models loaded")