我是一名使用Python进行人脸识别的开发者。
我有以下代码:
from sklearn.externals import joblib
clf = joblib.load('model/svm.pkl')
pca = joblib.load('model/pca.pkl')
face_cascade = cv2.CascadeClassifier("classifier/haarcascade_frontalface_alt.xml")
webcam = cv2.VideoCapture(0)
ret, frame = webcam.read()
while ret:
start = time()
origin = frame
gray = cv2.cvtColor(origin, cv2.COLOR_BGR2GRAY)
cv2.equalizeHist(gray,gray)
faces = face_cascade.detectMultiScale(
origin,
scaleFactor=1.1,
minNeighbors=5,
minSize=(30, 30),
flags=cv2.cv.CV_HAAR_SCALE_IMAGE
)
for (x, y, w, h) in faces:
cv2.rectangle(origin, (x, y), (x+w, y+h), (0, 255, 0), 2)
face = gray[y:y+h , x:x+w]
cv2.equalizeHist(face,face)
face_to_predict = cv2.resize(face,(100, 100),interpolation = cv2.INTER_AREA)
img = face_to_predict.ravel()
principle_components = pca.transform(img)
proba = clf.predict_proba(principle_components) # probability
pred = clf.predict(principle_components)
if proba[0][pred]>0.4:
name = face_profile_names[pred[0]]
所以,这段代码运行良好,有时会像我预期的那样识别人脸。但是也存在许多弱点:如果我扭曲头部,准确度对我来说太低了。我发现Kalman滤波器可以提高我的面部识别率,但我不知道如何在现有代码中使用它。我找到了一些使用Kalman滤波器的帖子,但是目前情况下如何使用还不够清晰。其中一些帖子如下: 是否有cv2.KalmanFilter实现的例子? OpenCV Kalman Filter python 所以,我的
principle_components
是一个值矩阵,希望可以用于初始化我的Kalman滤波器,但我不确定如何以及在之后如何使用此滤波器。想法?
Kalman's filter to improve my face recognition
,Kalman滤波器可用于平滑数据中的小方差,它无法帮助提高准确性。 它不是图像滤波器,而是将一些随机点作为输入,并尝试从中制作出平滑曲线。 https://www.google.co.in/search?espv=2&biw=1280&bih=597&tbm=isch&sa=1&q=kalman +filter&oq=kalman+filter&gs_l=img.3..0j0i67k1j0l8.2219.2219.0.2922.1.1.0.0.0.0.114.114.0j1.1.0 .... 0 ... 1c.1.64.img..0.1.113.6nct0qh9jKs#imgrc=LydPDl-i9rPIOM: - ZdaR