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

  • 微博营销一些常见的方法和技巧(微博营销的要点?)

    微博营销一些常见的方法和技巧(微博营销的要点?)

  • nikond300s说明书(nikond300s)(nikon相机d3200说明书)

    nikond300s说明书(nikond300s)(nikon相机d3200说明书)

  • b站up主是什么意思(bilibili up主什么意思)

    b站up主是什么意思(bilibili up主什么意思)

  • 苹果11和苹果7数据线一样吗(iphone 11对比iphone 7)

    苹果11和苹果7数据线一样吗(iphone 11对比iphone 7)

  • 此电话号码无法用于进行验证(此电话号码无法用于进行验证.谷歌注册)

    此电话号码无法用于进行验证(此电话号码无法用于进行验证.谷歌注册)

  • python中type是什么意思(python中type(12.34))

    python中type是什么意思(python中type(12.34))

  • 华为p40pro有哪些特色功能(华为p40pro有哪些功能)

    华为p40pro有哪些特色功能(华为p40pro有哪些功能)

  • w10怎么用不了flash(window10用不了flash)

    w10怎么用不了flash(window10用不了flash)

  • 停机了充话费后多久恢复(停机了充话费后还是停机电信)

    停机了充话费后多久恢复(停机了充话费后还是停机电信)

  • qq改不了网名怎么回事(为啥qq改不了网名)

    qq改不了网名怎么回事(为啥qq改不了网名)

  • mac pro截图保存在哪里(macbookpro截图怎么保存到桌面)

    mac pro截图保存在哪里(macbookpro截图怎么保存到桌面)

  • 主码,候选码,外码的联系和区别(主码,候选码,外码的联系和区别 并解释术语)

    主码,候选码,外码的联系和区别(主码,候选码,外码的联系和区别 并解释术语)

  • 什么是十进制(人民币为什么是十进制)

    什么是十进制(人民币为什么是十进制)

  • 华为鸿蒙什么时候上市(华为鸿蒙什么时候)

    华为鸿蒙什么时候上市(华为鸿蒙什么时候)

  • 华为mate30 5G版怎么返回(华为mate30 5g版怎么用4g网络)

    华为mate30 5G版怎么返回(华为mate30 5g版怎么用4g网络)

  • 手机怎么改文件后缀(手机怎么改文件内容)

    手机怎么改文件后缀(手机怎么改文件内容)

  • 全民k歌怎么用声卡录歌(全民k歌怎么用自己的伴奏)

    全民k歌怎么用声卡录歌(全民k歌怎么用自己的伴奏)

  • 小米退货运费谁承担(小米退货运费报销哪里申请?)

    小米退货运费谁承担(小米退货运费报销哪里申请?)

  • 苹果手机有学生模式吗(苹果手机有学生教育优惠吗)

    苹果手机有学生模式吗(苹果手机有学生教育优惠吗)

  • 小米9充电发热怎么回事(小米9充电发热严重怎么办)

    小米9充电发热怎么回事(小米9充电发热严重怎么办)

  • 快手上已戳怎么取消(快手戳一下怎么取消戳过的人)

    快手上已戳怎么取消(快手戳一下怎么取消戳过的人)

  • 除甲醛净化什么最有效(除甲醛的净化器哪个品牌做得最好)

    除甲醛净化什么最有效(除甲醛的净化器哪个品牌做得最好)

  • 进阶版JavaScript学习【第二期】(宋大叔教音乐第三单元进阶版)

    进阶版JavaScript学习【第二期】(宋大叔教音乐第三单元进阶版)

  • 工程承包公司账务处理
  • 所得税减免会计分录
  • 开票地址一定要写全吗
  • 财政补助资金是什么意思
  • 预提费用在资产负债表哪个科目
  • 制造费用在借方表示什么
  • 消费税为什么要计入成本
  • 团建费用会计怎么写记账凭证
  • 分公司独立核算企业所得税缴纳
  • 一般企业需要缴纳的税种
  • 建筑劳务适用税率
  • 电算化怎么操作
  • 收到公司退货会计分录
  • 进口缴纳的关税通过什么核算
  • 可供出售金融资产和长期股权投资
  • 开专票还需要提供营业执照?
  • 租金发票会计分录
  • 个人境外收入如何开发票
  • 个人所得税怎么查
  • 开具发票超出企业经营范围属于虚开发票吗??
  • 公司减少注册资本的程序
  • 弥补以前年度亏损从哪里取数
  • 主办会计和会计助理的区别
  • 雇主责任险税务处理
  • 房租费进项税能不能抵扣
  • win10怎么打开任务管理器
  • 什么是电子发票图片
  • win10资源管理器在哪里找
  • 弥补亏损需要注意的事项
  • 公司购买写字楼怎么入账
  • 建筑业成本率是多少
  • 累计盈余科目怎么填
  • 开出转账支票补付款项
  • 巨大的冰柱造句
  • 待转销项税额会计分录
  • 阿布鲁佐的特点
  • 合并财务报表抵消原理
  • python字典删除键值对方法
  • vue-print-nb-jeecg
  • 跨境电商企业账务如何做账
  • 抽烟罚款会计分录
  • 企业异地预交的税怎么算
  • 上市公司收购其它公司是好是坏
  • 高速公路通行发票税率
  • 新办企业装修会计分录
  • sql server 2008 备份
  • 一般纳税人直接不管会怎么样
  • sqlserver完整备份
  • 小规模年度企业所得税纳税申报表
  • 公司代垫个税账务处理
  • 京东预付是什么意思
  • 营改增后增加了什么征税项目
  • 代发工资怎么算税
  • 公司的零星费用可以用对公转吗
  • 高速过路费抵扣增值税
  • 开票加的税点走什么费用
  • 从银行取现金是什么凭证
  • 红字发票信息表在哪里查询
  • 财产清查存在的问题及原因分析
  • 苹果15手机价格和图片颜色
  • adb mac安装
  • win7系统如何配置ip地址
  • centosfind命令
  • 360修复漏洞补丁一直下载
  • Win10控制面板在c盘哪里
  • 原生js实现仿苹果Siri语音助手特效动画
  • jQuery实现彩带延伸效果的网页加载条loading动画
  • unity开发安卓游戏教程
  • 原生js有用吗
  • jq读取json
  • nodejs cgi
  • 进入dos命令行
  • js怎么设置字体
  • 上海电子税务局怎么添加办税员
  • 粮食的增值税税率怎么算
  • 留抵退税再提速
  • 北京通个人认证
  • 契税怎样才能抵扣个税
  • 税务部门组织收入会议报道
  • 纳税人信用信息
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设