SVM算法应用综合练习(2)--人脸表情识别

本文详细介绍了如何运用支持向量机(SVM)进行微笑识别。首先,通过opencv读取数据集,dlib人脸检测器定位,提取HOG特征向量,然后用SVM训练模型并保存。接着在准备阶段安装必要库,加载数据集。在实现部分,模型被用于实时检测微笑,并显示结果。最后进行了总结。
摘要由CSDN通过智能技术生成

一、微笑识别原理

1.得到模型

①opencv读取数据集
②dlib人脸检测器定位人脸
③获取每张图片的HOG特征向量组
④利用SVM进行训练
⑤得出模型并保存

2.使用模型

①读取模型,读取照片或者打开摄像头进行实时检测
②将每一帧或者图片的HOG特征值提取出来并预测
③得出结果并显示出来

二、微笑识别

1.准备

在之前的虚拟环境安装tensorflow、keras、h5py包和数据集下载数据集genk4k

2.实现

(1)模型训练

# 导入包
import numpy as np
import cv2
import dlib
import random#构建随机测试集和训练集
from sklearn.svm import SVC #导入svm
from sklearn.svm import LinearSVC #导入线性svm
from sklearn.pipeline import Pipeline #导入python里的管道
import os
import joblib
#保存模型
from sklearn.preprocessing import StandardScaler,PolynomialFeatures #导入多项式回归和标准化
import tqdm
folder_path='D:/rgzn/jupyter/genki4k/'
label='labels.txt'#标签文件
pic_folder='files/'#图片文件路径

#获得默认的人脸检测器和训练好的人脸68特征点检测器
def get_detector_and_predicyor():
    #使用dlib自带的frontal_face_detector作为我们的特征提取器
    detector = dlib.get_frontal_face_detector()
    """
    功能:人脸检测画框
    参数:PythonFunction和in Classes
    in classes表示采样次数,次数越多获取的人脸的次数越多,但更容易框错
    返回值是矩形的坐标,每个矩形为一个人脸(默认的人脸检测器)
    """
    #返回训练好的人脸68特征点检测器
    predictor = dlib.shape_predictor('D://shape_predictor_68_face_landmarks.dat')
    return detector,predictor
#获取检测器
detector,predictor=get_detector_and_predicyor()

def cut_face(img,detector,predictor):   
    #截取面部
    img_gry=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    rects = detector(img_gry, 0)  
    if len(rects)!=0:
        mouth_x=0
        mouth_y=0
        landmarks = np.matrix([[p.x, p.y] for p in predictor(img,rects[0]).parts()])
        for i in range(47,67):#嘴巴范围
            mouth_x+=landmarks[i][0,0]
            mouth_y+=landmarks[i]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值