基于卷积神经网络的人脸检测模型代码
时间: 2023-11-06 10:08:59 浏览: 157
由于人脸检测是一个比较复杂的任务,需要大量的数据和计算资源,因此实现一个高效的人脸检测模型并不是一件容易的事情。以下是一份基于卷积神经网络的人脸检测模型代码示例:
```python
import numpy as np
import cv2
# 加载人脸检测模型
net = cv2.dnn.readNetFromCaffe("deploy.prototxt.txt", "res10_300x300_ssd_iter_140000.caffemodel")
# 加载图像并进行预处理
image = cv2.imread("test.jpg")
(h, w) = image.shape[:2]
blob = cv2.dnn.blobFromImage(cv2.resize(image, (300, 300)), 1.0, (300, 300), (104.0, 177.0, 123.0))
# 进行人脸检测
net.setInput(blob)
detections = net.forward()
# 遍历每个检测结果
for i in range(0, detections.shape[2]):
# 提取置信度
confidence = detections[0, 0, i, 2]
# 过滤掉低置信度结果
if confidence > 0.5:
# 提取人脸框坐标
box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])
(startX, startY, endX, endY) = box.astype("int")
# 绘制人脸框并显示结果
cv2.rectangle(image, (startX, startY), (endX, endY), (0, 0, 255), 2)
cv2.imshow("Output", image)
cv2.waitKey(0)
```
代码中使用了OpenCV库提供的`cv2.dnn`模块,该模块提供了对深度学习模型的支持。首先,使用`cv2.dnn.readNetFromCaffe()`函数加载一个已经训练好的人脸检测模型,该模型是基于卷积神经网络的SSD模型。然后,加载待检测的图像并进行预处理,将其转化为模型可接受的格式。接着,将预处理后的图像输入模型进行检测,得到检测结果。最后,遍历每个检测结果,提取人脸框坐标,并绘制在原图上。
阅读全文