forked from 170010011/fr
predictor
This commit is contained in:
parent
4787dc0960
commit
b0bb218b2a
|
@ -0,0 +1,57 @@
|
|||
import os
|
||||
import sys
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
from skimage.io import imread, imshow, imsave
|
||||
from skimage.transform import resize
|
||||
from sklearn.preprocessing import StandardScaler
|
||||
from sklearn.decomposition import PCA
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn import svm
|
||||
from sklearn import metrics
|
||||
import pickle
|
||||
from skimage import img_as_ubyte
|
||||
|
||||
tempdir = "predictor_temp"
|
||||
|
||||
if len(sys.argv) < 3:
|
||||
print("no input image")
|
||||
exit(0)
|
||||
|
||||
if len(sys.argv) < 2:
|
||||
print("no input model")
|
||||
exit(0)
|
||||
|
||||
svm_model = pickle.load(open(sys.argv[1], 'rb'))
|
||||
|
||||
os.system('mkdir -p ' + tempdir)
|
||||
os.system("python3 face_cutter.py " + sys.argv[2] + " " + tempdir )
|
||||
img_files = [name for name in os.listdir(tempdir) if not os.path.isdir(os.path.join(tempdir, name)) ]
|
||||
print(img_files)
|
||||
cutf = tempdir +"/"+img_files[0]
|
||||
os.system("python3 hogger.py " + cutf + " " + tempdir )
|
||||
os.system("rm " + cutf)
|
||||
img_files = [name for name in os.listdir(tempdir) if not os.path.isdir(os.path.join(tempdir, name)) ]
|
||||
hogf = tempdir + "/" + img_files[0]
|
||||
|
||||
imgdat = imread(hogf, as_gray=True)
|
||||
os.system("rm -rf " + tempdir)
|
||||
imgdat = resize(imgdat, (64,64))
|
||||
|
||||
imgdat = img_as_ubyte(imgdat)
|
||||
|
||||
|
||||
flat_imgdat = np.array( imgdat ).flatten()
|
||||
print(flat_imgdat.shape)
|
||||
X = np.array(flat_imgdat)
|
||||
X = X.reshape(-1,1)
|
||||
X = StandardScaler().fit_transform(X)
|
||||
print(X.shape,X)
|
||||
# pca = PCA(n_components=128)
|
||||
# pcaofX = pca.fit_transform(X)
|
||||
|
||||
|
||||
res = svm_model.predict(X.T)
|
||||
|
||||
print("Prediction:",res)
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 23 KiB |
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
Binary file not shown.
After Width: | Height: | Size: 28 KiB |
Binary file not shown.
22
trainer.py
22
trainer.py
|
@ -6,6 +6,7 @@ from sklearn.decomposition import PCA
|
|||
from sklearn.model_selection import train_test_split
|
||||
from sklearn import svm
|
||||
from sklearn import metrics
|
||||
import pickle
|
||||
|
||||
if len(sys.argv) < 2:
|
||||
print("no input csv file")
|
||||
|
@ -27,19 +28,24 @@ print(Y.shape)
|
|||
|
||||
X = StandardScaler().fit_transform(X)
|
||||
print(X)
|
||||
pca = PCA(n_components=50)
|
||||
pcaofX = pca.fit_transform(X)
|
||||
print("shapeofX after pca",pcaofX.shape, ", cum Sum of variance ratio",pca.explained_variance_ratio_.cumsum()[-1])
|
||||
# pca = PCA(n_components=128)
|
||||
# pcaofX = pca.fit_transform(X)
|
||||
# print("shapeofX after pca",pcaofX.shape, ", cum Sum of variance ratio",pca.explained_variance_ratio_.cumsum()[-1])
|
||||
|
||||
# pcaofX = X
|
||||
pcaofX = X
|
||||
|
||||
X_train, X_test, Y_train, Y_test = train_test_split(pcaofX, Y, test_size=0.3,random_state=109)
|
||||
X_train, X_test, Y_train, Y_test = train_test_split(pcaofX, Y, test_size=0.1,random_state=109)
|
||||
|
||||
print(X_train.shape)
|
||||
|
||||
classifier = svm.SVC(kernel="linear")
|
||||
classifier.fit(X_train,Y_train)
|
||||
svm_model = svm.SVC(kernel="linear")
|
||||
svm_model.fit(X_train,Y_train)
|
||||
|
||||
pred = classifier.predict(X_test)
|
||||
pred = svm_model.predict(X_test)
|
||||
print(pred)
|
||||
|
||||
print("Accuracy:",metrics.accuracy_score(Y_test, pred))
|
||||
|
||||
|
||||
pickle.dump(svm_model, open("svm_model.sav", 'wb'))
|
||||
|
||||
|
|
Loading…
Reference in New Issue