位置: IT常识 - 正文

人脸检测5种方法(人脸检测5种方式)

编辑:rootadmin
人脸检测5种方法

推荐整理分享人脸检测5种方法(人脸检测5种方式),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:人脸检测分别有哪些,人脸检测方法,人脸检测的五种方法,人脸检测的五种方法,人脸检测方法,人脸检测方法,人脸检测5种方式,人脸检测5种方法图片,内容如对您有帮助,希望把文章链接给更多的朋友!

众所周知,人脸识别是计算机视觉应用的一个重大领域,在学习人脸识别之前,我们先来简单学习下人脸检测的几种用法。

常见的人脸检测方法大致有5种,Haar、Hog、CNN、SSD、MTCNN:

人脸检测5种方法(人脸检测5种方式)

注:本文章图片来源于网络

相关构造检测器的文件:opencv/data at master · opencv/opencv · GitHub

基本步骤读入图片构造检测器获取检测结果解析检测结果一、Haar# 调整参数img = cv2.imread('./images/001.jpg')cv_show('img',img)# 构造harr检测器face_detector = cv2.CascadeClassifier('./weights/haarcascade_frontalface_default.xml')# 转为灰度图img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)plt.imshow(img_gray,'gray')# 检测结果 上图4个人脸所以4个方框坐标# image # scaleFactor控制人脸尺寸 默认1.1 detections = face_detector.detectMultiScale(img_gray,scaleFactor=1.3)# 解析for x,y,w,h in detections: cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0))plt.imshow(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))

# 调整参数img = cv2.imread('./images/004.jpeg')cv_show('img',img)# 构造harr检测器face_detector = cv2.CascadeClassifier('./weights/haarcascade_frontalface_default.xml')# 转为灰度图img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)plt.imshow(img_gray,'gray')# 检测结果 上图4个人脸所以4个方框坐标# image # scaleFactor控制人脸尺寸 默认1.1 # minNeighbors 确定一个人脸框至少要有n个候选值 越高 质量越好# [, flags[, # minSize maxSize 人脸框的最大最小尺寸 如minSize=(40,40) detections = face_detector.detectMultiScale(img_gray,scaleFactor=1.2, minNeighbors=10)# 在质量和数量上平衡# 解析for x,y,w,h in detections: cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0))plt.imshow(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))

上述过程中:

scaleFactor参数:用来控制人脸框的大小,可以用它来排除一些错误检测; minNeighbors参数:我们给人脸框起来的时候,一般一张脸会框许多的框,假如这张脸框得越多,说明质量越好,越是一张正确的“脸”。二、Hog

对于第一次使用这个功能的同学,要提前下载一下dlib。

import dlib# 构造HOG人脸检测器 不需要参数hog_face_detetor = dlib.get_frontal_face_detector()# 检测人脸获取数据# img # scale类似haar的scalFactordetections = hog_face_detetor(img,1)# 解析获取的数据for face in detections: # 左上角 x = face.left() y = face.top() # 右下角 r = face.right() b = face.bottom() cv2.rectangle(img,(x,y),(r,b),(0,255,0))plt.imshow(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))

三、CNNimport dlib# 构造CNN人脸检测器cnn_face_detector = dlib.cnn_face_detection_model_v1("./weights/mmod_human_face_detector.dat")# 检测人脸 参数与上一种相似detections = cnn_face_detector(img,1)for face in detections: # 左上角 x = face.rect.left() y = face.rect.top() # 右下角 r = face.rect.right() b = face.rect.bottom() # 置信度 c = face.confidence print(c) cv2.rectangle(img,(x,y),(r,b),(0,255,0))plt.imshow(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))

通过神经网络完成,这个过程中我们还可以查看每张脸检测时的置信度。

四、SSD# 加载模型face_detector = cv2.dnn.readNetFromCaffe('./weights/deploy.prototxt.txt','./weights/res10_300x300_ssd_iter_140000.caffemodel')# 原图尺寸img_height = img.shape[0]img_width = img.shape[1]# 放缩至输入尺寸img_resized = cv2.resize(img,(500,300)) # 转为2进制img_blob = cv2.dnn.blobFromImage(img_resized,1.0,(500,300),(104.0,177.0,123.0))# 输入face_detector.setInput(img_blob)# 推理detections = face_detector.forward()

此时

detections.shape # (1, 1, 200, 7)

说明有200个结果,后面的7则是我们做需要的一些数据,继续如下:

# 查看人脸数量num_of_detections = detections.shape[2]img_copy = img.copy()for index in range(num_of_detections): # 置信度 detections_confidence = detections[0,0,index,2] # 通过置信度筛选 if detections_confidence > 0.15: # 位置 乘以宽高恢复大小 locations = detections[0,0,index,3:7] * np.array([img_width,img_height,img_width,img_height]) # 打印 print(detections_confidence) lx,ly,rx,ry = locations.astype('int') # 绘制 cv2.rectangle(img_copy,(lx,ly),(rx,ry),(0,255,0),2)plt.imshow(cv2.cvtColor(img_copy,cv2.COLOR_BGR2RGB))

五、MTCNN# 导入MTCNNfrom mtcnn.mtcnn import MTCNN# 记载模型face_detetor = MTCNN()# 检测人脸detections = face_detetor.detect_faces(img_cvt)for face in detections: x,y,w,h = face['box'] cv2.rectangle(img_cvt,(x,y),(x+w,y+h),(0,255,0),2)plt.imshow(img_cvt)

对比优势劣势Haar速度最快、清凉、适合算力较小的设备准确度低、偶尔误报、无旋转不变性HOG+Dlib比Haar准确率高速度比Haar低,计算量大、无旋转不变性、Dlib兼容性问题SSD比Haar和hog准确率高、深度学习、大小一般低光照片准确率低,受肤色影响。CNN最准确、误报率低、轻量相对于其他方法慢、计算量大、Dlib兼容性问题
本文链接地址:https://www.jiuchutong.com/zhishi/298840.html 转载请保留说明!

上一篇:谷歌浏览器无法使用翻译功能的解决方案,谷歌浏览器无法翻译怎么办?谷歌浏览器右键翻译失效了?(谷歌浏览器无法安装)

下一篇:XGBOOST算法Python实现(保姆级)(XGboost算法预测股价模型)

  • 华为录音机删除了怎么恢复(华为录音机删除的录音怎么恢复没有云空间)

    华为录音机删除了怎么恢复(华为录音机删除的录音怎么恢复没有云空间)

  • 淘宝待付款订单怎么取消不了(淘宝待付款订单取消后在哪里还可以再找到)

    淘宝待付款订单怎么取消不了(淘宝待付款订单取消后在哪里还可以再找到)

  • kindle能用5v2a充电器(kindle能用5v3a充电器)

    kindle能用5v2a充电器(kindle能用5v3a充电器)

  • 手机疏油层能用多久(手机疏油层能用多久 知乎)

    手机疏油层能用多久(手机疏油层能用多久 知乎)

  • 话筒和麦克风的区别(话筒麦克风的英文)

    话筒和麦克风的区别(话筒麦克风的英文)

  • vivo怎么拦截陌生短信(vivo怎么拦截陌生号码短信)

    vivo怎么拦截陌生短信(vivo怎么拦截陌生号码短信)

  • 微博好友热搜在哪里看?(微博好友热搜在哪里查看)

    微博好友热搜在哪里看?(微博好友热搜在哪里查看)

  • 光盘可以重复刻录吗(光盘重复刻录之前的数据丢失)

    光盘可以重复刻录吗(光盘重复刻录之前的数据丢失)

  • qq怎么改年龄(qq怎么改年龄资料2021)

    qq怎么改年龄(qq怎么改年龄资料2021)

  • 微信号注销多久生效(微信号注销多久可以绑定新的微信号)

    微信号注销多久生效(微信号注销多久可以绑定新的微信号)

  • 手机打不开软件是怎么回事(为什么苹果手机打不开软件)

    手机打不开软件是怎么回事(为什么苹果手机打不开软件)

  • 为什么有的人显示正在输入(为什么有的人显高)

    为什么有的人显示正在输入(为什么有的人显高)

  • 苹果11广角拍摄怎么用(苹果11广角拍摄四周黑色怎么调整)

    苹果11广角拍摄怎么用(苹果11广角拍摄四周黑色怎么调整)

  • 手机怎么打出根号(手机怎么打出根号三次方)

    手机怎么打出根号(手机怎么打出根号三次方)

  • 苹果x是不是双摄像头(苹果x是不是双层主板)

    苹果x是不是双摄像头(苹果x是不是双层主板)

  • 华为云空间怎么删除(华为云空间怎么转到小米手机上)

    华为云空间怎么删除(华为云空间怎么转到小米手机上)

  • 拼多多和微信是一家的吗(拼多多和微信是一个吗)

    拼多多和微信是一家的吗(拼多多和微信是一个吗)

  • 二维码使用了什么识别方式(二维码用处)

    二维码使用了什么识别方式(二维码用处)

  • 手机信号hd是啥(手机信号的hd是什么意思?)

    手机信号hd是啥(手机信号的hd是什么意思?)

  • 耳机右边声音小(耳机右边声音小怎么调)

    耳机右边声音小(耳机右边声音小怎么调)

  • 全民k歌怎么设置权限(全民k歌怎么设置隐身访问)

    全民k歌怎么设置权限(全民k歌怎么设置隐身访问)

  • 为什么手机电池越来越不耐用(为什么手机电池充到60%就充不进去了)

    为什么手机电池越来越不耐用(为什么手机电池充到60%就充不进去了)

  • GIF在图片查看器中不会动怎么办(gif图片查看软件)

    GIF在图片查看器中不会动怎么办(gif图片查看软件)

  • 2018年装机电源怎么选?中高端电源推荐(装机电源怎么装)

    2018年装机电源怎么选?中高端电源推荐(装机电源怎么装)

  • 帝国CMS获取产品或文章浏览记录的方法(帝国cms商城教程)

    帝国CMS获取产品或文章浏览记录的方法(帝国cms商城教程)

  • 未交增值税借方表示什么意思
  • 天猫店铺个人可以开吗
  • 一般纳税人增值税可以抵扣吗
  • 房地产企业成本包括哪些
  • 代理记账服务内容
  • 固定资产更换配件怎么界定是否满足资本化
  • 公司社保公积金最晚缴费时间段
  • 分公司的人员构成
  • 税务分析最常用的分析方法
  • 外购的货物用于集体福利是销售吗
  • 未达起征点销售额,11栏怎么填写
  • 申请增值税一般纳税人登记在办理手续
  • 个人汽车租给公司租金需多少钱?
  • 什么情况下可以取保候审
  • 受托加工物资算资产吗
  • 公司没有实缴可以破产么
  • 厂房装修费用计入制造费用吗
  • 增值税小规模纳税人优惠政策
  • .exe文件病毒
  • 在win7系统中怎样为另外一块硬盘安装系统
  • 戴尔笔记本电脑哪款性价比最高
  • win10怎么更换版本
  • PHP:xml_get_current_byte_index()的用法_XML解析器函数
  • linux统计文件行数字数
  • yii2框架运行原理
  • 运输合同印花税税率
  • 陶尔米纳电影节
  • 互联网行业成本控制现状
  • node 文件
  • sed多个命令匹配条件格式
  • php支付接口对接教程
  • phptime函数
  • 大学生创新创业大赛官网
  • iperf3命令和iperf2
  • 余热发电前景
  • 小规模能取得专用发票吗
  • 上传图片php
  • php获取参数值的三种方式
  • 代开专票时缴纳的增值税账务处理如何做?
  • mongodb的用户名和密码
  • 微众银行的企业贷款好批吗
  • 企业管理费用的分类
  • 政府补助免征企业所得税条件会计分录
  • 公司个人借款如何下账
  • 什么是电子承诺
  • 支付劳务费的账务处理
  • 福利费的进项税怎么做账
  • 在建工程和预付账款怎么转化
  • 进项税留抵怎么做分录
  • 临时设施的种类有哪些
  • 核算产品的成本的表
  • 建筑业简易征收的条件
  • 非正常损坏的商品计入哪个会计科目
  • 公司的在建工程入账会计分录没有付款
  • 福利费要交个人所得税嘛
  • 企业研发支出的核算内容
  • 如何处理消防安全事件
  • 会计凭证的摘要 报销 保险费用
  • mysql中一个普通ERROR 1135 (HY000)错误引发的血案
  • sql server m1
  • mysql检索语句
  • sedsvc.exe是什么
  • 360rps.exe
  • git连接linux服务器
  • fssm32.exe是什么进程 有什么作用 fssm32进程查询
  • 硬盘xp系统
  • unity3d怎么用
  • python怎么发送
  • python保存文件到指定文件夹
  • javascript数据转换
  • jquery网页
  • python列出所有文件名
  • python,多线程
  • 小规模纳税人开1%普票怎么报税
  • 北京市网上税务局(自然人版)
  • 企业所得税税率10%
  • 最新设立税务师事务条件
  • 陕西地税发票怎么重新打印
  • 江苏省无锡市国4车辆报废新规定
  • 印花税为什么不计入资产成本
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设