From bdbab3255e2295cc320752bd635cf79e27aad2ac Mon Sep 17 00:00:00 2001 From: Alakh Aggarwal Date: Mon, 6 Mar 2017 16:06:57 +0530 Subject: [PATCH 1/2] Add python program Face landmarks detection #Requirements Install python libraries cv2 and dlib Download "shape_predictor_68_face_landmarks.dat.bz2" Extract this file and keep the .dat file and python file in same folder --- cam_face_landmarks.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 cam_face_landmarks.py diff --git a/cam_face_landmarks.py b/cam_face_landmarks.py new file mode 100644 index 0000000..4511e6b --- /dev/null +++ b/cam_face_landmarks.py @@ -0,0 +1,25 @@ +import dlib +import cv2 + +predictor_path = "shape_predictor_68_face_landmarks.dat" +feed = cv2.VideoCapture(0) +print feed.read()[1].shape +detector = dlib.get_frontal_face_detector() +predictor = dlib.shape_predictor(predictor_path) +win = dlib.image_window() + +while True: + img = feed.read()[1] + win.clear_overlay() + win.set_image(img) + + dets = detector(img, 1) + print("Number of faces detected: {}".format(len(dets))) + for k, d in enumerate(dets): + print("Detection {}: Left: {} Top: {} Right: {} Bottom: {}".format(k, d.left(), d.top(), d.right(), d.bottom())) + shape = predictor(img, d) + print("Part 0: {}, Part 1: {} ...".format(shape.part(0),shape.part(1))) + win.add_overlay(shape) + print("") + win.add_overlay(dets) + dlib.hit_enter_to_continue() \ No newline at end of file From 042ee179df79b1c5fe725da7b7819bec381d60b5 Mon Sep 17 00:00:00 2001 From: Alakh Aggarwal Date: Sun, 14 May 2017 11:20:31 +0000 Subject: [PATCH 2/2] Add Documented codes Documented codes of Exploratory project --- codes/Co-training_.py | 86 ++++ codes/EM_curve.py | 98 ++++ codes/RFClassifier_plot.py | 61 +++ codes/ROC_SVM_all-labels.py | 120 +++++ codes/SVMClassifier.py | 82 +++ codes/barinmatplotlibKNN.py | 54 ++ codes/classifier_MLP_plot.py | 65 +++ codes/classifier_cluster_label.py | 117 +++++ codes/classifier_maximization_approach.py | 62 +++ codes/cnn.py | 91 ++++ codes/emotion.csv | 594 ++++++++++++++++++++++ codes/read_data.py | 55 ++ codes/read_database.py | 43 ++ codes/supervised.py | 94 ++++ 14 files changed, 1622 insertions(+) create mode 100644 codes/Co-training_.py create mode 100644 codes/EM_curve.py create mode 100644 codes/RFClassifier_plot.py create mode 100644 codes/ROC_SVM_all-labels.py create mode 100644 codes/SVMClassifier.py create mode 100644 codes/barinmatplotlibKNN.py create mode 100644 codes/classifier_MLP_plot.py create mode 100644 codes/classifier_cluster_label.py create mode 100644 codes/classifier_maximization_approach.py create mode 100644 codes/cnn.py create mode 100644 codes/emotion.csv create mode 100644 codes/read_data.py create mode 100644 codes/read_database.py create mode 100644 codes/supervised.py diff --git a/codes/Co-training_.py b/codes/Co-training_.py new file mode 100644 index 0000000..9d60662 --- /dev/null +++ b/codes/Co-training_.py @@ -0,0 +1,86 @@ +''' +Co-Training Semi-Supervised Learning Approach on CK+ dataset + +# Libraries Used + pandas, sklearn, numpy + +# Variables + clf_svm : SVM classifier + df : pandas dataframe + df_labelled : Dataframe of labelled data + df_unlabelled : Dataframe of unlabelled data + X : inputs + y : labels + pred : predictions + k : Parameter for co-training +''' + +# Libraries used +import pandas as pd # To read database +from sklearn.cross_validation import train_test_split # To split database +from sklearn.metrics import accuracy_score, precision_recall_fscore_support # Result of model on database +import numpy as np # Mathematical analysis +from sklearn.svm import SVC # To apply SVM +from sklearn.grid_search import GridSearchCV # For Hyperparameter tuning + +param_grid = { + 'C': [1e-2, 1e-1, 1e0, 1e2, 1e1, 1e3, 5e3, 1e4, 5e4,1e5,450000], + 'kernel': ['linear', 'rbf'] + } + +clf_svm1 = GridSearchCV(SVC(), param_grid) # Classifier 1 +clf_svm2 = GridSearchCV(SVC(), param_grid) # Classifier 2 + +# Read database +df = pd.read_csv("emotion.csv",header=0) +df = df.drop(["Person Id", "Person SubID"],axis=1) +df_labelled = df[df["Emotion"]!=-1] +df_unlabelled = df[df["Emotion"]==-1] + +# Seperate labelled and unlabelled data +y_labelled = df_labelled["Emotion"] +X_labelled = df_labelled.drop(["Emotion"],axis=1) + +y_unlabelled = df_unlabelled["Emotion"] +X_unlabelled = df_unlabelled.drop(["Emotion"],axis=1) + +#COTRAINING +k=4 +X_train1, X_train2, y_train1, y_train2 = train_test_split(np.array(X_labelled),np.array(y_labelled),test_size=0.5,random_state=42) +length1=X_unlabelled.shape[0] +X_u=np.array(X_unlabelled) +X_unlabelled1=np.array(X_u[0:(length1/2)]) +X_unlabelled2=np.array(X_u[(length1/2):]) +np.random.shuffle(X_unlabelled1) +np.random.shuffle(X_unlabelled2) + +low,high=0,k +while(low