基于dlib库进行微笑识别和口罩识别

【机器学习】 - 使用dlib进行人脸定位,人脸检测,给人脸图片戴口罩 detector = dlib.get_frontal_face_detector() 功能:人脸检测画框 参数:无 返回值:默认的人脸检测器 faces = detector(img_gray, 0) 功能:对图像画人脸框 参数:img_gray:输入的图片 返回值:人脸检测矩形框4点坐标。坐标为[(x1, y1) (x2, y2)]。可以通过函数的left,right,top,bottom方法分别获取对应的x1, x2, y1, y2值。(cv里的矩阵和C++的那种一样,左上角是(0,0)点, 阅读详情

环境配置

tensorflow和keras参考我之前的博客https://blog.csdn.net/A981012/article/details/106650686
下载dlib库不能从anaconda prompt中直接pip install dlib下载,要先从
https://blog.csdn.net/weixin_39954229/article/details/81878864下载dlib库,在anaconda prompt中cd 到这里whl文件下载的位置,然后使用下面的命令下载

pip install dlib-19.7.0-cp36-cp36m-win_amd64.whl

在这里插入图片描述
至此dlib库下载完成,然后测试是否安装成功输入python 然后输入这两句代码,得到结果而不报错说明安装成功

python
import dlib
dlib.get_frontal_face_detector()

在这里插入图片描述
至此环境配置完成

微笑识别

导入所需的库

import keras
import os, shutil
from keras import layers
from keras import models
from keras import optimizers
from keras.preprocessing.image import ImageDataGenerator
import matplotlib.pyplot as plt
import scipy

微笑数据集准备

从网上下载微笑数据集,对微笑数据集进行处理,参考猫狗数据集进行划分。生成三个文件夹train、test、validation,然后在这三个文件下面有正负样本。在这里插入图片描述
然后给定数据集的地址

train_dir='./smiledata/train'
train_smiles_dir='./smiledata/train/smile'
train_unsmiles_dir='./smiledata/train/unsmile'
test_dir='./smiledata/test'
test_smiles_dir='./smiledata/test/smile'
test_unsmiles_dir='./smiledata/test/unsmile'
validation_dir='./smiledata/test'
validation_smiles_dir='./smiledata/test/smile'
validation_unsmiles_dir='./smiledata/test/unsmile'

创建模型

from keras import layers
from keras import models
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu',
                        input_shape=(150, 150, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))
model.summary()

查看设计的模型
在这里插入图片描述
对图片进行处理

from keras import optimizers

model.compile(loss='binary_crossentropy',
              optimizer=optimizers.RMSprop(lr=1e-4),
              metrics=['acc'])

from keras.preprocessing.image import ImageDataGenerator
# All images will be rescaled by 1./255
train_datagen = ImageDataGenerator(rescale=1./255)
validation_datagen=ImageDataGenerator(rescale=1./255)
test_datagen = ImageDataGenerator(rescale=1./255)

train_generator = train_datagen.flow_from_directory(
        # 目标文件目录
        train_dir,
        #所有图片的size必须是150x150
        target_size=(150, 150),
        batch_size=20,
        # Since we use binary_crossentropy loss, we need binary labels
        class_mode='binary')

validation_generator = test_datagen.flow_from_directory(
        validation_dir,
        target_size=(150, 150),
        batch_size=20,
        class_mode='binary')
test_generator = test_datagen.flow_from_directory(test_dir,
                                                   target_size=(150, 150),
                                                   batch_size=20,
                                                   class_mode='binary')
for data_batch, labels_batch in train_generator:
    print('data batch shape:', data_batch.shape)
    print('labels batch shape:', labels_batch)
    break
train_generator.class_indices

定义微笑输出为0,不微笑为1
在这里插入图片描述

训练模型

设计代数epochs,数据越大训练精度会提高一些,如果是GPU运行就会快很多,如果是CPU运行,建议代数适中就好。最好进行数据增强防止过拟合

history = model.fit_generator(
      train_generator,
      steps_per_epoch=100,
      epochs=100,
      validation_data=validation_generator,
      validation_steps=50)
datagen = ImageDataGenerator(
      rotation_range=40,
      width_shift_range=0.2,
      height_shift_range=0.2,
      shear_range=0.2,
      zoom_range=0.2,
      horizontal_flip=True,
      fill_mode='nearest')      
model.save('smile_and_unsmiles_small_2.h5')#保存模型

在这里插入图片描述
保存模型后,就可以用模型来进行测试,是否可以将微笑识别出来
在这里插入图片描述

基于dlib库进行识别

直接用shape_predictor_68_face_landmarks.dat模型,不用自己训练模型

import sys
import dlib  # 人脸识别的库dlib
import numpy as np  # 数据处理的库numpy
import cv2  # 图像处理的库OpenCv
 
class face_emotion():
    def __init__(self):
        # 使用特征提取器get_frontal_face_detector
        self.detector = dlib.get_frontal_face_detector()
        # dlib的68点模型,使用作者训练好的特征预测器
        self.predictor = dlib.shape_predictor("C:/Users/lanxi/Desktop/Smile_Detector-master/data/data_dlib_model/shape_predictor_68_face_landmarks.dat")
 
        # 建cv2摄像头对象,这里使用电脑自带摄像头,如果接了外部摄像头,则自动切换到外部摄像头
        self.cap = cv2.VideoCapture(0)
        # 设置视频参数,propId设置的视频参数,value设置的参数值
        self.cap.set(3, 480)
        # 截图screenshoot的计数器
        self.cnt = 0
 
    def learning_face(self):
 
        # 眉毛直线拟合数据缓冲
        line_brow_x = []
        line_brow_y = []
 
        # cap.isOpened() 返回true/false 检查初始化是否成功
        while (self.cap.isOpened()):
 
            # cap.read()
            # 返回两个值:
            #    一个布尔值true/false,用来判断读取视频是否成功/是否到视频末尾
            #    图像对象,图像的三维矩阵
            flag, im_rd = self.cap.read()
 
            # 每帧数据延时1ms,延时为0读取的是静态帧
            k = cv2.waitKey(1)
 
            # 取灰度
            img_gray = cv2.cvtColor(im_rd, cv2.COLOR_RGB2GRAY)
 
            # 使用人脸检测器检测每一帧图像中的人脸。并返回人脸数rects
            faces = self.detector(img_gray, 0)
 
            # 待会要显示在屏幕上的字体
            font = cv2.FONT_HERSHEY_SIMPLEX
 
            # 如果检测到人脸
            if (len(faces) != 0):
 
                # 对每个人脸都标出68个特征点
                for i in range(len(faces)):
                    # enumerate方法同时返回数据对象的索引和数据,k为索引,d为faces中的对象
                    for k, d in enumerate(faces):
                        # 用红色矩形框出人脸
                        cv2.rectangle(im_rd, (d.left(), d.top()), (d.right(), d.bottom()), (0, 0, 255))
                        # 计算人脸热别框边长
                        self.face_width = d.right() - d.left()
 
                        # 使用预测器得到68点数据的坐标
                        shape = self.predictor(im_rd, d)
                        # 圆圈显示每个特征点
                        for i in range(68):
                            cv2.circle(im_rd, (shape.part(i).x, shape.part(i).y), 2, (222, 222, 0), -1, 8)
                             #cv2.putText(im_rd, str(i), (shape.part(i).x, shape.part(i).y), cv2.FONT_HERSHEY_SIMPLEX, 0.5,
                               #          (255, 255, 255))
 
                        # 分析任意n点的位置关系来作为表情识别的依据
                        mouth_width = (shape.part(54).x - shape.part(48).x) / self.face_width  # 嘴巴咧开程度
                        mouth_higth = (shape.part(66).y - shape.part(62).y) / self.face_width  # 嘴巴张开程度
                        
 
                        # 通过两个眉毛上的10个特征点,分析挑眉程度和皱眉程度
                        brow_sum = 0  # 高度之和
                        frown_sum = 0  # 两边眉毛距离之和
                        for j in range(17, 21):
                            brow_sum += (shape.part(j).y - d.top()) + (shape.part(j + 5).y - d.top())
                            frown_sum += shape.part(j + 5).x - shape.part(j).x
                            line_brow_x.append(shape.part(j).x)
                            line_brow_y.append(shape.part(j).y)
 
                        # self.brow_k, self.brow_d = self.fit_slr(line_brow_x, line_brow_y)  # 计算眉毛的倾斜程度
                        tempx = np.array(line_brow_x)
                        tempy = np.array(line_brow_y)
                        z1 = np.polyfit(tempx, tempy, 1)  # 拟合成一次直线
                        self.brow_k = -round(z1[0], 3)  # 拟合出曲线的斜率和实际眉毛的倾斜方向是相反的
 
                        brow_hight = (brow_sum / 10) / self.face_width  # 眉毛高度占比
                        brow_width = (frown_sum / 5) / self.face_width  # 眉毛距离占比
                        
 
                        # 眼睛睁开程度
                        eye_sum = (shape.part(41).y - shape.part(37).y + shape.part(40).y - shape.part(38).y +
                                   shape.part(47).y - shape.part(43).y + shape.part(46).y - shape.part(44).y)
                        eye_hight = (eye_sum / 4) / self.face_width
                        
 
                        # 分情况讨论
                        # 张嘴
                        if round(mouth_higth >= 0.03):
                            if eye_hight >= 0.056:
                                cv2.putText(im_rd, "amazing", (d.left(), d.bottom() + 20), cv2.FONT_HERSHEY_SIMPLEX,
                                            0.8,
                                            (0, 0, 255), 2, 4)
                            else:
                                cv2.putText(im_rd, "smile", (d.left(), d.bottom() + 20), cv2.FONT_HERSHEY_SIMPLEX, 0.8,
                                            (0, 0, 255), 2, 4)
                        # 没有张嘴
                        else:
                            if self.brow_k <= -0.3:
                                cv2.putText(im_rd, "angry", (d.left(), d.bottom() + 20), cv2.FONT_HERSHEY_SIMPLEX, 0.8,
                                            (0, 0, 255), 2, 4)
                            else:
                                cv2.putText(im_rd, "", (d.left(), d.bottom() + 20), cv2.FONT_HERSHEY_SIMPLEX, 0.8,
                                            (0, 0, 255), 2, 4)
                # 标出人脸数
                cv2.putText(im_rd, "Faces: " + str(len(faces)), (20, 50), font, 1, (0, 0, 255), 1, cv2.LINE_AA)
            else:
                # 没有检测到人脸
                cv2.putText(im_rd, "No Face", (20, 50), font, 1, (0, 0, 255), 1, cv2.LINE_AA)
            # 添加说明
            #im_rd = cv2.putText(im_rd, "S: screenshot", (20, 400), font, 0.8, (0, 0, 255), 1, cv2.LINE_AA)
            im_rd = cv2.putText(im_rd, "Q: quit", (20, 450), font, 0.8, (0, 0, 255), 1, cv2.LINE_AA)
            # 按下s键截图保存
            #if (k == ord('s')):
                #self.cnt += 1
                #cv2.imwrite("screenshoot" + str(self.cnt) + ".jpg", im_rd)
            # 按下q键退出
            if (k == ord('q')):
                break 
            cv2.imshow("camera", im_rd) 
        self.cap.release()
        cv2.destroyAllWindows()
    my_face = face_emotion()
    my_face.learning_face()

在这里插入图片描述

口罩识别

这个其实和微笑差不多,也是准备好数据集,然后进行预处理,通过建立卷积神经网络进行模型训练,并用模型测试是否能识别出到了口罩或者不带口罩。
导入所需的库

import keras
import os, shutil
from keras import layers
from keras import models
from keras import optimizers
from keras.preprocessing.image import ImageDataGenerator
import matplotlib.pyplot as plt
import scipy

口罩数据集准备

下载口罩数据集,对口罩数据集进行处理,参考猫狗数据集进行划分。生成三个文件夹train、test、validation,然后在这三个文件下面有正负样本。在这里插入图片描述
然后给定数据集的地址

train_dir='./maskdata/train'
train_masks_dir='./maskdata/train/mask'
train_unmasks_dir='./maskdata/train/unmask'
test_dir='./maskdata/test'
test_masks_dir='./maskdata/test/mask'
test_unmasks_dir='./smiledata/test/unmask'
validation_dir='./maskdata/test'
validation_masks_dir='./maskdata/test/mask'
validation_unmasks_dir='./maskdata/test/unmask'

创建模型

from keras import layers
from keras import models
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu',
                        input_shape=(150, 150, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))
model.summary()

查看设计的模型
在这里插入图片描述
对图片进行处理

from keras import optimizers
model.compile(loss='binary_crossentropy',
              optimizer=optimizers.RMSprop(lr=1e-4),
              metrics=['acc'])
from keras.preprocessing.image import ImageDataGenerator
# All images will be rescaled by 1./255
train_datagen = ImageDataGenerator(rescale=1./255)
validation_datagen=ImageDataGenerator(rescale=1./255)
test_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
        # 目标文件目录
        train_dir,
        #所有图片的size必须是150x150
        target_size=(150, 150),
        batch_size=20,
        # Since we use binary_crossentropy loss, we need binary labels
        class_mode='binary')

validation_generator = test_datagen.flow_from_directory(
        validation_dir,
        target_size=(150, 150),
        batch_size=20,
        class_mode='binary')
test_generator = test_datagen.flow_from_directory(test_dir,
                                                   target_size=(150, 150),
                                                   batch_size=20,
                                                   class_mode='binary')
for data_batch, labels_batch in train_generator:
    print('data batch shape:', data_batch.shape)
    print('labels batch shape:', labels_batch)
    break
train_generator.class_indices

定义戴口罩输出为0,不戴口罩为1
在这里插入图片描述

训练模型

设计代数epochs

history = model.fit_generator(
      train_generator,
      steps_per_epoch=100,
      epochs=60,
      validation_data=validation_generator,
      validation_steps=50)
datagen = ImageDataGenerator(
      rotation_range=40,
      width_shift_range=0.2,
      height_shift_range=0.2,
      shear_range=0.2,
      zoom_range=0.2,
      horizontal_flip=True,
      fill_mode='nearest')      
model.save('mask_and_unmask_small_2.h5')#保存模型

在这里插入图片描述
保存模型后,就可以用模型来进行测试,是否可以将微笑识别出来

基于dlib库的识别

import cv2
from keras.preprocessing import image
from keras.models import load_model
import numpy as np
import dlib
from PIL import Image
model = load_model('D:/mask1/masks_and_unmasks_small_2.h5')
detector = dlib.get_frontal_face_detector()
video=cv2.VideoCapture(0)
font = cv2.FONT_HERSHEY_SIMPLEX
def rec(img):
    gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    dets=detector(gray,1)
    if dets is not None:
        for face in dets:
            left=face.left()
            top=face.top()
            right=face.right()
            bottom=face.bottom()
            cv2.rectangle(img,(left,top),(right,bottom),(0,255,0),2)
            img1=cv2.resize(img[top:bottom,left:right],dsize=(150,150))
            img1=cv2.cvtColor(img1,cv2.COLOR_BGR2RGB)
            img1 = np.array(img1)/255.
            img_tensor = img1.reshape(-1,150,150,3)
            prediction =model.predict(img_tensor)    
            if prediction[0][0]>0.5:
                result='unmask'
            else:
                result='mask'
            cv2.putText(img, result, (left,top), font, 2, (0, 255, 0), 2, cv2.LINE_AA)
        cv2.imshow('Video', img)
while video.isOpened():
    res, img_rd = video.read()
    if not res:
        break
    rec(img_rd)
    if cv2.waitKey(5) & 0xFF == ord('q'):
        break
video.release()
cv2.destroyAllWindows()

在这里插入图片描述

如有错误请指正!
参考:
https://blog.csdn.net/weixin_41770169/article/details/80925342.
http://www.cnblogs.com/AdaminXie/
https://github.com/coneypo/Smile_Detector
https://blog.csdn.net/lxzysx/article/details/107126764

人脸口罩监测系统 保姆级教学 阅读详情

相关推荐

人工智能与机器学习——微笑识别和口罩识别

人工智能与机器学习——微笑识别和口罩识别一、人脸图像特征提取方法简介HOG特征提取步骤(1)输入图像并检测窗口(2)伽马与色彩归一化(3)计算梯度(4)构造方向直方图(5)合成各细胞单元使区间在空间上连通(6)HOG特征收集Dlib人脸特征检测(1)提取特征点(2)将获取的特征数据集写入csv(3)计算特征数据集的欧氏距离并做对比二、笑脸识别1.下载必备工具及库2.微笑数据集3.模型创建及归一化处理4.数据增强5.创建网络6.模型训练及保存7.图片判别8.人脸识别三、口罩识别1.口罩数据集2.模型创建及归一

sillystar的博客 6024

基于人脸识别的“带口罩”系统-python完整实现

目录 0 前言 1 设计目的 2 任务与要求 3 设计原理 3.1 人脸检测与人脸识别概述 3.2人脸表征检测(五官定位) 3.3 dlib库的简介 3.4 Tkinter的简介 4 系统的建立 4.1 界面设计 4.2 五官识别 5 系统运行结果 5.1 口罩示意图 5.2 系统的结果展示 6 建议 7 参考文献 附 录 五官定位代码 系统建立代码 0 前言 新型冠状病毒展现出全球化流行和蔓延的趋势,这提醒我们:传染病防治在今后相当长时间内仍是疾病预防控制工作的重

weixin_43442778的博客 8821

人工智能与机器学习——Keras编程分别实现人脸微笑和口罩数据集的识别模型训练和实时分辨笑脸和口罩检测

目录一、环境准备安装anconda3安装dlib库安装OpenCV库安装tensorflow安装keras环境检测二、人脸笑脸识别下载笑脸数据集划分测试集、训练集和验证集创建模型对图片进行归一化处理训练模型实现笑脸辨别三、人脸口罩识别下载口罩数据集划分测试集、训练集和验证集创建模型对图片进行归一化处理训练模型实现口罩辨别四、参考资料 一、环境准备 安装anconda3 Anaconda是一个包含180+的科学包及其依赖项的发行版本。其包含的科学包包括:conda, numpy, scipy, ipython

czs0303的博客 1686

使用Python完成口罩数据集训练,并实现摄像头口罩识别

口罩数据集的划分、训练、测试,并实现摄像头口罩识别判断一、准备数据集二、导入Keras库,并划分数据集三、构建网络四、数据预处理五、使用数据增强六、使用摄像头读取人脸进行是否佩戴识别 一、准备数据集 下载地址 大家还可以自己找数据集进行训练。 二、导入Keras库,并划分数据集 import keras keras.__version__ import os, shutil #复制文件 # 原始目录所在的路径 # 数据集未压缩 original_dataset_dir0 = 'D:\\Workspace

qq_41133375的博客 4497

人工智能——微笑表情分类、口罩识别

人工智能——微笑表情分类、口罩识别 目录人工智能——微笑表情分类、口罩识别一、人脸特征提取方法1、HOG2、Dlib3、卷积神经网络二、微笑表情识别1、数据集下载2、训练数据集(1)修改图片文件名字(2)图片分类(3)数据分割如下(4)卷积网络模型搭建(4)数据预处理(5)模型训练(7)保存训练模型(8)模型的损失和准确性图像(9)数据增强(9)添加output层,并训练数据集(10)保存模型(11)模型的损失和准确性图像3、笑脸识别(1)基于卷积神经网络的微笑识别(2)基于Dlib的微笑识别 一、人脸特征

weixin_44980490的博客 2100

笑脸数据集和口罩数据集训练测试

一、HOG,Dlib,卷积神经网络介绍 1、HoG ①方法简介 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的描述子。通过计算和统计局部区域的梯度方向直方图来构成特征。Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。现如今如今虽然有很多行人检测算法不断提出,但基本都是以HOG+SVM的思路为主。 ②主要思想 在一幅图像中,局部目标的表象和形状(appearance and s

丹的博客 1389

【人工智能与机器学习】——Keras编程分别实现人脸微笑和口罩数据集的识别模型训练和测试(卷积神经网络CNN) + 实时分类微笑和口罩识别检测

import keras import matplotlib.pyplot as plt import matplotlib.image as mpimg import numpy as np from IPython.display import Image import os # 原目录的路径 original_dataset_dir = 'D:\\mango\\files\\cutmango' # 结果路径,存储较小的数据集 base_dir = 'mangoout' os.mkdir(base

mango 3472

基于深度学习的人脸识别考勤系统:从原理到工程实践

人脸识别作为计算机视觉的核心技术,其原理是通过卷积神经网络提取人脸的高维特征向量,实现身份的唯一性映射。这项技术的核心价值在于提供了一种非接触、高并发的生物特征验证方案,广泛应用于安防、金融和智能终端等领域。在工程实践中,结合预训练模型与业务逻辑,可以构建出高效稳定的身份核验系统。本文以考勤场景为例,深入探讨了如何利用PyTorch框架和insightface库,实现从人脸检测、特征提取到业务集成的完整流程,并分享了光照处理、阈值调优等实战经验,为开发高可用的人脸识别应用提供参考。

weixin_29053067的博客 244

人脸、微笑、口罩识别

一、人脸图像特征提取的方法 1.HOG 特征 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图 像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向 直方图来构成特征。Hog 特征结合 SVM 分类器已经被广泛应用于图像识别中,尤其在 行人检测中获得了极大的成功。需要提醒的是,HOG+SVM 进行行人检测的方法是法国 研究人员 Dalal 在 2005 的 CVPR 上提出的,而如今虽然有很多行人检测算法不断提出, 但

weixin_41443460的博客 1131

【机器学习14】笑脸识别,口罩识别

【机器学习14】笑脸识别,口罩识别 1.概念 1.HOG:(方向梯度直方图) 1.分割图像 overlap和non-overlap两种分割策略。overlap指的是分割出的区块(patch)互相交叠,有重合的区域。non-overlap指的是区块不交叠,没有重合的区域。 2.计算每个分割区块的方向梯度直方图 利用任意一种梯度算子,例如:sobel,laplacian等,对该patch进行卷积,计算得到每个像素点处的梯度方向和幅值。将360度(2*PI)根据需要分割成若干个bin,例如:分割成12个bin,每

qq_34591921的博客 5090

dlib人脸识别实例

使用dlib实现人脸识别,追踪。写成的中人脸识别模块。 实施对话系统:end-to-end的文本生成式模型,适用于闲聊;在问答式的对话里,针对性强,一般会采用检索匹配+知识图谱的方式

OpenCV人脸检测与微笑识别工程实践指南

计算机视觉中的人脸检测是基础且关键的技术,其核心原理是通过机器学习算法识别图像中的面部特征。OpenCV作为开源计算机视觉库,提供了Haar级联和DNN模块等多种实现方案,在工业质检、安防监控等场景具有重要应用价值。本文以工程实践为导向,详细解析了OpenCV DNN模块调用预训练模型的最佳实践,包括模型选型对比、级联分类器参数调优等关键技术要点,并分享了工业级项目中的性能优化经验。针对微笑识别这一典型应用,介绍了传统特征方法和基于关键点的进阶方案,帮助开发者快速构建实用的人脸分析系统组件。

weixin_34006468的博客 496

口罩识别+多语音提醒+可视化检测界面.rar

运行帧差法运行多线程控制,使用opencv识别分类器(识别效果一般),使用qt编写界面方便监视行人有无戴口罩及时提醒,仅供学习。

Python实现笑脸检测+人脸口罩检测!确实挺神奇!

一、人脸图像特征提取方法 https://blog.csdn.net/weixin_45137708/article/details/107110857 二、对笑脸数据集genki4k进行训练和测试(包括SVM、CNN),输出模型训练精度和测试精度(F1-score和ROC),实现检测图片笑脸和实时视频笑脸检测 (一)环境、数据集准备 本文操作在Jupyter notebook平台进行,需要安装tensorflow、Keras库、Dlib库、和opencv-python等。1、安装tensorflo

爬遍所有网站 3513

Python+dlib+OpenCV实现面部标志点检测:从原理到实时应用

面部标志点检测是计算机视觉中的一项基础技术,它通过定位人脸关键特征点(如眼角、嘴角、鼻尖)的坐标,将面部结构数字化。其核心原理通常基于机器学习回归方法,如梯度提升树,学习图像像素与特征点位置之间的映射关系。这项技术的价值在于为更高层的人脸分析提供了精确的几何基础,广泛应用于表情识别、虚拟化妆、头部姿态估计和疲劳驾驶监测等场景。本文聚焦于使用经典的dlib库结合OpenCV,详细解析其68点预测模型,并指导如何通过Python快速搭建从图片处理到实时视频流的完整检测系统,涵盖环境配置、代码实现与性能优化等工程

weixin_34384557的博客 464

三种人脸检测方法(opencv,dlib,openpose)的戴口罩识别效果测试

最近尝试做一个人脸检测控制机器人来测体温,记录一下过程: 1、首先使用了opencv-ython试了一下人脸检测,参考https://blog.csdn.net/qq_32892383/article/details/90732916 先跑了一下固定图片的,效果堪忧啊 代码: # -*- coding: utf-8 -*- import c2 import lgging # 设置日志 logging.basicConfig(level = logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s') logger = lo

人脸识别测试图片设计与最佳实践指南

人脸识别作为计算机视觉的核心技术,其性能评估高度依赖测试数据的质量。算法通过提取面部特征点建立数学模型,测试阶段需要覆盖从标准场景到极端情况的完整数据谱系。在工程实践中,精心设计的测试图片能有效验证算法鲁棒性,特别是在移动端应用中,需考虑不同光照、角度、遮挡等现实变量。本文基于CV领域热词'特征提取'和'模型鲁棒性',详解如何构建包含标准集与边界集的测试方案,包括设备选型、环境控制、标注规范等关键环节,为开发团队提供可直接落地的质量保障方法论。

weixin_34294649的博客 352

UE4_SpeedTree Shader源码分析

目录 1.UMaterialExpressionSpeedTree::Compile 2.Compiler->SpeedTree 3.GetSpeedTreeVertexOffset 4.Scene中的SpeedTree应用 (Scene->UpdateSpeedTreeWind) 5.GetSpeedTreeVertexOffsetInner 由于之后做风场,也需要在S...

zzgyy123的专栏 2148

InsightFace人脸分析工具箱:从3行代码到企业级应用的完整指南

在当今AI技术快速发展的时代,人脸分析已成为计算机视觉领域最成熟、应用最广泛的技术之一。InsightFace作为开源社区中**最完整的人脸分析工具箱**,为开发者提供了从基础检测到高级3D重建的全套解决方案。无论你是刚接触人脸识别的初学者,还是需要构建企业级人脸系统的专家,InsightFace都能提供专业级的技术支持。 ## 价值主张:为什么选择InsightFace? InsightFa

gitblog_00460的博客 476
上一篇: 智能车自主导航仿真环境的搭建并用yolo进行物体检测
下一篇: 人脸识别签到系统【1】学习--系统分析、pycharm+python环境配置及简单UI界面设计
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值