def separateTrainDataByFace(X, y): # data pre klasifikator pracujuci s detekciou tvare X_face = [] X_general = [] # data pre vseobecny klasifikator y_face = [] y_general = [] for i in range(0, len(X)): # posledny atribut urcuje, ci bola detekovana pri niektorom natoceni obrazka tvar if X[i][-1] != -1: X_face.append(X[i]) y_face.append(y[i]) # odstranime data suvisiace s detekciou tvare, aby neskreslovali pri trenovani # lebo hoci je na fotke tvar, stale su to cenne data pre vseobecny klasifikator X_general.append(common.stripFaceDetectionData(X[i])) y_general.append(y[i]) X_face = np.array(X_face) y_face = np.array(y_face) X_general = np.array(X_general) y_general = np.array(y_general) print "face: " + str(len(X_face)) + " general: " + str(len(X_general)) return [X_face, X_general], [y_face, y_general]
def separateTrainDataByFace(X, y): # data pre klasifikator pracujuci s detekciou tvare X_face = [] X_general = [] # data pre vseobecny klasifikator y_face = [] y_general = [] for i in range(0, len(X)): # posledny atribut urcuje, ci bola detekovana pri niektorom natoceni obrazka tvar if (X[i][-1] != -1): X_face.append(X[i]) y_face.append(y[i]) # odstranime data suvisiace s detekciou tvare, aby neskreslovali pri trenovani # lebo hoci je na fotke tvar, stale su to cenne data pre vseobecny klasifikator X_general.append(common.stripFaceDetectionData(X[i])) y_general.append(y[i]) X_face = np.array(X_face) y_face = np.array(y_face) X_general = np.array(X_general) y_general = np.array(y_general) print "face: " + str(len(X_face)) + " general: " + str(len(X_general)) return [X_face, X_general], [y_face, y_general]
def predict(x): if hasFace(x): x = [x] feature_selector, data_scaler, clf = loadFaceClassifier() x = data_scaler.transform(feature_selector.transform(x)) return clf.predict(x)[0] else: feature_selector, data_scaler, pca, clf = loadGeneralClassifier() x = common.stripFaceDetectionData(x) x = [x] # selekcia vlastnosti a naskalovanie x = data_scaler.transform(feature_selector.transform(x)) # pca redukcia dimenzii x = pca.transform(x) return clf.predict(x)[0]