def init(): global model, graph, session model = Sequential() model.add(Dense(32, activation='relu', input_shape=(6, ))) model.add(Dense(32, activation='relu')) model.add(Dense(2, activation='linear')) model.compile(loss='mse', optimizer='adam', metrics=['mae']) model.load_weights("training_1/cp.ckpt") model._make_predict_function() session = K.get_session() graph = tf.get_default_graph()
class FacialExpressionModel(object): emotion_dict = [ "Angry", "Disgusted", "Fearful", "Happy", "Neutral", "Sad", "Surprised" ] def __init__(self, model_weights_file): self.loaded_model = Sequential() self.loaded_model.add( Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(48, 48, 1))) self.loaded_model.add(Conv2D(64, kernel_size=(3, 3), activation='relu')) self.loaded_model.add(MaxPooling2D(pool_size=(2, 2))) self.loaded_model.add(Dropout(0.25)) self.loaded_model.add( Conv2D(128, kernel_size=(3, 3), activation='relu')) self.loaded_model.add(MaxPooling2D(pool_size=(2, 2))) self.loaded_model.add( Conv2D(128, kernel_size=(3, 3), activation='relu')) self.loaded_model.add(MaxPooling2D(pool_size=(2, 2))) self.loaded_model.add(Dropout(0.25)) self.loaded_model.add(Flatten()) self.loaded_model.add(Dense(1024, activation='relu')) self.loaded_model.add(Dropout(0.5)) self.loaded_model.add(Dense(7, activation='softmax')) self.loaded_model.load_weights(model_weights_file) self.loaded_model._make_predict_function() def predict_emotion(self, img): self.preds = self.loaded_model.predict(img) return FacialExpressionModel.emotion_dict[int(np.argmax(self.preds))]