1.间接应用保留的网络测试NUAA
测试代码:
def read_test_file(): base_path = r'E:\ml\fas\data\NUAA' val_file_path = os.path.join(base_path, "test.txt") train_image_path_list = [] train_labels_list = [] with open(val_file_path) as f: lines = f.readlines() for line in lines: image_path = line.split(',')[0] label = line.split(',')[1] img = cv2.imread(image_path) resize_img = cv2.resize(img, (100, 100)) train_image_path_list.append(resize_img) train_labels_list.append(int(label)) return np.asarray(train_image_path_list), np.asarray(train_labels_list)def fit2(): X_test, y_test = read_test_file() model = load_model('model/live_model.h5') test_loss, test_acc = model.evaluate(X_test, y_test, verbose=2) print(test_loss, test_acc)if __name__ == '__main__': fit2()
测试后果
200/200 - 8s - loss: 1.3156 - accuracy: 0.52851.3155993223190308 0.5284998416900635
能够看到CelebA_Spoof 在本人的数据集测试能够达到99%以上
然而在NUAA数据集上测试准确率只能达到: 0.528
查看CelebA_Spoof 数据集后发现,CelebA_Spoof 的spoof数据集都是图像打印在纸上的加头像,然而NUAA外面是电脑屏幕或者手机屏幕录取的图片
2. 应用CelebA_Spoof 训练的网络再次训练NUAA数据
def read_train_file(): base_path = r'E:\ml\fas\data\NUAA' train_file_path = os.path.join(base_path, "train.txt") train_image_path_list = [] train_labels_list = [] with open(train_file_path) as f: lines = f.readlines() for line in lines: image_path = line.split(',')[0] label = line.split(',')[1] img = cv2.imread(image_path) resize_img = cv2.resize(img, (100, 100)) train_image_path_list.append(resize_img) train_labels_list.append(int(label)) return np.asarray(train_image_path_list), np.asarray(train_labels_list)def read_val_file(): base_path = r'E:\ml\fas\data\NUAA' val_file_path = os.path.join(base_path, "val.txt") train_image_path_list = [] train_labels_list = [] with open(val_file_path) as f: lines = f.readlines() for line in lines: image_path = line.split(',')[0] label = line.split(',')[1] img = cv2.imread(image_path) resize_img = cv2.resize(img, (100, 100)) train_image_path_list.append(resize_img) train_labels_list.append(int(label)) return np.asarray(train_image_path_list), np.asarray(train_labels_list)def read_test_file(): base_path = r'E:\ml\fas\data\NUAA' val_file_path = os.path.join(base_path, "test.txt") train_image_path_list = [] train_labels_list = [] with open(val_file_path) as f: lines = f.readlines() for line in lines: image_path = line.split(',')[0] label = line.split(',')[1] img = cv2.imread(image_path) resize_img = cv2.resize(img, (100, 100)) train_image_path_list.append(resize_img) train_labels_list.append(int(label)) return np.asarray(train_image_path_list), np.asarray(train_labels_list)def fit2(): X_train, X_label = read_train_file() X_valid, y_valid = read_val_file() X_test, y_test = read_test_file() model = load_model('model/live_model.h5') history = model.fit(X_train, X_label, epochs=10, validation_data=(X_valid, y_valid)) print(history) test_loss, test_acc = model.evaluate(X_test, y_test, verbose=2) print(test_loss, test_acc)if __name__ == '__main__': fit2()
3.训练后测试后果
200/200 - 8s - loss: 5.3590 - accuracy: 0.60085.35904598236084 0.6008455753326416
尽管有些许晋升,然而晋升成果不怎么样