Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import keras
- from keras_resnet.models import ResNet50
- from tensorflow.contrib.learn.python.learn.estimators._sklearn import accuracy_score
- import face_recognition
- print(keras.__version__)
- import os
- import cv2 as cv
- import numpy as np
- shape = (200, 200)
- def get_face(img, name):
- t = face_recognition.face_locations(img, model='cnn')
- (top, right, bottom, left) = t[0]
- face = img[top:bottom, left:right]
- cv.imwrite("faces/"+name+"face.jpg",face)
- return face
- def get_test_data(path_to_test_data):
- classes = os.listdir(path_to_test_data)
- x_train = []
- y_train = []
- for c in classes:
- imgs = os.listdir(os.path.join(path_to_test_data, c))
- for img_name in imgs:
- img = cv.imread(os.path.join(path_to_test_data, c, img_name))
- face = get_face(img, c+"_"+img_name)
- face = cv.resize(face, shape)
- x_train.append(face)
- y_train.append(int(c))
- y_train = keras.utils.to_categorical(y_train, num_classes=2)
- return np.asarray(x_train), y_train
- def get_train_data(path_to_train_data):
- meta = open("data/meta.txt", "r")
- x_train = []
- y_train = []
- for v in meta.readlines():
- img_name, c = v.split(" ")
- img = cv.imread(os.path.join(path_to_train_data, img_name))
- img = cv.resize(img, shape)
- x_train.append(img)
- y_train.append(int(c))
- y_train = keras.utils.to_categorical(y_train, num_classes=2)
- return np.asarray(x_train), y_train
- def get_model(shape, classes):
- x = keras.layers.Input(shape)
- model = ResNet50(x, classes=classes)
- model.compile(optimizer='adadelta',
- loss='binary_crossentropy',
- metrics=['accuracy'])
- # ResnetBuilder.build_resnet_50((shape[2], shape[1], shape[0]), classes)
- return model
- def get_pretrained_model():
- from keras_retinanet import models
- model = models.load_model('faceglasses.h5', backbone_name="resnet50")
- return model
- # f = open("model_json.json", "r")
- # json = f.readline()
- # from keras.models import model_from_json
- # model = model_from_json(json, custom_objects={"Input":keras.layers.Input})
- # model.load_weights("glasses_w.h5")
- # return model
- def load_data():
- return np.load("x_train.npy"), np.load("y_train.npy")
- # 2.0.8
- # x_train, y_train = get_train_data("/home/sergej2/MeGlass_120x120")
- # np.save("x_train",x_train)
- # np.save("y_train",y_train)
- def fit_save_model():
- x_train, y_train = load_data()
- model = get_model(x_train[0].shape, 2)
- model.fit(x_train, y_train, epochs=1, batch_size=128, validation_split=0.2, shuffle=True)
- json = model.to_json()
- model_f = open("model_json.json", "w")
- model_f.write(json)
- model_f.close()
- model.save_weights("glasses_w.h5")
- x_test, y_test = get_test_data("data/test")
- model = get_pretrained_model()
- #
- # fit_save_model()
- res = model.predict(x_test)
- print("Accuracy")
- print(accuracy_score(res, y_test))
- # print(f1_measure(res, y_test))
- # print(model.evaluate(x_test, y_test))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement