位置: 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算法预测股价模型)

  • 计提坏账为什么是递延所得税资产
  • 企业所得税相关分录
  • 个人开具劳务费增值税发票
  • 水利基金的计税税率6
  • 国有资产转让房产
  • 特定资产收益权融资业务
  • 股息收入所得税率
  • 行政单位明细账包括哪些
  • 公司注销未登记债权,债务人如何抗辩
  • 机动车发票红冲可以作废吗
  • 分期付款外币采购形成的差异如何做会计处理?
  • 累计折旧是费用岗负责的吗
  • 土地款抵扣增值税申报
  • 免税销售额是否计入成本
  • 未收到增值税专用发票怎么处理
  • 出口退税生产企业增值税附加税怎么申报
  • 承包承租经营单位是什么意思
  • 企业合同约定调岗不接受辞退没赔偿成立吗
  • 旅游休闲用地
  • 为什么债务利息不计入资本预算的范畴
  • 免税销售额计入主营业务收入吗
  • 几个项目可以合到一起招标吗
  • php+mysql项目实战教程
  • 其他业务收入怎么申报增值税
  • 存放同业属于什么业务
  • csinject.exe是什么程序的进程 csinject进程是安全的吗
  • linux怎么检查网络状态
  • 用php写个简单的编程
  • 【2023亲测可用】JS 获取电脑本地IP 和 电脑网络IP(外网IP|公网IP)
  • 委托外发加工会计分录
  • 汇算清缴期结束后,税务机关发现企业
  • vue3刷新组件
  • 科技推广和应用服务业行业
  • 票据贴现税务处理
  • 用替票报销违法吗
  • 2023版最新最全React面试题
  • css常见的选择器有哪几种
  • Python 人脸识别系统
  • css选择器使用
  • vgextend命令作用及含义
  • php文件上传操作流程图
  • 应付票据核算的内容
  • 行政单位预算外收入有哪些
  • 哪些费用可以在以后年度扣除
  • 未抵扣增值税需结转吗
  • php sql 教程
  • dedecms更新
  • c语言中函数的数据类型是指
  • python之sqlalchemy创建表的实例详解
  • 季度利润是负数怎么办
  • 专票没有抵扣联可以作废吗
  • 保税仓库税收政策
  • 进口关税免征
  • 公司投资者如何避免风险
  • 业务招待费比例控制规定
  • 购物卡送给客户的账务处理
  • 本年利润的计算
  • 从农民手里租用土地用于科研要开发票吗
  • 亏损太多账务如何处理
  • 记账凭证的附件和附单据
  • sql2005和2000区别
  • win10系统自带的游戏在哪
  • xp如何查看系统位数
  • 电脑取消开机密码显示不能改
  • centos如何清除硬盘数据
  • windows8怎么隐藏任务栏
  • macbookpro移到废纸篓快捷键
  • linuxshadow破解
  • kb3150220安装失败
  • NGUI字体图集导致Label文字破碎的BUG以及解决方案
  • javascript延迟执行
  • js链式编程的原理
  • js表单事件有哪些
  • linux系统搜索文件内容
  • 游戏客服怎么跟客户聊天
  • JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
  • 杭州市国税稽查三科科长
  • 网上怎么交车船税
  • 深圳企业所得税税率多少
  • 车辆购置税可以抵税吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设