测试四种人脸检测方法(opencv,dlib,openpose,cnn)的戴口罩识别效果测试,终于找到了大佬发布的开箱即用的方法!

基于Openpose框架的人脸关键点heatmaps预测模型设计、训练     众所周知,人脸识别中有一项重要的任务-人脸关键点预测,通过这个环节对齐,才能进行人脸识别,提高人脸识别的准确率。另外,一些活体检测/人脸状态分析也需要利用该方案进行实现。     经典的人脸检测模型MTCNN中具有人脸关键点的预测功能,但其关键预测精度比较差,对于大角度、模糊、遮挡、小尺度等情况的人脸效果下降更加严重。因此我结合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 = logging.getLogger(__name__)

# 待检测的图片路径
ImagePath = '1.jpg'

# 读取图片
logger.info('Reading image...')
image = cv2.imread(ImagePath)
# 把图片转换为灰度模式
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 探测图片中的人脸
logger.info('Detect faces...')
# 获取训练好的人脸的参数数据,进行人脸检测
face_cascade = cv2.CascadeClassifier(r'./haarcascade_frontalface_default.xml')
faces = face_cascade.detectMultiScale(gray,scaleFactor=1.15,minNeighbors=5,minSize=(3, 3))

search_info = "Find %d face."%len(faces) if len(faces) <= 1 else "Find %d faces."%len(faces)
logger.info(search_info)

# 绘制人脸的矩形区域(红色边框)
for (x, y, w, h) in faces:
    cv2.rectangle(image, (x,y), (x+w,y+h), (0,0,255), 2)

# 显示图片
cv2.imshow('Find faces!', image)
cv2.waitKey(0)

ros环境下接收电脑摄像头的图像话题的实时检测代码:

# -*- coding: utf-8 -*-
#opencv固定图片检测
#2020.2.13
#by跃动的风
import cv2
import logging
import rospy
import roslib
from sensor_msgs.msg import Image
from geometry_msgs.msg import Pose
from cv_bridge import CvBridge,CvBridgeError

def ImageCB(data):
    bridge = CvBridge()
    image = bridge.imgmsg_to_cv2(data,"bgr8")
    # 把图片转换为灰度模式
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

    # 探测图片中的人脸
    #logger.info('Detect faces...')
    # 获取训练好的人脸的参数数据,进行人脸检测
    face_cascade = cv2.CascadeClassifier(r'./haarcascade_frontalface_default.xml')
    faces = face_cascade.detectMultiScale(gray,scaleFactor=1.15,minNeighbors=5,minSize=(3, 3))

    search_info = "Find %d face."%len(faces) if len(faces) <= 1 else "Find %d faces."%len(faces)
    rospy.loginfo(search_info)

    # 绘制人脸的矩形区域(红色边框)
    for (x, y, w, h) in faces:
        cv2.rectangle(image, (x,y), (x+w,y+h), (0,0,255), 2)

    cv2.imshow('Find faces!', image)
    cv2.waitKey(1)
##ROS Node 
if __name__ == '__main__':
    #face_cascade = cv2.CascadeClassifier(r'./haarcascade_frontalface_default.xml')
    try:
        rospy.init_node('face_detect', anonymous=True)
        rospy.loginfo('face_detect start...')
        pub = rospy.Publisher('/face_detection', Image, queue_size = 10)
        pub_face_coo = rospy.Publisher('/face_coo', Pose, queue_size = 3)
        rospy.Subscriber('/usb_cam/image_raw',Image, ImageCB)
        rospy.spin()
    except:
    	pass

2,使用dlib检测
参考https://blog.csdn.net/Nirvana_6174/article/details/89599136
效果尚可,但是不能检测戴口罩的人脸
在这里插入图片描述
静态图片检测代码


import dlib
import numpy as np
import cv2

def rect_to_bb(rect): # 获得人脸矩形的坐标信息
    x = rect.left()
    y = rect.top()
    w = rect.right() - x
    h = rect.bottom() - y
    return (x, y, w, h)

def resize(image, width=1200):  # 将待检测的image进行resize
    r = width * 1.0 / image.shape[1]
    dim = (width, int(image.shape[0] * r))
    resized = cv2.resize(image, dim, interpolation=cv2.INTER_AREA)
    return resized

def detect():
    image_file = "1.jpg"
    detector = dlib.get_frontal_face_detector()
    image = cv2.imread(image_file)
    image = resize(image, width=1200)
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    rects = detector(gray, 1)
    for (i, rect) in enumerate(rects):
        (x, y, w, h) = rect_to_bb(rect)
        cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)
        cv2.putText(image, "Face: {}".format(i + 1), (x - 10, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)

    cv2.imshow("Output", image)
    cv2.waitKey(1)

if __name__ == "__main__":
    while 1:
        detect()
        if cv2.waitKey(1) & 0xFF == ord("q"):
             break

3,使用openpose检测
效果极佳,就是环境配置很费劲。放一张效果图,检测戴口罩的毫无压力:
在这里插入图片描述
具体安装方法见另一篇文章https://blog.csdn.net/qq_23670601/article/details/104345718。

缺点是依赖太多,且在i7 7700HQ cpu下测试速度是0.1fps,gtx1060 gpu下测试速度为4.9fps.


2020-3月更新
4、发现有一位大佬公布了一个CNN模型和代码,开箱即用,终于解决了openpose的复杂依赖以及速度太慢的问题。地址如下:
https://github.com/ShiqiYu/libfacedetection
下载之后解压,新建文件夹build,之后在buid目录下

cmake ..
make

就可以用了。
使用摄像头测试一下:

./detect-camera-demo 0

效果如下:
在这里插入图片描述
仅依赖cpu且速度相当之快!
撒花!!!终于找到了想象中的滑板鞋~~

【机器学习】 - 使用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)点, 阅读详情

相关推荐

OpenPose 1.7.0(身体、面部、手和脚估计的实时多人关键点检测库)

OpenPose代表了第一个在单幅图像上联合检测人体、手部、面部和足部关键点(共 135 个关键点)的实时多人系统。 特征 主要功能: 2D实时多人关键点检测: 15、18 或25 关键点身体/脚关键点估计,包括6 脚关键点。运行时对检测到的人数不变。 2x21-keypoint 手部关键点估计。运行时间取决于检测到的人数。有关运行时不变的替代方案,请参阅OpenPose 训练。 70-keypoint 人脸关键点估计。运行时间取决于检测到的人数。有关运行时不变的替代方案,请参阅OpenPose 训练。 3D实时单人关键点检测: 来自多个单一视图的 3D 三角测量。 已处理 Flir 相机的同步。 兼容 Flir/Point Grey 相机。 校准工具箱:失真、内在和外在相机参数的估计。 单人跟踪以进一步加速或视觉平滑。 输入:图像、视频、网络摄像头、Flir/Point Grey、IP 摄像头,并支持添加您自己的自定义输入源(例如深度摄像头)。 输出:基本图像+关键点显示/保存(PNG,JPG,AVI,...),关键点保存(JSON,XML,YML,...),关键点作为数组类,

公开人脸识别数据集

1. 口罩遮挡人脸数据 由武汉大学多媒体研究中心发起,目前是全球最大的口罩遮挡人脸数据集。分为真实口罩人脸和模拟口罩人脸两部分,真实口罩人脸包括525人的5000张口罩人脸和9万张正常人脸。模拟口罩人脸包含1万个人共50万张模拟人脸数据集。 应用项目:人脸检测、人脸识别 URL:https://github.com/X-zhangyang/Real-World-Masked-Face-Dataset 2. Wider Face人脸数据 香港中文大学发起的,包含3万张图片共40万张人脸。 应用项.

YMilton的专栏 4万+

三种人脸检测方法(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

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

安装库 tensorflow和keras参考我之前的博客 下载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库下载

A981012的博客 2361

人脸口罩数据集的模型训练以及戴口罩识别检测

人脸口罩数据集的模型训练以及戴口罩识别检测一.理解人脸图像特征的各种方法HOG特征的提取与计算步骤Dlib人脸特征检测原理(1)提取特征点(2)获取特征数据集写入csv(3)计算特征数据集的欧氏距离作对比二、人脸口罩数据集的下载及处理三、摄像头采集自己人脸、并对表情作出判断。 一.理解人脸图像特征的各种方法 1)方向梯度直方图 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。HOG特征通过计算和统计图像局

zjc 1万+

Xilinx SDK工程编译、链接、调试注意事项

1、添加工程 启动SDK时选取workspace,如下图所示: 对应的workpace文件夹中会生成如下几个文件: 如果当前workspace是首次加载工程,SDK会进入启动界面 点击Import Project,导入已有工程 点击Browse,添加工程路径,一个完整的工程包含一个bsp文件夹,一个HW文件夹,和一个src文件夹(添加C功能函数) 点击Fini...

Autumn_He的博客 1万+

基于人脸识别的“带口罩”系统-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

Python-OpenCV及cv2,numpy库最新安装教程[最全步骤]

安装教程目录前言OpenCV-Python安装教程报错解决cv2安装numpy安装opencv安装(附加)总结 前言 首先,我知道一些看到我的Blog的人已经在网上找了很多歪路子,现在已经火冒三丈了(我也是这样过来的hhhh),那么现在,深呼吸,跟着我的教程,不要着急,每一步都要读一遍。完整安装过程需要1个小时左右(仅供参考,本人第一次安装python花了一天(确信)) OpenCV-Python...

qq_45425286的博客 6862

怎样使用OpenCV进行人脸识别 [停止更新]

更佳阅读地址:http://52coding.com/face-recognition-with-opencv/ 更新 2013-6-27 停止人脸识别的研究,具体人脸识别系统可以参见文章《使用Kinect进行人脸识别》《Kinect人脸识别系统---开发历程》。2013-5-17 在15号程序上,添加图像显示效果,具体效果参见截图。2013-5-15 添加了新的代码,用于选择

延陵小明 6万+

OpenCV学习——摄像头人脸识别

在学会对图像文件中的人脸进行识别后,还要使用摄像头进行人脸识别,需要先读取摄像头所获取的画面,并将画面进行存储,之后在对存储图像进行人脸识别,并将识别出的人脸存储。

weixin_51995147的博客 3982

【Unity】制作简易三维场景

本文介绍如何制作一个三维场景

CiNian_的博客 4611

教你使用开源opencv实现人脸检测

反之,如果分类精度90%以上,则是强分类器,弱分类器在adaptive boosting(Adaboost)的作用仅仅是提供了一个训练方向(就是看弱训练在那个特征(或者叫方向)上面的误差最大),然后在这个方向上面增强训练权值,即所谓强训练。是一个功能强大的开源库,在人工智能图像识别领域有着重要的地位,因此掌握其原理十分必要,本次实验不仅学习到了OpenCv的基本知识还探究了OpenCv分类器的训练和使用,有了这个基础我们就可以收集不同的训练集进行不同方面的分类器训练,从而实现自己的需求。

babyai996的博客 3002

二元交叉熵:分类模型概率校准的数学根基

二元交叉熵(BCE)是二分类任务中实现概率校准的核心损失函数,其本质源于最大似然估计与KL散度,确保模型输出具备真实可解释的概率意义。相比均方误差(MSE)或Hinge Loss,BCE强制优化预测分布与真实伯努利分布之间的信息差异,使p=0.8真正对应约80%的正例发生率,支撑风控、医疗、推荐等高信度场景的阈值决策。它不只影响训练收敛,更决定部署后概率的业务可信度——这正是Focal Loss等变体无法替代其基础地位的根本原因。理解BCE,就是理解分类模型如何从‘打分器’进化为‘概率契约签署者’。

congli3478的博客 684

opencv实现人脸识别(c++实现)

本文章基于opencv + VS2015实现人脸识别。可对人脸,眼睛,嘴部进行识别。

new9232的博客 1万+

OpenCV3实现人脸识别(三)——训练与识别自己的人脸数据

传统人脸识别的方法,可以用于一些低算力的边缘设备

知来者逆的博客 1万+

core_analyzer分析c++程序内存占用

环境:centos; 进程:单进程多线程c++程序; 问题:1. 分析系统内存占用; 2. 分析ptmalloc内存空洞(bins上的空闲chunk的大小); 包括:1. 占用了很大内存的c++进程; 2. gcore(在进程不core dump的情况下生成core文件); 3. core_analyzer(分析gcor...

weixin_41644391的博客 4032

Opencv实战:人脸识别

保姆级教程,利用opencv库,快速实现人脸识别。

weixin_44686138的博客 1万+

WINCC8.1工业组态软件安装与授权配置指南

SCADA系统作为工业自动化控制的核心平台,通过实时数据采集与监控实现生产流程可视化。WINCC作为西门子旗舰级组态软件,其8.1版本凭借稳定的运行时环境在汽车制造、流程工业等领域广泛应用。本文从工业控制系统软件安装规范切入,重点解析WINCC8.1与Automation License Manager的协同工作原理,详细说明包括系统环境检查、安装包校验、授权文件配置等关键技术环节。针对工程实施中常见的内存配置不足、授权管理器报错等典型问题,提供经过现场验证的解决方案,特别适用于需要进行产线监控系统升级维护

cqwf95925的博客 853

opencv-人脸识别

人脸识别即程序对输入的图像进行判别是否有人脸,并识别出有人脸的图像所对应的人。即我们常说的人脸识别一般包含了人脸检测和人脸识别两部分。下面对其在opencv中的相应模块进行分别介绍。 一:人脸检测 在人脸检测中,其主要任务是构造能够区分包含人脸实例和不包含人脸实例的分类器, 二:基本原理 opencv中提供了三种训练好的级联分类器。级联分类器顾名思义即通过不同的特征进行一步步筛选,最终得出所属的分类,它将一个复杂的分类问题拆解为一个个简单的分类问题,随着级联条件的判断,能够一步步筛出大量的负样本,极大的提升

sc9876543210的博客 2万+

OpenCV--人脸识别入门

本次用的数据集是opencv给出的教程里面的第一个数据集:​​The AT&T Facedatabase​​,又称为ORL人脸数据库,40个人,每人10张照片。照片在不同时间、不同光照、不同表情(睁眼闭眼、笑或者不笑)、不同人脸细节(戴眼镜或者不戴眼镜)下采集。所有的图像都在一个黑暗均匀的背景下采集的,正面竖直人脸(有些有轻微旋转)。

hw5230的博客 8890

分布式存储系统关于GDPR条例中的数据清除原则

文章目录前言HDFS存储系统数据的完全删除基于加解密的输入输出流的数据保护方案 前言 关于GDPR是什么,可能许多同学之前并不太了解,至少笔者在之前也是不清楚的。GDPR全称为通用数据保护条例,General Data Protection Regulation。它是一项来自欧盟的关于计算机数据保护相关的条约,旨在规范系统如何收集,管控用户私人数据的种种行为。但是当前的一些存储系统并没有完全符合...

走在前往架构师的路上 2797

实战OpenPose项目1:开篇使用文档

OpenPose 文档 内容 快速开始 1.1. 在图像、视频或网络摄像头上运行 1.2. 脸和手 1.3. 不同的输出(JSON、图像、视频、UI) 1.4. 只有没有背景图像的骨架 1.5. 不运行所有 GPU 1.6. 最大精度配置 1.6.1. 具有最大精度的附加模型 1.6.2. 具有较低误报的附加模型 1.7. 3D 重建 1.8. 追踪 1.9. Kinect 2.0 作为 Windows 10 上的网络摄像头 1.10. 主要标志 高级快速入门 错误解决 3.1

源代码杀手的博客 7701

golang 线上事故

golang 线上事故 最近公司要做大促的一些活动。并且单量,qps持续上涨。之前使用的是django python 语言做的一个服务端。目前已经部署的国家里面最多的国家会有300+个实例。大促期间还可能会增加一个实例数。这么多的实例部署,回滚的时间都会特变长,除了问题也不好定位。并且如此多的一个机器,连接数* 实例数也会导致DB等其他服务扛不住这么大的并发。所以决定上go服务解决性能问题。 ...

lcf枫的博客 868

人脸识别:01)快速搭建一个人脸门禁打卡系统,支持戴口罩识别

前言 本系统基于SSD模型和dlib库,SSD模型用于人脸检测,dlib用户人脸识别 人脸检测 人脸检测:找到图片中人脸的位置,并用方框标出 dlib已经提供了完整的人脸识别API,但dlib提供的2个人脸检测模型存在如下2个问题 get_frontal_face_detector get_frontal_face_detector基于机器学习,速度快但是准确度不高,有时离摄像头较远或戴口罩,会检测不到人脸 detector = dlib.get_frontal_face_detector() cnn_f

Javis486的专栏 4267

【英特尔杯记录】Python戴口罩人脸识别部分

博主参加英特尔杯后,主要完成机器视觉相关代码的编写,首先是人脸识别 采用Dlib作为人脸检测分类器,对于戴口罩人脸也有较好的识别效果,最终将人脸图像上传至百度云人脸库,通过调用百度API进行人脸识别 权重文件需要自己下载......

Harajukuuuu的博客 692

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Openpose的应用思考

Openpose的应用思考   Openpose的出发点是基于caffe标示出人体的关键节点,主要用于人体的姿态识别,在进一步的使用方法是在人脸了手部进行关键点识别,具体的应用就是我们比较熟悉的虚拟直播的动态头像,CG之类的动作捕捉。基本的原理都是识别出关键点,利用生成的关键点json文件应用到2D平面model中,Openpose只能识别二维图像,三维的还不行,至少我不会,我的命题用不到。 我也看了关于人脸识别的开源项目,底层的神经网络和实现原理[人脸识别帖子]. [openface]. [face_re

weixin_45111375的博客 1555

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

上一篇: ubuntu解压时遇到Parsing filters is unsupported问题解决
下一篇: openpose在ubuntu环境下的安装注意事项记录
跃动的风
博客等级 码龄12年 8056粉丝 72原创
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值