Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >opencv--基于深度学习的人脸检测器

opencv--基于深度学习的人脸检测器

作者头像
MachineLP
发布于 2022-05-09 07:00:58
发布于 2022-05-09 07:00:58
47201
代码可运行
举报
文章被收录于专栏:小鹏的专栏小鹏的专栏
运行总次数:1
代码可运行

首先, 一直以来就在考虑这么牛逼的opencv该换一下里边一些过时的东西了,像:检测器、识别器等等,果不其然,openv的大佬们还是偷偷的换了。

已opencv直接加载caffe深度学习(ssd人脸检测)模型: (还是厉害的一笔)

下面是python代码:

使用 图片: 

效果图:

python detect_faces.py --image rooster.jpg --prototxt deploy.prototxt.txt --model res10_300x300_ssd_iter_140000.caffemodel

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# USAGE
# python detect_faces.py --image rooster.jpg --prototxt deploy.prototxt.txt --model res10_300x300_ssd_iter_140000.caffemodel

# import the necessary packages
import numpy as np
import argparse
import cv2

# construct the argument parse and parse the arguments
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=True,
	help="path to input image")
ap.add_argument("-p", "--prototxt", required=True,
	help="path to Caffe 'deploy' prototxt file")
ap.add_argument("-m", "--model", required=True,
	help="path to Caffe pre-trained model")
ap.add_argument("-c", "--confidence", type=float, default=0.5,
	help="minimum probability to filter weak detections")
args = vars(ap.parse_args())

# load our serialized model from disk
print("[INFO] loading model...")
net = cv2.dnn.readNetFromCaffe(args["prototxt"], args["model"])

# load the input image and construct an input blob for the image
# by resizing to a fixed 300x300 pixels and then normalizing it
image = cv2.imread(args["image"])
(h, w) = image.shape[:2]
blob = cv2.dnn.blobFromImage(cv2.resize(image, (300, 300)), 1.0,
	(300, 300), (104.0, 177.0, 123.0))

# pass the blob through the network and obtain the detections and
# predictions
print("[INFO] computing object detections...")
net.setInput(blob)
detections = net.forward()

# loop over the detections
for i in range(0, detections.shape[2]):
	# extract the confidence (i.e., probability) associated with the
	# prediction
	confidence = detections[0, 0, i, 2]

	# filter out weak detections by ensuring the `confidence` is
	# greater than the minimum confidence
	if confidence > args["confidence"]:
		# compute the (x, y)-coordinates of the bounding box for the
		# object
		box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])
		(startX, startY, endX, endY) = box.astype("int")
 
		# draw the bounding box of the face along with the associated
		# probability
		text = "{:.2f}%".format(confidence * 100)
		y = startY - 10 if startY - 10 > 10 else startY + 10
		cv2.rectangle(image, (startX, startY), (endX, endY),
			(0, 0, 255), 2)
		cv2.putText(image, text, (startX, y),
			cv2.FONT_HERSHEY_SIMPLEX, 0.45, (0, 0, 255), 2)

# show the output image
cv2.imshow("Output", image)
cv2.waitKey(0)

视频下:

python detect_faces_video.py --prototxt deploy.prototxt.txt --model res10_300x300_ssd_iter_140000.caffemodel

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# USAGE
# python detect_faces_video.py --prototxt deploy.prototxt.txt --model res10_300x300_ssd_iter_140000.caffemodel

# import the necessary packages
from imutils.video import VideoStream
import numpy as np
import argparse
import imutils
import time
import cv2

# construct the argument parse and parse the arguments
ap = argparse.ArgumentParser()
ap.add_argument("-p", "--prototxt", required=True,
	help="path to Caffe 'deploy' prototxt file")
ap.add_argument("-m", "--model", required=True,
	help="path to Caffe pre-trained model")
ap.add_argument("-c", "--confidence", type=float, default=0.5,
	help="minimum probability to filter weak detections")
args = vars(ap.parse_args())

# load our serialized model from disk
print("[INFO] loading model...")
net = cv2.dnn.readNetFromCaffe(args["prototxt"], args["model"])

# initialize the video stream and allow the cammera sensor to warmup
print("[INFO] starting video stream...")
vs = VideoStream(src=0).start()
time.sleep(2.0)

# loop over the frames from the video stream
while True:
	# grab the frame from the threaded video stream and resize it
	# to have a maximum width of 400 pixels
	frame = vs.read()
	frame = imutils.resize(frame, width=400)
 
	# grab the frame dimensions and convert it to a blob
	(h, w) = frame.shape[:2]
	blob = cv2.dnn.blobFromImage(cv2.resize(frame, (300, 300)), 1.0,
		(300, 300), (104.0, 177.0, 123.0))
 
	# pass the blob through the network and obtain the detections and
	# predictions
	net.setInput(blob)
	detections = net.forward()

	# loop over the detections
	for i in range(0, detections.shape[2]):
		# extract the confidence (i.e., probability) associated with the
		# prediction
		confidence = detections[0, 0, i, 2]

		# filter out weak detections by ensuring the `confidence` is
		# greater than the minimum confidence
		if confidence < args["confidence"]:
			continue

		# compute the (x, y)-coordinates of the bounding box for the
		# object
		box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])
		(startX, startY, endX, endY) = box.astype("int")
 
		# draw the bounding box of the face along with the associated
		# probability
		text = "{:.2f}%".format(confidence * 100)
		y = startY - 10 if startY - 10 > 10 else startY + 10
		cv2.rectangle(frame, (startX, startY), (endX, endY),
			(0, 0, 255), 2)
		cv2.putText(frame, text, (startX, y),
			cv2.FONT_HERSHEY_SIMPLEX, 0.45, (0, 0, 255), 2)

	# show the output frame
	cv2.imshow("Frame", frame)
	key = cv2.waitKey(1) & 0xFF
 
	# if the `q` key was pressed, break from the loop
	if key == ord("q"):
		break

# do a bit of cleanup
cv2.destroyAllWindows()
vs.stop()

还有C++版本的, 都可以在我的网盘下载:

链接:https://pan.baidu.com/s/1MdBOHvNxN0bilVuUtDcU-A  密码:tnhl

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
利用OpenCV和深度学习实现人脸检测
今天偷点儿懒,就没有及时整理最新的paper,还请各位看官谅解。这里整理了一份前段时间做的小demo,实现献丑了 本文基于OpenCV3.3.1或以上版本(如OpenCV3.4)、DNN模块和face_detector示例实现简单、实时的人脸检测。 往期回顾 [计算机视觉] 入门学习资料 [计算机视觉论文速递] 2018-03-20 [计算机视觉论文速递] 2018-03-18 注: [1]:主要参考Face detection with OpenCV and deep learning这个英文教程
Amusi
2018/04/12
6.9K1
利用OpenCV和深度学习实现人脸检测
计算机视觉项目:用dlib进行单目标跟踪
本教程将教你如何使用dlib和Python执行目标跟踪(object tracking)。阅读今天的博客文章后,你将能够使用dlib实时跟踪视频中的目标。
AiTechYun
2018/12/05
3.9K0
干货 | 史上最全 OpenCV 活体检测教程!
AI 科技评论按:本文来自著名的计算机视觉教学网站「pyimagesearch」,文章作者为 Adrian Rosebrock。在本文中,Adrian 将就「如何鉴别图像/视频中的真实人脸和伪造人脸」这一问题进行深入的分析,并介绍使用基于 OpenCV 的模型进行活体检测的具体方法。雷锋网 AI 科技评论编译如下。
AI研习社
2019/05/08
1.7K0
干货 | 史上最全 OpenCV 活体检测教程!
python机器学习进行精准人脸识别
上一篇我们讲了使用OpenCV进行人脸识别的最基础操作。但是从最后的效果可以看出,识别率、效率都很低,而且误检率比较高,识别过程中,系统资源占用相当大,实在是没办法在实际场合中使用。在opencv3.4 版之前自带的人脸检测器是基于Haar算法实现的,不仅检出率低,而且脸的角度稍大一些就检测不出来。但是随着深度学习领域的发展,涌现了一大批效果相当不错的人脸检测算法。
星星在线
2020/05/22
2.4K0
使用opencv实现实例分割,一学就会|附源码
无论是从酒店房间接听电话、在办公里楼工作,还是根本不想在家庭办公室等情况,电话会议模糊功能都可以让会议与会者专注于自己,这样的功能对于在家工作并希望保护其家庭成员隐私的人特别有用。 为了实现这样的功能,微软利用计算机视觉、深度学习以及实例分割技术实现。 在之前的博文中,介绍了如何利用YOLO以及OpenCV实现目标检测的功能,今天将采用Mask R-CNN来构建视频模糊功能。
用户3578099
2019/08/15
2.3K0
AI在内容创作中的创新:开启智能创意的新时代
在数字化和信息化的推动下,内容创作领域正迎来一场前所未有的变革。人工智能(AI)作为这一变革的核心驱动力,正在以惊人的速度创新内容创作的各个方面。无论是文字、图片、音频还是视频,AI都在不断刷新我们对创意和生产力的认知。本文将详细探讨AI在内容创作中的创新,并通过具体代码示例展示其应用。
Echo_Wish
2024/12/29
3360
AI在内容创作中的创新:开启智能创意的新时代
python+opencv实时视频目标检测
1、访问Python Extension Packages for Windows,下载python对应版本的opencv。
Python研究者
2020/09/28
1.1K0
python+opencv实时视频目标检测
Raspberry Pi上的OpenVINO,OpenCV和Movidius NCS
在本教程中,将学习如何将OpenVINO工具包与OpenCV一起使用,以便在Raspberry Pi上进行更快速的深度学习推理。
代码医生工作室
2019/06/21
4.3K0
恺明大神 Mask R-CNN 超实用教程
翻 译 | 天字一号(郑州大学)、李美丽(华南师范大学)、had_in(电子科技大学)、nengdaiper(北京科技大学)
AI研习社
2019/09/25
2.5K1
恺明大神 Mask R-CNN 超实用教程
OpenCV 入门教程:目标检测与跟踪概念
目标检测与跟踪是计算机视觉领域的重要任务,用于在图像或视频中自动检测和跟踪特定的目标。这项技术在人脸识别、行人检测、车辆跟踪等领域具有广泛应用。本文将以目标检测与跟踪概念为中心,为你介绍使用 OpenCV 进行目标检测和跟踪的基本原理、方法和实例。
小蓝枣
2023/07/11
1.7K0
独家 | COVID-19:利用Opencv, Keras/Tensorflow和深度学习进行口罩检测
本文为大家介绍了如何使用Opencv,Keras/Tensorflow构建一个口罩检测模型,以及如何将该模型应用到图片和视频中。
数据派THU
2020/06/04
1.8K0
10分钟上手,OpenCV自然场景文本检测(Python代码+实现)
EAST文本检测器需要OpenCV3.4.2或更高版本,有需要的读者可以先安装OpenCV。
磐创AI
2018/09/20
1.7K0
10分钟上手,OpenCV自然场景文本检测(Python代码+实现)
关于OpenCV for Python入门-DNN模块实现人脸检测
OpenCV在OpenCV增加了DNN模块,DNN模块可以加载预先训练好的Caffe/tensorflow等模型数据,基本支持所有主流的深度学习框架训练生成与导出模型数据加载。
python与大数据分析
2022/04/02
1.2K0
关于OpenCV for Python入门-DNN模块实现人脸检测
基于OpenCV的视频处理管道
目前可依靠模块化方式实现图像处理管道,检测一堆图像文件中的人脸,并将其与漂亮的结构化JSON摘要文件一起保存在单独的文件夹中。
AI算法与图像处理
2021/03/14
1.1K0
智能眼镜,从科技幻想到现实生活的触手可及
在20世纪的科幻电影中,智能眼镜或增强现实(AR)设备总是作为未来科技的象征亮相。而如今,随着技术的飞速发展,智能眼镜正迅速从银幕走进现实,成为改变工作、娱乐、教育甚至医疗等领域的重要工具。本篇文章将探讨智能眼镜的发展历程、技术原理及其多维度的实际应用,希望为你呈现一个通俗易懂、与生活息息相关的全景视角。
Echo_Wish
2025/03/24
1010
智能眼镜,从科技幻想到现实生活的触手可及
使用 OpenCV 进行图像中的性别预测和年龄检测
照片中的面部分析引起了人们的广泛关注,因为它可以帮助我们解决各种问题,包括更好的客户广告定位、更好的内容推荐系统、安全监控和其他领域。
小白学视觉
2022/02/14
1.8K0
使用 OpenCV 进行图像中的性别预测和年龄检测
九十五、通过opencv制作人脸识别的窗口
人脸检测,看似要使用深度学习,觉得很高大牛逼,其实通过opencv就可以制作人脸识别的窗口。
润森
2022/08/18
7670
九十五、通过opencv制作人脸识别的窗口
Github项目|几行代码即可实现人脸检测、目标检测的开源计算机视觉库
今天介绍一个简单、易用的开源计算机视觉库,名字是 cvlib,其 Github 地址:
kbsc13
2019/09/25
1.7K0
Github项目|几行代码即可实现人脸检测、目标检测的开源计算机视觉库
10分钟学会使用YOLO及Opencv实现目标检测(下)|附源码
在上一节内容中,介绍了如何将YOLO应用于图像目标检测中,那么在学会检测单张图像后,我们也可以利用YOLO算法实现视频流中的目标检测。
用户3578099
2019/08/15
1.9K0
深度学习的端到端文本OCR:使用EAST从自然场景图片中提取文本
我们生活在这样一个时代:任何一个组织或公司要想扩大规模并保持相关性,就必须改变他们对技术的看法,并迅速适应不断变化的环境。我们已经知道谷歌是如何实现图书数字化的。或者Google earth是如何使用NLP来识别地址的。或者怎样才能阅读数字文档中的文本,如发票、法律文书等。
deephub
2020/05/12
2.6K0
推荐阅读
相关推荐
利用OpenCV和深度学习实现人脸检测
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档